We consider using machine learning techniques to help understand a large software system. In particular, we describe how learning techniques can be used to reconstruct abstract Da...
Decomposing complex software systems into conceptually independent subsystems represents a signi cant software engineering activity that receives considerable research attention. ...
Often, software architects impose a particular style on the software systems they design. For large software systems, they would like to ensure that the design continues to confor...
Abstract. Naive feature orientation runs into problems with large software systems, such as telephone switching systems. With naive feature orientation, a feature extends a base sy...
UML class diagrams of complex software systems are frequently very large, making it difficult to gain a detailed understanding of the underlying software components within the con...
Instance orientation is an approach for designing and programming software systems. It addresses a limitation of current software architectures: it allows multiple higherlevel vie...
Software systems have become increasingly complex over the years. Complexity metrics measures software complexity using real numbers. It is, however, hard to gain insight into dif...
Mobile software systems are characterized by their highly dynamic and unpredictable execution context. Such systems are permeating a number of domains where the systems operate in ...
This paper presents a dependency constraint language that allows software architects to restrict the spectrum of dependencies that can be presented in a given software system. The ...
We present Bristlecone, a programming language for robust software systems. Bristlecone applications have two components: a high-level organization description that specifies how t...