CH-3 Part-1 Software Engineering
CH-3 Part-1 Software Engineering
CH-3 Part-1 Software Engineering
Design Engineering
Part -1
BY
Prof. Shraddha S R.
Design process
● 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. That is, the design is represented at a high
level of abstraction— a level that can be directly traced to the specific system
objective and more detailed data, functional, and behavioral requirements.
● 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
Design process and design quality
McGlaughlin [MCG91] suggests three characteristics that serve as a guide for
the evaluation of a good design:
● 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.
● The design must be a readable, understandable guide for those who
generate code and for those who test and subsequently support the
software.
● The design should provide a complete picture of the software, addressing
the data, functional, and behavioral domains from an implementation
perspective.
What is the design quality?
Design quality is the value of a design to customers. Design is the root of all quality
including the quality of products, services, experiences, systems and processes. For
example, a product with a poor design will be low quality even if quality control and
quality assurance succeed in producing the design accurately.
Design Concepts
The software design concept simply means the idea or principle behind the
design. It describes how you plan to solve the problem of designing software, the
logic, or thinking behind how you will design software. It allows the software
engineer to create the model of the system or software or product that is to be
developed or built. The software design concept provides a supporting and
essential structure or model for developing the right software.
There are many concepts of software design and some of them are
given below:
Abstraction- hide Irrelevant data
Abstraction simply means to hide the details to reduce complexity and increases efficiency or
quality.
Modularity simply means dividing the system or project into smaller parts to reduce the
complexity of the system or project. In the same way, modularity in design means subdividing a
system into smaller parts so that these parts can be created independently and then use these parts
in different systems to perform different functions.
The pattern simply means a repeated form or design in which the same shape is
repeated several times to form a pattern.
Information Hiding- hide the information
Information hiding simply means to hide the information so that it cannot be accessed
by an unwanted party. In software design, information hiding is achieved by designing
the modules in a manner that the information gathered or contained in one module is
hidden and can’t be accessed by any other modules.
Refactoring simply means reconstructing something in such a way that it does not affect
the behavior of any other features. Refactoring in software design means reconstructing
the design to reduce complexity and simplify it without affecting the behavior or its
functions.
EFFECTIVE MODULAR DESIGN
1 Functional Independence
2 Cohesion
3 Coupling
The design model
Component level 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: