Software engineering
1. What is software engineering?
It is the process of designing, developing, testing, and
maintaining software using engineering principles.
Aim:
Build correct and reliable software.
Software should be maintainable, scalable, and
efficient.
Reduce the cost and time of development.
User friendly
SDLC is a structured framework that defines
the phases involved in developing
information systems, from initial feasibility
study through maintenance of the completed
system.
Project Planning: Defining project scope,
objectives, timeline and resource
requirements.
Software engineering 1
Requirements Analysis: Gathering and
documenting detailed system requirements
from stakeholders.
System Design: Creating technical
specifications, system architecture, and
interface designs.
Development: Actual coding and building of
the system based on design specifications.
Testing: Systematic testing to ensure system
quality and requirement fulfillment.
Implementation: System deployment, data
migration, and user training.
Maintenance and Support: Ongoing system
updates, bug fixes, and technical support.
Process Iteration
Repeating steps in the software development cycle to
improve the software.
Common in Agile and iterative models.
Common Types of Software Process Models:
1. Waterfall Model
Software engineering 2
Like a linear staircase – one step at a time.
Steps: Project planning → Requirements analysis →
System design → Development → Testing →
Implementation → Maintenance
No going back to previous steps.
Good for: Simple, well-understood projects
Not good for: Projects where requirements may change
3. Agile Model
1. Work is done in small parts (sprints) — each sprint lasts
1–4 weeks and delivers a working part of the software.
2. The client gives feedback after every sprint so changes
and improvements can be made quickly.
3. Very flexible and adaptive — Changes in requirements
are easily handled during the project.
4. The team communicates daily — with short meetings
(scrums) to stay updated and solve problems fast.
4. V-Model (Validation and Verification Model)
An extended version of Waterfall, where each
development stage has a matching testing phase.
V shape: Left side = development, right side = testing
Software engineering 3
Good for: High-quality, reliable software like in healthcare
or aviation
5. Spiral Model
Combines features of Waterfall and Prototyping.
Software is developed in loops (spirals) with added
features in each loop.
Focuses on risk analysis in each loop.
Best for: Large, complex, high-risk projects
6. Incremental and Iterative model
Iterative model: focuses on improving the same system
repeatedly until it's refined.
builds the complete system step by step by
Incremental model:
adding one part at a time.
7. Prototyping Model
Build a quick sample (prototype) → show it to users →
improve based on feedback
The final system is built after the prototype is approved.
Useful when requirements are not clear at the start
Verification and validation
Software engineering 4
: checks if the software meets the design
Verification
specifications and is done during development phases.
Validation : checks if the software meets user needs and is
done during testing and after development.
Software Testing Models
Black-box testing : Tests the software based on inputs and expected outputs,
without knowing internal code. It focuses on what the software should do.
: Tests internal logic and code paths; testers know the
White-box testing
program structure. It focuses on how the software works inside.
Basis path testing : A white-box method that tests all possible paths through the
program at least once.
Control structure testing : Checks loops, branches, and conditions in code.
Object-oriented testing : Focuses on testing classes, methods, and object
interactions.
Software Testing Strategies
Strategic approach: Organizes testing efforts in phases aligned with
development.
Unit testing: Tests individual components or functions for correctness.
Integration testing: Tests combined parts to check they work together properly.
Validation testing: Ensures the software meets requirements and user
expectations.
System testing: Tests the whole system as a complete product.
Uses tools to run tests automatically, saving time and
Test automation:
improving accuracy.
SRS – Software Requirements Specification
Software engineering 5
SRS (Software Requirements Specification) is a written
agreement between the client and developers about what
the software should do.
It includes both functional and non-functional
requirements.
It acts as a blueprint for development and helps avoid
misunderstandings.
It also forms the basis for testing and validation of the
final product.
SRC (Software Requirement Collection)
It is the process of gathering all the needs and expectations
from users and stakeholders before starting software
development.
Software design
Software design is the step after requirement collection
(SRC) where the process of planning how a software system
will work is done before actually building it.
1. Architectural Design – This focuses on the overall structure
of the software system and how different parts or modules
of the software will connect and work together.
2. Detailed Design – This focuses on the internal details of
each module, like data structures and algorithms.
Coupling and Cohesion
Software engineering 6
Cohesion means how closely related and focused the
functions within a single module are.
→ High cohesion = a module does one job well.
Coupling means how dependent one module is on another.
→ Low coupling = modules work independently.
Goal in software design:
→ Aim for high cohesion and low coupling for better
maintainability and flexibility.
What is DFD?
DFD stands for Data Flow Diagram.
It is a graphical representation that shows how data moves through a
system.
It helps visualize the flow of information and processes in the system
clearly.
Key Components of DFD:
1. Processes: Activities or functions where data is processed or transformed.
2. Data Flows: Arrows showing the direction of data movement between
processes, data stores, and external entities.
3. Data Stores: Places where data is stored within the system (like databases
or files).
4. External Entities: Sources or destinations of data outside the system (like
users or other systems).
Purpose of DFD:
To understand how data enters, moves through, and leaves the system.
To help identify what processes exist and how they interact with data.
Software engineering 7
To simplify complex systems by breaking them down visually.
Used mainly during the analysis phase of software development.
Levels of DFD:
Level 0 (Context Diagram): Shows the entire system as one process with
external entities.
Level 1: Breaks down the main process into sub-processes.
Level 2 and beyond: Further detail sub-processes for deeper
understanding.
Software engineering 8