A Reverse Software Engineering Process to Ascertain Architecture Conformance through Conceptual Re-modularisation and Imposing Architecture Paradigm - Experience with Open Source Code

Ahmad Elghafari (1051133)


The literature is rich of reverse software engineering processes and techniques resulting in relative, necessary information to ascertain the software architecture confirms to certain target, intended or reference architecture. There are still various opportunities for engineering researchers to contribute to address one or several requirements of such analysis. To collect the built architecture to be ready for such analyses and, a reverse software engineering process is really required. Since, it abstracts a way from lower level of abstraction to higher levels, gradually. In order to overcome these issues, this thesis introduces a process that re-modularise the built architecture conceptually and imposes architecture paradigm as reference guidelines. As computer and architect collaborate, to capture relative information from built architecture while maintaining vertical abstraction traceability. The experiment findings suggest that the introduced process is able to ascertain software built architecture carefully. The process shows its applicability to re-modularise difficult built architecture which has enormous cyclic intercommunication patterns. Also, the findings suggest that not all cyclic intercommunication patterns contribute in dissolving the modularity of built architecture. The proposed process can play as guidance for architects during the early phase of software evolution process. The process inherits the weaknesses of the integrated tools, the vagueness of the referenced architecture paradigm description, the impreciseness of the classification and impact of the various intercommunication patterns, and also the architect expertise and competency level. Future research should investigate whether these weaknesses may be overcome with additional, precise knowledge of architecture paradigm guidelines, deeper analysis and reasoning about the various intercommunication patterns of software system and with the employment of more tools to minimise objectivity.