Abstract
Software architecture is a critical artefact in the software lifecycle. It is a system blueprint for construction, it aids in planning teaming and division of work, and it aids in reasoning about system properties. But architecture documentation is seldom created and, even when it is initially created, it is seldom maintained. For these reasons organisations often feel the need to recover legacy architectures, for example, as part of planning for evolution or cloud migration. But there is no existing general architecture recovery approach nor tool that can be applied to any type of system, under any condition. We will show that one way of achieving such generality is to apply systematic code inspection following a Grounded Theory (GT) approach. Though relatively costly and human-intensive, a GT-based approach has several merits, for example: (a) it is general by design; (b) it can be partially automated; (c) it yields evidence-based results rooted of the system being examined. This article presents one theoretical formulation of a general architecture recovery method–called REM–and reports on the evaluation of REM in the context of a large architecture recovery campaign performed for the European Space Agency. Our results illustrate some intriguing properties and opportunities of GT-based architecture recovery approaches and point out lessons learned and venues for further research.
Similar content being viewed by others
Notes
A number of other auxiliary model-transformations were devised but their structure and application is not discussed here for the sake of space.
Further references on model transformations are available here: http://tinyurl.com/q8rb8na.
Component and class names have been changed to avoid disclosure of protected information.
The authors shall be informed of every study-replication effort, so that ESA stakeholders may be involved if needed.
References
Antoine JY, Villaneau J, Lefeuvre A (2014) Weighted krippendorff’s alpha is a more reliable metrics for multi-coders ordinal annotations: experimental studies on emotion, opinion and coreference annotation. In: Bouma G, Parmentier Y (eds) EACL. http://dblp.uni-trier.de/db/conf/eacl/eacl2014.html#AntoineVL14. The Association for Computer Linguistics, pp 550–559
Bachmann F et al (2000) Software architecture documentation in practice: documenting architectural layers. Special Report CMU/SEI-2000-SR-004 SEI CMU
Baldwin C, Clark K (2000) Design rules: the power of modularity, vol 1. MIT Press, Cambridge, MA
Bass L, Clements P, Kazman R (2012) Software architecture in practice. SEI Series in Software Engineering. Addison-Wesley. https://books.google.com/books?id=-II73rBDXCYC
Bibel W (1982) Automated theorem proving. Vieweg, Braunschweig
Bloor M (1997) Techniques of validation in qualitative research. A critical commentary. In: Miller G, Dingwall R (eds) Context and method in qualitative research. Sage, Thousand Oaks, CA, pp 37–50
Boaduo NAP (2011) Action research in virtual communities: how can this complement successful social networking? IJVCSN 3(4):1–14. http://dblp.uni-trier.de/db/journals/ijvcsn/ijvcsn3.html#Boaduo11
Clements P, Kazman R, Klein M (2001) Evaluatinjg software architectures: methods and case studies. Addison Wesley Professional
Clements P, Bachmann F, Bass L, Garlan D, Ivers J, Little R, Nord R, Stafford J (2002) Documenting software architectures: views and beyond. Addison Wesley Professional
Cois CA, Yankel J, Connell A (2014) Modern devops: optimizing software development through effective system interactions. In: IPCC. http://dblp.uni-trier.de/db/conf/ipcc/ipcc2014.html#CoisYC14. IEEE, pp 1–7
Corbin J, Strauss A (1990) Grounded theory research: procedures, canons, and evaluative criteria. Qual Sociol 13(1):3–21
Corbin JM, Strauss AL (2008) Basics of qualitative research, 3 edn. Sage Publisher
Denzin NK, Lincoln YS (2011) The sage handbook of qualitative research. Sage, Thousand Oaks
Ding L, Medvidovic N (2001) Focus: a light-weight, incremental approach to software architecture recovery and evolution. In: WICSA. IEEE Computer Society, p 191
Dueñas JC, de Oliveira WL, de la Puente JA (1998) Architecture recovery for software evolution. In: CSMR. http://dblp.uni-trier.de/db/conf/csmr/csmr1998.html#DuenasOP98. IEEE Computer Society, pp 113–120
Eixelsberger W, Ogris M, Gall HC, Bellay B (1998) Software architecture recovery of a program family. In: Torii K, Futatsugi K, Kemmerer RA (eds) ICSE. http://dblp.uni-trier.de/db/conf/icse/icse98.html#EixelsbergerOGB98. IEEE Computer Society, pp 508–511
Frankel D (2002) Model driven architecture: applying MDA to enterprise computing. Wiley
Garcia J, Krka I, Mattmann C, Medvidovic N (2013) Obtaining ground-truth software architectures. In: Proceedings of the 2013 international conference on software engineering, ICSE ’13. http://dl.acm.org/citation.cfm?id=2486788.2486911. IEEE Press, Piscataway, NJ, USA, pp 901–910
Gear AL, Buckley J, Collins JJ (2005) Software reconnexion: understanding software using a variation on software reconnaissance and reflexion modelling. In: ISESE. http://dblp.uni-trier.de/db/conf/isese/isese2005.html#GearBC05. IEEE Computer Society, pp 34–43
Glaser BG (1978) Theoretical sensitivity: advances in the methodology of grounded theory. Sociology Press, San Francisco, CA
Guo G, Atlee J, Kazman R (1999) A software architecture reconstruction method. In: Software architecture (proceedings of the first working IFIP conference on software architecture (WICSA1)), pp 15–33
Gwet K, Gwet K (2002) Inter-rater reliability: dependency on trait prevalence and marginal homogeneity. Stat Methods Inter-Rater Reliab Assess 2:1–9
Henriksson A, Larsson H (2003) A definition of round-trip engineering. Tech. rep., Linkpings University, Sweden. http://www.ida.liu.se/~henla/papers/roundtrip-engineering.pdf
Herbsleb J, Grinter R (1999) Architectures, coordination, and distance: conway’s law and beyond. IEEE Softw 16(5):63–70. https://doi.org/10.1109/52.795103
Hevner, March, Park, Ram (2004) Design science in information system research. https://www.researchgate.net/publication/201168946_Design_Science_in_Information_Systems_Research
Izquierdo JLC, Molina JG (2010) An architecture-driven modernization tool for calculating metrics. IEEE Softw 27(4):37–43. http://dblp.uni-trier.de/db/journals/software/software27.html#IzquierdoM10
Kandé MM, Strohmeier A (2000) Towards a UML profile for software architecture. In: Kent S, Evans A (eds) UML’2000 - the unified modeling language: advancing the standard, third international conference, York, UK, October 2–6, 2000, LNCS, vol 1939, pp 513–527
Kazman R, Carriere J (1998) View extraction and view fusion in architectural understanding. In: Proceedings of the fifth international conference on software reuse, pp 290–299
Kazman R, Carriere SJ (1999) Playing detective: reconstructing software architecture from available evidence. Autom Softw Eng 6(2):107–138
Kazman R, Woods S, Carriere J (1998) Requirements for integrating software architecture and reengineering models: corum ii. In: Proceedings of the 5th IEEE working conference on reverse engineering (WCRE), pp 154–163
Khandkar SH (2011) Open coding: introduction. http://pages.cpsc.ucalgary.ca/~saul/wiki/uploads/CPSC681/open-coding.pdf
Kruchten P (1995) Architectural blueprints – the “ 4 + 1” view model of software architecture. IEEE Softw 12(6)
Kruchten P (1995) The 4 + 1 view model of architecture. IEEE Softw 12(6):45–50
Lago P, Avgeriou P, Hilliard R (2010) Guest editors’ introduction: software architecture: framing stakeholders’ concerns. IEEE Softw 27 (6):20–24. http://dblp.uni-trier.de/db/journals/software/software27.html#LagoAH10
Lavrakas PJ (ed.) (2008) Encyclopedia of survey research methods. SAGE Publications Inc. https://doi.org/10.4135/9781412963947
Lutellier T, Chollak D, Joshua Garcia LT, Rayside D, Medvidovic N, Kroeger R (2015) Comparing software architecture recovery techniques using accurate dependencies. In: Proceedings of the 2015 international conference on software engineering, ICSE ’15. IEEE Press, Piscataway, NJ, USA
Malavolta I, Muccini H, Pelliccione P, Tamburri DA (2010) Providing architectural languages and tools interoperability through model transformation technologies. IEEE Trans Software Eng 36(1):119–140. http://dblp.uni-trier.de/db/journals/tse/tse36.html#MalavoltaMPT10
Medvidovic N, Jakobac V (2006) Using software evolution to focus architectural recovery. Autom Softw Eng 13(32):225–256
Murphy GC, Notkin D, Sullivan KJ (2001) Software reflexion models: bridging the gap between design and implementation. IEEE TSE 27(4):364–380
Myers DM (2009) Qualitative research in business & management, 1st edn. Sage, Los Angeles. http://www.gbv.de/dms/zbw/574672206.pdf
Naur P (1985) Programming as theory building. Microprocessing and Microprogramming 15(5):253–261
Newcomb P (2005) Architecture-driven modernization (adm). In: WCRE. http://dblp.uni-trier.de/db/conf/wcre/wcre2005.html#Newcomb05. IEEE Computer Society, p 237
Onions PEW (2006) Grounded theory applications in reviewing knowledge management literature. In: Leeds Metropolitan University innovation north research conference (1962). http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.2036&rep=rep1&type=pdf, pp 1–20
Pollet D, Ducasse S, Poyet L, Alloui I, Cîmpan S, Verjus H (2007) Towards a process-oriented software architecture reconstruction taxonomy. In: Krikhaar RL, Verhoef C, Lucca GAD (eds) CSMR. http://dblp.uni-trier.de/db/conf/csmr/csmr2007.html#PolletDPACV07. IEEE Computer Society, pp 137–148
Resnik P (1999) Semantic similarity in a taxonomy: an information-based measure and its application to problems of ambiguity in natural language. J Artif Intell Res 11:95–130
Sarkarati M, Gomez E, Nanni A, Tamburri DA, Bianco A (2008) Round trip engineering for legacy space data systems based on a model driven architecture approach. In: Proceedings of SpaceOps 2008 conference, Heidelberg, Germany, May 12–16, 2008, pp 310–320
Sartipi K, Dezhkam N, Safyallah H (2006) An orchestrated multi-view software architecture reconstruction environment. IEEE Computer Society, Washington, DC, USA
Schmerl B, Garlan D, Kazman R, Yan H (2006) Discovering architectures from running systems. IEEE Trans Softw Eng 32(7):454–466
Schreiber C, Carley KM (2004) Going beyond the data: empirical validation leading to grounded theory. Computational & Mathematical Organization Theory 10 (2):155–164
Silverman D (1997) Validity and credibility in qualitative research. In: Miller G, Dingwall R (eds) Context and method in qualitative research. Sage, Thousand Oaks, CA, pp 13–25
Suddaby R (2006) From the editors: what grounded theory is not. Acad Manag J 49(4):633–642
Tamburri DA, Lago P, van Vliet H (2013a) Uncovering latent social communities in software development. IEEE Softw 30(1):29–36. https://doi.org/10.1109/MS.2012.170
Tamburri DA, Lago P, van Vliet H (2013b) Organizational social structures for software engineering. ACM Comput Surv 46(1):3:1–3:35. https://doi.org/10.1145/2522968.2522971
Tamburri DA, Kazman R, Fahimi H (2016) The architect’s role in community shepherding. IEEE Softw 33(6):70–79. http://dblp.uni-trier.de/db/journals/software/software33.html#TamburriKF16
Teddlie C, Tashakkori A (2009) Foundations of mixed methods research: integrating quantitative and qualitative approaches in the social and behavioral sciences. Sage, Los Angeles. http://www.amazon.com/Foundations-Mixed-Methods-Research-Quantitative/dp/0761930124
Terra R, de Oliveira Valente MT (2009) A dependency constraint language to manage object-oriented software architectures. Softw Pract Exper 39(12):1073–1094. http://dblp.uni-trier.de/db/journals/spe/spe39.html#TerraV09
Thomson SB (2011) Sample size and grounded theory. JOAAG, 184–192
Tsai J, Xu K (2000) A comparative study of formal verification techniques for software architecture specifications. Ann Softw Eng 10(1):207–223. https://doi.org/10.1023/A:1018960305057
van Niekerk JC, Roode JD (2009) Glaserian and straussian grounded theory: similar or completely different?. In: Dwolatzky B, Cohen J, Hazelhurst S (eds) SAICSIT conference, ACM international conference proceeding series, ACM, pp 96–103
Vasconcelos A, Werner C (2007) Architecture recovery and evaluation aiming at program understanding and reuse. LNCS Springer
Wettinger J, Breitenbücher U, Kopp O, Leymann F (2016) Streamlining devops automation for cloud applications using tosca as standardized metamodel. Futur Gener Comput Syst 56:317–332. http://dblp.uni-trier.de/db/journals/fgcs/fgcs56.html#WettingerBKL16
Wille R (2005) Formal concept analysis as mathematical theory of concepts and concept hierarchies. In: Formal concept analysis, pp 1–33
Xiao L, Cai Y, Kazman R (2014) Titan: a toolset that connects software architecture with quality analysis. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering, FSE 2014. https://doi.org/10.1145/2635868.2661677. ACM, New York, NY, USA, pp 763–766
Acknowledgments
We acknowledge the precious comments we received from the anonymous reviewers - they helped greatly in structuring the value and contributions in this manuscript. This research has been conducted in collaboration with TERMA GmbHFootnote 23 as an ESA GSTP study founded by ESA under contract 20645/07/F/VS. The author would like to thank Drs. Gert Villemos, Antonio Bianco and Henry Muccini for support during RTE. Damian’s work is partially supported by the European Commission grant no. 644869 (H2020 - Call 1), DICE.
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by: Martin Robillard
Rights and permissions
About this article
Cite this article
Tamburri, D.A., Kazman, R. General methods for software architecture recovery: a potential approach and its evaluation. Empir Software Eng 23, 1457–1489 (2018). https://doi.org/10.1007/s10664-017-9543-z
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-017-9543-z