Recovering architectural assumptions

During the creation of a software architecture, the architects and stakeholders take a lot of decisions. Many of these decisions can be directly related to functional or quality requirements. Some design decisions, though, are more or less arbitrarily made on the fly because of personal experience, domain knowledge, budget constraints, available expertise, and the like. These decisions, as well as the reasons for those decisions, are often not explicit upfront. They are implicit, and usually remain undocumented. We call them assumptions. There is no accepted way to document assumptions, and the relation between the software architecture and these assumptions easily gets lost, becomes hidden in the girders of the architecture. They are rediscovered at a later stage, when the software evolves and assumptions become invalid or new assumptions contradict earlier ones. In this paper, we develop a method to recover such assumptions from an existing software product. We illustrate the method by applying it to a commercial software product, and show how the results can help assess the evolutionary capabilities of its architecture.

[1]  René L. Krikhaar,et al.  Reverse architecting approach for complex systems , 1997, 1997 Proceedings International Conference on Software Maintenance.

[2]  Rick Kazman,et al.  A Software Architecture Reconstruction Method , 1999, WICSA.

[3]  Hassan Gomaa,et al.  Modeling adaptive and evolvable software product lines using the variation point model , 2004, 37th Annual Hawaii International Conference on System Sciences, 2004. Proceedings of the.

[4]  Chuck Cavaness,et al.  Programming Jakarta Struts , 2002 .

[5]  Sallie M. Henry,et al.  Software Structure Metrics Based on Information Flow , 1981, IEEE Transactions on Software Engineering.

[6]  Walter F. Tichy,et al.  Proceedings 25th International Conference on Software Engineering , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[7]  Lois M. L. Delcambre,et al.  Change cases: use cases that identify future requirements , 1996, OOPSLA '96.

[8]  Martin Becker,et al.  Mapping requirements to reusable components using Design Spaces , 2000, Proceedings Fourth International Conference on Requirements Engineering. ICRE 2000. (Cat. No.98TB100219).

[9]  M. Lindvall,et al.  Knowledge management in software engineering , 2002, IEEE Software.

[10]  James M. Bieman,et al.  Software architecture classification for estimating the cost of COTS integration , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[11]  Carsten Ziegeler Cocoon: Building XML Applications , 2002 .

[12]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[13]  Martin Fowler Design - Who needs an architect? , 2003, IEEE Software.

[14]  Mark Harman,et al.  Pre/post conditioned slicing , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[15]  Sebastián Uchitel,et al.  Enhancing architectural mismatch detection with assumptions , 2000, Proceedings Seventh IEEE International Conference and Workshop on the Engineering of Computer-Based Systems (ECBS 2000).

[16]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[17]  Jennifer Vesperman Essential CVS , 2003 .

[18]  Joel Spolsky,et al.  The Law of Leaky Abstractions , 2004 .

[19]  Arie van Deursen,et al.  Symphony: view-driven software architecture reconstruction , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

[20]  Nenad Medvidovic,et al.  Focus: a light-weight, incremental approach to software architecture recovery and evolution , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.

[21]  P. Lago,et al.  Explicit assumptions enrich architectural models , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[22]  David Garlan,et al.  Architectural Mismatch or Why it's hard to build systems out of existing parts , 1995, 1995 17th International Conference on Software Engineering.

[23]  Patricia Lago,et al.  Observations from the Recovery of a Software Product Family , 2004, SPLC.

[24]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[25]  Hong Mei,et al.  A feature oriented approach to modeling and reusing requirements of software product lines , 2003, Proceedings 27th Annual International Computer Software and Applications Conference. COMPAC 2003.