A Four Method Framework for Fighting Software Architecture Erosion
Software Architecture is the basic structure of software that states the development and advancement of a software system. Software architecture is also considered as a significant tool for the construction of high quality software systems. A clean design leads to the control, value and beauty of software resulting in its longer life while a bad design is the cause of architectural erosion where a software evolution completely fails. This paper discusses the occurrence of software architecture erosion and presents a set of methods for the detection, declaration and prevention of architecture erosion. The causes and symptoms of architecture erosion are observed with the examples of prescriptive and descriptive architectures and the practices used to stop this erosion are also discussed by considering different types of software erosion and their affects. Consequently finding and devising the most suitable approach for fighting software architecture erosion and in some way reducing its affect is evaluated and tested on different scenarios.
Digital Object Identifier (DOI): doi.org/10.5281/zenodo.1337943Procedia APA BibTeX Chicago EndNote Harvard JSON MLA RIS XML ISO 690 PDF Downloads 1796
 “Chapter 1: What is Software Architecture” Msdn library, Retrieved from
 Taylor, Richard N., Medvidovic, Nenad, & Dashofy, Eric. (2009). Software architecture: foundations, theory and practice. John Wiley & Sons Inc.
 Mehwish Riaz, Muhammad Sulaman, Husnain Naqvi, “Architectural Decay during continuous software evolution and impact of ‘Design for Change’ on software Architecture” published in Journal of Advances in Software Engineering and Communications in Computer and Information Science, 2009, Volume 59, 119-126.
 M M Lehman, J F Ramil, P D Wernick, D E Perry, W M Turski, "Metrics and laws of Software Evolution The Nineties View,"metrics,p.f14, Fourth International Software Metrics Symposium(METRICS'97),1997.
 John Reekie, Rohan McAdam, "A Software Architecture Primer Paperback." (2009)
 Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using Dependency Models to Manage Complex Software Architecture, OOPSLA. (2005)
 "Dead code detection and removal." Aivosto-Programming tools for Software Developers. Aivosto Oy, Helsinki, Finland, n.d. Web.
 "Code duplication detection." SolidSource- About Software Development and Maintenance. N.p., 17-Feb-2010. Web.
 "Software Rot - Manage those Dependencies." kirkk.com. N.p., 06- APR-2009. Web.
 Martin, Robert C.: Design Principles and Design Patterns.
 Richard N. Taylor, Nenad Medvidovic, Eric M. Dashofy. "Software Architecture: Foundations, Theory and Practice."(2009)
 "Stop the Architecture Erosion of Eclipse And Open Source Projects at EclipseCon 2011." Anthony Dahanne’s blog. N.p., 24-MAR-2011 < http://blog.dahanne.net/2011/03/24/stop-the-architecture-erosion-ofeclipse- and-open-source-projects-at-eclipsecon-2011/>.
 Knoernschild, Kirk. "That Rotting Design." kirkk.com. N.p., 21-DEC- 2009. Web.
 Medvidovic, Nenad, and Vladimir Jakobac. "Using software evolution to focus architectural recovery." Autom Software Eng (2006) 13: 225– 256. Springer Science.
 Dr. Eden, Amnon H. "Software Evolution and Validation." (2008).
 "Bad Software Architecture." 0xcafebabe's space. N.p., 22-MAR-2010. Web.
 Stal, Michael. "Software Architecture Refactoring." Siemens AG Corporate Technology, 2008.
 Bode, Stephan: “On the Role of Evolvability for Architectural Design”, 16-AUG-2010.
 IEEE Std. 1219-1998, IEEE Standard for Software Maintenance. IEEE Computer Society.
 Caroli, Paulo. "Refactoring to Patterns- A practical look into Agile approach on Evolutionary Design." IndicThreads.com Conference on Java Technology 2007, 07-FEB-2008.