Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Assessing architectural drift in commercial software development: a case study

Published: 01 January 2011 Publication History

Abstract

Objectives: Software architecture is perceived as one of the most important artefacts created during a system's design. However, implementations often diverge from their intended architectures: a phenomenon called architectural drift. The objective of this research is to assess the occurrence of architectural drift in the context of de novo software development, to characterize it, and to evaluate whether its detection leads to inconsistency removal. Method: An in vivo, longitudinal case study was performed during the development of a commercial software system, where an approach based on Reflexion Modelling was employed to detect architectural drift. Observation and think-aloud data, captured during the system's development, were assessed for the presence and types of architectural drift. When divergences were identified, the data were further analysed to see if identification led to the removal of these divergences. Results: The analysed system diverged from the intended architecture, during the initial implementation of the system. Surprisingly however, this work showed that Reflexion Modelling served to conceal some of the inconsistencies, a finding that directly contradicts the high regard that this technique enjoys as an architectural evaluation tool. Finally, the analysis illustrated that detection of inconsistencies was insufficient to prompt their removal, in the small, informal team context studied. Conclusions: Although the utility of the approach for detecting inconsistencies was demonstrated in most cases, it also served to hide several inconsistencies and did not act as a trigger for their removal. Hence additional efforts must be taken to lessen architectural drift and several improvements in this regard are suggested. Copyright © 2010 John Wiley & Sons, Ltd.

References

[1]
Bass L, Clements PC, Kazman R. Software Architecture in Practice. Addison-Wesley: Boston, MA, U.S.A., 2003; 19-47.
[2]
Knodel J, Muthig 0, Naab M, Lindvall M. Static evaluation of software architectures. Proceedings of the Conference on Software Maintenance and Reengineering, Bari, Italy, 2006; 279-294. 4B88-933B-76B31CF61134.
[3]
Shaw M, Clements PC. The golden age of software architecture. IEEE Software 2006; 23(2):31-39.
[4]
Eick SG, Graves TL, Karr AF, Marron JS, Mockus A. Does code decay? Assessing the evidence from change management data. IEEE Transactions on Software Engineering 2001; 27(1):1-12.
[5]
Hochstein L, Lindvall M. Diagnosing architectural degeneration. Proceedings of the 28th Annual IEEE/NASA Software Engineering Workshop, Greenbelt, Maryland, 2003; 137.
[6]
Hassan AE, Holt RC. Using development history sticky notes to understand software architecture. IPWC, Bari, Italy, 2004; 183.
[7]
Murphy GC, Notkin D, Sullivan KJ. Software refiexion models: Bridging the gap between design and implementation. IEEE Transactions on Software Engineering 2001; 27(4):364-380.
[8]
Glass RL. We have lost our way. Journal of Systems and Software 1992; 18(2):111-112. 0164-1212(92)90120-9.
[9]
Pressman RS. Software Engineering: A Practitioner's Approach. McGraw-Hill: New York, 2004.
[10]
Murphy GC, Notkin D, Sullivan KJ. Software refiexion models: Bridging the gap between source and high-level models. Proceedings of the 3rd ACM SIGSOFT Symposium on Foundations of Software Engineering, Washington, DC, 1995; 18-23.
[11]
Tran JB, Godfrey MW, Lee EHS, Holt RC. Architectural repair of open source software. Proceedings of the 8th International Workshop on Program Comprehension, Limerick, Ireland, 2000; 48. WPC.2000.852479.
[12]
Tvedt RT, Costa P, Lindvall M. Does the code match the design? A process for architecture evaluation. Proceedings of the IEEE International Conference on Software Maintenance, Montreal, Canada, 2002; 393.
[13]
Tvedt RT, Costa P, Lindvall M. Evaluating software architectures. Advances in Computers 2004; 61:2-43.
[14]
Sefika M, Sane A, Campbell RH. Monitoring compliance of a software system with its high-level design models. Proceedings of the 18th International Conference on Software Engineering, Berlin, Germany, 1996; 387-396.
[15]
Knodel J, Popescu D. A comparison of static architecture compliance checking approaches. Proceedings of the 6th Working IEEE/ IFIP Conference on Software Architecture, Mumbai, India, 2007; 12. /WICSA.2007.1.
[16]
Yin RK. Case Study Research: Design and Methods. Sage Publications Inc.: Thousand Oaks, CA, 2003.
[17]
Torbert WR. The practice of action inquiry. Handbook of Action Research: Participative Inquiry and Practice. Sage Publications Inc.: Thousand Oaks, CA, 2001; 250-260.
[18]
Murphy GC, Notkin D. Reengineering with refiexion models: A case study. IEEE Computer 1997; 30(8):29-36.
[19]
Knodel J, Muthig D, Haury U, Meier G. Architecture compliance checking: Experiences from successful technology transfer to industry. Proceedings of the 12th European Conference on Software Maintenance and Reengineering, Athens, Greece, 2008; 43-52.
[20]
Knodel J, Muthig D, Rost D. Constructive architecture compliance checking--An experiment on support by live feedback. Proceedings of the 24th IEEE International Conference on Software Maintenance, Beijing, China, 2008; 287-296.
[21]
Le Gear A, Buckley J. Exercising control over the design of evolving software systems using an inverse application of refiexion modeling. Proceedings of the Conference of the Center for Advanced Studies on Collaborative Research, Dublin, Ireland, 2006; 376.
[22]
Rosik J, Le Gear A, Buckley J, Babar MA. An industrial case study of architecture conformance. Proceedings of 2nd International Symposium on Empirical Software Engineering and Measurement, Keiserslautern, Germany, 2008; 80-89.
[23]
Standish T. Essay on software reuse. IEEE Transactions on Software Engineering 1984; 10(5):494-497.
[24]
Knodel J, Muthig D, Naab M. Understanding software architectures by visualization-An experiment with graphical elements. Proceedings of the 13th Working Conference on Reverse Engineering, Benevento, Italy, 2006; 39-50.
[25]
Seaman CB. The information gathering strategies of software maintainers. International Conference on Software Maintenance, Montreal, Canada, 2002; 141.
[26]
Singer J, Lethbridge T, Vinson N, Anquetil N. An examination of software engineering work practices. Proceedings of the Conference of the Center for Advanced Studies on Collaborative Research, Toronto, Canada, 1997; 21.
[27]
Godfrey MW, Eric H. Secrets from the Monster: Extracting Mozilla's software architecture. Proceedings of International Symposium on Constructing Software Engineering Tools, Limerick, Ireland, 2000.
[28]
Koschke R, Simon D. Hierarchical refiexion models. Proceedings of the 10th Working Conference on Reverse Engineering, Victoria, Canada, 2003.
[29]
Lindvall M, Tesoriero R, Costa P. Avoiding architectural degeneration: An evaluation process for software architecture. Proceedings of the 8th International Symposium on Software Metrics, Ottawa, Canada, 2002; 77.
[30]
Christl A, Koschke R, Storey MA. Equipping the refiexion method with automated clustering. Proceedings 12th Working Conference on Reverse Engineering, Pittsburgh, U.S.A., 2005; 89-98.
[31]
Le Gear A. Component Reconn-exion, University of Limerick, 2006.
[32]
Kruchten P. Architectural Blueprints--The 4+1 view model of software architecture. IEEE Software 1995; 12(6):42-50.
[33]
Frenzel P, Koschke R, Breu A, Angstmann K. Extending the refiexion method for consolidating software variants into product lines. Proceedings of the 14th Working Conference on Reverse Engineering, Vancouver, Canada, 2007; 160-169.
[34]
jRM Tool Eclipse Plug-In. Available at: http://jrmtool.sourceforge.net/ {March 2007}.
[35]
Kitchenham B, Pickard L, Pfieeger SL. Case studies for method and tool evaluation. IEEE Software 1995; 12(4):52-62.
[36]
Wood M, Daly J, Miller J, Roper M. Multi-method research: An empirical investigation of object-oriented technology. Journal of Systems and Software 1999; 48(1):13-26.
[37]
Oates BJ. Researching Information Systems and Computing. Sage Publications Ltd.: Thousand Oaks, 2006.
[38]
Eclipse Software Development Platform. Available at: http://www.eclipse.org; {March 2007}.
[39]
Krippendorff K. Content Analysis: An Introduction to its Methodology. Sage Publications Ltd.: Beverley Hills, CA,2004.
[40]
Layman L, Williams L, Amant RS. Toward reducing fault fix time: Understanding developer behavior for the design of automated fault detection tools. Proceedings of the International Symposium on Empirical Software Engineering and Measurement, Madrid, Spain, 2007; 176-185.
[41]
Gwet K. Handbook of Inter-rater Reliability. STATAXIS Publishing Company: Gaithersburg, MD, 2001.
[42]
Exton C, Avram G, Buckley J, Le Gear A. An experimental report on the limitations of experimentation as a means of empirical investigation. Proceedings of the 19th Annual Psychology of Programming Interest Group Conference, Joensuu, Finland, 2007; 173-284.
[43]
O'Brien MP, Buckley J, Exton C. Empirically studying software practitioners: Bridging the gap between theory and practice. Proceedings of the 21st IEEE International Conference on Software Maintenance, Budapest, Hungary, 2005; 433-442.
[44]
Perry D, Porter A, Votta L. A primer on empirical studies. Tutorial Presented at the International Conference on Software Maintenance, Boston, U.S.A., 1997; 657.
[45]
Adair J. The Hawthorne effect: A reconsideration of the methodological artifact. Journal of Applied Psychology 1984; 69(2):334-345.
[46]
Gamma E, Helm R, Johnson R, Vlissides J. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley, Longman Publishing Co. Inc.: Boston, MA, U.S.A., 1995.
[47]
Kolb R, John I, Knodel J, Muthig D, Haury U, Meier G. Experiences with product line development of embeded systems at Testo AG. Proceedings of the 10th International Software Product Line Conference, Baltimore, U.S.A., 2006; 172-181.
[48]
Pohl K, Boeck1e G, van der Linden F. Software Product Line Engineering: Foundations, Principles and Techniques. Springer: Secaucus, NJ, U.S.A., 2005.
[49]
Eichberg M, Kloppenburg S, Klose K, Mezini M. Defining and continuous checking of structural program dependencies. Proceedings of the 30th International Conference on Software Engineering, Leipzig, Germany. 2008; 391-400.
[50]
Buckley J, Le Gear A, Exton C, Cadogan R, Johnston T, Looby B, Koschke R. Encapsulating targeted component abstractions using software Refiexion Modelling. Journal of Software Maintenance and Evolution 2008; 20(2):107-134.

Cited By

View all
  • (2024)Capturing and Understanding the Drift Between Design, Implementation, and DocumentationProceedings of the 32nd IEEE/ACM International Conference on Program Comprehension10.1145/3643916.3644399(382-386)Online publication date: 15-Apr-2024
  • (2021)A Domain-Specific Language to Specify Planned Architectures of Adaptive SystemsProceedings of the 15th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3483899.3483903(41-50)Online publication date: 27-Sep-2021
  • (2021)Hierarchical Code-to-Architecture MappingSoftware Architecture10.1007/978-3-031-15116-3_5(86-104)Online publication date: 13-Sep-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Software—Practice & Experience
Software—Practice & Experience  Volume 41, Issue 1
January 2011
128 pages

Publisher

John Wiley & Sons, Inc.

United States

Publication History

Published: 01 January 2011

Author Tags

  1. architecture consistency
  2. architecture degeneration
  3. reflection models
  4. software/program verification

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Capturing and Understanding the Drift Between Design, Implementation, and DocumentationProceedings of the 32nd IEEE/ACM International Conference on Program Comprehension10.1145/3643916.3644399(382-386)Online publication date: 15-Apr-2024
  • (2021)A Domain-Specific Language to Specify Planned Architectures of Adaptive SystemsProceedings of the 15th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3483899.3483903(41-50)Online publication date: 27-Sep-2021
  • (2021)Hierarchical Code-to-Architecture MappingSoftware Architecture10.1007/978-3-031-15116-3_5(86-104)Online publication date: 13-Sep-2021
  • (2020)Monitoring Behavioral Compliance with Architectural Patterns Based on Complex Event ProcessingService-Oriented and Cloud Computing10.1007/978-3-030-44769-4_10(125-140)Online publication date: 28-Sep-2020
  • (2019)Exploring the suitability of source code metrics for indicating architectural inconsistenciesSoftware Quality Journal10.1007/s11219-018-9404-z27:1(241-274)Online publication date: 1-Mar-2019
  • (2018)Architecture consistencyEmpirical Software Engineering10.1007/s10664-017-9515-323:1(224-258)Online publication date: 1-Feb-2018
  • (2017)The relationship of code churn and architectural violations in the open source software JabRefProceedings of the 11th European Conference on Software Architecture: Companion Proceedings10.1145/3129790.3129810(152-158)Online publication date: 11-Sep-2017
  • (2016)Evaluation of an architectural conformance checking software serviceProccedings of the 10th European Conference on Software Architecture Workshops10.1145/2993412.3003391(1-7)Online publication date: 28-Nov-2016
  • (2015)Feature-Oriented Reflexion ModellingProceedings of the 2015 European Conference on Software Architecture Workshops10.1145/2797433.2797494(1-7)Online publication date: 7-Sep-2015
  • (2015)Five Years of Software Architecture Checking: A Case Study of EclipseIEEE Software10.1109/MS.2014.10632:5(30-36)Online publication date: 1-Sep-2015
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media