Evaluating Software Architecture

From EQUIS Lab Wiki

Jump to: navigation, search

Software architecture has emerged as a crucial part of the design process. The architectural view of the system is abstract distilling away details of implementation, algorithm & data representation and concentrating on the behavior and interaction of the black box elements. The software architecture constrains the achievement of various quality attributes (such as performance, security, maintainability and usability) in a software intensive system. Since software architecture plays a vital role in achieving quality attributes, it is very important to evaluate a system’s architecture with respect to relevant quality requirements as early as possible.

Software architecture evaluation is a quality assurance technique that is increasingly attracting significant research and commercial interests. A number of evaluation methods have been developed. Evaluation of architecture can be done in two phases: prior the implementation and after the implementation.

Researchers believe that quality attributes can primarily be achieved in a conservative manner in terms of cost and time if software architecture is evaluated or assessed with respect to the specific quality attributes prior the implementation. In this approach emphasis has been given on the forward engineering rather than the reverse engineering approach in order to save time and cost. In this proactive approach an initial version of the software architecture is designed. Then it is evaluated with respect to the quality requirements by using a qualitative or quantitative assessment technique. Using the assessment results, the estimated quality attributes are compared to the values in the specification. If these are satisfactory, then the design process is finished. Otherwise, the architecture transformation or improvement stage is entered. This stage improves the software architecture by selecting appropriate quality attribute optimizing or improving design solutions. When applying architecture design solutions, generally one or more quality attributes are improved whereas other attributes may be affected negatively. By applying one or more architectural design solutions, a new architectural design is created. The newly created design is evaluated again and the process is repeated, if necessary, until all non-functional requirements have been satisfied as much as possible.

But evaluation of Software architecture requires the implementation (source code) to check whether it can satisfy the desired quality attributes. Thats why Software architecture is also evaluated after the implementation and then transformed to achieve the desire quality attributes reactively. This approach follows the reverse engineering method. For example, usability testing of the software product is performed mainly after the implementation. If the evaluation result is not satisfactory, the overall design structure is modified and implemented using new architectural solution. To test the security of the web services, the online version of that application is required. Parformance, scalability of the software are needed to be checked after the implementation.

Architectural Styles and Pattern

Architectures of large software systems are usually composed of patterns and styles. Most of the time it is confusing to distinguish Arichitectural styles and patterns. Many papers also have addressesd these two things in such a way that they are basically same. But actually they are different.

An architectural style provides a specialized design language for a specific class of systems. Given that architectural styles can describe a broad range of different design families, it is tempting to view object oriented design (OOD) as a style of architectural design in which all components are objects and all connections are simple associations or aggregations.

Basically in design patterns the common idioms are found repeatedly in software designs. These patterns should be made explicit, codified, and applied appropriately to similar problems. Several approaches to expressing these patterns have arisen over the past four or five years, most of which have focused on patterns for OOD. One of the purposes of using patterns is to develop systems with predictable quality attributes. The pattern approach lets us describe relatively complex protocols of interactions between objects that we want to encapsulate, but don’t want to encapsulate within a single class.

Existing Software Architecture Evaluation Method

Different evaluation techniques or methods have been developed to evaluate the software architecture. Software Engineering Institute (SEI) has taken the fist step to evaluate software architecture in 1995. Since then many evaluation techniques such as SAAM, ATAM, CBAM, ALMA, ARID etc. have been developed. These methods are scenario-based, which rely on the quality of the scenarios used for the evaluation and the scenarios are developed using stakeholders and requirements and by analyzing design patterns. These approaches are the evaluation framework for evaluating any quality attributes and can be applied at any stage of the software development. SAAM is mainly is used to evaluate a whole software architecture where as ATAM and CBAM are used to evaluate an architectural styles.

Only evaluation technique SALUTA (Scenario based Architecture Level Usability Analysis) is the first explicit effort to evaluate the software architecture with respect to usability prior the implementation. Usability is an essential part of software quality. It has been considered during the design decisions of the software architecture after 1990. Before that it was considered that usability doesn’t have any impact on software architecture and the main aspect of usability was the presentation of information by considerably separating the functionality and user interface.

Golden method is a control experiment to evaluate the patterns that are related to achieve usability, for example the cancel pattern, undo pattern etc. Goleden has nemed this pattern as USAP: Uability-Supporting Architectural Pattern.

Links related to Software Architecture