0% found this document useful (0 votes)
9 views14 pages

Module 4 Notes

The document outlines the principles of software design, including the definition, process, and characteristics of good design, emphasizing the importance of modularity, cohesion, and coupling. It details the steps involved in software design, such as interface, architectural, and component design, along with their advantages. Additionally, it discusses design strategies, UI design processes, and the significance of maintaining high cohesion and low coupling for improved software quality.

Uploaded by

kg1301911
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views14 pages

Module 4 Notes

The document outlines the principles of software design, including the definition, process, and characteristics of good design, emphasizing the importance of modularity, cohesion, and coupling. It details the steps involved in software design, such as interface, architectural, and component design, along with their advantages. Additionally, it discusses design strategies, UI design processes, and the significance of maintaining high cohesion and low coupling for improved software quality.

Uploaded by

kg1301911
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Software Engineering- Module 4

Project Scheduling and Tracking

Notes

By – Charushila Jadhav

 Software Design:

Q.1 Define software design.


Q.2 Explain the software design process with suitable example.
Q.3 Explain characteristics for good design.

Definition: Software design is the process of transforming requirements specified in the


Software Requirement Specification (SRS) into a structured solution.
It acts as a blueprint for developing the system by defining architecture, components,
and their interactions.
There are three different steps/process for software design as follow:
Steps:
1. Interface Design
2. Architectural Design
3. Component Design

Example: Online Shopping System


 Interface Design:
Design login page, product page, cart, and payment interface.
 Architectural Design:
Divide system into modules like User Module, Product Module, Payment
Module, and Database.
 Component Design:
Define how payment is processed, how products are searched, and how orders
are stored
 Diagram:
1. Architectural Design
 It defines the overall structure of
the system.
 It Identifies major
modules/components
 It Defines relationships and
communication between them
 Defines overall system structure
 Identifies major modules and their
relationships
 Example: Dividing system into
modules like login, database,
payment

2. Interface Design
 It defines how users and system
components interact.
o It Includes user interface
(screens, forms, buttons)
o It Includes system interfaces
(APIs, data exchange)
 Defines interaction between user
and system
 Includes UI (screens, forms) and
system interfaces (APIs)
 Ensures usability and
communication between
components

3. Component Design (Detailed Design)


 Focuses on internal working of each module
 Defines algorithms, data structures, and logic
 It focuses on internal details of each module.
o Algorithms
o Data structures
o Logic implementation
Advantages:
 It reduces the complexity
 Software designing improves maintainability
 It ensures better quality software
 It helps in error detection early

 Key Elements of Software Design


These are the fundamental components that define a software system:
1. Architecture
 It shows overall structure of the system
 Architecture defines components and their relationships
 It ensures system is scalable and maintainable
2. Modules
 Independent units performing specific tasks
 Help divide complex systems into smaller parts
 Improve readability and testing
3. Components
 Functional units that provide specific services
 Can be reused across systems
 Help in building modular systems
4. Interfaces
 Define communication between modules/components
 Includes user interface and system interfaces (APIs)
 Ensures smooth interaction
5. Data
 Defines how data is stored, accessed, and managed
 Includes data structures and data flow
 Important for system efficiency and accuracy

 Characteristics of Good Software Design


These ensure the quality and effectiveness of the system:
1. High Cohesion
 Each module performs a single task
 Improves clarity and maintainability
2. Low Coupling
 Minimal dependency between modules
 Makes system flexible and easy to modify
3. Simplicity
 Design should be easy to understand
 Avoid unnecessary complexity
4. Modularity
 System divided into smaller modules
 Helps in development, testing, and maintenance
5. Reusability
 Components can be reused in other systems
 Saves time and effort
6. Maintainability
 Easy to fix bugs and update system
 Reduces long-term cost
7. Scalability
 System can handle increased workload
 Easy to expand in future
8. Efficiency
 Optimal use of resources (time, memory)
 Fast performance
9. Reliability
 System performs correctly under all conditions
 Less prone to failure
10. Flexibility
 Easy to adapt to changes
 Supports future enhancements
 Modular Design:

Q.1 What is modularity?


Q.2 Describe modular design and its benefits in real-world applications.

Definition:
Modularity is the process of dividing a software system into smaller, independent
modules.
Each module performs a specific function, making the system easier to develop, test,
maintain, and reuse.

Explanation
In modular design, the system is broken into parts such as modules or components.
These modules interact with each other through well-defined interfaces. It promotes
functional independence, meaning each module focuses on a single task with
minimal dependency on others.

Benefits of Modular Design


1. Easy Development
 Different modules can be developed simultaneously by different teams
 Speeds up the development process

2. Easy Maintenance
 Errors can be fixed in one module without affecting others
 Simplifies debugging

3. Reusability
 Modules can be reused in other projects
 Saves time and effort

4. Improved Testing
 Each module can be tested independently
 Ensures better quality
5. Flexibility
 Changes in one module do not affect the entire system
 Easy to upgrade or modify

6. Reduced Complexity
 Breaking system into smaller parts makes it easier to understand

Real-World Example: Online Shopping System


 User Module: Handles login and registration
 Product Module: Displays products
 Cart Module: Manages selected items
 Payment Module: Processes payments

 Coupling & Cohesion:


Q.3 Define cohesion.
Q.4 What is coupling?
Q.6 Apply the concept of cohesion to improve a module design.
Q.7 Analyze the difference between coupling and cohesion with examples.
Q.8 Explain types of coupling and analyze their impact on system design.
Q.9 Compare top-down and bottom-up design approaches.
Q.10 Evaluate the importance of coupling and cohesion in software quality.

Definition:

Cohesion: It refers to the degree to which elements within a module are related to
each other. High cohesion means all elements work together to perform a single
task, which improves clarity and maintainability.
Goal: High cohesion (best design)

Types of Cohesion (Worst → Best)


1. Coincidental Cohesion
o Unrelated tasks grouped together
o Worst type
2. Logical Cohesion
o Similar types of tasks grouped (e.g., all input functions)
3. Temporal Cohesion
o Tasks executed at the same time (e.g., initialization)
4. Procedural Cohesion
o Tasks follow a sequence of steps
5. Communicational Cohesion
o Tasks operate on the same data
6. Sequential Cohesion
o Output of one function is input to another
7. Functional Cohesion
o Module performs a single task
o Best type

Advantages of High Cohesion


 Easy to understand
 Easy maintenance
 Better reusability

Coupling: is the degree of interdependence between different modules in a system.


Low coupling is preferred because it reduces dependency, making the system easier
to modify and maintain.
Goal: Low coupling (best design)

Types of Coupling (Worst → Best)


1. Content Coupling
o One module directly modifies another
o Worst type
2. Common Coupling
o Modules share global data
3. Control Coupling
o One module controls another using flags
4. Stamp Coupling
o Whole data structure passed but partially used
5. Data Coupling
o Modules share only required data
o Best type
6. External Coupling
o Dependency on external systems or formats

Advantages of Low Coupling


 Easy to modify
 Reduces error propagation
 Improves flexibility

Relationship Between Cohesion and Coupling


 High cohesion → better module design
 Low coupling → better system design
 Both together improve software quality
Good Design = High Cohesion + Low Coupling

Importance of Cohesion in Software Quality


1. Improves Understandability
 High cohesion ensures a module performs a single task
 Makes code easier to read and understand
2. Enhances Maintainability
 Changes are localized within a module
 Easier to debug and update
3. Promotes Reusability
 Highly cohesive modules can be reused in other systems
4. Increases Reliability
 Focused functionality reduces chances of errors

Importance of Coupling in Software Quality


1. Reduces Dependency
 Low coupling minimizes interconnections between modules
 Changes in one module do not affect others
2. Improves Flexibility
 Modules can be modified or replaced independently
3. Easier Testing
 Independent modules can be tested separately
4. Prevents Error Propagation
 Errors remain confined within a module

Evaluation (Critical Analysis)


 High cohesion without low coupling is not effective, as modules may still depend
heavily on each other
 Low coupling without cohesion may lead to poorly structured modules
 The best design achieves a balance of both
Real-World Example
In an online shopping system:
 A Payment Module should only handle payment (high cohesion)
 It should not depend heavily on other modules like Product or User (low coupling)
Difference:

Cohesion Coupling

Degree to which elements within a module are Degree of interdependence between


related modules

Internal strength of a module Relationship between different modules

Achieve high cohesion Achieve low coupling

Intra-module (within module) Inter-module (between modules)

Improves clarity and maintainability Affects flexibility and independence

Functional cohesion (best type) Data coupling (best type)

Coincidental cohesion Content coupling

Reduces dependency and error


Makes modules focused and reusable
propagation

Changes stay within module Changes may affect multiple modules

 Module Design Strategies / Approaches

The strategy of modular design refers to the approaches used to divide a software
system into smaller modules for easier development, maintenance, and
understanding.
1. Top-Down Approach
 Design starts from the main system (top level)
 System is gradually broken down into smaller sub-modules
 It also called stepwise refinement
 Process: Main System → Subsystems → Modules → Components

Level 1

Level 2

Level 3
Advantages

 Clear overall system structure


 Easy to manage large systems
 Better control and planning
 Disadvantages
 Low-level details may be ignored initially

2. Bottom-Up Approach
 Design starts from small, basic modules
 These modules are combined to form larger systems
 Process: Small Modules → Subsystems → Complete System

 Advantages
 Easy to test small modules early
 Encourages reusability
 More flexible
 Disadvantages
 Overall system structure may not be clear initially
 Integration may be complex

 Architecture Style:

Refer PPT
 UI Design:

Refer PPT
Definition
User Interface (UI) Design Process is the systematic approach of designing how users interact
with a software system. It focuses on creating interfaces that are user-friendly, efficient, and
visually appealing.

Steps in UI Design Process


1. User Analysis
 Identify target users and their needs
 Understand user skills, preferences, and expectations

2. Task Analysis
 Identify tasks users want to perform
 Define user goals and workflows

3. Interface Design (Wireframing & Prototyping)


 Create basic layouts (wireframes)
 Develop prototypes to visualize screens and navigation

4. Design Implementation
 Convert designs into actual UI using tools or code
 Apply colors, typography, and layout principles

5. Evaluation and Testing


 Test interface with real users
 Identify usability issues and improve design

UI Design Principles (Brief)


 Consistency
 Simplicity
 User control
 Feedback
 Error prevention

Example
In an online shopping app:
 User analysis → Understand shoppers
 Task analysis → Search, add to cart, checkout
 Design → Create product page and cart UI
 Testing → Improve navigation and usability
Edit

You might also like