• No results found

Software Design: Design objectives and principles

N/A
N/A
Protected

Academic year: 2022

Share "Software Design: Design objectives and principles"

Copied!
24
0
0

Loading.... (view fulltext now)

Full text

(1)

UNIT-II Software Requirement Analysis And Specification:

Need for SRS, Problem Analysis, Requirements Specification.

Software Design: Design objectives and principles. Module level concepts, Coupling and Cohesion. Design Notations and specifications. Structured Design Methodology, Object Oriented Design. Detailed Design: Detailed Design, Verification (Design Walkthroughs, Critical Design Review, Consistency Checkers), Metrics.

(2)

✓ Software Design is the process to transform the user

requirements into some suitable form, which helps the programmer in software coding and implementation.

✓ During the software design phase, the design

document is produced, based on the customer requirements as documented in the SRS document.

✓ The aim of this phase is to transform the SRS document into the design document.

(3)

The following items are designed and documented during the design phase:

✓ Different modules required.

✓ Control relationships among modules.

✓ Interface among different modules.

✓ Data structure among the different modules.

✓ Algorithms required to implement among the individual modules.

(4)

Objectives of Software Design:

1.Correctness: A good design should be correct i.e. it should correctly implement all the functionalities of the system.

2.Efficiency: A good software design should address the resources, time and cost optimization issues.

3.Understandability: A good design should be easily understandable, for which it should be modular and all the modules are arranged in layers.

(5)

4. Completeness: The design should have all the components like data structures, modules, and external interfaces, etc.

5. Maintainability: A good software design should be easily manageable to change whenever a change request is made from the customer side.

(6)

Software Design Principles

✓ Software design principles are concerned with

providing means to handle the complexity of the design process effectively.

✓ Effectively managing the complexity will not

only reduce the effort needed for design but can also reduce the scope of introducing errors during design.

(7)

Following are the principles of Software Design:

1. Problem Partitioning 2. Abstraction

3. Modular

4. Strategy of Design: Top-down Approach & Bottom- up Approach

(8)

1. Problem Partitioning:

For small problem, we can handle the entire problem at once

but for the significant problem, divide the problems and conquer the problem it means to divide the problem into smaller pieces so that each piece can be captured separately.

For software design, the goal is to divide the problem into manageable pieces.

These pieces cannot be entirely independent of each other as

they together form the system. They have to cooperate and communicate to solve the problem. This communication adds complexity.

(9)

Structured Design

Structured design is a conceptualization of problem into several well-organized elements of solution.

Structured design is mostly based on ‘divide and conquer’

strategy where a problem is broken into several small problems and each small problem is individually solved until the whole problem is solved.

A good structured design always follows some rules for

communication among multiple modules, namely - Cohesion - grouping of all functionally related elements.

Coupling - communication between different modules.

(10)

Function Oriented Design

Function oriented design inherits some properties of

structured design where divide and conquer methodology is used.

In function-oriented design, the system is comprised of many smaller sub-systems known as functions.

These functions are capable of performing significant task in the system.

The system is considered as top view of all functions.

(11)

2. Abstraction

An abstraction is a tool that enables a designer to consider a component at an abstract level without bothering about the internal details of the implementation. There are two common abstraction mechanisms

1.Functional Abstraction 2.Data Abstraction

(12)

Functional Abstraction

i.A module is specified by the method it performs.

ii.The details of the algorithm to accomplish the functions are not visible to the user of the function.

Functional abstraction forms the basis for Function oriented design approaches.

Data Abstraction

Details of the data elements are not visible to the users of data. Data Abstraction forms the basis for Object Oriented design approaches.

(13)

3. Modularity

Modularity specifies to the division of software into separate modules which are differently named and addressed and are integrated later on in to obtain the completely functional software. It is the only property that allows a program to be intellectually manageable.

Single large programs are difficult to understand and read due to a large number of reference variables, control paths, global variables, etc.

(14)

The desirable properties of a modular system are:

•Each module is a well-defined system that can be used with other applications.

•Each module has single specified objectives.

•Modules can be separately compiled and saved in the library.

•Modules should be easier to use than to build.

•Modules are simpler from outside than inside.

(15)

4. Strategy of Design

A good system design strategy is to organize the program modules in such a method that are easy to develop and latter too, change. Structured design methods help developers to deal with the size and complexity of programs. Analysts generate instructions for the developers about how code should be composed and how pieces of code should fit together to form a program.

To design a system, there are two possible approaches:

1.Top-down Approach 2.Bottom-up Approach

(16)

1. Top-down Approach: This approach starts with the identification of the main components and then decomposing them into their more detailed sub- components.

(17)

2. Bottom-up Approach: A bottom-up approach begins with the lower details and moves towards up the hierarchy, as shown in fig. This approach is suitable in case of an existing system.

(18)

Different levels of Software Design:

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

(19)
(20)

1. 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.

(21)

Interface design should include the following details:

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.

(22)

2. 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.

(23)

Issues in architectural design includes:

✓ Gross decomposition of the systems into major components.

✓ Allocation of functional responsibilities to components.

✓ Component Interfaces.

✓ Communication and interaction between components.

(24)

3. 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

•Data and control interaction between units

•Algorithms and data structures

References

Related documents

This report discusses the impacts of transport projects on wildlife and biodiversity, and how these impacts can be addressed by proactively integrating road ecology principles and

Hennessy, “Computer Organization and Design: The hardware/software interface”, Fifth Edition.... Types of

in the design of the product causes the product to be inherently defective which can result in injury even if product used as intended... Product Liability –

• The user system requirements are the parts of software requirement and specification (SRS) document... Requirements Documentation SRS Should.. -- Correctly define all requirements

Module 3: Design of couplings (Rigid, flexible). Module 4: Design of Flat and V-Belts, design of ropes. Machine Design, Joseph E Shigley, McGraw-Hill Pub. Design Data Handbook

The three verification methods we consider are design walkthrough, critical design review, and consistency checkers.... ✓ A design walkthrough is a manual method

Review of Combinational, Sequential Circuit Design in CMOS and Design Methodology Design of Arithmetic Building Blocks: Introduction, Adder Circuit and Logic Design

Module 3: Design of couplings (Rigid, flexible). Module 4: Design of Flat and V-Belts, design of ropes. Machine Design, Joseph E Shigley, McGraw-Hill Pub. Design Data Handbook