0% found this document useful (0 votes)
470 views

11 SE3 Software Design Principles PDF

This document discusses key principles of software design including: 1) Design is the process of translating requirements analysis models into representations to guide implementation like data models, architecture diagrams, and interface designs. 2) Good design follows principles like traceability to requirements, reusability, and minimizing complexity through practices like abstraction, modularity, and information hiding. 3) Common design concepts and patterns help structure software through techniques such as structural partitioning, hierarchy, encapsulation, and separation of concerns.

Uploaded by

bhuvi2312
Copyright
© Attribution Non-Commercial (BY-NC)
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)
470 views

11 SE3 Software Design Principles PDF

This document discusses key principles of software design including: 1) Design is the process of translating requirements analysis models into representations to guide implementation like data models, architecture diagrams, and interface designs. 2) Good design follows principles like traceability to requirements, reusability, and minimizing complexity through practices like abstraction, modularity, and information hiding. 3) Common design concepts and patterns help structure software through techniques such as structural partitioning, hierarchy, encapsulation, and separation of concerns.

Uploaded by

bhuvi2312
Copyright
© Attribution Non-Commercial (BY-NC)
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/ 5

Software Design Principles

What Is Design?
Explaining the idea/concept of something Usually with graphical diagrams With the intention to build from the explanation The design is a representation of a product or a system with sufficient detail for implementation
1 TCS2411 Software Engineering 4

Producing the software blueprint

TCS2411 Software Engineering

Lecture Objectives
To understand the importance of design in developing quality software To describe the translation from the requirements analysis model to the design model To understand the principles that guide proper design of software
TCS2411 Software Engineering 2

The Second Task


Analysis Problem

Design

Models

Development Solution
5

Testing
TCS2411 Software Engineering

Designing A House
If you are asked to design a house
D W Kitchen Room 2 D D Living Room D
TCS2411 Software Engineering

Designing Software
From our understanding of the problem, we start building the software Translate the analysis model into the design model Map the information from the analysis model to the design representations - data design, architectural design, interface design, procedural design
3 TCS2411 Software Engineering 6

WC

Room 1 W

Translation Model

Design Principles (Continued)


Design is not coding, coding is not design The design should be assessed for quality as it is being created, not after the fact The design should be reviewed to minimize conceptual errors

EntityRelationship Diagram Data Dictionary

Data Flow Diagram

Procedural design Interface design Architectural design

State-Transition Diagram

Data design

TCS2411 Software Engineering

TCS2411 Software Engineering

10

Design Principles
Design process should not suffer from tunnel vision The design should be traceable to the analysis model The design should not reinvent the wheel;
Time is short

Design Concepts
Fundamental concepts which provide foundation to design correctly: Abstraction Structural Partitioning Refinement Data Structure Modularity Software Procedure Software Architecture Information Hiding Control Hierarchy
8 TCS2411 Software Engineering 11

The design should minimize intellectual distance between the software and the problem in the real world
TCS2411 Software Engineering

Design Principles (Continued)


The design should exhibit uniformity and integration The design should be structured to accommodate change The design should be structured to degrade gently.

Abstraction
Identifying important features for representation There are many levels of abstraction depending on how detailed the representation is required Data abstraction - representation of data objects Procedural abstraction - representation of instructions
9 TCS2411 Software Engineering 12

TCS2411 Software Engineering

Refinement
Stepwise refinement - top-down design strategy by Niklaus Wirth Starting at the highest level of abstraction, every step of refinement decompose instructions into more detailed instructions Complementary to abstraction

Software Architecture
Modules can be integrated in many ways to produce the system Software architecture is the overall structure of the software The hierarchy of components and how they interact, and the structure of data used by the components Use of framework models, and possible reuse of architectural patterns
TCS2411 Software Engineering 16

TCS2411 Software Engineering

13

Modularity
Software is divided into separately named and addressable modules Divide and conquer approach - problem is broken into manageable pieces Solutions for the separate pieces then integrated into the whole system

Software Architecture Patterns


Recurring pattern help designers reuse successful designs by basing new designs on prior experience. A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them.

TCS2411 Software Engineering

14

TCS2411 Software Engineering

17

Divide And Conquer


S1 S2

Why use Design Patterns?


Reuse successful practices.
Not new recognised that this is something that engineers have done for years.

P1 S5 P5 P4

P2

P3 S3

Improve communication Step towards a software engineers handbook

S4
TCS2411 Software Engineering 15 TCS2411 Software Engineering 18

Examples of Software Architecture


S1

Structural Partitioning
Program structure partitioned horizontally and vertically Horizontal partitioning defines separate branches for each major program function - input, process, output Vertical partitioning (aka factoring) defines control (decision-making) at the top and work at the bottom
19 TCS2411 Software Engineering 22

Program structure
S1

Batch sequential pattern

S2

S3 S2 S4 S3 S5
TCS2411 Software Engineering

S4

S5

Control Hierarchy
Hierarchy of modules representing the control relationships A super-ordinate module controls another module A subordinate module is controlled by another module Measures relevant to control hierarchy: depth, width, fan-in, fan-out
TCS2411 Software Engineering 20

Software Procedure
Processing details of individual modules Precise specification of processing, including sequence of events, exact decision points, repetitive operations, and data organization/structure Procedure is layered - subordinate modules must be referenced in processing details
TCS2411 Software Engineering 23

Structure Terminology
M Fan-out a Depth d e Fan-in i Width
TCS2411 Software Engineering 21

Information Hiding
Information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information Effective modularity is achieved by independent modules, that communicate only necessary information Ease of maintenance - testing, modification localized and less likely to propagate
TCS2411 Software Engineering 24

References
Software Engineering: A Practitioners Approach 5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001 Software Engineering by Ian Sommerville, Addison-Wesley, 2001

TCS2411 Software Engineering

25

You might also like