What Is a Module?

To be able to discuss how developers work with the modules in a software system, we need a consistent definition of what a module is and how the code in one module is separated from other modules in the system.

Although it would be convenient to define modules by reference to explicit declarations in the source code, this approach presents two difficulties for our analysis. First, the projects we selected for our study are implemented in a variety of programming languages, each of which treats modularity differently. Evolution is implemented in C, which provides minimal support for defining modules within source code. Firefox primarily uses C++, a language that supports modules at the language level through namespace declarations, but Firefox itself does not make consistent use of this language feature. Further, Firefox also includes code written in many other languages, such as JavaScript and XUL (the XML User Interface Language), which have completely different modularity constructs. Mylyn, a Java application, is the only one of the three systems that has clearly defined modules within source code, which it accomplishes using Java packages.

Second, the systems we chose to study are sufficiently large and long-lived that analysis at the fine-grained level of the programming language could be overwhelmed by development issues, such as changing members of the development team and refactorings of the code. To reduce the likelihood that such issues would impact our ...

Get Making Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.