0% found this document useful (0 votes)
31 views18 pages

Unit III

The document discusses the software design process which includes three levels of design: interface design, architectural design, and detailed design. Interface design focuses on the system's interaction with external agents and environments. Architectural design specifies the major components, their responsibilities and relationships. Detailed design specifies the internal elements of components, their properties, and relationships. The design process transforms customer requirements into an implementable form using programming languages.

Uploaded by

amnakhan566548
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views18 pages

Unit III

The document discusses the software design process which includes three levels of design: interface design, architectural design, and detailed design. Interface design focuses on the system's interaction with external agents and environments. Architectural design specifies the major components, their responsibilities and relationships. Detailed design specifies the internal elements of components, their properties, and relationships. The design process transforms customer requirements into an implementable form using programming languages.

Uploaded by

amnakhan566548
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH

BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Subject Name: Software Engineering & Project


Management
Subject Code: CS-403
Semester: 4th

Unit-3
Software Design Process
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:
1. Interface Design
2. Architectural Design
3. Detailed Design

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

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. Attention is focussed on the dialogue between the target system and the
users, devices, and other systems with which it interacts. The design problem statement produced
during the problem analysis step should identify the people, other systems, and devices which are
collectively called agents.

Interface design should include the following details:

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

 Precise description of events in the environment, or messages from agents to which the
system must respond.
 Precise description of the events or messages that the system must produce.
 Specification on the data, and the formats of the data coming into and going out of the
system.
 Specification of the ordering and timing relationships between incoming events or
messages, and outgoing events or outputs.
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.
Issues in architectural design includes:
 Gross decomposition of the systems into major components.
 Allocation of functional responsibilities to components.
 Component Interfaces
 Component scaling and performance properties, resource consumption properties,
reliability properties, and so forth.
 Communication and interaction between components.
The architectural design adds important details ignored during the interface design. Design of the
internals of the major components is ignored until the last phase of the design.
Detailed 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

Introduction to design process

 The main aim of design engineering is to generate a model which shows firmness, delight and
commodity.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

 Software design is an iterative process through which requirements are translated into the blueprint
for building the software.

Software quality guidelines

 A design is generated using the recognizable architectural styles and compose a good design
characteristic of components and it is implemented in evolutionary manner for testing.
 A design of the software must be modular i.e the software must be logically partitioned into
elements.
 In design, the representation of data , architecture, interface and components should be distinct.
 A design must carry appropriate data structure and recognizable data patterns.
 Design components must show the independent functional characteristic.
 A design creates an interface that reduce the complexity of connections between the components.
 A design must be derived using the repeatable method.
 The notations should be use in design which can effectively communicates its meaning.

Quality attributes
The attributes of design name as 'FURPS' are as follows:

Functionality:
It evaluates the feature set and capabilities of the program.

Usability:
It is accessed by considering the factors such as human factor, overall aesthetics, consistency and
documentation.

Reliability:
It is evaluated by measuring parameters like frequency and security of failure, output result accuracy,
the mean-time-to-failure(MTTF), recovery from failure and the the program predictability.

Performance:
It is measured by considering processing speed, response time, resource consumption, throughput
and efficiency.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Supportability:

 It combines the ability to extend the program, adaptability, serviceability. These three term defines
the maintainability.
 Testability, compatibility and configurability are the terms using which a system can be easily
installed and found the problem easily.
 Supportability also consists of more attributes such as compatibility, extensibility, fault tolerance,
modularity, reusability, robustness, security, portability, scalability.

Design concepts
The set of fundamental software design concepts are as follows:

1. Abstraction

 A solution is stated in large terms using the language of the problem environment at the highest
level abstraction.
 The lower level of abstraction provides a more detail description of the solution.
 A sequence of instruction that contain a specific and limited function refers in a procedural
abstraction.
 A collection of data that describes a data object is a data abstraction.
2. Architecture

 The complete structure of the software is known as software architecture.


 Structure provides conceptual integrity for a system in a number of ways.
 The architecture is the structure of program modules where they interact with each other in a
specialized way.
 The components use the structure of data.
 The aim of the software design is to obtain an architectural framework of a system.
 The more detailed design activities are conducted from the framework.
3. Patterns
A design pattern describes a design structure and that structure solves a particular design problem in
a specified content.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

4. Modularity

 A software is separately divided into name and addressable components. Sometime they are called
as modules which integrate to satisfy the problem requirements.
 Modularity is the single attribute of a software that permits a program to be managed easily.
5. Information hiding
Modules must be specified and designed so that the information like algorithm and data presented in
a module is not accessible for other modules not requiring that information.

6. Functional independence

 The functional independence is the concept of separation and related to the concept of modularity,
abstraction and information hiding.
 The functional independence is accessed using two criteria i.e Cohesion and coupling.
Cohesion

 Cohesion is an extension of the information hiding concept.


 A cohesive module performs a single task and it requires a small interaction with the other
components in other parts of the program.
Coupling
Coupling is an indication of interconnection between modules in a structure of software.

7. Refinement

 Refinement is a top-down design approach.


 It is a process of elaboration.
 A program is established for refining levels of procedural details.
 A hierarchy is established by decomposing a statement of function in a stepwise manner till the
programming language statement are reached.
8. Refactoring

 It is a reorganization technique which simplifies the design of components without changing its
function behaviour.
 Refactoring is the process of changing the software system in a way that it does not change the
external behaviour of the code still improves its internal structure.
9. Design classes

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

 The model of software is defined as a set of design classes.


 Every class describes the elements of problem domain and that focus on features of the problem
which are user visible.
Unified Modeling Language (UML) | An Introduction
Unified Modeling Language (UML) is a general purpose modelling language. The main aim of
UML is to define a standard way to visualize the way a system has been designed. It is quite
similar to blueprints used in other fields of engineering.
UML is not a programming language, it is rather a visual language. We use UML diagrams to
portray the behavior and structure of a system. UML helps software engineers, businessmen
and system architects with modelling, design and analysis. The Object Management Group
(OMG) adopted Unified Modelling Language as a standard in 1997. Its been managed by OMG
ever since. International Organization for Standardization (ISO) published UML as an approved
standard in 2005. UML has been revised over the years and is reviewed periodically.
UML is linked with object oriented design and analysis. UML makes the use of elements and
forms associations between them to form diagrams. Diagrams in UML can be broadly classified
as:
1. Structural Diagrams – Capture static aspects or structure of a system. Structural Diagrams
include: Component Diagrams, Object Diagrams, Class Diagrams and Deployment Diagrams.
2. Behavior Diagrams – Capture dynamic aspects or behavior of the system. Behavior diagrams
include: Use Case Diagrams, State Diagrams, Activity Diagrams and Interaction Diagrams.
The image below shows the hierarchy of diagrams according to UML 2.2

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Object Oriented Concepts Used in UML –

1. Class – A class defines the blue print i.e. structure and functions of an object.
2. Objects – Objects help us to decompose large systems and help us to modularize our system.
Modularity helps to divide our system into understandable components so that we can build our
system piece by piece. An object is the fundamental unit (building block) of a system which is used
to depict an entity.
3. Inheritance – Inheritance is a mechanism by which child classes inherit the properties of their
parent classes.
4. Abstraction – Mechanism by which implementation details are hidden from user.
5. Encapsulation – Binding data together and protecting it from the outer world is referred to as
encapsulation.
6. Polymorphism – Mechanism by which functions or entities are able to exist in different forms.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Structural UML Diagrams –

1. Class Diagram – The most widely use UML diagram is the class diagram. It is the building block
of all object oriented software systems. We use class diagrams to depict the static structure of a
system by showing system’s classes,their methods and attributes. Class diagrams also help us
identify relationship between different classes or objects.
2. Composite Structure Diagram – We use composite structure diagrams to represent the internal
structure of a class and its interaction points with other parts of the system. A composite structure
diagram represents relationship between parts and their configuration which determine how the
classifier (class, a component, or a deployment node) behaves. They represent internal structure of a
structured classifier making the use of parts, ports, and connectors. We can also model
collaborations using composite structure diagrams. They are similar to class diagrams except they
represent individual parts in detail as compared to the entire class.
3. Object Diagram – An Object Diagram can be referred to as a screenshot of the instances in a
system and the relationship that exists between them. Since object diagrams depict behaviour when
objects have been instantiated, we are able to study the behaviour of the system at a particular
instant. An object diagram is similar to a class diagram except it shows the instances of classes in
the system. We depict actual classifiers and their relationships making the use of class diagrams. On
the other hand, an Object Diagram represents specific instances of classes and relationships
between them at a point of time.
4. Component Diagram – Component diagrams are used to represent the how the physical
components in a system have been organized. We use them for modelling implementation details.
Component Diagrams depict the structural relationship between software system elements and help
us in understanding if functional requirements have been covered by planned development.
Component Diagrams become essential to use when we design and build complex systems.
Interfaces are used by components of the system to communicate with each other.
5. Deployment Diagram – Deployment Diagrams are used to represent system hardware and its
software.It tells us what hardware components exist and what software components run on
them.We illustrate system architecture as distribution of software artifacts over distributed targets.
An artifact is the information that is generated by system software. They are primarily used when a
software is being used, distributed or deployed over multiple machines with different
configurations.
6. Package Diagram – We use Package Diagrams to depict how packages and their elements have
been organized. A package diagram simply shows us the dependencies between different packages
and internal composition of packages. Packages help us to organise UML diagrams into meaningful
groups and make the diagram easy to understand. They are primarily used to organise class and use
case diagrams.

Behavior Diagrams –

1. State Machine Diagrams – A state diagram is used to represent the condition of the system or part
of the system at finite instances of time. It’s a behavioral diagram and it represents the behavior
using finite state transitions. State diagrams are also referred to as State machines and State-chart

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Diagrams . These terms are often used interchangeably.So simply, a state diagram is used to model
the dynamic behavior of a class in response to time and changing external stimuli.
2. Activity Diagrams – We use Activity Diagrams to illustrate the flow of control in a system. We
can also use an activity diagram to refer to the steps involved in the execution of a use case. We
model sequential and concurrent activities using activity diagrams. So, we basically depict
workflows visually using an activity diagram.An activity diagram focuses on condition of flow and
the sequence in which it happens. We describe or depict what causes a particular event using an
activity diagram.
3. Use Case Diagrams – Use Case Diagrams are used to depict the functionality of a system or a part
of a system. They are widely used to illustrate the functional requirements of the system and its
interaction with external agents(actors). A use case is basically a diagram representing different
scenarios where the system can be used. A use case diagram gives us a high level view of what the
system or a part of the system does without going into implementation details.
4. Sequence Diagram – A sequence diagram simply depicts interaction between objects in a
sequential order i.e. the order in which these interactions take place.We can also use the terms event
diagrams or event scenarios to refer to a sequence diagram. Sequence diagrams describe how and in
what order the objects in a system function. These diagrams are widely used by businessmen and
software developers to document and understand requirements for new and existing systems.
5. Communication Diagram – A Communication Diagram(known as Collaboration Diagram in
UML 1.x) is used to show sequenced messages exchanged between objects. A communication
diagram focuses primarily on objects and their relationships. We can represent similar information
using Sequence diagrams,however, communication diagrams represent objects and links in a free
form.
6. Timing Diagram – Timing Diagram are a special form of Sequence diagrams which are used to
depict the behavior of objects over a time frame. We use them to show time and duration
constraints which govern changes in states and behavior of objects.
7. Interaction Overview Diagram – An Interaction Overview Diagram models a sequence of actions
and helps us simplify complex interactions into simpler occurrences. It is a mixture of activity and
sequence diagrams.
Software Engineering | Architectural Design
Introduction: The software needs the architectural design to represents the design of software.
IEEE defines architectural design as “the process of defining a collection of hardware and
software components and their interfaces to establish the framework for the development of a
computer system.” The software that is built for computer-based systems can exhibit one of these
many architectural styles.
Each style will describe a system category that consists of :
 A set of components(eg: a database, computational modules) that will perform a function
required by the system.
 The set of connectors will help in coordination, communication, and cooperation between
the components.
 Conditions that how components can be integrated to form the system.
 Semantic models that help the designer to understand the overall properties of the system.
The use of architectural styles is to establish a structure for all the components of the system.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Taxonomy of Architectural styles:

1. Data centred architectures:


 A data store will reside at the center of this architecture and is accessed frequently by
the other components that update, add, delete or modify the data present within the
store.
 The figure illustrates a typical data centered style. The client software access a central
repository. Variation of this approach are used to transform the repository into a
blackboard when data related to client or data of interest for the client change the
notifications to client software.
 This data-centered architecture will promote integrability. This means that the
existing components can be changed and new client components can be added to the
architecture without the permission or concern of other clients.
 Data can be passed among clients using blackboard mechanism.

2. Data flow architectures:


 This kind of architecture is used when input data to be transformed into output data
through a series of computational manipulative components.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

 The figure represents pipe-and-filter architecture since it uses both pipe and filter and
it has a set of components called filters connected by pipes.
 Pipes are used to transmit data from one component to the next.
 Each filter will work independently and is designed to take data input of a certain
form and produces data output to the next filter of a specified form. The filters don’t
require any knowledge of the working of neighboring filters.
 If the data flow degenerates into a single line of transforms, then it is termed as batch
sequential. This structure accepts the batch of data and then applies a series of
sequential components to transform it.

3. Call and Return architectures: It is used to create a program that is easy to scale and
modify. Many sub-styles exist within this category. Two of them are explained below.
 Remote procedure call architecture: This components is used to present in a main
program or sub program architecture distributed among multiple computers on a
network.
 Main program or Subprogram architectures: The main program structure
decomposes into number of subprograms or function into a control hierarchy. Main
program contains number of subprograms that can invoke other components.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

4. Object Oriented architecture: The components of a system encapsulate data and the
operations that must be applied to manipulate the data. The coordination and
communication between the components are established via the message passing.
5. Layered architecture:
 A number of different layers are defined with each layer performing a well-defined
set of operations. Each layer will do some operations that becomes closer to machine
instruction set progressively.
 At the outer layer, components will receive the user interface operations and at the
inner layers, components will perform the operating system
interfacing(communication and coordination with OS)
 Intermediate layers to utility services and application software functions.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Software Engineering | User Interface Design


User interface is the front-end application view to which user interacts in order to use the
software. The software becomes more popular if its user interface is:
 Attractive
 Simple to use
 Responsive in short time
 Clear to understand
 Consistent on all interface screens
There are two types of User Interface:
1. Command Line Interface: Command Line Interface provides a command prompt, where
the user types the command and feeds to the system. The user needs to remember the
syntax of the command and its use.
2. Graphical User Interface: Graphical User Interface provides the simple interactive
interface to interact with the system. GUI can be a combination of both hardware and
software. Using GUI, user interprets the software.
User Interface Design Process:

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

The analysis and design process of a user interface is iterative and can be represented by a spiral
model. The analysis and design process of user interface consists of four framework activities.
1. User, task, environmental analysis, and modeling: Initially, the focus is based on the
profile of users who will interact with the system, i.e. understanding, skill and knowledge,
type of user, etc, based on the user’s profile users are made into categories. From each
category requirements are gathered. Based on the requirements developer understand how
to develop the interface. Once all the requirements are gathered a detailed analysis is
conducted. In the analysis part, the tasks that the user performs to establish the goals of the
system are identified, described and elaborated. The analysis of the user environment
focuses on the physical work environment. Among the questions to be asked are:
Prepared by : URMILA MAHOR
TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

 Where will the interface be located physically?


 Will the user be sitting, standing, or performing other tasks unrelated to the interface?
 Does the interface hardware accommodate space, light, or noise constraints?
 Are there special human factors considerations driven by environmental factors?
2. Interface Design: The goal of this phase is to define the set of interface objects and actions
i.e. Control mechanisms that enable the user to perform desired tasks. Indicate how these
control mechanisms affect the system. Specify the action sequence of tasks and subtasks,
also called a user scenario. Indicate the state of the system when the user performs a
particular task. Always follow the three golden rules stated by Theo Mandel. Design issues
such as response time, command and action structure, error handling, and help facilities are
considered as the design model is refined. This phase serves as the foundation for the
implementation phase.
3. Interface construction and implementation: The implementation activity begins with the
creation of prototype (model) that enables usage scenarios to be evaluated. As iterative
design process continues a User Interface toolkit that allows the creation of windows,
menus, device interaction, error messages, commands, and many other elements of an
interactive environment can be used for completing the construction of an interface.
4. Interface Validation: This phase focuses on testing the interface. The interface should be
in such a way that it should be able to perform tasks correctly and it should be able to
handle a variety of tasks. It should achieve all the user’s requirements. It should be easy to
use and easy to learn. Users should accept the interface as a useful one in their work.
Software Engineering | Function Oriented Design
The design process for software systems often has two levels. At the first level the focus is on
deciding which modules are needed for the system on the basis of SRS (Software Requirement
Specification) and how the modules should be interconnected.
Function Oriented Design is an approach to software design where the design is decomposed
into a set of interacting units where each unit has a clearly defined function.
Generic Procedure:
Start with a high level description of what the software / program does. Refine each part of the
description one by one by specifying in greater details the functionality of each part. These
points lead to Top-Down Structure.

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Problem in Top-Down design method:


Mostly each module is used by at most one other module and that module is called its Parent
module.
Solution to the problem:
Designing of reusable module. It means modules use several modules to do their required
functions.

Function Oriented Design Strategies:


Function Oriented Design Strategies are as follows:
1. Data Flow Diagram (DFD):
A data flow diagram (DFD) maps out the flow of information for any process or system. It
uses defined symbols like rectangles, circles and arrows, plus short text labels, to show data
inputs, outputs, storage points and the routes between each destination.
2. Data Dictionaries:
Data dictionaries are simply repositories to store information about all data items defined in

Prepared by : URMILA MAHOR


TRINITY INSTITUTE OF TECHNOLOGY AND RESEARCH
BHOPAL

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

DFDs. At the requirement stage, data dictionaries contains data items. Data dictionaries
include Name of the item, Aliases (Other names for items), Description / purpose, Related
data items, Range of values, Data structure definition / form.
3. Structure Charts:
It is the hierarchical representation of system which partitions the system into black boxes
(functionality is known to users but inner details are unknown). Components are read from
top to bottom and left to right. When a module calls another, it views the called module as
black box, passing required parameters and receiving results.
Pseudo Code:
Pseudo Code is system description in short English like phrases describing the function. It
use keyword and indentation. Pseudo codes are used as replacement for flow charts. It
decreases the amount of documentation required.

Prepared by : URMILA MAHOR

You might also like