Programming Research Group - University of Amsterdam - TR P9902 A Two-phase Process for Software Architecture Improvement Ren Krikhaar Andr Postma Alex Sellink Marc Stroucken Chris Verhoef Software architecture is important for large systems where it is the main means for, among other things, controlling complexity. Current ideas about software architectures were not available more than ten years ago. Software that was developed at that time, has been deteriorating from an architecture point of view over the years, as a result of adaptations that were made to the software because of changing system requirements. Still parts of the old software are being used in new product-lines. To make changes to that software, like adding features, it becomes imperative to first adapt the software to accommodate those changes. Software architecture improvement on the existing software is therefore becoming more and more important. This paper describes a two-phase process for software architecture improvement, which is the synthesis of two research areas: the architecture visualisation and analysis area of Philips Research, and the transformation engines and renovation factories area of the University of Amsterdam. Software architecture transformation plays an important role, and is a new research topic as far as we know. Phase one of the process is based on Relation Partition Algebra (RPA). By lifting the information to a higher level of abstraction and calculating metrics over the system, all kinds of quality aspects can be investigated. Phase two is based on formal transformation techniques on abstract syntax trees. The software architecture improvement process allows for a fast feedback loop on results, without having to deal with the complete software and without interfering with the normal development process.