Abstract
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.
Chapter PDF
Similar content being viewed by others
Keywords
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.
References
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)
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 2009
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)
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)
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)
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)
Bezroukov, N.: A second look at the cathedral and the bazaar. First Monday 4(12) (1999), http://www.firstmonday.org/issues/issue4_12/bezroukov/index.html
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)
Canfora, G., Cerulo, L., Penta, M.D.: Identifying changed source code lines from version repositories. Mining Software Repositories, 14 (2007)
Capiluppi, A.: Models for the evolution of OS projects. In: Proceedings of ICSM 2003, pp. 65–74. IEEE, Amsterdam (2003)
Ducasse, S., Lanza, M., Ponisio, L.: Butterflies: A visual approach to characterize packages. In: Metrics 2005: Proceedings 11th International Software Metrics Symposium (2005)
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)
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)
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)
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)
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)
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)
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)
Lehman, M.M.: Programs, cities, students, limits to growth? Programming Methodology, 42–62 (1978) (inaugural lecture)
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)
Medvidovic, N., Jakobac, V.: Using software evolution to focus architectural recovery. Automated Software Engineering, 13 (2006)
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)
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)
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)
Spinellis, D.: Code Reading: The Open Source Perspective. Addison-Wesley Professional, Reading (2003)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 IFIP International Federation for Information Processing
About this paper
Cite this paper
Capiluppi, A., Knowles, T. (2009). Software Engineering in Practice: Design and Architectures of FLOSS Systems. In: Boldyreff, C., Crowston, K., Lundell, B., Wasserman, A.I. (eds) Open Source Ecosystems: Diverse Communities Interacting. OSS 2009. IFIP Advances in Information and Communication Technology, vol 299. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02032-2_5
Download citation
DOI: https://doi.org/10.1007/978-3-642-02032-2_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-02031-5
Online ISBN: 978-3-642-02032-2
eBook Packages: Computer ScienceComputer Science (R0)