With special focus on software architectural issues, we report from the first two major phases of a software development project. Our experience suggests that explicit focus on software architecture in these phases was an important key to success. More specifically: Demands for stability, flexibility and proper work organization in an initial prototyping phase of a project are facilitated by having an explicit architecture. However, the architecture should also allow for certain degrees of freedom for experimentation. Furthermore, in a following evolutionary development phase, architectural redesign is necessary and should be firmly based on experience gained from working within the prototype architecture. Finally, to get it right, the architecture needs to be prototyped, or iterated upon, throughout evolutionary development cycles. In this architectural prototyping process, we address the difficult issue of identifying and evolving functional components in the architecture and point to an architectural strategy - a set of architectures, their context and evolution - that was helpful in this respect.
Index Terms:
Software architecture, software engineering, experimental prototyping, evolutionary development, architecture evolution and refactoring, multi-perspective application development
Citation:
Michael Christensen, Christian Heide Damm, Klaus Marius Hansen, Elmer Sandvad, Michael Thomsen, "Design and Evolution of Software Architecture in Practice," tools, pp.2, 32nd International Conference on Technology of Object-Oriented Languages, 1999