SE Module III Part-A
SE Module III Part-A
Software Architecture
Data design
Architectural Design
1
Design Within The Context Of Software
Engineering
2
Three characteristics that serve as a guide for
the evaluation of a good design
4
5. A design should lead to components that exhibit
independent functional characteristics.
6. A design should lead to interfaces that reduce the
complexity of connections between components and with
the external environment.
7. A design should be derived using a repeatable method
that is driven by information obtained during software
requirements analysis.
8. A design should be represented using a notation that
effectively communicates its meaning.
5
Quality Attributes
A set of software quality attributes that has been given the acronym FURPS
• Functionality
• usability
• reliability
• performance
• supportability.
The FURPS quality attributes represent a target for all software design:
6
THE DESIGN PROCESS
7
Design Concepts
A set of fundamental software design concepts has evolved over
the history of software engineering.
Each helps you answer the following questions:
1.What criteria can be used to partition software into individual
components?
2.How is function or data structure detail separated from a
conceptual representation of the software?
3.What uniform criteria define the technical quality of a
software design?
8
Cont..
1. Abstraction
2. Architecture
3. Patterns
4. Separation of Concerns
5. Modularity
6. Information Hiding
7. Functional Independence
8. Refinement
9. Re-factoring
10. Aspects
11. Design Classes
9
Design Concepts Cont..
1)ABSTRACTION
•Procedural abstraction
limited function
An example of a procedural abstraction would be the word open
for a door. Open implies a long sequence of procedural steps (e.g.,
walk to the door, reach out and grasp knob, turn knob and pull door,
10
step away from moving door, etc.)
Cont..
Data abstraction
-- Named collection of data that describe a data
object
The data abstraction for door would encompass a set of
attributes that describe the door (e.g., door type, swing
direction, opening mechanism, weight, dimensions).
11
Design Concepts Cont..
2) ARCHITECTURE
12
Cont..
Architecture Models
(a) Structural Models
-- An organized collection of program components
(b) Framework Models
-- Represents the design in more abstract way
(c) Dynamic Models
-- Represents the behavioral aspects indicating changes
as a function of external events
(d) Process Models
-- Focus on the design of the business or technical
process
(e) Functional models
--can be used to represent the functional hierarchy of a
system.
13
Design Concepts Cont..
3) PATTERNS
“Each pattern describes a problem which occurs over and over
again in our environment, and then describes the core of the
solution to that problem, in such a way that you can use this
solution a million times over, without ever doing it the same way
twice.” --Christopher Alexander
4) Separation of Concerns
15
Design Concepts Cont..
5) MODULARITY
6) INFORMATION HIDING
18
Design Concepts Cont..
7) FUNCTIONAL INDEPENDENCE
19
Design Concepts Cont..
Refinement
•Process of elaboration from high level abstraction to the lowest
level abstraction.
•High level abstraction begins with a statement of functions.
•Refinement causes the designer to elaborate providing more and
more details at successive level of abstractions.
•Abstraction and refinement are complementary concepts.
Refactoring
•Organization technique that simplifies the design of a
component without changing its function or behavior.
•Examines for redundancy, unused design elements and
inefficient or unnecessary algorithms.
20
Design Concepts Cont..
9) Aspects
21
10) DESIGN CLASSES Cont..
Software Architecture
Architectural Styles
23
Cont..
What Is Architecture?
24
Cont..
25
Cont..
26
Architectural styles
27
Cont..
1. a set of components
28
Cont..
Data-centered architectures
29
Cont..
Data-flow architectures
31
Cont..
32
Cont..
Call and return architectures
33
Cont..
34
Cont..
Object-oriented architectures
35
Cont..
Layered architectures
36
Cont..
38
Figure: Architectural context
diagram
39
Figure: Architectural context diagram for the
SafeHome security function
40
Figure: UML relationships for SafeHome security
Function archetypes 41
• A component diagram shows a set of
components and their relationships.
Graphically, a component diagram is a
collection of vertices and arcs.
Relationships:
Dependency,Generalization, Association,
and Realization
43
Figure: Overall architectural structure for
SafeHome with top-level components
44
Pattern Based Design
Concepts
• Design Patterns
• Kinds of Patterns
• Object-oriented design patterns
• Frameworks
• Describing a Pattern
• Pattern language and Repositories
Design patterns
• A design pattern can be characterized as “a three-part rule
which expresses a relation b/w a certain context, a problem
and a solution.”
Effective design patterns:
It solves a problem – patterns captures solutions, not just
abstract principles or strategies.
It is a proven concept – captures solution with a track record,
not theories.
The solution isn’t obvious – Many problem solving
techniques.
It describes a relationship – deeper system structures and
mechanisms.
Kinds of Patterns
• Architectural Patterns – broad-based design problems are
solved using structural approach.
• Data Patterns – recurring data-oriented problems and data
modeling solutions
• Component patterns – address problems associated with
the development of subsystems and components.
• Interface design patterns – common user interface
problems & solutions.
• WebApp patterns – set of problems encountered when
building WebApps.
• Mobile Patterns – commonly encountered problems when
developing mobile platform.
Object-Oriented Design patterns:
Creational Patterns – creation,
composition and representation of objects.
Structural patterns – problems and
solutions associated with how classes and
objects are organized.
Behavioral patterns – problems associated
with the assignment of responsibilities
b/w objects.
Frameworks
• Implementation of skeletal infra-structure,
called a framework.
• In object-oriented context, a framework is
a collection of cooperating classes.
Describing a pattern
We can describe a pattern using design pattern templates.
• Pattern Name – expressive name
• Problem – problem that the pattern addresses
• Motivation – example pattern or problem
• Context – describes the environment
• Solution – detailed description
• Intent – describes the pattern
• Collaboration – other patterns contribute to the solution
• Consequences – consequences of using the pattern
• Implementation – identifies special issues when implementing
pattern
• Known uses – actual uses of the design pattern in real applications
• Related patterns – cross-references related design patterns
Pattern language and
Repositories
• When we use the term language, the first thing that comes to mind is
either a natural language or programming language.
• When the term language is used in design patterns, it takes slightly
different meaning. A pattern language is a collection of patterns, each
described using a standardized template.
• Dozens of patterns languages have been proposed for software design.
In most cases, the design patterns that are part of pattern language are
stored in a web accessible pattern repository. The repository provides an
index of all design patterns.