0% found this document useful (0 votes)
66 views8 pages

Se Unit 3

Software design transforms user requirements into an implementable form using programming languages. It involves three levels: interface design, architectural design, and detailed design. Modularization and problem partitioning divide problems into independent and manageable modules and pieces. Abstraction considers components at abstract levels without implementation details. Top-down and bottom-up approaches decompose a system from different starting points. Structured design breaks large projects into smaller, manageable modules. Verification evaluates work products against requirements. Functional and object-oriented programming differ in elements, data usage, and other aspects. Coupling and cohesion measure interdependence and relatedness between modules.
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)
66 views8 pages

Se Unit 3

Software design transforms user requirements into an implementable form using programming languages. It involves three levels: interface design, architectural design, and detailed design. Modularization and problem partitioning divide problems into independent and manageable modules and pieces. Abstraction considers components at abstract levels without implementation details. Top-down and bottom-up approaches decompose a system from different starting points. Structured design breaks large projects into smaller, manageable modules. Verification evaluates work products against requirements. Functional and object-oriented programming differ in elements, data usage, and other aspects. Coupling and cohesion measure interdependence and relatedness between modules.
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/ 8

SOFTWARE

ENGINEERING
[BCA 302]

HARSHITA PANDEY
(PURVANCHAL PG COLLEGE)
(Ramsundarpur – Rani Ki Sarai - Azamgarh)
[Contact No: - 9451574433]

HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]

1
UNIT- III
(SOFTWARE DESIGN)
Software design:-
Software design is a process to transform user requirements into some suitable form, which helps the
programmer in software coding and implementation.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
Modularization: -
Modularization is the process of dividing a software system into multiple independent modules where
each module works independently. There are many advantages of Modularization in software engineering.
Some of these are given below:
 Easy to understand the system.
 System maintenance is easy.
 A module can be used many times as their requirements. No need to write it again and again.

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.
Benefits of Problem Partitioning
1. Software is easy to understand
2. Software becomes simple
3. Software is easy to test
4. Software is easy to modify
5. Software is easy to maintain
6. Software is easy to expand
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. Abstraction can be used for existing element
as well as the component being designed.
Here, there are two common abstraction mechanisms
1. Functional Abstraction
2. Data Abstraction
HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]
2
Functional Abstraction
A module is specified by the method it performs.
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.
Top-down approach:
Each system is divided into several subsystems and components. Each of the subsystem is further divided
into set of subsystems and components. This process of division facilitates in forming a system hierarchy
structure. The complete software system is considered as a single entity and in relation to the
characteristics; the system is split into sub-system and component. The same is done with each of the sub-
system.
This process is continued until the lowest level of the system is reached. The design is started initially by
defining the system as a whole and then keeps on adding definitions of the subsystems and components.
When all the definitions are combined together, it turns out to be a complete system.
For the solutions of the software need to be developed from the ground level, top-down design best suits
the purpose.
Advantages:
 The main advantage of top down approach is that its strong focus on requirements helps to make a
design responsive according to its requirements.
Disadvantages:
 Project and system boundaries tend to be application specification oriented. Thus it is more likely
that advantages of component reuse will be missed.
 The system is likely to miss, the benefits of a well-structured, simple architecture.

Bottom-up approach:-
The design starts with the lowest level components and subsystems. By using these components, the next
immediate higher level components and subsystems are created or composed. The process is continued
till all the components and subsystems are composed into a single component, which is considered as the
complete system. The amount of abstraction grows high as the design moves to more high levels.
By using the basic information existing system, when a new system needs to be created, the bottom up
strategy suits the purpose.
Advantages:
 The economics can result when general solutions can be reused.
 It can be used to hide the low-level details of implementation and be merged with top-
down technique.

HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]

3
Disadvantages:
 It is not so closely related to the structure of the problem.
 High quality bottom-up solutions are very hard to construct.
 It leads to proliferation of ‘potentially useful’ functions rather than most appropriate ones.

Structured design approach:-


The structured design approach helps developers deal with the size and complexity of large scale projects.
The structured approach is a process oriented approach, aiming to break a large complex project into a
series of smaller, more manageable modules.
The Structured approach is usually associated with projects that have the following characteristics:
 long time periods
 large-scale projects
 large budgets
Advantages and Disadvantages of the structured Approach
Advantages:-
 Problem is addressed in a detailed and systematic way. Therefore, unexpected problems
encountered during the development phase should be avoided by careful planning.
 Solution is robust and will fulfill the requirements described in the initial stage. Careful planning will
result in a system that fulfills the requirements of the system, as described in the initial phases.
 Solution is well documented and supported by a team of programmers. The solution is not "ad-
hoc", but is the result of a careful, well documented work by a team of professionals. Therefore,
should further development be needed in the future, those who follow should have the benefit of a
clear understanding of what went before them.
Disadvantages
 The timescale for development is very long - in some cases so long that the initial requirements
may have changed before the development is completed, rendering the newly developed system
obsolete.
 The system may be expensive in terms of money and man-hours. It can be monolithic, unwieldy
and unable to cater for fast paced changes to business requirements.
 Design specification:-
 A design specification is a detailed document providing a list of points regarding a product or
process. For example, the design specification could include required dimensions, environmental
factors, ergonomic factors, aesthetic factors, maintenance that will be needed, etc.
 Verification:-
 Verification is the process of evaluating work-products of a development phase to determine
whether they meet the specified requirements. Verification ensures that the product is built
according to the requirements and design specifications.
HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]

4
Differences between functional and OOP:-

FUNCTIONAL PROGRAMMING OBJECT ORIENTED PROGRAMMING

This programming paradigm emphasizes on the use This programming paradigm is based on object
of functions where each function performs a oriented concept. Classes are used where
specific task. instance of objects are created

Fundamental elements used are variables and Fundamental elements used are objects and
functions. The data in the functions are immutable methods and the data used here are mutable
(cannot be changed after creation). data.

Importance is given to data rather than


Importance is not given to data but to functions. procedures.

It follows declarative programming model. It follows imperative programming model.

It uses recursion for iteration. It uses loops for iteration.

It is parallel programming supported. It does not support parallel programming.

The statements in this programming paradigm does The statements in this programming paradigm
not need to follow a particular order while need to follow an order i.e., bottom up
execution. approach while execution.

Has three access specifies namely, Public,


Does not have any access specifies. Private and Protected.

Provides an easy way to add new data and


To add new data and functions is not so easy. functions.

No data hiding is possible. Hence, Security is not Provides data hiding. Hence, secured programs
possible. are possible.
HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]

5
Coupling and Cohesion:-
Coupling:-
Coupling is the measure of the degree of interdependence between the modules. Good software will have
low coupling.
Types of Coupling:
 Data Coupling: If the dependency between the modules is based on the fact that they
communicate by passing only data, then the modules are said to be data coupled. In data coupling,
the components are independent to each other and communicating through data. Module
communications don’t contain tramp data. Example-customer billing system.
 Stamp Coupling In stamp coupling, the complete data structure is passed from one module to
another module. Therefore, it involves tramp data. It may be necessary due to efficiency factors-
this choice made by the insightful designer, not a lazy programmer.
 Control Coupling: If the modules communicate by passing control information, then they are said
to be control coupled. It can be bad if parameters indicate completely different behavior and good
if parameters allow factoring and reuse of functionality. Example- sort function that takes
comparison function as an argument.
 External Coupling: In external coupling, the modules depend on other modules, external to the
software being developed or to a particular type of hardware. Ex- protocol, external file, device
format, etc.
 Common Coupling: The modules have shared data such as global data structures. The changes in
global data mean tracing back to all modules which access that data to evaluate the effect of the
change. So it has got disadvantages like difficulty in reusing modules, reduced ability to control
data accesses and reduced maintainability.
 Content Coupling: In a content coupling, one module can modify the data of another module or
control flow is passed from one module to the other module. This is the worst form of coupling and
should be avoided.
Cohesion: -Cohesion is a measure of the degree to which the elements of the module are functionally
related. It is the degree to which all elements directed towards performing a single task are contained in
the component. Basically, cohesion is the internal glue that keeps the module together. A good software
design will have high cohesion.
Types of Cohesion:
 Functional Cohesion: Every essential element for a single computation is contained in the
component. A functional cohesion performs the task and functions. It is an ideal situation.
 Sequential Cohesion: An element outputs some data that becomes the input for other element,
i.e., data flow between the parts. It occurs naturally in functional programming languages.
 Communicational Cohesion: Two elements operate on the same input data or contribute towards
the same output data. Example- updates record into the database and send it to the printer.
HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]
6
 Procedural Cohesion: Elements of procedural cohesion ensure the order of execution. Actions are
still weakly connected and unlikely to be reusable. Ex- calculate student GPA, print student record,
calculate cumulative GPA, and print cumulative GPA.
 Temporal Cohesion: The elements are related by their timing involved. A module connected with
temporal cohesion all the tasks must be executed in the same time-span. This cohesion contains
the code for initializing all the parts of the system. Lots of different activities occur, all at in it time.
 Logical Cohesion: The elements are logically related and not functionally. Ex- A component reads
inputs from tape, disk, and network. All the code for these functions is in the same component.
Operations are related, but the functions are significantly different.
 Coincidental Cohesion: The elements are not related (unrelated). The elements have no conceptual
relationship other than location in source code. It is accidental and the worst form of cohesion. Ex-
prints next line and reverse the characters of a string in a single component.
Fourth Generation Techniques:-
The term fourth generation techniques (4GT) encompass a broad array of software tools that have one
thing in common: each enables the software engineer to specify some characteristic of software at a high
level. The tool then automatically generates source code based on the developer's specification. There is
little debate that the higher the level at which software can be specified to a machine, the faster a
program can be built. The 4GT paradigm for software engineering focuses on the ability to specify software
using specialized language forms or a graphic notation that describes the problem to be solved in terms
that the customer can understand.
Functional Independence:-
Functional independence in software engineering means that when a module focuses on a single task, it
should be able to accomplish it with very little interaction with other modules.
Advantage:-
 Error isolation
 Module reusability
 Understandability
Software Architecture:-
Architecture serves as a blueprint for a system. It provides an abstraction to manage the system
complexity and establish a communication and coordination mechanism among components.
 It defines a structured solution to meet all the technical and operational requirements, while
optimizing the common quality attributes like performance and security.
 Further, it involves a set of significant decisions about the organization related to software
development and each of these decisions can have a considerable impact on quality,
maintainability, performance, and the overall success of the final product.

HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]
7
Functional Independence:-
Functional independence in software engineering means that when a module focuses on a single task, it
should be able to accomplish it with very little interaction with other modules.

Advantage:-
 Error isolation
 Module reusability
 Understandability

HARSHITA PANDEY
[PURVANCHAL PG COLLEGE - AZAMGARH]
[Contact No: - 9451574433]

You might also like