Previous Up Next

Chapter 7  Missing Components

7.1  Introduction

A mature software project includes more than just code. It also contains other components. In this chapter, I list some of those “other components” that currently are missing from, or inadequate in, Config4*. Perhaps some readers will be willing to contribute to Config4* by rectifying these deficiencies.

7.2  Cross-platform Build System

The C++ build system uses Gnu make and has been tested on just two platforms: Linux and Cygwin, both using the Gnu C++ compiler. In addition, the build system produces only statically-linked libraries. It would be nice to produce shared libraries too.

The Java build system uses Apache ant, which provides better portability than Makefiles. However, there is probably room for improvement in the build.xml file.

7.3  Javadoc and Doxygen Documentation

The Config4* C++ API Guide and Config4* Java API Guide document the API (that is, application programming interface) of Config4*. However, that documentation is arranged in logical groupings, and sometimes it is more convenient to have API documentation that is arranged as an alphabetical list of class names and operation names.

For this reason, it would be useful for Javadoc- or Doxygen-style comments to be added into the source code. It is likely that the law of diminishing returns will apply: it is most important to provide this documentation for the publicly-accessible classes and operations, and less important to provide it for the internal classes and operations.

7.4  Installation Packages

The usability of Config4* would be enhanced if it could be distributed in a range of popular installation package formats, such as ".rpm", ".deb" and InstallAnywhere.

7.5  Regression Test Suite

Why does Config4Cpp not have a comprehensive regression test suite? This is because I started writing my first configuration parser (which would eventually mature to be Config4Cpp) before Kent Beck popularised the development of unit testing frameworks. Thus, it was easy for me to get into the bad habit of not having unit tests that I could use for regression testing and, unfortunately, that bad habit has survived.

Unit testing frameworks were widely available by the time I wrote Config4J, so why does Config4J not have a comprehensive regression test suite? This is because I wrote the initial version of Config4J by making a copy of Config4Cpp’s source code and then spending two repetitive strain injury-inducing weeks converting C++ syntax into Java syntax. It seemed easier to do just that conversion than to do the conversion and also write unit tests.

Currently, Config4Cpp and Config4J do have a regression test suite, but it is only for schema types. This is in the tests/schema-types directory of an installation.

Previous Up Next