Unit-3 - Software Design
Unit-3 - Software Design
Software design
Objectives of software design
Software Design principles
Why software design is so important ??
SOFTWARE DESIGN
Software design is a method of creating a blueprint, or layout, for organizing the code of a software program.
Software design is the process of designing the elements of a software such as the architecture, modules and
components, different interfaces of those components and the data that goes into it.
In software designing we transform user requirements into some suitable form, which helps the programmer in
software coding and implementation.
In software design, the development is divided into several sub-activities, which coordinate with each other to
achieve the main objective of software development.
Software development is a multi-step process. The software is a multi-layer, multi-dimensional spectrum with
numerous intermediary processes in its construction.
SOFTWARE DESIGN
Software design phase transforms SRS document into a form which can be easily implementable in some
programming language.
Design Activities
SRS Document SDS Document
SOFTWARE DESIGN….CONT
Conceptual design process is bringing bits of software together in a non-technical way as part of concept
generation.
For instance, you could wish to generate a list of all the components and their functions and wireframes and flow
diagrams. As a result, we concentrate on non-technical representations of software in conceptual design.
Common methods used for conceptual designs are:
Wireframes
Mockups & Flow chart
Component diagrams
Class-Responsibility-Collaboration (CRC) cards. [Brainstorming tool used for designing OO software] - Example
CONCEPTUAL DESIGN..CONT
After completion of the conceptual design, now there is need think about the technical details. The following
questions might help to generate the technical design.
How would it get implemented?
How will it interact with the Server/Database?
How will it interact with other modules?
During the technical design phase, all of these concerns are addressed. In technical design, you're mostly
concerned with how the implementation will be carried out. The following are examples of common technical
design methods:
Class Diagrams
Activity diagram
Sequence diagram
State Diagram
TECHNICAL DESIGN..CONT
Link to modularization
COUPLING
Abstraction is the process of isolating the core behavior from its implementation and eliminating extraneous
elements to identify it.
The unnecessary coupling will result from distinguishing important behavior from its implementation.
ANTICIPATION OF CHANGE
A good software design guarantees that the program is sufficient and comprehensive in terms of the
requirements.
It ensures that the program has been constructed properly and completely.
WHY SOFTWARE DESIGN IS SO IMPORTANT?
Software with a better design is more adaptable. As a result, you can add a new component to the current
program without impacting it.
Reusability is improved by well-designed software.
Easy to Understand
Cost-efficiency is Increased
HELPFUL TOOLS FOR SOFTWARE DESIGN
Draw.io
Jira
Mockflow
Figma
Marvel
Zeplin
WHAT ARE THE MODULES ??
Modules
CLEAN - COMPLEX DECOMPOSED MODULES
Clean Complex
Cohesion and coupling are common concepts in designing modular software systems.
Developed by Larry Constantine in the late 1960s, they have proved to be foundational in areas ranging from
software design to software metrics. They have subsequently become standard terms.
Module 1 Module 1I
Module 1II
In technical term modules should display high cohesion and low coupling
COHESION
FUNCTIONAL 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
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
Communicational Cohesion: Two elements operate on the same input data or contribute towards the same
output data. Example- update record in the database and send it to the printer.
PROCEDURAL COHESION
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,
print cumulative GPA.
TEMPORAL COHESION
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 unit time.
LOGICAL COHESION
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
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- print next line and reverse
the characters of a string in a single component.
COUPLING
DATA 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 of
each other and communicate through data. Module communications don’t contain tramp data. Example-customer
billing system.
STAMP COUPLING
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 was made by the
insightful designer, not a lazy programmer.
CONTROL COUPLING
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
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
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
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.
DIFFERENCE BETWEEN COHESION AND COUPLING
SUMMARY
The Software Design Process is the most important phase in developing efficient software since it is the first and
most important step.
It's a user-centered procedure.
It prioritizes the needs, requirements, and constraints of the user.
It is crucial for drawing people to the product and retaining their loyalty.
One can create better, highly efficient, and user-friendly software designs by using numerous tools and rigorously
following the software design process's several phases.
Thank You
Back
CRC CARDS
CRC (Class Responsibility Collaborator) cards are a simple way to break down the functionality of an
application to reason about what the basic entities are (class), what they do (responsibility), and which other
entities they need to communicate with (collaborator).