Architectural
Structures and Views
The neurologist, the orthopedist, the hematologist, and the
dermatologist all have a different view of the structure of a human body.
Ophthalmologists, cardiologists, and podiatrists concentrate on subsystems. The
kinesiologist and psychiatrist are concerned with differentaspects of the
entire arrangement's behavior. Although these views are pictured differently
and have very different properties, all areinherently related: Together they
describe the architecture of the human body.
So it is with software. Modern systems are more than complex
enough to make it difficult to grasp them all at once. Instead, we restrict our
attention at any one moment to one (or a small number) of the software system's
structures. To communicate meaningfully about an architecture, we must make
clear which structure or structures we are discussing at the moment—which view we are taking of the architecture.
We will be using the related terms structure
and view when discussing architecture
representation. A view is a representation of a coherent set of architectural
elements, as written by and read by system stakeholders. It consists of a
representation of a set of elements and the relations among them.
A structure is the set of elements itself, as they exist in
software or hardware. For example, a module structure isthe set of the system's
modules and their organization. A module view is the representation of that
structure, as documented by and usedby some system stakeholders. These terms
are often used interchangeably, but we will adhere to these definitions.
Architectural structures can by and large be divided into three
groups, depending on the broad nature of the elements they show.
Module structures. Here the elements are modules, which are units of
implementation. Modules represent a
code-based way of considering the system. They are assigned areas of functional
responsibility. There is less emphasis on how the resulting software manifests
itself at runtime. Module structures allow us to answer questions such as What
is the primary functional responsibility assigned to each module? What other
software elements is a module allowed to use? What other software does it
actually use? What modules are related to other modules by generalization or
specialization (i.e., inheritance) relationships?
Component-and-connector
structures. Here the elements are
runtime components (which are the
principal units of computation) and connectors (which are the communication
vehicles among components). Component-and-connector structures help answer
questions such as What are the major executing components and how do they
interact? What are the major shared data stores? Which parts of the system are
replicated? How does data progress through the system? What parts of the system
can run in parallel? How can the system's structure change as it executes?
Allocation
structures. Allocation structures show
the relationship between the software elements
and the elements in one or more external environments in which the software is
created and executed. They answer questions such as What processor does each
software element execute on? In what files is each element stored during
development, testing, and system building? What is the assignment of software
elements to development teams?
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.