Various Definitions of Software
Architecture:
· Architecture is high-level design. This is
true enough, in the sense that a horse is a mammal, but the two are not
interchangeable. Other tasks associated with design are not architectural, such
as deciding on important data structures that will be encapsulated. The
interface to those data structures is decidedly an architectural concern, but
their actual choice is not.
· Architecture is the overall structure of the system. This
common refrain implies (incorrectly) that systems have but
one structure. We know this to be false, and, if someone takes this position,
it is usually entertaining to ask which structure they mean. The point has more
than pedagogic significance. As we will see later, the different structures
provide the critical engineering leverage points to imbue a system with the
quality attributes that will render it a success or failure. The multiplicity
of structures in an architecture lies at the heart of the concept.
· Architecture is the structure of the components of
a program or system, their interrelationships, and the principles and
guidelines governing their design and evolution over time. This is
one of a number of process-centered definitions that include ancillary
information such as principles and guidelines. Many people claim that
architecture includes a statement of stakeholder needs and a rationale for how
those needs are met. We agree that gathering such information is essential and
a matter of good professional practice. However, we do not consider them part
of the architecture per se any more than an owner's manual for a car is part of
the car. Any system has an architecture that can be discovered and analyzed
independently of any knowledge of the process by which the architecture was
designed or evolved.
· Architecture is components and connectors. Connectors imply a runtime mechanism for transferring control and data around a system. Thus, this definition concentrates on the runtime architectural structures. A UNIX pipe is a connector, for instance. This makes the non-runtime architectural structures (such as the static division into responsible units of implementation discussed earlier) secondclass citizens. They aren't second class but are every bit as critical to the satisfaction of system goals. When we speak of "relationships" among elements, we intend to capture both runtime and non-runtime relationships.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.