architectural analysis Flashcards
What Is Software Architecture?
The software architecture of a system is the set of structures needed to reason about the system. These structures comprise software elements, relations among them, and properties of both.
What is a software structure?
A structure is simply a set of elements held together by a relation
Which three structural categories are there in architectural structure?
Module structures
—————-
Allocation structures
What is system architecture?
A system’s architecture is a representation of a system in which there is a
mapping of functionality onto hardware and software components, a mapping
of the software architecture onto the hardware architecture, and a concern for
the human interaction with these components.
———————————
system architecture is
concerned with the totality of hardware, software, and humans
What is enterprise architecture?
is a description of the structure and behavior of an organization’s processes, information ow, personnel, and organizational
subunits.
———————————-
An enterprise architecture will specify, for example, the data model that
various systems use to interact.
What does the component and connector (C&C) structure focus on?
Components are the
principal units of computation and could be services, peers, clients, servers,
lters, or many other types of runtime element
———————————
Connectors are the
communication vehicles among components, such as call-return, process
synchronization operators, pipes, or others
——————————–
In short:
How the system is to be structured as a set of elements that have runtime behavior (components) and interactions (connectors).
What does module structures focus on?
show how a system is structured as a
set of code or data units that have to be constructed or procured. Modules are assigned specific computational responsibilities, and are the basis of work
assignments for programming teams
———————————
In any module structure, the elements
are modules of some kind (perhaps classes, packages, layers, or merely
divisions of functionality, all of which are units of implementation)
What does the allocation structure focus on?
establish the mapping from software structures to the
system’s nonsoftware structures, such as its organization, or its development,
test, and execution environments.
In short:
How the system will relate to non-software structures in its environment (such as CPUs, file systems, networks, development teams, etc.).
(module structure) What is a “decomposition structure”?
The units are modules that are related to each other
by the “is-a-submodule-of” relation, showing how modules are decomposed
into smaller modules recursively until the modules are small enough to be
easily understood
(module structure) What is “uses structure”?
the units are also modules, and perhaps classes. The units are related by the uses relation, a specialized form of dependency. One unit of software uses another if the
correctness of the rst requires the presence of a correctly functioning
version (as opposed to a stub) of the second.
(module structure) What is layer structure?
The modules in this structure are called layers. A layer is an
abstract “virtual machine” that provides a cohesive set of services through a
managed interface. Layers are allowed to use other layers in a managed
fashion; in strictly layered systems, a layer is only allowed to use a single
other layer. This structure imbues a system with portability—that is, the
ability to change the underlying virtual machine
(module structure) What is class structure?
The modules in this structure are called
classes, and they are related through an “inherits-from” or “is-an-instance-of”
relation. This view supports reasoning about collections of similar behavior
or capability and parameterized dierences. The class structure allows one to
reason about reuse and the incremental addition of functionality. If any
documentation exists for a project that has followed an object-oriented
analysis and design process, it is typically this structure
(module structure) What is data model structure?
The data model describes the static information structure in
terms of data entities and their relationships. For example, in a banking
system, entities will typically include Account, Customer, and Loan. Account
has several attributes, such as account number, type (savings or checking),
status, and current balance. A relationship may dictate that one customer can
have one or more accounts, and one account is associated with one or more
customers
(Allocation Structures) What are deployment structures?
The deployment structure shows how software is
assigned to hardware processing and communication elements. The elements
are software elements (usually a process from a C&C structure), hardware
entities (processors), and communication pathways. Relations are “allocatedto,” showing on which physical units the software elements reside, and
“migrates-to” if the allocation is dynamic.
—————————————–
This structure can be used to
reason about performance, data integrity, security, and availability.
(Allocation Structures) What are implementation structures?
shows how software elements
(usually modules) are mapped to the le structures in the system’s
development, integration, test, or conguration control environments. This is
critical for the management of development activities and build processes.
(Allocation Structures) What are work assignment structures?
assigns responsibility for
implementing and integrating the modules to the teams who will carry out
these tasks. Having a work assignment structure be part of the architecture
makes it clear that the decision about who does the work has architectural as
well as management implications
Is the structures independent?
For example, a module in a decomposition structure may be
manifested as one, part of one, or several components in one of the C&C
structures, reecting its runtime alter-ego. In general, mappings between
structures are many to many
What is a quality attribute?
A measurable or testable property of a system that is used to indicate how well the system satisfies the needs of its stakeholders.
“The totality of characteristics of an entity that bears on its ability to satisfy stated and
implied needs” [ISO 9126,2002]
Quality attributes are often called “non-functional” properties.
What is functional requirements?
These requirements state what the system must
do, and how it must behave or react to runtime stimuli.
What is quality attribute requirements?
These requirements are qualifications of
the functional requirements or of the overall product. A qualification of a
functional requirement is an item such as how fast the function must be
performed, or how resilient it must be to erroneous input
——————————–
A quality attribute requirement should be unambiguous and testable
What is constraints?
A constraint is a design decision with zero degrees of freedom.
That is, it’s a design decision that’s already been made. Examples include
the requirement to use a certain programming language or to reuse a certain
existing module, or a management fiat to make your system service oriented
What is the response of architecture to functional requirements?
are satisfied by assigning an appropriate sequence
of responsibilities throughout the design