Architectural Aspects
Software architecture forms
one of the key artifacts in the entire software development life cycle since it
embodies the earliest design decisions and includes the gross-level components
that directly impact the subsequent analysis, design and implementation. Accordingly, it is important that the
architecture design supports the software system qualities required by the
various stakeholders. For ensuring the quality factors the common assumption is
that identifying the fundamental concerns for architecture design is necessary
and various architecture design methods have been introduced for this purpose.
It appears that some
concerns, even at the architectural design level, can not be easily localized
and specified in individual architectural components. Similar to the notion of
aspect at the programming level, we say that these concerns are crosscutting and
denote so-called architectural aspects. Since the crosscutting property
of architectural aspects is inherent we claim that these cannot be undone simply
by redefining the software architecture using conventional architectural
abstractions. In fact, we believe that like various aspect-oriented programming
abstractions we
need explicit mechanisms to identify, specify and evaluate aspects at the
architecture design level.
Current software
architecture design methods do not make an explicit distinction between
conventional architectural concerns that can be localized using current
architectural abstractions and architectural concerns that crosscut multiple
architectural components. The risk is that potential aspects might be easily
overlooked during the software architecture design and remains unsolved at the
design and programming level. This may lead to tangled code in the system and
consequently the quality factors that the architecture analysis methods attempt
to verify will still be impeded.
This section will discuss the following
issues: