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.





References:
[1] “Chapter 1: What is Software Architecture” Msdn library, Retrieved
from <http://msdn.microsoft.com/en-us/library/ee658098.aspx>
[2] Taylor, Richard N., Medvidovic, Nenad, & Dashofy, Eric. (2009).
Software architecture: foundations, theory and practice. John Wiley &
Sons Inc.
[3] 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.
[4] 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.
[5] John Reekie, Rohan McAdam, "A Software Architecture Primer
Paperback." (2009)
[6] Sangal, N., Jordan, E., Sinha, V., Jackson, D.: Using Dependency
Models to Manage Complex Software Architecture, OOPSLA. (2005)
[7] "Dead code detection and removal." Aivosto-Programming tools for
Software Developers. Aivosto Oy, Helsinki, Finland, n.d. Web.
<http://www.aivosto.com/vbtips/deadcode.html>.
[8] "Code duplication detection." SolidSource- About Software
Development and Maintenance. N.p., 17-Feb-2010. Web.
<http://www.solidsourceit.com/blog/?tag=code-clone>.
[9] "Software Rot - Manage those Dependencies." kirkk.com. N.p., 06-
APR-2009. Web. <http://techdistrict.kirkk.com/2009/04/06/software-rotmanage-
those-dependencies/>.
[10] Martin, Robert C.: Design Principles and Design Patterns.
[11] Richard N. Taylor, Nenad Medvidovic, Eric M. Dashofy. "Software
Architecture: Foundations, Theory and Practice."(2009)
[12] "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/>.
[13] Knoernschild, Kirk. "That Rotting Design." kirkk.com. N.p., 21-DEC-
2009. Web. <http://techdistrict.kirkk.com/2009/12/21/that-rottingdesign/>.
[14] Medvidovic, Nenad, and Vladimir Jakobac. "Using software evolution
to focus architectural recovery." Autom Software Eng (2006) 13: 225–
256. Springer Science.
[15] Dr. Eden, Amnon H. "Software Evolution and Validation." (2008).
[16] "Bad Software Architecture." 0xcafebabe's space. N.p., 22-MAR-2010.
Web. <http://huionn.wordpress.com/2010/03/22/bad-softwarearchitecture/>.
[17] Stal, Michael. "Software Architecture Refactoring." Siemens AG
Corporate Technology, 2008.
[18] Bode, Stephan: “On the Role of Evolvability for Architectural Design”,
16-AUG-2010.
[19] IEEE Std. 1219-1998, IEEE Standard for Software Maintenance. IEEE
Computer Society.
[20] Caroli, Paulo. "Refactoring to Patterns- A practical look into Agile
approach on Evolutionary Design." IndicThreads.com Conference on
Java Technology 2007, 07-FEB-2008.