SlideShare a Scribd company logo
1 of 57
 Software design is an iterative process
through which requirements are translated
into a blueprint for constructing the
software.
 Initially, the blueprint depicts a holistic
view of software i.e. the design is
represented at a high- level of abstraction.
GOALS OF THE DESIGN PROCESS:
1)The design must implement all of the
explicit requirements contained in the
analysis model and it must accommodate
all of the implicit requirements desired by
the customer.
2)The design must be a readable,
understandable guide for those who
generate code and for those who test
and subsequently support the software.
3)The design should address the data,
functional and behavioral domains from
an implementation perspective
The design phase of software development
deals with transforming the customer
requirements as described in the SRS
documents into a form implementable using
a programming language.
The software design process can be
divided into the following three levels of
phases of design:
Interface Design Architectural Design
Detailed Design
Interface Design:
Interface design is the specification of the
interaction between a system and its
environment.
This phase proceeds at a high level of
abstraction with respect to the inner workings
of the system i.e., during interface design, the
internal of the systems are completely
ignored and the system is treated as a black
box.
Attention is focused on the dialogue
between the target system and the users,
devices, and other systems with which it
interacts.
The design problem statement produced
during the problem analysis step should
identify the people, other systems, and
devices which are collectively called
agents.
Interface design should include the
following details: Precise description of
events in the environment, or messages from
agents to which the system must respond.
Precise description of the events or
messages that the system must produce.
Specification on the data, and the formats
of the data coming into and going out of the
system.
Specification of the ordering and timing
relationships between incoming events or
messages, and outgoing events or outputs.
Architectural Design:
Architectural design is the specification of the
major components of a system, their
responsibilities, properties, interfaces, and the
relationships and interactions between them.
In architectural design, the overall structure of
the system is chosen, but the internal details
of major components are ignored.
Issues in architectural design
includes:
Gross decomposition of the systems into major
components.
Allocation of functional responsibilities to
components.
Component Interfaces
Component scaling and performance
properties, resource consumption properties,
reliability properties, and so forth.
Communication and interaction between
components.
The architectural design adds important details
ignored during the interface design. Design of the
internals of the major components is ignored until
the last phase of the design.
Detailed Design: Design is the specification of
the internal elements of all major system
components, their properties, relationships,
processing, and often their algorithms and the data
structures. The detailed design may include:
Decomposition of major system components into
program units.
Allocation of functional responsibilities to units.
User interfaces
Unit states and state changes
Data and control interaction between units
Data packaging and implementation, including issues
of scope and visibility of program elements
Algorithms and data structures
Architectural Design
Introduction: The software needs the
architectural design to represents the design
of software. IEEE defines architectural design
as “the process of defining a collection of
hardware and software components and their
interfaces to establish the framework for the
development of a computer system.” The
software that is built for computer-based
systems can exhibit one of these many
architectural styles.
Each style will describe a system category that
consists of : A set of components(eg: a
database, computational modules) that will
perform a function required by the system.
The set of connectors will help in coordination,
communication, and cooperation between the
components.
Conditions that how components can be integrated
to form the system.
Semantic models that help the designer to
understand the overall properties of the system.
The use of architectural styles is to establish a
structure for all the components of the system.
Taxonomy of Architectural styles:
Data centered architectures:
A data store will reside at the center of this
architecture and is accessed frequently by the other
components that update, add, delete or modify the
data present within the store.
The figure illustrates a typical data centered style.
The client software access a central repository.
Variation of this approach are used to transform the
repository into a blackboard when data related to
client or data of interest for the client change the
notifications to client software.
This data-centered architecture will promote
integrability. This means that the existing
components can be changed and new client
components can be added to the architecture without
the permission or concern of other clients.
Data can be passed among clients using blackboard
mechanism.
Data flow architectures: This kind of
architecture is used when input data to be
transformed into output data through a series of
computational manipulative components.
The figure represents pipe-and-filter architecture
since it uses both pipe and filter and it has a set of
components called filters connected by pipes.
Pipes are used to transmit data from one component
to the next. Each filter will work independently and is
designed to take data input of a certain form and
produces data output to the next filter of a specified
form. The filters don’t require any knowledge of the
working of neighboring filters.
If the data flow degenerates into a single line of
transforms, then it is termed as batch sequential. This
structure accepts the batch of data and then applies a
series of sequential components to transform it.
Call and Return architectures:
It is used to create a program that is easy to scale
and modify. Many sub-styles exist within this
category. Two of them are explained below.
Remote procedure call architecture: This
components is used to present in a main program or
sub program architecture distributed among multiple
computers on a network. Main program or
Subprogram architectures: The main program
structure decomposes into number of subprograms or
function into a control hierarchy. Main program
contains number of subprograms that can invoke
other components.
Object Oriented architecture:
The components of a system encapsulate data and
the operations that must be applied to manipulate the
data. The coordination and communication between
the components are established via the message
passing.
Layered architecture:
A number of different layers are defined
with each layer performing a well-defined set
of operations. Each layer will do some
operations that becomes closer to machine
instruction set progressively.
At the outer layer, components will receive
the user interface operations and at the inner
layers, components will perform the operating
system interfacing
(communication and coordination with OS)
Intermediate layers to utility services and
application software functions.
Difference Between Architectural Style, Architectural
Patterns and Design Patterns
The word style means: “a manner of doing something” while
a pattern means: “a repeated decorative design”. However,
these definitions show two different things. In software
engineering, the terminology must be more clear and describe
something specific. So, what’s the difference between the
terminologies and how can we differentiate between them?
Architectural Style
The architectural style shows how do we organize our code, or
how the system will look like from 10000 feet helicopter view to
show the highest level of abstraction of our system design.
Furthermore, when building the architectural style of our system
we focus on layers and modules and how they are
communicating with each other.
There are different types of architectural styles, and moreover,
we can mix them and produce a hybrid style that consists of a
mix between two and even more architectural styles.
Below is a list of architectural styles and examples for each
category:
Structure architectural styles: such as layered, pipes and
filters and component-based styles.
Messaging styles: such as Implicit invocation, asynchronous
messaging and publish-subscribe style.
Distributed systems: such as service-oriented, peer to peer
style, object request broker, and cloud computing styles.
Shared memory styles: such as role-based, blackboard,
database-centric styles.
Adaptive system styles: such as microkernel style, reflection,
domain-specific language styles.
Architectural Patterns
The architectural pattern shows how a solution can be used to
solve a reoccurring problem. In another word, it reflects how a
code or components interact with each other. Moreover, the
architectural pattern is describing the architectural style of our
system and provides solutions for the issues in our architectural
style. It define architectural patterns as a way to implement our
architectural style. For example: how to separate the UI of the
data module in our architectural style? How to integrate a
thirdparty component with our system? how many tires will we
have in our client-server architecture?
Design Patterns
Design patterns are accumulative best practices and
experiences that software professionals used over the years to
solve the general problem by – trial and error – they faced
during software development.
“Design Pattern – Elements of reusable object-oriented
software” which suggest that design patterns are based on two
main principles of object-oriented design:
Develop to an interface, not to an implementation.
Favor object composition over inheritance.
Also, they presented that the design patterns set contains 23
patterns and categorized into three main sets:
1. Creational design patterns:
Provide a way to create objects while hiding the creation logic.
Thus, the object creation is to be done without instantiating
objects directly with the “New” keyword to gives the flexibility to
decide which objects need to be created for a given use case.
The creational design patterns are:
Abstract factory pattern: provide an interface to create objects
without specifying the classes.
Singleton pattern: provide only a single instance of the calls
and global access to this instance.
Builder Pattern: Separate the construction from representation
and allows the same construction to create multiple
representations.
Prototype pattern: creating duplicate without affecting the
performance and memory. So the duplicate object is built from
the skeleton of an existing object.
2. Structural patterns:
Concerned with class and object composition. The Structural
design patterns are:
Adapter pattern: it works as a bridge between two
incompatible interfaces and combines their capabilities.
Bridge pattern: provide a way to decouple the abstraction from
its implementation.
Filter pattern: Also known as criteria pattern, it provides a way
to filter a set of objects using different criteria and chaining
them in a decoupled way through logical operations.
Composite pattern: provide a way to treat a group of objects in
a similar way as a single object. It composes objects in term of
a tree structure to represent part as well as a whole hierarchy
Decorator pattern: allows adding new functionality to an
existing object without altering its structure.
Façade pattern: provide a unified interface to a set of
interfaces. it hides the complexities of the system and
provides an interface to the client using which the client can
access the system. Flyweight pattern: reduce the number of
objects created and to decrease memory footprint and
increase performance. It helps in reusing already existing
similar kind objects by storing them and creates a new object
when no matching object is found. Proxy pattern: provides a
place holder to another object to control access to it. The
object has an original object to interface its functionality to the
outer world.
3. Behavioral patterns:
Behavioral patterns are concerned with communications
between objects. The following is the list of behavioral patterns:
Responsibility pattern: creates a chain of receiver objects for
a request. This pattern decouples the sender and receiver of a
request based on the type of request.
Command pattern: it’s a data-driven pattern in which A request
is wrapped under an object as command and passed to an
invoker object.
Interpreter pattern: provides a way to evaluate language
grammar or expression. It involves implementing an expression
interface that tells to interpret a particular context. This pattern
is used in SQL parsing, symbol processing engine, etc.
Iterator pattern: provides a way to access the elements of a
collection object in a sequential manner without any need to
know its underlying representation.
Mediator pattern: used to reduce communication complexity
between multiple objects or classes. It provides a mediator class
that normally handles all the communications between different
classes and supports easy maintenance of the code by loose
coupling.
Memento pattern: used to restore the state of an object to a
previous state. Observer pattern: used when there is a one-to-
many relationship between objects such as if one object is
modified, its dependent objects are to be notified automatically.
State pattern: is used to change the class behavior based on
its state.
Null object pattern: helps to avoid null references by having a
default object. Strategy pattern: provides a way to change
class behavior or its algorithm at run time.
Template pattern: an abstract class exposes defined
way(s)/template(s) to execute its methods. Its subclasses can
override the method implementation as per need but the
invocation is to be in the same way as defined by an abstract
class.
Visitor pattern: used to change the executing algorithm of an
element class.
Design Concepts:
A set of fundamental software design concepts has evolved
over the past four decades. Each provides the software
designer with a foundation from which more sophisticated
design methods can be applied. Each helps the software
engineer to answer the following questions:
• What criteria can be used to partition software into
individual components?
• How is function or data structure detail separated from a
conceptual representation of the software?
• What uniform criteria define the technical quality of a
software design?
Abstraction
Allows designers to focus on solving a problem without being
concerned
about irrelevant lower level details
• Procedural Abstraction: named sequence of events
• Data Abstraction: named collection of data objects
Refinement
• Process of elaboration where the designer provides
successively more details for each design component
Modularity
• Degree to which the software can be understood by examining
its components independently of one another
Coupling and Cohesion
Cohesion
• Degree to which a
moduleperforms one and
only one function
• All elements of
component Are directed
toward performing the
same task
Coupling
• Degree to which a module
isconnected to other modules
in the system
• Two components can be dependantin many
ways:
• References made from one toanother • Amount of
data passed from one to another • Amount of control
one has over the other
• …
Design Verification
The output of software design process is design documentation,
pseudo codes, detailed logic diagrams, process diagrams, and
detailed description of all functional or non-functional
requirements.
The next phase, which is the implementation of software,
depends on all outputs mentioned above.
Design Metrics:
Design metrics for computer software, like all other software
metrics, are not perfect. Debate continues over their efficiancy
and the manner in which they should be applied. Many experts
argue that further experimentation is required before design
measures can be used. And yet, design without measurement is
an unacceptable alternative.
Architectural Design Metrics:
Architectural design metrics focus on characteristics of the
program architecture with an emphasis on the architectural
structure and the effectiveness of modules. These metrics are
black box in the sense that they do not require any knowledge
of the inner workings of a particular software component.
Component-Level Design Metrics:
Component-level design metrics focus on internal
characteristics of a software component and include measures
of the “three Cs”—module cohesion, coupling, and complexity.
These measures can help a software engineer to judge the
quality of a component-level design.
The metrics presented in this section are glass box in the sense
that they require knowledge of the inner working of the module
under consideration. Component design metrics may be applied
once a procedural design has been developed. Alternatively,
they may be delayed until source code is available.
1. Cohesion metrics:
Bieman and Ott define a collection of metrics that provide an
indication of the cohesiveness of a module. The metrics are
defined in terms of five concepts and measures:
Data slice. Stated simply, a data slice is a backward walk
through a module that looks for data values that affect the
module location at which the walk began. It should be noted that
both program slices (which focus on statements and conditions)
and data slices can be defined.
Data tokens. The variables defined for a module can be defined
as data tokens for the module.
Glue tokens. This set of data tokens lies on one or more data
slice.
Superglue tokens. These data tokens are common to every data
slice in a module.
Stickiness. The relative stickiness of a glue token is directly
proportional to the number of data slices that it binds.t-level.
2. Coupling metrics:
Module coupling provides an indication of the
“connectedness” of a module to other modules, global data, and
the outside environment.
3. Complexity metrics:
Complexity metrics can be used to predict critical information
about reliability and maintainability of software systems from
automatic analysis of source code [or procedural design
information]. Complexity metrics also provide feedback during
the software project to help control the [design activity]. During
testing and maintenance, they provide detailed information
about software modules to help pinpoint areas of potential
instability.
Software Design Approaches
Here are two generic approaches for software designing:
Top Down Design
We know that a system is composed of more than one
subsystems and it contains a number of components. Further,
these sub-systems and components may have their on set of
subsystem and components and creates hierarchical structure
in the system.
Top-down design takes the whole software system as one entity
and then decomposes it to achieve more than one sub-system
or component based on some characteristics. Each sub-system
or component is then treated as a system and decomposed
further. This process keeps on running until the lowest level of
system in the top-down hierarchy is achieved.
Top-down design starts with a generalized model of system and
keeps on defining the more specific part of it. When all
components are composed the whole system comes into
existence.
Top-down design is more suitable when the software solution
needs to be designed from scratch and specific details are
unknown.
Bottom-up Design
The bottom up design model starts with most specific and basic
components. It proceeds with composing higher level of
components by using basic or lower level components. It keeps
creating higher level components until the desired system is not
evolved as one single component. With each higher level, the
amount of abstraction is increased.
Bottom-up strategy is more suitable when a system needs to be
created from some existing system, where the basic primitives
can be used in the newer system.
Both, top-down and bottom-up approaches are not practical
individually. Instead, a good combination of both is used.
Cohesion Coupling
Cohesion is the concept of intra-module. Coupling is the concept of inter-module.
Cohesion represents the relationship within
a module.
Coupling represents the relationships
between modules.
Increasing cohesion is good for software. Increasing coupling is avoided for software.
Cohesion represents the functional strength
of modules.
Coupling represents the independence
among modules.
Highly cohesive gives the best software.
Whereas loosely coupling gives the best
software.
In cohesion, the module focuses on a single
thing.
In coupling, modules are connected to the
other modules.
Cohesion is created between the same
module.
Coupling is created between two different
modules.
There are Six types of Cohesion
1. Functional Cohesion.
2. Procedural Cohesion.
3. Temporal Cohesion.
4. Sequential Cohesion.
5. Layer Cohesion.
6. Communication Cohesion.
There are Six types of Coupling
1. Common Coupling.
2. External Coupling.
3. Control Coupling.
4. Stamp Coupling.
5. Data Coupling
6. Content Coupling.

More Related Content

Similar to Architectural Design Explained in Software Engineering

UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringMeghaj Mallick
 
Lecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docLecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docesrabilgic2
 
Architectural design
Architectural designArchitectural design
Architectural designHuda Alameen
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptxUNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptxLeahRachael
 
11.3.14&22.1.16
11.3.14&22.1.1611.3.14&22.1.16
11.3.14&22.1.16Rajes Wari
 
Software Design
Software Design Software Design
Software Design Anas Bilal
 
Software enginnering
Software enginneringSoftware enginnering
Software enginneringIshucs
 
Software_Archi-1.ppt
Software_Archi-1.pptSoftware_Archi-1.ppt
Software_Archi-1.pptFaizaZulkifal
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 

Similar to Architectural Design Explained in Software Engineering (20)

UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software Engineering
 
DESIGN CONCEPTS
DESIGN CONCEPTSDESIGN CONCEPTS
DESIGN CONCEPTS
 
Lecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docLecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.doc
 
Architectural design
Architectural designArchitectural design
Architectural design
 
Se lec6
Se lec6Se lec6
Se lec6
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptxUNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
Software design i (2) (1)
Software design   i (2) (1)Software design   i (2) (1)
Software design i (2) (1)
 
11.3.14&22.1.16
11.3.14&22.1.1611.3.14&22.1.16
11.3.14&22.1.16
 
Software Design
Software Design Software Design
Software Design
 
Slides chapter 9
Slides chapter 9Slides chapter 9
Slides chapter 9
 
Software enginnering
Software enginneringSoftware enginnering
Software enginnering
 
software design
software designsoftware design
software design
 
Software_Archi-1.ppt
Software_Archi-1.pptSoftware_Archi-1.ppt
Software_Archi-1.ppt
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
06 fse design
06 fse design06 fse design
06 fse design
 
Ch10
Ch10Ch10
Ch10
 

Recently uploaded

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Recently uploaded (20)

KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

Architectural Design Explained in Software Engineering

  • 1.  Software design is an iterative process through which requirements are translated into a blueprint for constructing the software.
  • 2.  Initially, the blueprint depicts a holistic view of software i.e. the design is represented at a high- level of abstraction.
  • 3.
  • 4. GOALS OF THE DESIGN PROCESS: 1)The design must implement all of the explicit requirements contained in the analysis model and it must accommodate all of the implicit requirements desired by the customer. 2)The design must be a readable, understandable guide for those who
  • 5. generate code and for those who test and subsequently support the software. 3)The design should address the data, functional and behavioral domains from an implementation perspective The design phase of software development deals with transforming the customer requirements as described in the SRS
  • 6. documents into a form implementable using a programming language. The software design process can be divided into the following three levels of phases of design: Interface Design Architectural Design Detailed Design
  • 7.
  • 8. Interface Design: Interface design is the specification of the interaction between a system and its environment. This phase proceeds at a high level of abstraction with respect to the inner workings of the system i.e., during interface design, the internal of the systems are completely ignored and the system is treated as a black box.
  • 9. Attention is focused on the dialogue between the target system and the users, devices, and other systems with which it interacts. The design problem statement produced during the problem analysis step should identify the people, other systems, and devices which are collectively called agents. Interface design should include the following details: Precise description of
  • 10. events in the environment, or messages from agents to which the system must respond. Precise description of the events or messages that the system must produce. Specification on the data, and the formats of the data coming into and going out of the system.
  • 11. Specification of the ordering and timing relationships between incoming events or messages, and outgoing events or outputs. Architectural Design: Architectural design is the specification of the major components of a system, their responsibilities, properties, interfaces, and the relationships and interactions between them.
  • 12. In architectural design, the overall structure of the system is chosen, but the internal details of major components are ignored. Issues in architectural design includes: Gross decomposition of the systems into major components. Allocation of functional responsibilities to components.
  • 13. Component Interfaces Component scaling and performance properties, resource consumption properties, reliability properties, and so forth. Communication and interaction between components. The architectural design adds important details ignored during the interface design. Design of the
  • 14. internals of the major components is ignored until the last phase of the design. Detailed Design: Design is the specification of the internal elements of all major system components, their properties, relationships, processing, and often their algorithms and the data structures. The detailed design may include:
  • 15. Decomposition of major system components into program units. Allocation of functional responsibilities to units. User interfaces Unit states and state changes Data and control interaction between units Data packaging and implementation, including issues of scope and visibility of program elements Algorithms and data structures
  • 16. Architectural Design Introduction: The software needs the architectural design to represents the design of software. IEEE defines architectural design as “the process of defining a collection of hardware and software components and their interfaces to establish the framework for the
  • 17. development of a computer system.” The software that is built for computer-based systems can exhibit one of these many architectural styles. Each style will describe a system category that consists of : A set of components(eg: a database, computational modules) that will perform a function required by the system.
  • 18. The set of connectors will help in coordination, communication, and cooperation between the components. Conditions that how components can be integrated to form the system. Semantic models that help the designer to understand the overall properties of the system.
  • 19. The use of architectural styles is to establish a structure for all the components of the system. Taxonomy of Architectural styles: Data centered architectures: A data store will reside at the center of this architecture and is accessed frequently by the other components that update, add, delete or modify the data present within the store. The figure illustrates a typical data centered style. The client software access a central repository. Variation of this approach are used to transform the
  • 20. repository into a blackboard when data related to client or data of interest for the client change the notifications to client software. This data-centered architecture will promote integrability. This means that the existing components can be changed and new client components can be added to the architecture without the permission or concern of other clients. Data can be passed among clients using blackboard mechanism.
  • 21.
  • 22. Data flow architectures: This kind of architecture is used when input data to be transformed into output data through a series of computational manipulative components. The figure represents pipe-and-filter architecture since it uses both pipe and filter and it has a set of components called filters connected by pipes. Pipes are used to transmit data from one component to the next. Each filter will work independently and is designed to take data input of a certain form and produces data output to the next filter of a specified
  • 23. form. The filters don’t require any knowledge of the working of neighboring filters. If the data flow degenerates into a single line of transforms, then it is termed as batch sequential. This structure accepts the batch of data and then applies a series of sequential components to transform it.
  • 24.
  • 25. Call and Return architectures: It is used to create a program that is easy to scale and modify. Many sub-styles exist within this category. Two of them are explained below. Remote procedure call architecture: This components is used to present in a main program or sub program architecture distributed among multiple computers on a network. Main program or Subprogram architectures: The main program
  • 26. structure decomposes into number of subprograms or function into a control hierarchy. Main program contains number of subprograms that can invoke other components.
  • 27.
  • 28. Object Oriented architecture: The components of a system encapsulate data and the operations that must be applied to manipulate the data. The coordination and communication between the components are established via the message passing.
  • 29. Layered architecture: A number of different layers are defined with each layer performing a well-defined set of operations. Each layer will do some operations that becomes closer to machine instruction set progressively.
  • 30. At the outer layer, components will receive the user interface operations and at the inner layers, components will perform the operating system interfacing (communication and coordination with OS) Intermediate layers to utility services and application software functions.
  • 31.
  • 32. Difference Between Architectural Style, Architectural Patterns and Design Patterns The word style means: “a manner of doing something” while a pattern means: “a repeated decorative design”. However, these definitions show two different things. In software engineering, the terminology must be more clear and describe something specific. So, what’s the difference between the terminologies and how can we differentiate between them?
  • 33. Architectural Style The architectural style shows how do we organize our code, or how the system will look like from 10000 feet helicopter view to show the highest level of abstraction of our system design. Furthermore, when building the architectural style of our system we focus on layers and modules and how they are communicating with each other. There are different types of architectural styles, and moreover, we can mix them and produce a hybrid style that consists of a mix between two and even more architectural styles.
  • 34. Below is a list of architectural styles and examples for each category: Structure architectural styles: such as layered, pipes and filters and component-based styles. Messaging styles: such as Implicit invocation, asynchronous messaging and publish-subscribe style. Distributed systems: such as service-oriented, peer to peer style, object request broker, and cloud computing styles. Shared memory styles: such as role-based, blackboard, database-centric styles.
  • 35. Adaptive system styles: such as microkernel style, reflection, domain-specific language styles. Architectural Patterns The architectural pattern shows how a solution can be used to solve a reoccurring problem. In another word, it reflects how a code or components interact with each other. Moreover, the architectural pattern is describing the architectural style of our system and provides solutions for the issues in our architectural style. It define architectural patterns as a way to implement our architectural style. For example: how to separate the UI of the data module in our architectural style? How to integrate a
  • 36. thirdparty component with our system? how many tires will we have in our client-server architecture? Design Patterns Design patterns are accumulative best practices and experiences that software professionals used over the years to solve the general problem by – trial and error – they faced during software development. “Design Pattern – Elements of reusable object-oriented software” which suggest that design patterns are based on two main principles of object-oriented design: Develop to an interface, not to an implementation.
  • 37. Favor object composition over inheritance. Also, they presented that the design patterns set contains 23 patterns and categorized into three main sets: 1. Creational design patterns: Provide a way to create objects while hiding the creation logic. Thus, the object creation is to be done without instantiating objects directly with the “New” keyword to gives the flexibility to decide which objects need to be created for a given use case. The creational design patterns are: Abstract factory pattern: provide an interface to create objects without specifying the classes. Singleton pattern: provide only a single instance of the calls and global access to this instance.
  • 38. Builder Pattern: Separate the construction from representation and allows the same construction to create multiple representations. Prototype pattern: creating duplicate without affecting the performance and memory. So the duplicate object is built from the skeleton of an existing object. 2. Structural patterns: Concerned with class and object composition. The Structural design patterns are: Adapter pattern: it works as a bridge between two incompatible interfaces and combines their capabilities. Bridge pattern: provide a way to decouple the abstraction from its implementation.
  • 39. Filter pattern: Also known as criteria pattern, it provides a way to filter a set of objects using different criteria and chaining them in a decoupled way through logical operations. Composite pattern: provide a way to treat a group of objects in a similar way as a single object. It composes objects in term of a tree structure to represent part as well as a whole hierarchy Decorator pattern: allows adding new functionality to an existing object without altering its structure. Façade pattern: provide a unified interface to a set of interfaces. it hides the complexities of the system and provides an interface to the client using which the client can
  • 40. access the system. Flyweight pattern: reduce the number of objects created and to decrease memory footprint and increase performance. It helps in reusing already existing similar kind objects by storing them and creates a new object when no matching object is found. Proxy pattern: provides a place holder to another object to control access to it. The object has an original object to interface its functionality to the outer world. 3. Behavioral patterns: Behavioral patterns are concerned with communications between objects. The following is the list of behavioral patterns:
  • 41. Responsibility pattern: creates a chain of receiver objects for a request. This pattern decouples the sender and receiver of a request based on the type of request. Command pattern: it’s a data-driven pattern in which A request is wrapped under an object as command and passed to an invoker object. Interpreter pattern: provides a way to evaluate language grammar or expression. It involves implementing an expression interface that tells to interpret a particular context. This pattern is used in SQL parsing, symbol processing engine, etc. Iterator pattern: provides a way to access the elements of a collection object in a sequential manner without any need to know its underlying representation. Mediator pattern: used to reduce communication complexity between multiple objects or classes. It provides a mediator class that normally handles all the communications between different
  • 42. classes and supports easy maintenance of the code by loose coupling. Memento pattern: used to restore the state of an object to a previous state. Observer pattern: used when there is a one-to- many relationship between objects such as if one object is modified, its dependent objects are to be notified automatically. State pattern: is used to change the class behavior based on its state. Null object pattern: helps to avoid null references by having a default object. Strategy pattern: provides a way to change class behavior or its algorithm at run time. Template pattern: an abstract class exposes defined way(s)/template(s) to execute its methods. Its subclasses can override the method implementation as per need but the invocation is to be in the same way as defined by an abstract class.
  • 43. Visitor pattern: used to change the executing algorithm of an element class. Design Concepts: A set of fundamental software design concepts has evolved over the past four decades. Each provides the software designer with a foundation from which more sophisticated design methods can be applied. Each helps the software engineer to answer the following questions: • What criteria can be used to partition software into individual components?
  • 44. • How is function or data structure detail separated from a conceptual representation of the software? • What uniform criteria define the technical quality of a software design? Abstraction Allows designers to focus on solving a problem without being concerned about irrelevant lower level details • Procedural Abstraction: named sequence of events • Data Abstraction: named collection of data objects
  • 45. Refinement • Process of elaboration where the designer provides successively more details for each design component Modularity • Degree to which the software can be understood by examining its components independently of one another Coupling and Cohesion Cohesion
  • 46. • Degree to which a moduleperforms one and only one function • All elements of component Are directed toward performing the same task Coupling • Degree to which a module isconnected to other modules in the system
  • 47. • Two components can be dependantin many ways: • References made from one toanother • Amount of data passed from one to another • Amount of control one has over the other • … Design Verification The output of software design process is design documentation, pseudo codes, detailed logic diagrams, process diagrams, and detailed description of all functional or non-functional requirements. The next phase, which is the implementation of software, depends on all outputs mentioned above. Design Metrics:
  • 48. Design metrics for computer software, like all other software metrics, are not perfect. Debate continues over their efficiancy and the manner in which they should be applied. Many experts argue that further experimentation is required before design measures can be used. And yet, design without measurement is an unacceptable alternative. Architectural Design Metrics: Architectural design metrics focus on characteristics of the program architecture with an emphasis on the architectural structure and the effectiveness of modules. These metrics are black box in the sense that they do not require any knowledge of the inner workings of a particular software component. Component-Level Design Metrics: Component-level design metrics focus on internal characteristics of a software component and include measures of the “three Cs”—module cohesion, coupling, and complexity.
  • 49. These measures can help a software engineer to judge the quality of a component-level design. The metrics presented in this section are glass box in the sense that they require knowledge of the inner working of the module under consideration. Component design metrics may be applied once a procedural design has been developed. Alternatively, they may be delayed until source code is available. 1. Cohesion metrics: Bieman and Ott define a collection of metrics that provide an indication of the cohesiveness of a module. The metrics are defined in terms of five concepts and measures: Data slice. Stated simply, a data slice is a backward walk through a module that looks for data values that affect the
  • 50. module location at which the walk began. It should be noted that both program slices (which focus on statements and conditions) and data slices can be defined. Data tokens. The variables defined for a module can be defined as data tokens for the module. Glue tokens. This set of data tokens lies on one or more data slice. Superglue tokens. These data tokens are common to every data slice in a module. Stickiness. The relative stickiness of a glue token is directly proportional to the number of data slices that it binds.t-level. 2. Coupling metrics: Module coupling provides an indication of the “connectedness” of a module to other modules, global data, and the outside environment.
  • 51. 3. Complexity metrics: Complexity metrics can be used to predict critical information about reliability and maintainability of software systems from automatic analysis of source code [or procedural design information]. Complexity metrics also provide feedback during the software project to help control the [design activity]. During testing and maintenance, they provide detailed information about software modules to help pinpoint areas of potential instability. Software Design Approaches Here are two generic approaches for software designing: Top Down Design We know that a system is composed of more than one subsystems and it contains a number of components. Further,
  • 52. these sub-systems and components may have their on set of subsystem and components and creates hierarchical structure in the system. Top-down design takes the whole software system as one entity and then decomposes it to achieve more than one sub-system or component based on some characteristics. Each sub-system or component is then treated as a system and decomposed further. This process keeps on running until the lowest level of system in the top-down hierarchy is achieved. Top-down design starts with a generalized model of system and keeps on defining the more specific part of it. When all components are composed the whole system comes into existence.
  • 53. Top-down design is more suitable when the software solution needs to be designed from scratch and specific details are unknown.
  • 54. Bottom-up Design The bottom up design model starts with most specific and basic components. It proceeds with composing higher level of components by using basic or lower level components. It keeps creating higher level components until the desired system is not evolved as one single component. With each higher level, the amount of abstraction is increased. Bottom-up strategy is more suitable when a system needs to be created from some existing system, where the basic primitives can be used in the newer system.
  • 55. Both, top-down and bottom-up approaches are not practical individually. Instead, a good combination of both is used.
  • 56. Cohesion Coupling Cohesion is the concept of intra-module. Coupling is the concept of inter-module. Cohesion represents the relationship within a module. Coupling represents the relationships between modules. Increasing cohesion is good for software. Increasing coupling is avoided for software. Cohesion represents the functional strength of modules. Coupling represents the independence among modules. Highly cohesive gives the best software. Whereas loosely coupling gives the best software.
  • 57. In cohesion, the module focuses on a single thing. In coupling, modules are connected to the other modules. Cohesion is created between the same module. Coupling is created between two different modules. There are Six types of Cohesion 1. Functional Cohesion. 2. Procedural Cohesion. 3. Temporal Cohesion. 4. Sequential Cohesion. 5. Layer Cohesion. 6. Communication Cohesion. There are Six types of Coupling 1. Common Coupling. 2. External Coupling. 3. Control Coupling. 4. Stamp Coupling. 5. Data Coupling 6. Content Coupling.