Aspect-oriented software development has focused on the software life cycle's implementation phase: developers identify and capture aspects mainly in code. But aspects are evident earlier in the life cycle, such as during requirements engineering and architecture design. Early aspects are concerns that crosscut an artifact's dominant decomposition or base modules derived from the dominant separation-of-concerns criterion, in the early stages of the software life cycle. In this article, we describe how to identify and capture early aspects in requirements and architecture activities and how they're carried over from one phase to another. We'll focus on requirements and architecture design activities to illustrate the points, but the same ideas apply in other phases as well, such as domain analysis or in the fine-grained design activities that lie between architecture and implementation.
This paper appeared in a special issue of IEEE Software on Aspect-Oriented Programming. IEEE Software targets a wide community of researchers and practitioners in software development. This paper provides a comprehensive analysis and guidelines on how to apply aspect-oriented requirements engineering and architecture design techniques in a practical setting. The focus is on making the techniques accessible to researchers and practitioners who are non-specialist in the area. It also discusses how one may bring these techniques into the mainstream of software development activities in day-to-day working practices. Despite its recent publication, it has 29 citations on Google Scholar. RAE_import_type : Journal article RAE_uoa_type : Computer Science and Informatics