You are on page 1of 18

Architectural Design

 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 Design:
• Process of converting the requirements into the design of the system.
• Definition of how the software is to be structured or organized.
For large systems, this is divided into two parts:
 Architectural design defines main components of the system and how they
interact. Its characteristics are Performance, Security, Safety: Availability and
Maintainability
 Detailed design components are decomposed and described at a much finer
level of detail.
The architecture of a packing robot control system
Architectural design 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?
4 + 1 view model of software architecture

 What views or perspectives are useful when designing and documenting a


system’s architecture? What notations should be used for describing
architectural models? Each architectural model only shows one view or
perspective of the system.
 A logical view, which shows the key abstractions in the system as objects
or object classes.
 A process view, which shows how, at run-time, the system is composed of
interacting processes.
 A development view, which shows how the software is decomposed for
development.
 A physical view, which shows the system hardware and how software
components are distributed across the processors in the system.
 Related using use cases or scenarios (+1)
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.
The Model-View-Controller (MVC) pattern
The system is structured into three logical components that interact with each
other. The Model component manages the system data and associated
operations on that data. The View component defines and manages how the
data is presented to the user. The Controller component manages user
interaction and passes these interactions to the View and the Model.
Layered architecture

Layered Architecture Pattern: Organizes the system into layers with related
functionality associated with each layer. A layer provides services to the layer
above it so the lowest-level layers represent core services that are likely to be
used throughout the system. A layered model of a system for sharing copyright
documents held in different libraries.
 Used to model the interfacing of sub-systems.
 Organises the system into a set of layers 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.
A generic layered architecture
The architecture of the LIBSYS system
Repository architecture

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. Components can be independent—they do not need to know of the
existence of other components. The repository is a single point of failure so
problems in the repository affect the whole system.
 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.
A repository architecture for Language
Processing System
Client-server architecture

 Distributed system model which shows how data and processing is


distributed across a range of components.
 Can be implemented on a single computer.
 Set of stand-alone servers which provide specific services such as printing,
data management, etc.
 Set of clients which call on these services.
 Network which allows clients to access servers.
 In a client–server architecture, the functionality of the system is organized
into services, with each service delivered from a separate server. Clients are
users of these services and access servers to make use of them. Servers can
be distributed across a network. Each service is a single point of failure so
susceptible to denial of service attacks or server failure.
A client–server architecture for a film library
Pipe and filter architecture

The processing of the data in a system is organized so that each processing


component (filter) is discrete and carries out one type of data transformation.
The data flows (as in a pipe) from one component to another for processing.
Easy to understand and supports transformation reuse. The format for data
transfer has to be agreed upon between communicating transformations.
Pipe and filter architecture
Information systems architecture

 Information systems have a generic architecture that can


be organized as a layered architecture.
 These are transaction-based systems as interaction with
these systems generally involves database transactions.
 Layers include:
 The user interface
 User communications
 Information retrieval
 System database
Layered information system architecture
Object Oriented Design

In the object-oriented design method, the system is viewed as a


collection of objects (i.e., entities). The state is distributed among
the objects, and each object handles its state data. For example, in
a Library Automation Software, each library representative may
be a separate object with its data and functions to operate on
these data. The tasks defined for one purpose cannot refer or
change data of other objects. Objects have their internal data
which represent their state. Similar objects create a class. In other
words, each object is a member of some class. Classes may
inherit features from the superclass.
Object oriented concepts used in UML

Class – A class defines the blue print i.e. structure and functions of an object.
Objects – Objects help us to decompose large systems and help us to
modularize our system. Modularity helps to divide our system into
understandable components so that we can build our system piece by piece. An
object is the fundamental unit (building block) of a system which is used to
depict an entity.
Inheritance – Inheritance is a mechanism by which child classes inherit the
properties of their parent classes.
Abstraction – Abstraction in UML refers to the process of emphasizing the
essential aspects of a system or object while disregarding irrelevant details. By
abstracting away unnecessary complexities, abstraction facilitates a clearer
understanding and communication among stakeholders.
Encapsulation – Binding data together and protecting it from the outer world
is referred to as encapsulation.
Polymorphism – Mechanism by which functions or entities are able to exist in
different forms.

You might also like