File(s) under permanent embargo
Multi-perspective specification, design and implementation of software components using aspects
journal contribution
posted on 2000-12-01, 00:00 authored by John GrundyCurrent approaches to component-based systems engineering tend to focus on low-level software component interface design and implementation. This often leads to the development of components whose services are hard to understand and combine, make too many assumptions about other components they can be composed with and component documentation that is too low-level. Aspect-oriented component engineering is a new methodology that uses a concept of different system capabilities ('aspects') to categorise and reason about inter-component provided and required services. It supports the identification, description and reasoning about high-level component functional and non-functional requirements grouped by different systemic aspects, and the refinement of these requirements into design-level software component service implementation aspects. Aspect information is used to help implement better component interfaces and to encode knowledge of a component's capabilities for other components, developers and end users to access. We describe and illustrate the use of aspect-oriented component engineering techniques and notations to specify, design and implement software components, report on some basic tool support, and our experiences using the approach to build some complex, component-based software systems.
History
Journal
International journal of software engineering and knowledge engineeringVolume
10Issue
6Pagination
713 - 734Publisher
World Scientific PublishingPublisher DOI
ISSN
0218-1940Language
engPublication classification
CN.1 Other journal articleUsage metrics
Keywords
Science & TechnologyTechnologyComputer Science, Artificial IntelligenceComputer Science, Software EngineeringEngineering, Electrical & ElectronicComputer ScienceEngineeringcomponent-based developmentaspect-oriented designrequirements engineeringsoftware architecturessoftware componentssoftware engineering environments