21.5. CONCERN MODELING AS A FIRST-CLASS UNDERTAKINGTo make concern modeling a first-class undertaking in software development (AOSD, OOSD, or otherwise), a schema for the modeling of concerns must be adopted, and the activity of concern modeling must be integrated into development processes. In this section, we consider requirements on a concern-modeling schema and discuss issues in integrating concern modeling into the software lifecycle.[1]
21.5.1. Requirements for a Concern-Modeling SchemaSince a concern model is an information model, any language for modeling information or representing knowledge may have some applicability to concern modeling. The initial models we constructed when we began our investigations [33] were informal. Though informal models may be useful for ad hoc or experimental purposes, formal models are more powerful and offer a firmer foundation for an aspect-oriented software engineering discipline. However, different formal languages offer different advantages for different purposes. Thus, while some benefits may indeed be gained by applying existing formalisms to concern modeling, we believe that consideration should be given specifically to the requirements of modeling concerns. We have identified desirable properties that are useful for a concern-modeling schema, including generality, independence, appropriateness, completeness, and ease of use.
These desired general characteristics can be addressed through a number of recommendations more specific to concern modeling. For completeness, it is important to be able to model not only concerns but also relationships between concerns and consistency conditions on concerns. For generality, the schema should allow users to define arbitrary concerns, relationships, and conditions. For completeness and generality, it should be possible to view these relationships and constraints as concerns themselves. Since not all kinds of concerns and relationships can be anticipated, the formalism should include elements for allowing users to define their own kinds of concern. This also supports appropriateness since it would allow specific schemas to be tailored to specific projects. To facilitate ease of use, some specific but commonly useful types of concern and relationship should be included. To support completeness, generality, and appropriateness, it should be possible to organize concerns in various ways, such as by classifications (including multiple classifications), aggregations, and other groupings. For independence, a general-purpose concern-modeling schema should be independent from other modeling or implementation languages, artifact types, lifecycle stages, and development methods. For independence and generality, it should also be possible to capture concerns (or related data) that are not necessarily captured in other development formalisms. In asserting that a concern-modeling schema should be independent, we do not mean to suggest that it cannot be based on or used closely with other languages. Rather, it should be possible for the concern-modeling schema to be meaningful and usable on its own. (For example, a concern-modeling schema may be relational, but it should not depend on the use of relational modeling in other parts of the development process.) Also, while we are advocating a general-purpose concern-modeling schema, it is possible to define more specialized approaches to be integrated with (and dependent on) particular development languages, artifact types, or methods. Within a specialized context, this may increase the appropriateness and ease of use of the formalism. Finally, many of the potential applications of concern modeling depend on the ability to relate concerns to associated artifacts, that is, artifacts that may represent, define, implement, affect, or otherwise be of significance for the concerns. To some extent, this depends on the nature of the artifacts, such as the ability to reference and access the artifacts and their constituent parts. Where feasible, concerns should be related directly to artifacts, although it may be problematic to establish the reverse relationships, i.e., from artifacts to concerns (as the artifact representations may not accommodate these references). As an alternative, a model of the artifact space may be constructed, analogous to the domain models used in domain specific software architectures (DSSA) [39] (with the artifacts, in effect, as the domain). In this case, concerns are related to the artifact model, and relationships from the artifact model to the concern model can be easily represented. A similar approach is used in UML (v. 1.4 [29]), in which the physical elements of systems are represented by "nodes" and "artifacts," and design elements, such as "classes" and "components," are associated to them. 21.5.2. Process ConsiderationsIn general, there are many ways to use concern modeling within a software development process, just as there are many ways to specify requirements or to model architecture. The role of concern modeling depends on the development method and the process objective. The following scenarios suggest the range of possibilities:
As these scenarios suggest, concern modeling may be done before initial development, during development, or as specific needs arise afterwards. It may be done independently of, or in close association with, other development activities. It may be done in one step or incrementally. It may be for particular work products or sets of concerns or comprehensively for a product or complete concern space. Finally, it may be done for general purposes or to address specific problems. |