Flow equations as a generic programming tool for manipulation of attributed graphs
Proceedings of the 2002 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
An Approach for Recovering Distributed System Architectures
Automated Software Engineering
Hypertext support for the information needs of software maintainers
Journal of Software Maintenance and Evolution: Research and Practice
A case study in re-engineering to enforce architectural control flow and data sharing
Journal of Systems and Software
Documenting after the fact: Recovering architectural design decisions
Journal of Systems and Software
An experiment on the role of graphical elements in architecture visualization
Empirical Software Engineering
Combating architectural degeneration: a survey
Information and Software Technology
The supportive effect of patterns in architecture decision recovery - A controlled experiment
Science of Computer Programming
An approach to quality achievement at the architectural level: AQUA
FMOODS'06 Proceedings of the 8th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Objective evaluation of software architectures in driver assistance systems
Computer Science - Research and Development
An analysis of unit tests of a flight software product line
Science of Computer Programming
An analysis of unit tests of a flight software product line
Science of Computer Programming
Hi-index | 0.00 |
Software architecture is important for large systems in which it is the main means for, among other things, controlling complexity. Current ideas on software architectures were not available more than ten years ago. Software developed at that time has been deteriorating from an architectural point of view over the years, as a result of adaptations made in the software because of changing system requirements. Parts of the old software are nevertheless still being used in new product lines. To make changes in that software, like adding features, it is imperative to first adapt the software to accommodate those changes. Architecture improvement of 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 to our knowledge a new research topic. Phase one of the process is based on Relation Partition Algebra (RPA). By lifting the information to higher levels 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 the need to deal with the complete software and without any interference with the normal development process.