Modeling of Software Concerns in Cosmos
Abstract
Separation of concerns is a well-established principle of software engineering. Nevertheless, the failure to separate concerns effectively has been identified as a continuing cause of the ongoing software crisis. This failure arises in part because most programming and modeling formalisms enforce a dominant decomposition that allows only a few concerns to be separated, whereas software in reality is subject to multiple simultaneous, overlapping, and crosscutting concerns. Several approaches to "advanced separation of concerns" have been proposed, including subject-oriented programming, aspect-oriented programming, and Hyperspaces. These focus mainly on coding but take a multidimensional view of concerns that applies across the software life cycle. To support such approaches, we are developing Cosmos, a general-purpose concern-space modeling schema. Cosmos distinguishes logical and physical concerns. Logical concerns include classifications, classes, instances, properties, and topics, physical include instances, collections, and attributes. Cosmos also identifies four categories of relationship, including categorical, interpretive, mapping, and physical. Cosmos can support software development activities such as rationale capture, impact analysis, compositional development, change propagation, customization, and reuse.