A repository of task structures can reveal important latent knowledge about the development of a software system. Although approaches have been proposed to recover artifacts withi...
Programming languages provide various mechanisms to support information hiding. One problem with information hiding, however, is that providing a stable interface behind which to ...
Traditional design representations are inadequate for generalized reasoning about modularity in design and its technical and economic implications. We have developed an architectu...
Analyzing historical information can show how a software system evolved into its current state, which parts of the system are stable and which have changed more. However, historic...
It is well known that the extensive use of preprocessors can lead to serious maintenance problems. However, these tools are still heavily used by developers and maintainers to imp...