Software Engineering Unit 3 Easy Notes (Edushine Classes)
Software Engineering Unit 3 Easy Notes (Edushine Classes)
Edushine Classes
Follow Us
Download Notes : https://rzp.io/rzp/RmKDvKl
https://telegram.me/rrsimtclasses/
Software Engineering (BCS601)
viii. Maintainability
• The software should be easy to update and fix bugs.
• Example: Writing clean and well-documented code.
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Phases of Software Design (IMP)
Software design is divided into three main phases: Architectural Design, Interface
Design, and Detailed Design. Each phase helps in structuring the software properly
before development starts.
1. Architectural Design (High-Level Design)
• Defines the overall structure of the software.
• Decides how different parts (modules) of the system will interact.
• Helps in choosing the best design pattern for development.
✅ Example:
Think of it like building a house—deciding how many rooms, floors, and the connections
between them.
✅ Key Elements:
• Components and their relationships (e.g., database, user interface, backend).
• Architecture styles (e.g., client-server, layered architecture).
•Follow
Technology
U -s selection
R Download
(e.g.,
R S I M TNotes
which programming
CLASSES
languages and frameworks to use).
WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
2. Interface Design
• Focuses on how users and other software components interact with the system.
• Defines the look and feel of the application (UI) and communication rules
between system modules (APIs).
✅ Example:
• Designing buttons, menus, forms for a website.
• Creating APIs that allow different software parts to communicate (e.g., login
system talks to the database).
✅ Key Elements:
• User Interface (UI) – Ensures ease of use and good experience.
• Application Programming Interfaces (APIs) – Ensures smooth interaction
between software modules.
• Error Handling – Ensures user-friendly messages instead of confusing errors.
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
📌 Example:
Let’s say you're building an E-commerce website.
Your architectural design may have these parts:
• User Interface Layer (For customers to see and interact)
• Business Logic Layer (To process orders, payments)
• Database Layer (To store products, orders, users)
• Admin Panel (To manage products, view reports)
These parts (modules) talk to each other using functions or APIs — that’s architectural
design.
i. Types of Architectural Styles (Just Names)
ii. Layered Architecture
iii. Client-Server Architecture
iv. MVC (Model-View-Controller)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
What is Modularity?
• Modularity means dividing the software into small, independent parts called modules.
• Each module does one specific task.
It helps in managing, testing, and updating the software easily.
Why Modularity is Important?
Imagine writing a program with 1000 lines of code in a single file.
It is Very hard to manage, right? 😓
But if we break it into small parts (modules), it becomes:
i. Easy to understand 👀
ii. Easy to test ✅
iii. Easy to update 🔧
iv. Easy to reuse ♻️
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
💡 Example of Modularity:
• For an online shopping site:
• One module handles login
• One for product search
• One for adding to cart
• One for payment
All these modules work together but are developed separately.
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Properties of Modularity :
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Example:
Let’s say we are designing software for an Online Exam System.
Structure Chart:
Online Exam System
Login()
Startexam() ViewResult()
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
What is Pseudocode?
Pseudocode is a way of writing the logic of a program in simple, human-readable
language — without using any specific programming language like Java, C, or Python.
It’s like writing your plan or steps to solve a problem in plain English — just like telling
someone how to cook a recipe step-by-step.
💡 Why Use Pseudocode?
• Easy to understand the logic of the program.
• Helps in planning before coding.
• Can be understood by anyone, even non-programmers.
• Reduces syntax errors before writing real code.
• Great for algorithms, flowcharts, and interviews.
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
Follow U -s
R Download
R S I M TNotes
CLASSES WHATSAPP - 9795358008
: https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
💡 What is a Flowchart?
A flowchart is a diagram that shows the step-by-step flow of a process or a
program using symbols and arrows.
It’s like drawing a map of your logic — how your code or work flows from start
to end.
💡 What is Coupling?
Coupling means how much one module (part) of a program is dependent on another
module.
If two parts of your program are tightly connected, they are tightly coupled. If they can
work independently, they are loosely coupled — which is better.
✅ Example in Real Life:
Imagine your TV remote and TV:
If the remote only works with one specific TV, they are tightly coupled.
But if the remote can work with any brand of TV, they are loosely coupled.
In programming, we prefer loosely coupled modules, because:
• They are easier to change
• Reusable in other programs
• Easy to test and fix bugs
Download Notes : https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
3. Control Coupling
One module controls the behavior of another by passing control flags or instructions.
Example:
Module A sends a value to Module B to tell it which task to perform.
4. Stamp Coupling (or Data-Structure Coupling)
Modules share only necessary parts of data structures like objects or records.
Example:
Module A sends a complete student object, but Module B only needs the student’s
name.
5. Data Coupling ✅ (Best)
Modules share only required data through parameters.
Most independent and clean.
Example:
Module A sends just student’s name to Module B which needs only that.
👉 Cohesion means how tightly related the functions or tasks within a single module
are.
💡 2. Logical Cohesion
Tasks are logically related, and one is selected using if-else or switch-case.
Example:
A module that handles user requests:
• If choice = 1 → Save file
• If choice = 2 → Print file
• If choice = 3 → Send file
These are logically related (file operations), but still not very cohesive.
3. Temporal Cohesion
Tasks are related by time, meaning they happen together at the same time, like during
start-up or shutdown.
Example:
A module that:
• Opens DB connection
• Loads configuration
• Initializes screen
All tasks happen at program start, but they are not functionally the same.
4. Procedural Cohesion
Tasks are performed in a sequence, step-by-step, but they may not use the same data.
Example:
A module that:
• Checks login credentials
• Loads dashboard
• Sends welcome message
5. Communicational Cohesion
Tasks operate on the same data or data structure.
Example:
A module that:
• Reads student details
• Calculates total marks
• Displays result
All actions are done on the same student data, so they are related through
shared data.
6. Sequential Cohesion
The output of one task becomes the input for the next.
Example:
A module that:
• Takes student marks
• Calculates percentage
• Decides pass/fail
Each task depends on the result of the previous one.
7. Functional Cohesion (Best Type)
All tasks in the module work together to do one specific job.
Example:
A module that:
• Takes numbers
• Calculates their average
That’s it. All tasks support one function = calculate average. It’s clear, focused.
Each of these functions performs one specific task, and they work together to make
the entire system functional.
3. Top-Down Design
Top-Down Design means starting from the big picture (main problem) and breaking it
down into smaller and smaller parts until each part is easy to solve.
You first design the overall system, then break it into subsystems, then further into
modules or functions.
🔹 Easy Example:
Let’s say we want to design a website for online shopping.
Top-Down approach:
Main Goal: Design an online shopping website
Sub-goals:
• User Login/Signup
• Product Search and View
• Add to Cart
4. Bottom-Up Design
Bottom-Up Design means starting from the small parts first, then combining them to
build the whole system.
You first design the basic components (functions, classes, modules), then combine them
into subsystems, and finally into the main system.
🔹 Easy Example:
Let’s take the same example: Online shopping website
Bottom-Up approach:
1.Create small building blocks first:
• Module to handle user input
• Module to connect to database
• Module to show product list
• Module to process payment
Download Notes : https://rzp.io/rzp/RmKDvKl
Software Engineering (BCS601)
🔹 Advantages of Bottom-Up
Design:
• You can reuse existing modules.
• Useful when basic components
are already available.
• Encourages writing and testing
small working units first.
🧠 Real-Life Analogy:
Think of building a house:
• Measurement = You measure the bricks (size, weight, count).
• Metric = You use those measurements to decide how strong the wall is or how many
bricks are needed for a floor.
🔹 3. Project Metrics
These metrics focus on the overall project management—time, cost, resources, and
people.
✨ Example:
• Total Cost of the project
• Total time taken to complete
• Team productivity (how much work each member is doing)
• Work hours spent on each task
In Simple Words:
It’s like managing a school project—how much time, energy, and resources are being
used.
5. Effort (E)
📌 Formula:
E=D×V
📌 Meaning:
How much mental effort is needed to write or understand the code.
6. Programming Time (T)
📌 Formula:
T = E / 18
📌 Meaning:
Estimated time (in seconds) to write the program.
(18 is a constant that represents how fast a human works.)
✨ OR A Simpler Trick:
Count the number of decision points like:
• if
• else if
• while
• for
• case in switch
Example :
void example() { Decision points:
if (a > 0) { • 1 if
printf("Positive"); • 1 for loop
} else { ✅ Cyclomatic Complexity = 2 + 1 = 3
printf("Non-positive");
}
🎯 Purpose of CFG:
• To understand the logic of the program
• To find bugs or unreachable code
• To calculate Cyclomatic Complexity
• To help in white-box testing
Thank You…