Software Design Part Eng 67
Software Design Part Eng 67
co
1 | Page
www.gradeup.co
Software Design:
Content:
1. Abstraction
2. Architecture
3. Goals of Abstraction
4. Limitation of Abstraction
5. Patterns
6. Modulation
7. Advantages of Modulation
8. Functional Dependency
10. Cohesion
12. Coupling
15. OOD
An Example of Abstraction:
Consider a real-world analogy. User want to ride a motor bike. All user need to start the motor
bike is to put the key on, push the start button, and use the accelerator. While riding, user may
need to use the brake as well.
2 | Page
www.gradeup.co
You are not really concerned about how the engine, accelerator and brake are working during
the ride. All that is abstract to user and you are not concerned with it (unless you are
mechanic).
Whenever we build projects, wedo in layers. Here is the layered architecture of a simple web
application:
3 | Page
www.gradeup.co
It serves as a blueprint for a system. It provides an abstraction to control
the system complexity and develop a communication and coordination mechanism
among components.
4 | Page
www.gradeup.co
• Less understanding the role of software architect and bad communication among
stakeholders.
Modularization:
It is a technique to divide a software into couple of discrete and
individual modules, which are expected to be capable of carrying out task
independently. These modules work as basic builds for the entire
software. Users tend to design modules such that they can be executed
or compiled separately and independently.
It follows the rules of ‘divide and conquer’ problem-solving method this is
because there are many other advantages attached with the modular
design of a software.
5 | Page
www.gradeup.co
For example, the Linux kernel is modular. Various computer program
languages refer to their libraries as "modules." Including a module in your
program adds new capabilities by granting access to pre-written code
objects.
• Module reusability:
It performs well defined and specific task. So it becomes easy to reuse such modules
different program require same functionality.
• Understandability:
It is less complex so easy to understand. Such modules are less interacted with other modules
so can be understand in isolation.
Cohesion: It is a measure of degree to which the elements of the module are functionally
similar. A degree to which all elements directed towards performing a single task are stored in
the component. It is the internal glue that keeps the module together. A software design will
have high of cohesion.
Types of Cohesion:
6 | Page
www.gradeup.co
• Sequential Cohesion: An element results some data that becomes the
input for other element, i.e., data flow between the parts. It occurs
naturally in programming languages. Example: cross validate record and
formatting of module, raw records usage, formatting of raw records, cross
validation of fields in raw records.
• Logical Cohesion: All elements are logically similar and not functionally.
Ex- It reads inputs from tape, disk, and network. The code for these
functions is in the same component. They are similar, but the functions
are different. Example: a group of print functions generating different
output reports are arranged into a single module.
• Coincidental Cohesion: The elements are not related. The elements have
no abstract relationship other than location in source code. It is the
7 | Page
www.gradeup.co
worst form of cohesion. Ex- print next line and reverse the characters of
a string in a single component, a “Utilities” class.
•
Types of Coupling:
• Stamp Coupling: In this, the complete data structure is passed from one
module to another module. It involves tramp data. It may be mandatory
due to efficiency factors- this choice made by the insightful designer, not
a lazy programmer.
8 | Page
www.gradeup.co
• Common Coupling: The modules have shared data such as global data
structures.The changes in data mean tracing back to all modules which
access that data to evaluate the effect of the change. Disadvantages are
likely to difficult in reusing modules, reduced ability to control data
accesses. Example : global information status regarding an operation,
with the multiple modules reading and writing to that location.
• Content Coupling: In this ,module can modify the data of another module
or control flow is passed from one module to the other module. This is
the bad form of coupling and should avoided.
Cohesion Coupling
Object-Oriented Design:
9 | Page
www.gradeup.co
Data Design:It is the first design activity, which results in less complex, and
efficient program structure. The data objects, attributes, and relationships picture
in entity relationship diagrams and the application stored in data list provide a
base for data design activity. During the process, data types are specified
along with the integrity rules required for the data.
Architectural Design: It is a process for knowing the sub-systems making up a system and the
framework for sub-system control and communication. The output of this design process is
detailed of the software architecture. It is a stage of system design process.
User Interface Design: It is the front-end application view to which user interacts to use the
software. User can control the software as well as hardware user interface. It is found at each
place where digital technology exists, mobile phones etc.
It is a part of software and is designed in such a way that it is expected to provide the user insight
of the software. It provides fundamental platform for human-computer interaction.
It may be graphical, text-based, audio-video based, depending upon the hardware and software
combination. It can be combination of both.
• Attractive
• Simple to use
• Clear to understand
10 | P a g e
www.gradeup.co
11 | P a g e