Architectural Design
Software architecture is the high level structure of a software system, the discipline
of creating such structures, and the
documentation of these structures. It is the set of structures needed to reason
about the software system, and comprises the software elements, the relations
between them, and the properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture
of a building
Software architecture choices
include specific structural options from possibilities in the design of
software. For example, the systems that controlled the space shuttle launch
vehicle have the requirement of being very fast, and very reliable, in
principle. Therefore an appropriate real-time computing language would
be chosen. Similarly, multiple redundant independently produced copies of a
program running on independent hardware and cross-checking results would be a
software system architecture choice to satisfy the need for reliability. Software
architecture is about making fundamental structural choices which are costly to
change once implemented, i.e., which are used to 'house' the more changeable
elements of the program, e.g., an operating system.
Documenting software
architecture facilitates communication between stakeholders, captures
early decisions about the high-level design, and allows reuse of design
components between projects.
CHARACTERISTICS
Software architecture
exhibits the following:
Multitude of stakeholders: software systems have to cater to a variety of
stakeholders such as business managers,
owners, users and operators. These stakeholders all have their own concerns
with respect to the system. Balancing these concerns and demonstrating how they
are addressed is part of designing the system.This implies that architecture
involves dealing with a broad variety of concerns and stakeholders, and has a
multidisciplinary nature.
Separation of concerns: the established way for architects to reduce
complexity is by separating the concerns
that drive the design. Architecture documentation shows that all stakeholder
concerns are addressed by modeling and describing the architecture from
separate points of view associated with the various stakeholder concerns. These
separate descriptions are called architectural views (see for example the 4+1
Architectural View Model).
Quality-driven: classic software
design approaches (e.g. Jackson Structured Programming)
were driven by required
functionality and the flow of data through the system, but the current insight
is that the architecture of a software system is more closely related to its quality
attributes such as fault-tolerance, backward compatibility, extensibility,
reliability, maintainability, availability, security,
usability, and other such –ilities. Stakeholder concerns often translate
into requirements on these quality attributes, which are variously
called non-functional requirements, extra-functional requirements,
behavioral requirements, or quality attribute requirements.
Recurring styles: like building architecture, the software architecture discipline has developed standard ways to address recurring concerns. These “standard ways” are called by various names at various levels of abstraction. Common terms for recurring solutions are architectural style, strategy or tactic, reference architecture and architectural pattern.
Conceptual integrity: a term introduced by Fred Brooks in The Mythical Man-Month to denote the idea that the architecture of a software system represents an overall vision of what it should do and how it should do it. This vision should be separated from its implementation. The architect assumes the role of “keeper of the vision”, making sure that additions to the system are in line with the architecture, hence preserving conceptual integrity.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.