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

Design erosion: problems and causes

Published: 01 March 2002 Publication History

Abstract

Design erosion is a common problem in software engineering. We have found that invariably, no matter how ambitious the intentions of the designers were, software designs tend to erode over time to the point that redesigning from scratch becomes a viable alternative compared to prolonging the life of the existing design. In this paper, we illustrate how design erosion works by presenting the evolution of the design of a small software system. In our analysis of this example, we show how design decisions accumulate and become invalid because of new requirements. Also it is argued that even an optimal strategy for designing the system (i.e. no compromises with respect to e.g. cost are made) does not lead to an optimal design because of unforeseen requirement changes that invalidate design decisions that were once optimal.

References

[1]
Beck, K., 1999. Extreme Programming Explained. Addison-Wesley, Reading, MA.
[2]
Bengtsson, P., Bosch, J., 1998. Scenario-based software architecture reengineering. In: Proceedings of the 5th International Conference on Software Reuse, pp. 308-317.
[3]
Bosch, J., 1999. Evolution and composition of reusable assets in product-line architectures: a case study. In: Proceedings of the First Working IFIP Conference on Software Architecture.
[4]
Bosch, J., 2000. Design and use of software architectures adopting and evolving a product-line approach. Addison-Wesley, Reading, MA.
[5]
Bosch, J., Molin, P., Matsson, M., Bengtsson, P., 1999. Object oriented frameworks-problems and experiences. In: Fayad, M.E., Schmidt, D.C., Johnson, R.E. (Eds.), Building Application Frameworks. Wiley, New York.
[6]
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., 1996. Pattern-oriented Software Architecture: A System of Patterns. Wiley, New York.
[7]
Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D., 1999. Refactoring-Improving the Design of Existing Code. Addison-Wesley, Reading, MA.
[8]
Gamma, E., Helm, R., Johnson, R., Vlissides, J., 1995. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley, Reading, MA.
[9]
Harrison, W., Ossher, H., 1993. Subject-oriented programming (a critique of pure objects). In: Proceedings of OOPSLA '93.
[10]
Jaktman, C.B., Leaney, J., Liu, M., 1999. Structural analysis of the software architecture-a maintenance assessment case study. In: Proceedings of the First Working IFIP Conference on Software Architecture (WICSA1).
[11]
Kiczalez, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.M., Irwin, J., 1997. Aspect oriented programming. In: Proceedings of ECOOP 1997.
[12]
Lieberherr, K., 1996. Adaptive Object-oriented Software - The Demeter Method. PWS Publishing company.
[13]
Lieberherr, K.J., Holland, I.M., 1989. Assuring good style for object oriented programs. IEEE Software, 38-48.
[14]
Naur, P., Randell, B., 1969. Software Engineering: Report on 1968 NATO Conference, NATO, 1969.
[15]
Parnas, D.L., 1994. Software aging. In: Proceedings of ICSE 1994.
[16]
Perry, D.E., Wolf, A.L., 1992. Foundations for the study of software architecture. In: ACM SIGSOFT Software Engineering Notes, vol. 17, No. 4.
[17]
Roberts, D., Brant, J., Johnson, R., 1997. A refactoring tool for smalltalk. Theory and Practice of Object Systems 3 (4), 253-263.
[18]
Svahnberg, M., Bosch, J., 1999. Characterizing evolution in product-line architectures. In: Proceedings of the IASTED 3rd International Conference on Software Engineering and Applications.
[19]
Tarr, P., Ossher, H., Harrison, W., 1999. N Degrees of separation: multi-dimensional separation of concerns. In: Proceedings of ICSE'99.
[20]
Van Gurp, J., Bosch, J., 1999. On the implementation of finite state machines. In: Proceedings of the 3rd Annual IASTED International Conference Software Engineering and Applications.

Cited By

View all
  • (2023)Using Automatically Recommended Seed Mappings for Machine Learning-Based Code-to-Architecture MappersProceedings of the 38th ACM/SIGAPP Symposium on Applied Computing10.1145/3555776.3577628(1432-1439)Online publication date: 27-Mar-2023
  • (2023)On the adoption and effects of source code reuse on defect proneness and maintenance effortEmpirical Software Engineering10.1007/s10664-023-10408-629:1Online publication date: 12-Dec-2023
  • (2022)A Survey on Characterizing the Empirical Analysis, Proposed Approaches, and Research Trends for Architectural DecayInternational Journal of Software Innovation10.4018/IJSI.29751210:1(1-18)Online publication date: 18-Mar-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Journal of Systems and Software
Journal of Systems and Software  Volume 61, Issue 2
March 2002
89 pages

Publisher

Elsevier Science Inc.

United States

Publication History

Published: 01 March 2002

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 13 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Using Automatically Recommended Seed Mappings for Machine Learning-Based Code-to-Architecture MappersProceedings of the 38th ACM/SIGAPP Symposium on Applied Computing10.1145/3555776.3577628(1432-1439)Online publication date: 27-Mar-2023
  • (2023)On the adoption and effects of source code reuse on defect proneness and maintenance effortEmpirical Software Engineering10.1007/s10664-023-10408-629:1Online publication date: 12-Dec-2023
  • (2022)A Survey on Characterizing the Empirical Analysis, Proposed Approaches, and Research Trends for Architectural DecayInternational Journal of Software Innovation10.4018/IJSI.29751210:1(1-18)Online publication date: 18-Mar-2022
  • (2022)Extraction and Management of RationaleProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3559568(1-3)Online publication date: 10-Oct-2022
  • (2022)End-to-End Rationale ReconstructionProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3559547(1-5)Online publication date: 10-Oct-2022
  • (2022)Finding needles in a haystackJournal of Systems and Software10.1016/j.jss.2019.110420158:COnline publication date: 21-Apr-2022
  • (2022)Understanding software architecture erosionJournal of Software: Evolution and Process10.1002/smr.242334:3Online publication date: 1-Mar-2022
  • (2020)When Are Smells Indicators of Architectural Refactoring OpportunitiesProceedings of the 28th International Conference on Program Comprehension10.1145/3387904.3389276(354-365)Online publication date: 13-Jul-2020
  • (2019)On the Prioritization of Design-Relevant Smelly ElementsProceedings of the XIII Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3357141.3357142(83-92)Online publication date: 23-Sep-2019
  • (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
  • 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