Software Engineering in Practice: Design and Architectures of FLOSS Systems

  • Andrea Capiluppi
  • Thomas Knowles
Conference paper
Part of the IFIP Advances in Information and Communication Technology book series (IFIPAICT, volume 299)


Free/Libre/Open Source Software (FLOSS) practitioners and developers are typically also users of their own systems: as a result, traditional software engineering (SE) processes (e.g., the requirements and design phases), take less time to articulate and negotiate among FLOSS developers. Design and requirements are kept more as informal knowledge, rather than formally described and assessed. This paper attempts to recover the SE concepts of software design and architectures from three FLOSS case studies, sharing the same application domain (i.e., Instant Messaging). Its first objective is to determine whether a common architecture emerges from the three systems, which can be used as shared knowledge for future applications. The second objective is to determine whether these architectures evolve or decay during the evolution of these systems. The results of this study are encouraging: albeit no explicit effort was done by FLOSS developers to define a high-level view of the architecture, a common shared architecture could be distilled for the Instant Messaging application domain. It was also found that, for two of the three systems, the architecture becomes better organised, and the components better specified, as long as the system evolves in time.


Software Engineer Software Architecture Instant Messaging Common Architecture Core Protocol 
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.
    Abi-Antoun, M., Aldrich, J., Coelho, W.: A case study in re-engineering to enforce architectural control flow and data sharing. Journal of Systems and Software 80(2), 240–264 (2007)CrossRefGoogle Scholar
  2. 2.
    Adams, P., Capiluppi, A.: Bridging the gap between agile and free software approaches: The impact of sprinting. International Journal of Open Source Software and Process 2009Google Scholar
  3. 3.
    Antoniol, G., Casazza, G., Penta, M.D., Merlo, E.: Modeling clones evolution through time series. In: Proc. IEEE Intl. Conf. on Software Maintenance 2001 (ICSM 2001), Fiorence, Italy, pp. 273–280 (2001)Google Scholar
  4. 4.
    Arief, B., Gacek, C., Lawrie, T.: Software architectures and open source software – Where can research leverage the most? In: Proceedings of Making Sense of the Bazaar: 1st Workshop on Open Source Software Engineering, Toronto, Canada (2001)Google Scholar
  5. 5.
    Avgeriou, P., Guelfi, N.: Resolving architectural mismatches of cots through architectural reconciliation. In: Franch, X., Port, D. (eds.) ICCBSS 2005. LNCS, vol. 3412, pp. 248–257. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  6. 6.
    Beecher, K., Boldyreff, C., Capiluppi, A., Rank, S.: Evolutionary success of open source software: An investigation into exogenous drivers. Electronic Communications of the EASST 8 (2008)Google Scholar
  7. 7.
    Bezroukov, N.: A second look at the cathedral and the bazaar. First Monday 4(12) (1999),
  8. 8.
    Bowman, I.T., Holt, R.C., Brewster, N.V.: Linux as a case study: its extracted software architecture. In: ICSE 1999: Proceedings of the 21st International conference on Software Engineering, pp. 555–563. IEEE Computer Society Press, Los Alamitos (1999)Google Scholar
  9. 9.
    Canfora, G., Cerulo, L., Penta, M.D.: Identifying changed source code lines from version repositories. Mining Software Repositories, 14 (2007)Google Scholar
  10. 10.
    Capiluppi, A.: Models for the evolution of OS projects. In: Proceedings of ICSM 2003, pp. 65–74. IEEE, Amsterdam (2003)Google Scholar
  11. 11.
    Ducasse, S., Lanza, M., Ponisio, L.: Butterflies: A visual approach to characterize packages. In: Metrics 2005: Proceedings 11th International Software Metrics Symposium (2005)Google Scholar
  12. 12.
    Dueñas, J.C., de Oliveira, W.L., de la Puente, J.A.: Architecture recovery for software evolution. In: CSMR 1998 – Proceedings of the 2nd Euromicro Conference On Software Maintenance And Reengineering, pp. 113–120 (1998)Google Scholar
  13. 13.
    Eick, S.G., Graves, T.L., Karr, A.F., Marron, J.S., Mockus, A.: Does code decay? assessing the evidence from change management data. IEEE Transactions on Software Engineering 27, 1–12 (2001)CrossRefGoogle Scholar
  14. 14.
    German, D.M.: Using software trails to reconstruct the evolution of software. Journal of Software Maintenance and Evolution: Research and Practice 16(6), 367–384 (2004)CrossRefGoogle Scholar
  15. 15.
    Godfrey, M., Eric, H.: Secrets from the monster: Extracting mozilla’s software architecture. In: CoSET 2000: Proceedings of the 2nd Symposium on Constructing Software Engineering Tools (2000)Google Scholar
  16. 16.
    Herraiz, I., González-Barahona, J.M., Robles, G.: Determinism and evolution. In: Hassan, A.E., Lanza, M., Godfrey, M.W. (eds.) Mining Software Repositories, pp. 1–10. ACM, New York (2008)Google Scholar
  17. 17.
    Hindle, A., German, D.M.: Scql: a formal model and a query language for source control repositories. SIGSOFT Softw. Eng. Notes 30(4), 1–5 (2005)CrossRefGoogle Scholar
  18. 18.
    Krikhaar, R., Postma, A., Sellink, A., Stroucken, M., Verhoef, C.: A two-phase process for software architecture improvement. In: ICSM 1999: Proceedings of the IEEE International Conference on Software Maintenance, p. 371. IEEE Computer Society, Washington (1999)Google Scholar
  19. 19.
    Lehman, M.M.: Programs, cities, students, limits to growth? Programming Methodology, 42–62 (1978) (inaugural lecture)Google Scholar
  20. 20.
    Livieri, S., Higo, Y., Matushita, M., Inoue, K.: Very-large scale code clone analysis and visualization of open source programs using distributed ccfinder: D-ccfinder. In: ICSE 2007: Proceedings of the 29th International Conference on Software Engineering, pp. 106–115. IEEE Computer Society, Washington (2007)Google Scholar
  21. 21.
    Medvidovic, N., Jakobac, V.: Using software evolution to focus architectural recovery. Automated Software Engineering, 13 (2006)Google Scholar
  22. 22.
    Murphy, G.C., Notkin, D., Sullivan, K.: Software reflexion models: bridging the gap between source and high-level models. In: SIGSOFT 1995: Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering, pp. 18–28. ACM, New York (1995)Google Scholar
  23. 23.
    Sartipi, K., Kontogiannis, K., Mavaddat, F.: A pattern matching framework for software architecture recovery and restructuring. In: IWPC 2000: 8th International Workshop on Program Comprehension, pp. 37–47 (2000)Google Scholar
  24. 24.
    Schmerl, B., Aldrich, J., Garlan, D., Kazman, R., Yan, H.: Discovering architectures from running systems. IEEE Transactions on Software Engineering 32(7), 454–466 (2006)CrossRefGoogle Scholar
  25. 25.
    Spinellis, D.: Code Reading: The Open Source Perspective. Addison-Wesley Professional, Reading (2003)Google Scholar
  26. 26.
    Stamelos, I., Angelis, L., Oikonomou, A., Bleris, G.L.: Code quality analysis in open-source software development. Information Systems Journal 12(1), 43–60 (2002)CrossRefGoogle Scholar
  27. 27.
    Tran, J.B., Godfrey, M.W., Lee, E.H.S., Holt, R.C.: Architectural repair of open source software. In: IWPC 2000: Proceedings of the 8th International Workshop on Program Comprehension, pp. 48–59. IEEE Computer Society, Washington (2000)CrossRefGoogle Scholar

Copyright information

© IFIP International Federation for Information Processing 2009

Authors and Affiliations

  • Andrea Capiluppi
    • 1
  • Thomas Knowles
    • 1
  1. 1.Centre of Research on Open Source SoftwareUniversity of LincolnLincolnUK

Personalised recommendations