Improving the Build Architecture of Legacy C/C++ Software Systems

  • Homayoun Dayani-Fard
  • Yijun Yu
  • John Mylopoulos
  • Periklis Andritsos
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3442)


The build architecture of legacy C/C++ software systems, groups program files in directories to represent logical components. The interfaces of these components are loosely defined by a set of header files that are typically grouped in one common include directory. As legacy systems evolve, these interfaces decay, which contribute to an increase in the build time and the number of conflict in parallel developments. This paper presents an empirical study of the build architecture of large commercial software systems, introduces a restructuring approach, based on Reflexion models and automatic clustering, and reports on a case study using VIM open source editor.


Software Architecture Dependency Graph Reference Architecture Call Graph Program Entity 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Nord, R., Stafford, J.: Documenting Software Architectures: Views and Beyond. Addison-Wesley, Reading (2002)Google Scholar
  2. 2.
    Selby, R.W., Cusumano, M.A.: Microsoft secrets. Simon and Schuster (1998)Google Scholar
  3. 3.
    Andritsos, P., Tzerpos, V.: Software clustering based on information loss minimization. In: 10th Working Conference on Reverse Engineering, pp. 334–344 (2003)Google Scholar
  4. 4.
    Yu, Y., Dayani-Fard, H., Mylopoulos, J.: Removing false code dependencies to speedup software development processes. In: Proceedings of CASCON, pp. 288–297 (2003)Google Scholar
  5. 5.
    Tran, J., Godfrey, M., Lee, E., Holt, R.: Architectural repair of open source software. In: IWPC 2000. (2000)Google Scholar
  6. 6.
    Murphy, G.C., Notkin, D., Sullivan, K.J.: Software reflexion models: Bridging the gap between design and implementation. IEEE Trans. Software Eng 27, 364–380 (2001)CrossRefGoogle Scholar
  7. 7.
    Moolenaar, B.: Vim 6.2 (2003),
  8. 8.
    Yu, Y., Dayani-Fard, H., Mylopoulos, J., Andritsos, P.: Reducing build time through precompilations for large-scale software. Technical Report CSRG-504, Department of Computer Science, University of Toronto (2004)Google Scholar
  9. 9.
    Mylopoulos, J., Chung, L., Nixon, B.: Representing and using nonfunctional requirements: A process-oriented approach. IEEE Trans. on Softw. Eng. 18, 483–497 (1992)CrossRefGoogle Scholar
  10. 10.
    Kruchten, P.: Architectural blueprints – the 4+1 view model of software architecture. IEEE Software 12, 42–50 (1995)CrossRefGoogle Scholar
  11. 11.
    Hofmeister, C., Nord, R., Soni, D.: Applied software architecture. Addison-Wesley, Reading (2000)Google Scholar
  12. 12.
    Herzum, P., Sims, O.: Business Component Factory: A Comprehensive Overview of Component-Based Development for the Enterprise. John Wiley and Sons, Chichester (1999)Google Scholar
  13. 13.
    Krasner, G.E., Pope, S.T.: A cookbook for using the model-view-controller user interface paradigm in smalltalk-80. Journal of Object-Oriented Programming 1, 26–49 (1988)Google Scholar
  14. 14.
    Eixelsberger, W., Ogris, M., Gall, H., Bellay, B.: Software architecture recovery of a program family. In: Proceedings of the 20th ICSE, pp. 508–511. IEEE Computer Society Press, Los Alamitos (1998)Google Scholar
  15. 15.
    Bellay, B., Gall, H.: An evaluation of reverse engineering tool capabilities. Journal of Software Maintenance: Research and Practice 10, 305–332 (1998)CrossRefGoogle Scholar
  16. 16.
    Maletic, J., Valluri, N.: Automatic Software Clustering via Latent Semantic Analysis. In: Proceeding of ASE 1999, pp. 251–254 (1999)Google Scholar
  17. 17.
    Mitchell, B.S., Mancoridis, S.: Modeling the search landscape of metaheuristic software clustering algorithms. In: Cantú-Paz, E., Foster, J.A., Deb, K., Davis, L., Roy, R., O’Reilly, U.-M., Beyer, H.-G., Kendall, G., Wilson, S.W., Harman, M., Wegener, J., Dasgupta, D., Potter, M.A., Schultz, A., Dowsland, K.A., Jonoska, N., Miller, J., Standish, R.K. (eds.) GECCO 2003. LNCS, vol. 2724, pp. 2499–2510. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  18. 18.
    Mitchell, B.S., Gansner, E.R., Mancoridis, S., Chen, Y.: Bunch: A clustering tool for the recovery and maintenance of software system structures. In: ICSM 1999 (1999)Google Scholar
  19. 19.
    Borison, E.A.: Program Changes and the Cost of Selective Recompilation. PhD thesis, Carnegie Mellon University (1989)Google Scholar
  20. 20.
    Cusumano, M.A., Selby, R.W.: How Microsoft builds software. CACM 40 (1997)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Homayoun Dayani-Fard
    • 1
  • Yijun Yu
    • 2
  • John Mylopoulos
    • 2
  • Periklis Andritsos
    • 2
  1. 1.IBMCanada
  2. 2.University of Toronto 

Personalised recommendations