Software architectures evolve over time due to requirement and technology changes. Hence, software architecture recovery is often necessary to capture and document existing systems to effectively support product evolution and maintenance. Architectures of existing systems can be recovered using reverse engineering techniques. Reverse engineering deals with deriving higher-level descriptions of a software system from existing software artifacts, primarily source code. Reverse engineering of source code, often, is a time consuming task. For reasons of limited resources or competition, software architectures could be recovered more efficiently by studying solutions from similar systems. This paper presents an approach for rapid and agile software architecture recovery in a mature domain, network applications. We demonstrate a case study for software architecture recovery by examining an existing architecture in the same domain. The existing architecture help derive a conceptual description for the target system. Meanwhile, some well-known design patterns in the similar domain are used to compare with the target system. The knowledge gained from design patterns provides more detailed information. The process is coupled with iterative reviews of the source code to refine the recovered software architecture.

Additional Metadata
Keywords Analogy, Design patterns, Reverse engineering, Software architecture recovery, Software evolution
Conference 6th IASTED International Conference on Software Engineering and Applications, SEA 2002
Citation
Lung, C.H. (2012). Agile software architecture recovery through existing solutions and design patterns. Presented at the 6th IASTED International Conference on Software Engineering and Applications, SEA 2002.