You are on page 1of 63

Design Engineering

UNIT-3
Design Engineering
• Design: software design is model of software
which translates the requirements into finished
software product in which the details about
software datastructures,architecture,interfaces
and components that are necessary to implement
the system.
• Design within the context of software
engineering:
• ->software development begins with the phase
called “software requirements". to develop any
software ,first its requirement are to be
discovered.
Design Engineering
• Software requirements are to be analyzed and
modeled software design which plays as
important role in development.
• Software design is the last software
engineering action within the modeling
activity. Software design sets a base for the
code generation and testing activities which
are collectively known as “construction”.
• Software designing is a process of translating
analysis model into the design model.
Design Engineering

• The analysis model is manifested by scenario


based, class based, flow-oriented and
behavioral elements and feed the design task.
• Translation of analysis model into design
model:the analysis model provides the design
process with the information to design the four
models..namely
• ->a component design
• ->an interface design
• ->architecture design
• ->a data/class design
Design Engineering
Design Engineering
• Data/class design
• Architectural design
• Interface design
• Component level design
Design process and design quality
• Software design is an iterative process in which
the requirements are translated into the blue
print of the software.
• Thus refinement made during each iteration
leads to design representations of much lower
level of abstraction.
• Throughout the software design process the
quality of the software is assessed by considering
certain characteristics of the software design.
Design process and design quality
• Characteristics of good design:
• 1)the good design should implement all the
requirements that are explicitly mentioned in
the analysis model.
• 2)the design should be simple enough so that
the code developer, code tester as well as
those who are supporting the software will
find it readable and understandable.
• 3)the design should be comprehensive that
means it should provide a complete picture of
Design process and design quality
• And behavioral domains from as
implementation perspective.
• Quality guidelines: the goal of any software
design is to produce high quality software.
• In order to evaluate quality of software there
should be some predefined rules or criteria
that need to be used to assess the software
product.
• 1.the design architecture should be created
using following issues:
Design process and design quality
• The design should be created using architectural styles
and patterns.
• Each component of design should posses good design
characteristics.
• The implementation of design should be evolutionary
so that testing can be performed at each phase of
implementation.
• 2.in the design the data,architecture,interfaces and
components should be clearly represented.
• 3.the design should be modular.that means the
subsystems in the design should be logically
partioned.
Design process and design quality
• 4.the data structure should be appropriately
chosen for the design of specific problem.
• 5.the components should be used in the design so
that functional independency can be achieved in
the design.
• 6.using the information obtained in software
requirement analysis the design should be created.
• 7.the interfaces in the design should be such that
the complexity between the connected
components of the system gets reduced. Similarly
interface of the system with external interface
should be simplified one.
Design process and design quality
• 8.every design of the software system should be
convey it meaning appropriately and effectively.
• Quality attributes: the design quality attributes
popularly known as “FURPS”is a set of criteria
developed by Hewlett and Packard.
• FURPS means..
• ->functionality
• ->usability
• -> reliability
• ->performance
• ->supportability
Design Concepts
• The software design concept provides a framework for
implementing the right software.
• Following are certain issues that are considered while
designing the software.
• Abstraction
• Modularity
• Architecture
• Refinement
• Pattern
• Information hiding
• Functional independence
• Refactoring
• Design classes
Design Concepts
• Abstraction: the abstraction means an ability to
cope up with the complexity.
• Software design occurs at different levels of
abstraction.
• Higher level of abstraction
• Lower level of abstraction
• Procedural abstraction
• Data abstraction
• Modularity: the software is divided into
separately named and addressable component
that called as “modules”.
Modularity
Modularity
• Meyer defines five criteria that enable us to
evaluate a design method with respect to its
ability to define an effective modular system.
• 1.Modularity decomposability
• 2. Modular compos ability
• 3.Modularity understandability
• 4.Modular continuity
• 5.Modular protection
Architecture
• Architecture means representation of overall
structure of an integrated system.
• Architecture provides a basic framework for
the software system so that important
framework activities can be conducted is
systematic manner.
• In architecture design various system models
can be used.
Architecture
• Structural model
• Framework model
• Dynamic model
• Process model
• Functional model
Refinement
• Refinement is actually a process of elaboration.
• Stepwise refinement is a top-down design
strategy proposed by “Nikolas wirth”.
• The process of program refinement is analogous
to the process of refinement and partitioning that
is used during refinement analysis.
• Abstraction and refinement are complementary
concepts.
Pattern
• According Brad Appleton the design pattern can be
defined as it is a named (something valuable )of insight
which conveys the essence of proven solution to a
recurring problem within the certain context.
• Design pattern acts as a design solution for a particular
problem occurring in specific.
• ->pattern can be reusable.
• ->pattern can be used for current work.
• ->pattern can be used to solve similar kind of problem
with different functionality.
Information Hiding
• Information hiding is one of the important
property of effective modular design.
• Information hiding means the modules are
designed in such away that information
contained in one module can’t be accessible
to the other module.
• Advantages:1.information hiding is basically in
testing and maintenance. due to information
hiding some data and procedures of one
module can be hidden from another module.
Information Hiding
• 2.this ultimately avoids introduction of errors
module from one module to module.
• 3.similarly one can make changes in the
derived module without affecting the other
module.
Functional Independence
• The functional independence can be achieved by
developing the functional modules with single –
minded approach.
• By using functional independence functions may be
compartmentalized and interfaces are simplified.
• Independent modules are easier to maintain with
reduced error propagation.
• Functional independence is a key to good design
and design is the key to software quality.
Functional Independence
• Benefit: the major benefit of functional
independence is in achieving effective modularity.
• The functional independence is assessed using
two criteria:
• 1)cohesion(sticking together)
• 2)coupling(joining two things)
• Cohesion: with the help of cohesion the
information hiding can be done.
• A cohesion module performs only “one task” in
software procedure with little interaction with
other modules.
Cohesion
• In other words cohesive module performs only
one thing.
• Different types of cohesion are:
• 1.coincidentally cohesive
• 2.logically cohesive
• 3.temporal cohesion
• 4. procedural cohesion
• 5. communicational cohesion
Coupling
• Coupling effectively represents how the modules can be
“connected” with other module or with the outside world.
• Coupling is a measure of interconnection among modules
in a program structure.
• Coupling depends on the interface complexity
Between modules.
The property of good coupling in that it should reduce or
avoid change impact and ripple effects. it should also
reduce the cost in program changes, testing and
maintance.
Coupling
• Various types of coupling are
• 1.data coupling
• 2.control coupling
• 3.common coupling
• 4.content coupling
• Refactoring: refactoring is necessary for simplifying
the design without changing the function or behavior.
• Fowler has defined refactoring as “the process of
changing a software system in such a way that the
external behavior of the design do not get
changed ,however the internal structure gets
improved.
Refactoring
• Benefits of refactoring are:
• The redundancy can be achieved.
• Inefficient algorithms can be eliminated or can be
replaced by efficient one.
• Poorly constructed or inaccurate data structures
can be removed or replaced.
• Other design failures can be rectified.
• The design of refactoring particular component is
taken by the designer of the software system.
Design classes
• Design classes are defined as the classes that
describe some elements of problem domain,
focus on various aspects of problem from
user’s point of view.
• The goal of design classes is:
• 1.to define the analysis classes by providing
the detail design, so that further
implementation can be done easily.
• 2.to create new set of classes for
implementing the in fracture of the software.
Design classes
• There are five different types of design classes.

DESIGN CLASS

USER BUSINESS SYSTEM


PROCESS PERSISTE
INTERFACE DOMAIN CLASS
CLASS N CLASS
CALSS CALSS
Design classes
• 1.User interface class
• 2.Business domain class
• 3.process class
• 4.persistent class
• 5.system class
• Some characteristics of well formed design
classes.
• Complete and efficient
• Primitiveness
• High cohesion
Design Model
• The design model is represented using two
dimensions.
• -process dimension
• -abstract dimension
• The process dimension denotes that the design
model evolves due to various software tasks that
get executed as the part of software process.
• The abstract dimension represents level of
details as each element of analysis model is
transformed into design equivalent.
Design Model
Design Model
• From fig :in both the analysis and design
models the same uml diagrams are used but in
analysis model the uml diagrams are abstract
and in design model these diagrams are
refined and elaborated. Moreover is design
model the implementation specific details are
provided.
• Along the horizontal axis various elements
such as architecture level ,interface element,
component level elements and deployment
level elements are given.
Design Model
• First of all the preliminary architecture design
occurs then interface design and component
level design occur in parallel. the deployment
level design ends up after the completions of
complete design model.
• 1.data design elements: structure of the data is
very important factor in software design. data
appears in the form of data structures and
algorithms at the program component level.
• This can be analyzed by considering the
following stages of development.
Design Model
• i)component level(data structures and
algorithms)
• ii)application level(storage aspects)
• iii)business or commercial(improving storage)
• 2.architecture design elements: the architectural
design gives the layout for overall view of the
software.
• 3.interface design elements: in interface design
how information flows from one component to
other component of the system is depicted.
Typically there are three types of interfaces.
Design Model
• i)user interface
• ii)external interface
• iii)internal interface
• 4.component level design elements: the
component level design is more detailed design of
the software system along with the specifications.
• 5.deployment level design elements: the
deployment level design elements indicate how
software functions and software subsystems are
assigned to the physical computing of the software
product.
Design Model
Design Model
• Pattern based software design:
• in software designing process ,certain design
patterns can be created and used to solve the
problems.
• i)describing design patterns
• ii)use of patterns in design
• iii)framework
Creating an architectural design
• Software design is a process in which user
requirements are transformed into a system model.
• Such transformation can be carried out in various
phases such as data design ,architectual
design ,interface design and component design.
Architectural design is a design created to represent
the data and program components that are
required to build the computer based systems.
Software architecture
• Defination:software architecture is a structure of
systems which consists of various components
externally visible properties of these components
and the inter-relationship among these
components.
• Importance of software architecture:
• There are three reasons why software architecture
is so important.
• i)software architecture gives the representation of
the computer based system that is to be built.
Software architecture
• ii)some early design decisions can be taken
using software architecture and hence system
performance and operations remain under
control.
• iii)the software architecture gives a clear cut
idea about the computer based system which
is to be built.
Software architecture
• Structural partitioning: the program structure
can be partitioned horizontally or vertically.
• Horizontal partitioning: horizontal
partitioning defines separate branches of the
modular hierarchy for each major program
function.
• Horizontal partitioning can be done by
partitioning system into:input,data
transformation(processing)and output.
Software architecture
• in horizontal partitioning the design making
modules are at the top of the architecture.
• Advantages of horizontal partition:
• 1.these are easy to test, maintain and extend.
• 2.they have fewer side effects in change
propagation or error propagation.
• Disadvantage of horizontal partition: more
data has to be passed across module
interfaces which complicate the overall
control of program flow.
Software architecture
Software architecture
• Vertical partitioning: vertical partitioning
suggests the control and work should be
distributed top-down in program structure.
• In vertical partitioning :
• Define separate branches of the module
hierarchy for each major function.
• Use control modules to co-ordinate
communication between functions.
Software architecture
• Advantages of vertical partition:
• 1.these are easy to maintain the changes.
• 2.they reduce the change impact and error
propagation.
Software architecture
Software architecture
• Comparison between horizontal and vertical
partition:
HORIZONTAL PARTITIONING VERTICAL PARTIONING

In Horizontal partitioning the Vertical partitioning suggests


design making modules are at the control and work should
the top of the architecture. be distributed top-down in
program structure.
East to test and maintain Easy to maintain the changes.
Data Design
• Data design is basically the model of data that
is represented at the high level of abstraction.
• Data design refers to a criterion which is useful
in transforming data objects into
datastructures,further into a data base
architecture.
Data Design
• Fig: transformation of data

DATA OBJECTS DATA DATABASE


STRUCTURE ARCHITECTURE
Data Design
• 1.Data design at the architecture level:
• various elements of data design are
• -data object
• -databases
• -data warehouses
• 2.data design at the component level:
• Whenever we deal with data designing at component
level, it focuses representation of data structures
accessible by various components forming a given
software. In order to do that, following certain
important principles..
Data Design
• i)apply systematic analysis on data
• ii)identify data structures and related operations
• iii)establish data dictionary
• iv)defer the low level design decisions until late in
the design process
• v)use information hiding in the design of data
structures
• vi)apply a library of useful data structures and
operations
• vii)use a software design and programming language
to support data specification and abstraction.
Architectural styles and pattern
• The architectural model or style is a pattern for
creating the system architecture for given
problem.
• Most of the large systems are heterogeneous
and do not follow single architectural style.
• System categories define architectural style
• 1.components
• 2.connectors
• 3.constraints
• 4.semantic models
Architectural styles and pattern
• The commonly used architectural styles are
• 1.data centered architectures
• 2.data flow architectures
• 3.call and return architectures
• 4.object oriented architecture
• 5.layered architecture
Architectural Design
• In architectural design at the initial stage a
context model is prepared.
• This model defines the external entities that
interact with the software.
• Along with this model the nature of software
with external entities is also described.
• The context model is prepared by using
information obtained from analysis model and
requirement specification.
Architectural Design
• Architectural design gets generated using
some simple representations.
• 1)Representing system in context: how to
create a context model for the given software
system. context model is a graphical model in
which the environment of the system is
defined by showing the external entities that
interact with the software system.
Architectural Design
• In architectural design the architectural
context diagram(ACD) is created.
• The difference between context model and
architectural context diagram is that in ACD
the nature of interaction is clearly described.
• Following are the basic terminologies
associated with architectural context diagram.
Architectural Design
Architectural Design
• II)Defining Archetypes: defining archetype is
basic step in architectural design, more
precisely in functionality based design.
• Archetype is a core abstraction using which
the system can be structured.
• Using archetypes, a small set of entities that
describe the major part of system behavior
can be described.
Architectural Design
• Various types of archetypes are:
• i)point or node
• ii)detector
• iii)controller
• iv)indicator
• 3)Refining architectural into components:
• To create full structure of the system it is required
to refine the software architecture into
components.
Architectural Design
• There are two methods by which the
components can be identified
• i)the data flow diagram
• Ii)the components
• 4)Defining instantiations of the system: in
order to model a structure of the system
simply defining the software into components
is not sufficient.
Architectural Design
• Accessing alternative architectural design
• There are two alternative approaches used for
architectural designs:
• i)the first approach is to apply interactive
method to access design trade-offs
• ii)the pseudo quantitative technique for
accessing design quality

You might also like