0% found this document useful (0 votes)
69 views25 pages

Lecture-4 Architectural Structures: Software Design and Architecture

This document provides an overview of software architecture and different architectural structures. It discusses how software architecture is important for communication between stakeholders, early design decisions, implementation constraints, organizational structure, and enabling system qualities. It then describes different types of architectural structures including module structures, component-connector structures, and allocation structures. Specific structures like layered, client-server, and deployment are explained. The document emphasizes that architects must understand how different structures impact quality attributes and choose appropriate structures.

Uploaded by

UniVersE
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
69 views25 pages

Lecture-4 Architectural Structures: Software Design and Architecture

This document provides an overview of software architecture and different architectural structures. It discusses how software architecture is important for communication between stakeholders, early design decisions, implementation constraints, organizational structure, and enabling system qualities. It then describes different types of architectural structures including module structures, component-connector structures, and allocation structures. Specific structures like layered, client-server, and deployment are explained. The document emphasizes that architects must understand how different structures impact quality attributes and choose appropriate structures.

Uploaded by

UniVersE
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Lecture-4

Architectural Structures
Software Design and Architecture (Spring 2019)

Aamir Anwar
Lecturer CS & IT Dr. Awais Majeed
UOL Islamabad Campus
[email protected]
Importance of Software Architecture

Communication among stakeholders

• SA presents a common abstraction of a system

• Customers are concerned that


• Software is reliable and available
• Architecture can be implemented on schedule and within budget
• SA allows teams to work independently
SA for early design decisions

Implementation constraints
 Implementation must follow the structural design decisions

 Describe prescribe elements, their interaction and the


responsibilities

 Resource allocations as constraints on implementation


Organizational structure
 SA defines the highest level system decomposition

 This is used for the work breakdown

 Planning, budgeting, scheduling, teams, communication


channels, configuration management etc.
SA for early design decisions …

SA as system quality enabler


 Architecture defines whether a system will inhibit the
desired/required qualities or not
 High performance – manage time base behavior of the
elements
 Inter-element communication ?

 Modifiability – responsibilities to elements

 Security – inter-element communication and access control

 Scalability – localization of resources

 Incremental release – manage inter-component usage

 Re-usability – restrict inter-element coupling


SA for early design decisions …

Managing change
• 80% of the cost is after initial deployment
• Change can be partitioned into 3 groups:
• Local: modify a single element
• Non-local: multi-element change

• Architectural: change the way elements interact with each other

• Deep understanding of the relationships, performance and


behavior of the system is required to decide on such changes
SA for early design decisions …
• Evolutionary prototyping
• An executable system in the early DLC

• Cost and schedule estimation


• Team/work distribution more clear
• Identify challenging parts
• Identify required resources/competencies
SA as a Transferable, re-usable model

Software Product lines


SPL is a set of software-intensive systems sharing a
common, managed set of features that satisfy the
specific needs of a particular market segment
These are developed from a common set of core assets
in a prescribed way
 Architecture: important asset
Architecture defines what is fixed for all members of
a product line/family and what is variable
Architecture a core asset of the developing
organization
SA as a Transferable, re-usable model …
Large, externally developed elements
• Architecture based development focuses on composing or
assembling of independent elements

• Architecture defines what type of elements can be


incorporated into the systems along with any constraints
(protocols, data types, procedures, interaction with
external/internal environment etc)

• Interchangeability – challenging in software systems due to


architectural mismatch
SA as a Transferable, re-usable model …

Restrict design alternatives


• Restrict to a limited no. of choice for program
cooperation and interaction
• Minimise design complexity

• Architectural pattern should help in arbitration of


confliction design constraints and improve the
implementation of the resulting design solution
Architectural Structures

•Module Structure
•Component & Connector Structure
•Allocation Structure
Types of Architectural Structures
Module structure
• The elements are modules – units of implementation
• Assigned areas of functional responsibilities
• What is the primary functional responsibility assigned to
each module?

• What other software elements is a module allowed to use?


Types of Architectural Structures …
Component-and-connector structures
• elements are runtime components (which are the principal
units of computation) and
• connectors (which are the communication vehicles among
components)
• Can answer questions as:
• 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?
Types of Architectural Structures …
Allocation structures
• Allocation structures show the relationship between the
software elements and the elements in one or more
external environments
• Can answer questions like:
• 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?
Common software architecture structures
Module based structures

Decomposition
Relationship between modules is “is a sub-module of”

The decomposition structure enhances system‘s modifiability –


changes fall in a small number of modules
The modules have associated products (interface specifications,
code, test plans etc)
Uses
The units are modules or procedures or resources on the interfaces
of modules.
One unit uses another if the correctness of the first requires the
presence of a correct version of the second.
Extend or abstract (extract) functionality
Module based structures …
Layered
• a system of layers emerges when uses relationship is
controlled in a particular fashion
• in which a layer is a coherent set of related functionality.
• In strict sense : layer n may only use the services of layer n –
1.
• Layers are often designed as abstractions (virtual machines)
that hide implementation specifics below from the layers
above – portability

Think of an example?
Module based structures …

Class or generalisation
• The module units in this structure are called
classes
• The relation is "inherits-from" or "is-an-
instance-of."
• This view supports reasoning about collections
of similar behavior or capability
Component-and-Connector
Process or communicating processes
• deals with the dynamic aspects of a running system
• The units here are processes or threads that are
connected with each other by communication,
synchronization, and/or exclusion operations.
• The relationship is of attachment, showing how the
components and connectors are hooked together
• It is important to design a system's execution
performance and availability.
Component-and-Connector …

Concurrency
• A structure which allows the architect to determine
opportunities for parallelism and the locations where
resource contention may occur
• The units are components and the connectors are "logical
threads."
• A logical thread is a sequence of computation that can be allocated
to a separate physical thread later in the design process.
Shared data, or repository
• components and connectors that create, store, and access
persistent data
Component-and-Connector …
Client-server
• A structure of components and connectors for a system built
as a group of cooperating clients and servers
• The components are the clients and servers
• the connectors are protocols and messages they share to
carry out the system's work
• Useful for
• separation of concerns
• for physical distribution, and
• for load balancing (supporting runtime performance).
Allocation

Deployment
• The deployment structure shows how software is
assigned to hardware-processing and communication
elements
• The elements are software (usually a process from a
component-and-connector view), hardware entities
(processors), and communication pathways.
• Relations are "allocated-to,"
• which physical units the software elements reside,
• "migrates-to," if the allocation is dynamic
Allocation …

Implementation
• This structure shows how software elements (usually
modules) are mapped to the file structure(s) in:
• system's development,
• integration, or
• configuration control environments.
• Helpful in the management of development activities
and build environment
Allocation …
Work Assignment
• This structure assigns responsibility for implementing
and integrating the modules to the appropriate
development teams
• Work assignment structure has architectural as well as
management implications
Which structure to choose?

• Not all of them may be relevant

• one of the obligations of the architect is to understand


how the various structures lead to quality attributes

• Can you relate the 4+1 approach from the Rational


Unified Process ?
References and further readings

•Chapter 2 from “Software Architecture in


Practice” by Len Bass

You might also like