Software Design and Architecture
Engr Saiqa Anjum
Lecturer SE
Faculty of NUML
Software Design and Architecture
Lecture 1
Goals of Software Design and
Architecture
To apply a wide variety of design patterns, frameworks,
and architectures in designing a wide variety of software.
To design and implement software project using several
different middleware technologies.
To use sound quality metrics as objectives for designs,
and then measure and assess designs to ensure the
objectives have been met.
To modify designs using sound change control
approaches.
To use reverse engineering techniques to recapture the
design of software.
Software Design and Architecture
Requirements specification was about the
WHAT the system will do
Design is about the HOW the system will
perform its functions
Software Design and Architecture
BASIC TERMS
Model: “In software development, model means the
simplified and closed abstraction of reality, especially the
problem to be solved”.
First, model is the simplification of reality, which means
that model only expresses part of reality' s mechanism or
behaviors. Obviously, it is impossible to concern all the
aspects of a system together because too much
information interweaved together will incur chaos.
A well-defined model will focus on the elements which
have important influence and omit those which have
little relationships with the specified abstraction level.
Software Design and Architecture
BASIC TERMS
Model:
Second, model is a closed abstraction, which means
that model has independency and use the
vocabulary and constraints prominently different
from their models.
Models serve as blueprints of a project and help in
exploration of strong and weak points
Software Design and Architecture
BASIC TERMS
Model:
There are three main categories of modeling
Informal
Semi-Formal
Formal
Software Design and Architecture
BASIC TERMS
Model:
The purpose of formal modeling is to enable the
strict calculus and formal check with mathematic
theories, such as state machine, to provide a
foundation upon which automatic evaluation are
made possible.
Industry adopt semi-formal or informal architecture
Software Design and Architecture
BASIC TERMS
A model is an abstraction describing a subset of a
system
A view depicts selected aspects of a model
A notation is a set of graphical or textual rules for
depicting views
Views and models of a single system may overlap
each other
Software Design and Architecture
BASIC TERMS
Software Architecture:
Garlan (1993) defines the architecture as
SA = {Components, Connectors, Constraints}
Software architecture concerns only interactions among the
components in a system.
Connectors defined the communication protocols and
strategies.
And constraints define the rules which the system must
conform to
Software Design and Architecture
BASIC TERMS
Software Architecture:
Softwarearchitecture can be considered as the
decomposition of several related and constrained
components.
Software Design and Architecture
BASIC TERMS
Software Architecture:
Is that enough to describe a software architecture?
“Obviously No”
In the model the components concentrate on runtime
structure of a system only, ignoring the static
relationships among building blocks, which are also
crucial to system's constructing.
Software Design and Architecture
BASIC TERMS
Software Architecture:
Bosch (2000) defines software architecture as:
“The architecture of a software system is concerned
with the top-level decomposition of the system into its
main components.
Software Design and Architecture
BASIC TERMS
Software Architecture Example:
Word Counter reads a textual file and output "word-
frequency" pair for each appeared word in frequency
order
Component and connector SA model of WordCounter
Software Design and Architecture
BASIC TERMS
Software Architecture Example:
Decomposition SA model of WordCounter
Software Design and Architecture
BASIC TERMS
Software Architecture:
The first Software Architecture tells us how the
program's components cooperate by regulating the
communication mechanisms.
The second Software Architecture tells us how
programmers cooperate by dividing the whole work
into relative independent pieces.
Software Design and Architecture
BASIC TERMS
Software Architecture:
Gacek (1995) defines software architecture as:
SA = {Components, Connections, Constraints, Stakeholder Needs, Rationale}
In this definition,
requirements of functionality and
other qualities are taken into account
Software Design and Architecture
BASIC TERMS
Four Key Principles of Software Architecture:
1. Every system has its own architecture, but they are not
identical.
2. Software architecture and its description are different.
In this recommended practice, software architecture is defined as:
The fundamental organization of a system embodied in its
components, their relationships to each other, and to the
environment, and the principles guiding its design and evolution.
While architectural description is expressed as:
A collection of products to document an architecture.
Software Design and Architecture
BASIC TERMS
Software Architecture:
Software Architecture definitions show that software
architecture is always invisible.
But those you cannot see can help you, if and only if
it is visualized, that is, documented.
We can use any documenting techniques, including
the combinations of several diagrams in UML
Software Design and Architecture
BASIC TERMS
Software Architecture:
3. Software architecture, architectural description and
development process are separated, both in research and
in application.
In general, software architecture is what a system's
structures look like; architectural description is how these
structures are shown, with what notations, formats and
organizations;
and development processes are a series of activities
which might use architectural description.
Software Design and Architecture
BASIC TERMS
Software Architecture:
But it is worthwhile to highlight that the suitability of
architectural description for a specific development
process model. For example, UML is the best
companion with Rational Unified Process (RUP),
which calls for 4 + 1 views, fitting for unleashing of
UML’s diagrams’ capability.
Software Design and Architecture
BASIC TERMS
Software Architecture:
4. Space should be leaven facilitating the customization
of detailed architectural models for researches and
practices.
Software Design and Architecture
UNIFIED MODELING LANGUAGE (UML)
An emerging standard for modeling object-oriented
software.
Resulted from the convergence of notations from three
leading object-oriented methods:
Object-Modeling Technique (OMT)
OOSE
Software Design and Architecture
UNIFIED MODELING LANGUAGE (UML)
Use case Diagrams
Describe the functional behavior of the system as seen by the user.
Class diagrams
Describe the static structure of the system: Objects, Attributes,
Associations
Sequence diagrams
Describe the dynamic behavior between actors and the system and
between objects of the system
State chart diagrams
Describe the dynamic behavior of an individual object (essentially a
finite state automaton)
Activity Diagrams
Model the dynamic behavior of a system, in particular the workflow
(essentially a flowchart)
Software Design and Architecture
CASCADING STYLE SHEETS (CSS)
HAVE A NICE DAY
Q/A