17.1. REQUIREMENTS ENGINEERINGBroadly scoped requirements and constraints form good candidates for aspectization at the requirements level. However, currently only a small set of requirements engineering techniques specifically aim to provide new abstractions and composition mechanisms to modularize and compose such concerns. Other requirements-level approaches achieve separation of concerns through the separation of functional and non-functional requirements. Non-functional requirements are constraints that affect several components of a system and are associated with quality of service (e.g., usability, security). Thus, they can be seen as good candidates for aspects. Goal-oriented approaches [57], such as KAOS [25] and i* [86], are good examples of methods where non-functional requirements play a major role. A goal is an objective that the system under consideration should achieve. It can be formulated at different levels of abstraction, and it covers functional and non-functional concerns. The i* framework identifies and models organizational requirements and adopts the goal and softgoal modeling concepts. A softgoal represents a non-functional requirement that we expect to satisfy within acceptable limits. There are other mechanisms, such as problem frames [43] and viewpoints [32], which manage concerns during requirements. Problem frames focus on the environment in which a system is located instead of the system itself or its interfaces. Problem frames are concerns that can be handled as aspects. Separation of crosscutting properties has been considered in PREView [76], a viewpoint-oriented requirements engineering method. A PREView viewpoint encapsulates partial information about the system. Requirements are organized in terms of several viewpoints, and analysis is conducted against a set of concerns intended to correspond broadly to the overall system goals. In applications of the method, the concerns that are identified are typically high-level non-functional requirements. Approaches explicitly created to handle aspectual requirements are those presented in [7, 34, 68, 70]. Grundy proposes an aspect-oriented component requirements engineering (AOCRE) method targeted at component-based software development [34]. He has developed a categorization of diverse aspects of a system that each component provides to end users or other components (namely user interface, collaboration, persistence, distribution, and configuration). Baniassad and Clarke [7] propose Theme to provide support for aspect-oriented analysis and design through Theme/Doc and Theme/UML, respectively. In this section, we will focus on the analysis part of the approach and leave the design part to be analyzed in Section 17.3. Analysis is carried out by first identifying a set of actions in the requirements list that are, in turn, used to identify crosscutting behaviors. The authors define actions as sensible verbs for the domain. An action is a potential theme, which is a collection of structures and behaviors that represent one feature. The aspect-oriented requirements engineering (AORE) model [68, 70] relates concerns to requirements to see which concerns crosscut the stakeholders' requirements and qualify as candidate aspects. The model supports separation of the specification of aspectual requirements, non-aspectual requirements, and composition rules in modules representing coherent abstractions and following well-defined templates. The composition rules employ informal and often concern-specific actions and operators to specify how an aspectual requirement influences or constrains the behavior of a set of non-aspectual requirements. The modularization makes it possible to establish early trade-offs between aspectual requirements, thereby providing support for negotiation and subsequent decision-making among stakeholders. At the same time, early separation of crosscutting requirements facilitates the determination of their mapping and influence on artifacts at later development stages. Further support for traceability in the AORE model is provided by the PROBE framework [48], which generates proof obligations based on standard linear temporal logic that should hold for an aspect-oriented system from the initial aspectual requirements and their associated trade-offs. The temporal logic assertions can be used as input to formal methods tools such as model-checkers or as the basis for deriving test cases. Given such a range of alternatives, how do we select what best satisfies an organization and its project needs? The decision process consists of two main steps. The first step is to select a subset of candidate approaches from the whole set of existing ones. The guideline to help us in achieving this is dictated by a set of organizational constraints, ranging from budget limitations to existence of expertise on particular approaches. The second step is to choose one specific approach or an integration of several from the reduced set. The guideline here needs to take into consideration the development process we would like to use. The criteria that may influence our decision are:
Table 17-1 shows the results of applying these criteria to the approaches mentioned here.
Considering this comparison table, the main issues that may help us in our decision are:
|