0% found this document useful (0 votes)
2 views

Software Achitetcure II

Software architecture involves the design process of identifying sub-systems and their communication frameworks, serving as a link between specification and design. It includes both 'architecture in the small' for individual programs and 'architecture in the large' for complex enterprise systems. Advantages include improved stakeholder communication, system analysis, and large-scale reuse, while architectural patterns like layered and repository architectures provide structured approaches to system design.

Uploaded by

Yash Jain
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Software Achitetcure II

Software architecture involves the design process of identifying sub-systems and their communication frameworks, serving as a link between specification and design. It includes both 'architecture in the small' for individual programs and 'architecture in the large' for complex enterprise systems. Advantages include improved stakeholder communication, system analysis, and large-scale reuse, while architectural patterns like layered and repository architectures provide structured approaches to system design.

Uploaded by

Yash Jain
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Software Architecture

The design process for identifying the sub-systems making up a


system and the framework for sub-system control and
communication is architectural design.
The output of this design process is a description of the software
architecture.
Software architecture is
An early stage of the system design process.
Represents the link between specification and design processes.
Often carried out in parallel with some specification activities.
It involves identifying major system components and their
communications.
Architecture in the small is concerned with the architecture of
individual programs. At this level, we are concerned with the way
that an individual program is decomposed into components.
Architecture in the large is concerned with the architecture of
complex enterprise systems that include other systems, programs,
and program components. These enterprise systems are
distributed over different computers, which may be owned and
managed by different companies.

Advantages of Software Architecture

Stakeholder communication
Architecture may be used as a focus of discussion by system
stakeholders.
System analysis
Means that analysis of whether the system can meet its non-
functional requirements is possible.
 Large-scale reuse
The architecture may be reusable across a range of systems
Product-line architectures may be developed

Uses of Architecture

As a way of facilitating discussion about the system design


 A high-level architectural view of a system is useful for
communication with system stakeholders and project
planning because it is not cluttered with detail. Stakeholders
can relate to it and understand an abstract view of the
system. They then discuss the system as a whole without
being confused by detail.
As a way of documenting an architecture that has been designed
The aim here is to produce a complete system model that
shows the different components in a system, their interfaces
and their connections.

What are the architecture decisions?

Is there a generic application architecture that can be used?


How will the system be distributed?
What architectural styles are appropriate?
What approach will be used to structure the system?
How will the system be decomposed into modules?
What control strategy should be used?
How will the architectural design be evaluated?
How should the architecture be documented?
System characteristics and architecture

Performance
 Localise critical operations and minimise communications. Use
large rather than fine-grain components.
Security
 Use a layered architecture with critical assets in the inner
layers.
Safety
 Localise safety-critical features in a small number of sub-
systems.
Availability
 Include redundant components and mechanisms for fault
tolerance.
Maintainability
 Use fine-grain, replaceable components.
Architectural Patterns
Patterns are a means of representing, sharing and reusing
knowledge.
An architectural pattern is a stylized description of good design
practice, which has been tried and tested in different environments.
Patterns should include information about when they are and when
the are not useful.
Patterns may be represented using tabular and graphical
descriptions.

Layered Architecture
Used to model the interfacing of sub-systems.
Organises the system into a set of layers (or abstract machines)
each of which provide a set of services.
Supports the incremental development of sub-systems in different
layers. When a layer interface changes, only the adjacent layer is
affected.
However, often artificial to structure systems in this way.

Name Layered architecture

Description Organizes the system into layers with related functio


associated with each layer. A layer provides services to the
above it so the lowest-level layers represent core services
are likely to be used throughout the system. See Figure 6.6.
Example A layered model of a system for sharing copyright docum
held in different libraries, as shown in Figure 6.7.
When used Used when building new facilities on top of existing syst
when the development is spread across several teams with
team responsibility for a layer of functionality; when there
requirement for multi-level security.
Advantages Allows replacement of entire layers so long as the interfa
maintained. Redundant facilities (e.g., authentication) ca
provided in each layer to increase the dependability o
system.
Disadvantages In practice, providing a clean separation between layers is o
difficult and a high-level layer may have to interact directly w
lower-level layers rather than through the layer immediately
below it. Performance can be a problem because of multiple
levels of interpretation of a service request as it is processed
each layer.

Sub-systems must exchange data. This may be done in two ways:


 Shared data is held in a central database or repository and
may be accessed by all sub-systems;
 Each sub-system maintains its own database and passes
data explicitly to other sub-systems.
When large amounts of data are to be shared, the repository model of
sharing is most commonly used a this is an efficient data sharing
mechanism.
Name Repository

Description All data in a system is managed in a central repository that is


accessible to all system components. Components do not
interact directly, only through the repository.
Example Figure 6.9 is an example of an IDE where the components
use a repository of system design information. Each software
tool generates information which is then available for use by
other tools.
When used You should use this pattern when you have a system in which
large volumes of information are generated that has to be
stored for a long time. You may also use it in data-driven
systems where the inclusion of data in the repository triggers
an action or tool.
Advantages Components can be independent—they do not need to know
of the existence of other components. Changes made by one
component can be propagated to all components. All data can
be managed consistently (e.g., backups done at the same
time) as it is all in one place.
Disadvantages The repository is a single point of failure so problems in the
repository affect the whole system. May be inefficiencies in
organizing all communication through the repository.
Distributing the repository across several computers may be
difficult.
Application Architectures
Application systems are designed to meet an organisational need.
As businesses have much in common, their application systems
also tend to have a common architecture that reflects the
application requirements.
A generic application architecture is an architecture for a type of
software system that may be configured and adapted to create a
system that meets specific requirements.

Uses of Application Architectures


As a starting point for architectural design.
As a design checklist.
As a way of organising the work of the development team.
As a means of assessing components for reuse.
As a vocabulary for talking about application types.

Reference
Software Engineering by IAN Sommerville Ninth Edition Pearson

You might also like