CH-3 Part-1 Software Engineering

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

CH-3

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- subdivide the system

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.

Architecture- design a structure of something


Architecture simply means a technique to design a structure of something. Architecture in
designing software is a concept that focuses on various elements and the data of the structure.
These components interact with each other and use the data of the structure in architecture.
Refinement- removes impurities
Refinement simply means to refine something to remove any impurities if present
and increase the quality. The refinement concept of software design is actually a
process of developing or presenting the software or system in a detailed manner
that means to elaborate a system or software. Refinement is very necessary to find
out any error if present and then to reduce it.

Pattern- a repeated form

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- reconstruct something

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:

● 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
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.
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.
Creating an architectural design:
Software Architecture:
What is Architecture?
The software architecture of a program or computing system is
the structure or structures of the system, which comprise
software components, the externally visible properties of those
components, and the relationships among them.
DATA DESIGN
● Data design (sometimes referred to as data architecting) creates a model of data
and/or information that is represented at a high level of abstraction (the
customer/user’s view of data). This data model is then refined into progressively
more implementation-specific representations that can be processed by the
computer-based system.
● The data design activity translates these elements of the requirements model into
data structures at the software component level and, when necessary, a
database architecture at the application level
ARCHITECTURAL STYLES
The software that is built for computer-based systems also exhibits
one of many architectural styles.1 Each style describes a system
category that encompasses (1) a set of components (e.g., a database,
computational modules) that perform a function required by a system;
(2) a set of connectors that enable “communication, coordinations
and cooperation” among components; (3) constraints that define how
components can be integrated to form the system; and (4) semantic
models that enable a designer to understand the overall properties of a
system by analyzing the known properties of its constituent parts
[BAS98].
A Brief Taxonomy of Styles and Patterns
Data-centered architectures
Data-flow architectures
Object-oriented architectures
Layered architectures

You might also like