Software engineering is an intensively people-oriented activity, yet too little is known about how designers, maintainers, requirements analysts and all other types of software engineers …
Since modern software systems are large and complex, appropriate abstractions of their structure are needed to make them more understandable and, thus, easier to maintain …
S Ducasse, D Pollet - IEEE Transactions on Software …, 2009 - ieeexplore.ieee.org
To maintain and understand large applications, it is important to know their architecture. The first problem is that unlike classes and packages, architecture is not explicitly represented in …
Software architectures capture the most significant properties and design constraints of software systems. Thus, modifications to a system that violate its architectural principles can …
Many automated techniques of varying accuracy have been developed to help recover the architecture of a software system from its implementation. However, rigorously assessing …
As valuable software systems get old, reverse engineering becomes more and more important to the companies that have to maintain the code. Clustering is a key activity in …
Metaheuristic techniques such as genetic algorithms, simulated annealing and tabu search have found wide application in most areas of engineering. These techniques have also …
P Andritsos, V Tzerpos - IEEE Transactions on Software …, 2005 - ieeexplore.ieee.org
The majority of the algorithms in the software clustering literature utilize structural information to decompose large software systems. Approaches using other attributes, such …
One of the difficulties in maintaining a large software system is the absence of documented business domain topics and correlation between these domain topics and source code …