Software Engineering
Software Engineering
System Analysis and Design (SAD) is a structured approach used for developing information
systems and software applications. It involves analyzing the current system, identifying
requirements, and designing solutions that fulfill organizational objectives.
System
Examples
• Banking system
• Railway reservation system
• Hospital management system
Characteristics of a System
System Analysis
Definition
System analysis is the process of studying an existing system to identify its problems and
requirements for improvement.
1. Requirement Gathering
Methods include:
• Interviews
• Observation
• Questionnaires
• Document analysis
2. Feasibility Study
3. Requirement Analysis
4. Documentation
System Design
Definition
Logical Design
Describes:
• Data flow
• Inputs and outputs
• Functional requirements
Physical Design
Describes:
• Hardware requirements
• Database implementation
• Network configuration
1. Input
• Data
• Materials
• Human resources
2. Process
3. Output
4. Feedback
• Goal-oriented
• Dynamic
• Integrated
• Adaptive
• Information-driven
Example:
• ATM system
• Billing system
• Improves productivity
• Better decision making
• Reduces operational cost
• Enhances customer service
• Improves communication
3. System Development Life Cycle (SDLC)
Definition
SDLC is a systematic process used for developing software systems step by step.
Phases of SDLC
1. Planning
2. Feasibility Study
Types:
• Technical feasibility
• Economic feasibility
• Operational feasibility
3. Requirement Analysis
Output:
4. System Design
Creating:
• Architecture
• Database design
• User interfaces
5. Coding (Implementation)
Languages:
• Java
• Python
• C++
6. Testing
Types:
• Unit testing
• Integration testing
• System testing
7. Deployment
8. Maintenance
Types:
• Corrective
• Adaptive
• Perfective
• Preventive
Advantages of SDLC
Disadvantages
• Time-consuming
• Expensive for small projects
• Difficult if requirements change frequently
4. Waterfall Model
Definition
The Waterfall Model is a linear and sequential software development model where each phase
must be completed before the next begins.
1. Requirement Analysis
2. System Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance
Diagram Representation
Requirements
↓
Design
↓
Coding
↓
Testing
↓
Deployment
↓
Maintenance
Advantages
Disadvantages
Applications
• Banking software
• Government systems
• Embedded systems
5. Spiral Model
Definition
Developed by:
Barry Boehm
1. Planning
2. Risk Analysis
3. Engineering
4. Evaluation
Advantages
Disadvantages
• Expensive
• Complex management
• Requires risk analysis expertise
Applications
• Military software
• Large enterprise systems
• Space and aviation projects
6. Feasibility Analysis
Definition
Objectives
Types of Feasibility
1. Technical Feasibility
Questions Asked
Example
• Need AI framework
• Cloud server
• Skilled AI engineers
2. Economic Feasibility (Cost-Benefit Analysis)
Costs
• Hardware cost
• Software cost
• Employee salary
• Maintenance cost
Benefits
• Increased productivity
• Reduced manpower
• Faster services
3. Operational Feasibility
4. Legal Feasibility
5. Schedule Feasibility
7. Technical Feasibility
Definition
Technical feasibility checks whether the organization has technical capability to develop and
maintain the system.
Factors Considered
• Hardware availability
• Software availability
• Technical expertise
• Security requirements
• Infrastructure support
Advantages
Types of Costs
Direct Cost
• Hardware purchase
• Software licenses
Indirect Cost
• Training
• Electricity
• Maintenance
Types of Benefits
Tangible Benefits
• Increased profit
• Reduced labor cost
Intangible Benefits
• Customer satisfaction
• Better reputation
Importance
9. COCOMO Model
Definition
COCOMO (Constructive Cost Model) is a software cost estimation model developed by Barry
Boehm.
It estimates:
• Development effort
• Cost
• Time required
Based on:
1. Basic COCOMO
2. Intermediate COCOMO
3. Detailed COCOMO
Modes of COCOMO
Mode Description
Organic Small simple projects
Semi-Detached Medium complexity
Embedded Complex projects
Effort Estimation:
E = a(KLOC)^b
Where:
• E = Effort in person-months
• KLOC = Thousand Lines of Code
• a and b are constants
Advantages
Conclusion
Unit 1 provides the foundation of Software Engineering. It explains how software projects are
analyzed, designed, planned, and estimated before development begins. Topics like SDLC,
Waterfall Model, Spiral Model, Feasibility Analysis, and COCOMO are extremely important
for both university exams and real-world software development.
Unit 2
1. System Design
Definition
System design is the process of converting user requirements into a detailed blueprint for
software development.
It specifies:
• System architecture
• Data structure
• Modules
• Interfaces
• Database design
• Input and output design
1. Logical Design
Focuses on:
• Data flow
• Business processes
• Functional requirements
2. Physical Design
Focuses on:
• Hardware
• Software
• Database implementation
• Network infrastructure
2. Context Diagram
Definition
A Context Diagram is the highest-level Data Flow Diagram (DFD). It shows the entire system
as a single process and its interaction with external entities.
Characteristics
Symbols Used
Symbol Meaning
Circle Process
Rectangle External Entity
Arrow Data Flow
Advantages
• Easy to understand
• Provides system overview
• Helps communication with users
Disadvantages
It shows:
• Input data
• Processing
• Data storage
• Output data
Components of DFD
Levels of DFD
1. Level 0 DFD
2. Level 1 DFD
3. Level 2 DFD
Example of DFD
ATM System
• Easy visualization
• Better understanding of data movement
• Helps in system analysis
Disadvantages
4. Problem Partitioning
Definition
Problem partitioning means dividing a large problem into smaller manageable sub-problems.
It is also called:
• Modularization
• Decomposition
Objectives
• Reduce complexity
• Improve maintainability
• Simplify development
• Enable parallel development
Types of Partitioning
1. Horizontal Partitioning
2. Vertical Partitioning
• Easier debugging
• Better code reuse
• Simplifies testing
Example
• Account management
• Loan processing
• ATM operations
• Transaction handling
5. Top-Down Design
Definition
Top-down design starts from the main system and gradually breaks it into smaller sub-modules.
Process
Example
Advantages
Disadvantages
Bottom-up design starts with small modules and combines them to form the complete system.
Process
Example
Advantages
• Reusable modules
• Easier testing
• Early implementation of low-level utilities
Disadvantages
7. Decision Tree
Definition
It helps in:
• Decision-making
• Logic representation
• System analysis
Components
1. Decision nodes
2. Branches
3. Outcomes
Advantages
• Easy visualization
• Simple decision analysis
• Useful for complex logic
Disadvantages
8. Decision Table
Definition
It contains:
• Conditions
• Actions
• Rules
Disadvantages
9. Structured English
Definition
Structured English is a method of writing process logic using simple English statements with
programming-style structure.
It combines:
• English language
• Programming constructs
Features
Example
IF marks >= 40
PRINT "Pass"
ELSE
PRINT "Fail"
ENDIF
Advantages
• Easy to understand
• Improves communication
• Useful for documentation
Disadvantages
• Functions
• Procedures
• Modules
Characteristics
• Process-oriented
• Uses DFDs
• Data and functions are separate
Advantages
• Simple
• Easy for procedural programming
Disadvantages
• Difficult maintenance
• Poor data security
• Less reusable
Example Languages
• C
• Pascal
11. Object-Oriented Approach
Definition
An object contains:
• Data
• Methods
Basic Concepts
Class
Object
Instance of a class.
Encapsulation
Inheritance
Polymorphism
Advantages
• Reusability
• Better security
• Easy maintenance
• Modular design
Disadvantages
Example Languages
• Java
• C++
• Python
Conclusion
Unit 2 focuses on system design techniques and methodologies used in software engineering.
Topics like DFD, Context Diagram, Decision Tree, and Object-Oriented Approach are very
important for system modeling and problem-solving. These concepts help developers design
efficient, modular, and maintainable software systems.
Unit 3
1. Coding
Definition
Coding is the process of converting system design into executable computer programs using
programming languages.
Objectives of Coding
• Simplicity
• Readability
• Modularity
• Efficiency
• Maintainability
• Proper documentation
2. Structured Programming
Definition
Structured Programming is a programming approach in which programs are divided into small
modules or functions using control structures.
It avoids:
• Uncontrolled jumps
• Excessive use of GOTO statements
Features
1. Sequential execution
2. Selection (IF-ELSE)
3. Iteration (LOOPS)
4. Modular programming
1. Sequence
Start
↓
Input
↓
Process
↓
Output
2. Selection
IF marks >= 40
PRINT "Pass"
ELSE
PRINT "Fail"
ENDIF
3. Iteration
FOR i = 1 TO 10
PRINT i
NEXT
Advantages
• Easy debugging
• Improved readability
• Better maintainability
• Reduced complexity
Disadvantages
• C
• Pascal
• FORTRAN
Objects contain:
• Data
• Functions (methods)
1. Class
Example:
• Car class
2. Object
An instance of a class.
Example:
4. Inheritance
5. Polymorphism
6. Abstraction
Advantages of OOP
• Reusability
• Security
• Easy maintenance
• Modular design
• Better scalability
Disadvantages
OOP Languages
• Java
• C++
• Python
• C#
Information hiding means restricting direct access to internal data and implementation details.
Objectives
• Improve security
• Reduce complexity
• Protect data
• Improve maintainability
Example
class BankAccount
{
private balance;
public deposit();
}
Here:
Advantages
• Better security
• Prevents accidental changes
• Easier maintenance
Disadvantages
Software reuse means using existing software components again in new systems.
Types of Reuse
1. Code Reuse
3. Design Reuse
Advantages
Disadvantages
• Compatibility issues
• Difficult integration sometimes
Example
Using:
6. System Documentation
Definition
System documentation contains all information related to software development and operation.
Types of Documentation
1. Technical Documentation
Includes:
• System architecture
• Source code
• Database structure
2. User Documentation
Includes:
• User manuals
• Installation guides
• Help instructions
Importance of Documentation
• Easy maintenance
• Better communication
• Training support
• Future upgrades
Advantages
• Simplifies maintenance
• Helps debugging
• Improves understanding
Disadvantages
• Time-consuming
• Requires regular updating
7. Software Testing
Definition
Software testing is the process of evaluating software to identify errors and verify that it meets
user requirements.
Objectives of Testing
• Detect errors
• Improve quality
• Verify functionality
• Ensure reliability
8. Levels of Testing
1. Unit Testing
Definition
Performed By
Developers
Example
2. Integration Testing
Definition
Example
• Payment module
• Order module
3. System Testing
Definition
Example
4. Acceptance Testing
Definition
Types
• Alpha testing
• Beta testing
Difference Between Testing Levels
Level Purpose
Unit Testing Test individual modules
Integration Testing Test module interaction
System Testing Test entire system
Acceptance Testing User validation
9. Integration Testing
Definition
1. Top-Down Integration
2. Bottom-Up Integration
Advantages
Disadvantages
• Complex debugging
• Time-consuming
A test case is a set of conditions and inputs used to verify software functionality.
Components of Test Case
Component Description
Test Case ID Unique identifier
Objective Purpose of test
Input Data Input values
Expected Result Desired output
Actual Result Obtained result
Status Pass/Fail
Example
Field Value
Test Case ID TC01
Input Correct password
Expected Output Login successful
Importance
Reliability assessment measures the probability that software will operate without failure for a
specified period.
• Number of defects
• Complexity
• Testing quality
• Operating environment
Reliability Metrics
Where:
Importance
Definition
Question Answered
Validation
Definition
Question Answered
Verification Validation
Process-oriented Product-oriented
Done during development Done after development
Checks correctness Checks usefulness
13. Software Metrics
Definition
Software metrics are quantitative measures used to evaluate software quality and development
process.
Types of Metrics
1. Product Metrics
Examples:
2. Process Metrics
3. Project Metrics
Examples:
• Cost
• Time
• Productivity
Advantages
Monitoring and control involve tracking software project progress and ensuring project goals
are achieved.
Objectives
• Track progress
• Detect problems
• Maintain quality
• Control cost and schedule
Activities
Monitoring
• Progress tracking
• Performance measurement
• Risk identification
Control
• Corrective actions
• Resource management
• Schedule adjustments
Tools Used
• Gantt charts
• Project reports
• Dashboard systems
Advantages
Conclusion
Unit 3 focuses on software development implementation and quality assurance. Topics such as
structured programming, OOP, testing, reliability, documentation, metrics, and monitoring are
essential for building efficient and reliable software systems. This unit is highly important for
both university examinations and practical software engineering projects.
Unit 4
1. Introduction to Software Project Management
Definition
Software Project Management (SPM) is the process of planning, organizing, directing, and
controlling software projects to achieve specific goals within:
• Time
• Budget
• Quality standards
• Project planning
• Resource allocation
• Team management
• Risk management
• Progress monitoring
• Quality control
• Communication with stakeholders
2. Project Scheduling
Definition
Project scheduling is the process of planning project activities and assigning time durations to
complete tasks in an organized manner.
It answers:
1. Identify Activities
Example:
• Requirement analysis
• Coding
• Testing
2. Determine Sequence
Example:
Design must be completed before coding.
3. Estimate Time
4. Assign Resources
5. Prepare Schedule
1. Gantt Chart
Definition
Features
Example
Advantages
• Easy visualization
• Simple project tracking
• Better management
Disadvantages
Definition
Where:
• O = Optimistic time
• M = Most likely time
• P = Pessimistic time
Advantages
• Handles uncertainty
• Better time estimation
Disadvantages
• Complex calculations
• Time-consuming
Definition
CPM identifies the longest path in a project network and determines minimum project
completion time.
Critical Path
Advantages
• Better scheduling
• Identifies critical activities
Disadvantages
3. Staffing
Definition
Staffing is the process of selecting, assigning, and managing personnel for software projects.
Objectives of Staffing
Staffing Activities
1. Recruitment
Hiring employees.
2. Training
3. Team Formation
4. Role Assignment
Assigning responsibilities.
Role Responsibility
Project Manager Project control
System Analyst Requirement analysis
Developer Coding
Tester Testing
Database Administrator Database management
• Project size
• Budget
• Required skills
• Project duration
• Increased productivity
• Better teamwork
• High-quality software
Problems in Staffing
• Skill shortage
• Communication gap
• Employee turnover
Objectives of SCM
• Requirements change
• Bugs are fixed
• Features are updated
Components of SCM
1. Configuration Identification
Examples:
• Source code
• Documents
• Databases
2. Version Control
Example:
• Git
• SVN
3. Change Control
4. Configuration Audit
SCM Tools
• Git
• GitHub
• GitLab
• SVN
• Bitbucket
Advantages of SCM
Disadvantages
• Requires training
• Additional management effort
Software Quality Assurance is a set of activities that ensures software quality throughout
development.
It focuses on:
• Process quality
• Product quality
Objectives of SQA
• Prevent defects
• Improve reliability
• Ensure standards compliance
• Increase customer satisfaction
Quality Factors
Factor Meaning
Reliability Failure-free operation
Efficiency Optimal resource usage
Maintainability Ease of modification
Security Protection against threats
Usability User-friendliness
SQA Activities
1. Quality Planning
3. Testing
Detecting defects.
4. Process Improvement
Types of Reviews
Technical Review
Walkthrough
Inspection
Advantages of SQA
• Reduces defects
• Improves reliability
• Better customer satisfaction
• Lower maintenance cost
Disadvantages
6. Project Monitoring
Definition
Objectives
1. Progress Tracking
2. Performance Measurement
3. Risk Monitoring
4. Cost Monitoring
5. Schedule Monitoring
Project Control
Definition
Monitoring Tools
1. Gantt Chart
2. Milestone Chart
3. Dashboard
4. Status Reports
Disadvantages
Monitoring Control
Observes project progress Takes corrective action
Detects problems Solves problems
Passive activity Active activity
Common Risks in Software Projects
1. Risk identification
2. Risk analysis
3. Risk planning
4. Risk monitoring
Conclusion
Software Project Management is essential for developing successful software systems. Topics
like scheduling, staffing, SCM, quality assurance, and project monitoring help organizations
manage software projects efficiently. Proper project management improves productivity,
quality, and customer satisfaction while reducing risks and development costs.
Unit 5
1. Introduction to Modeling
Definition
It helps developers understand, analyze, design, and communicate system structure and
behavior before actual implementation.
Objectives of Modeling
Types of Models
1. Static Model
Definition
It shows:
• Objects
• Classes
• Relationships
• Attributes
Characteristics
• Structure-oriented
• Describes system organization
• Represents permanent aspects
Examples
• Class Diagram
• Object Diagram
• Component Diagram
Advantages
2. Dynamic Model
Definition
A dynamic model describes the behavioral aspects of a system.
It shows:
• Interactions
• Activities
• State changes
• Message flow
Characteristics
• Behavior-oriented
• Represents system operation
• Shows time-dependent behavior
Examples
• Sequence Diagram
• State Chart Diagram
• Activity Diagram
UML is a standardized modeling language used to visualize, specify, design, and document
software systems.
Developed by:
• Grady Booch
• James Rumbaugh
• Ivar Jacobson
Objectives of UML
Category Diagrams
Structural Diagrams Class, Component
Behavioral Diagrams Sequence, Activity, State Chart
3. Class Diagram
Definition
A class diagram represents classes, objects, attributes, methods, and relationships in a system.
1. Class
2. Attributes
Properties of a class.
Example:
• name
• age
3. Methods
Example:
• login()
• calculate()
Structure of Class
-----------------
| Student |
-----------------
| rollNo |
| name |
-----------------
| display() |
-----------------
Relationships in Class Diagram
1. Association
2. Inheritance
3. Aggregation
4. Composition
Advantages
Disadvantages
4. Interaction Diagram
Definition
They describe:
• Message passing
• Object interaction
• System behavior
1. Sequence Diagram
2. Collaboration Diagram
Importance
It focuses on:
• Object organization
• Message exchange
Components
Component Purpose
Object Participating entity
Link Connection
Message Communication
Example
Advantages
Disadvantages
6. Sequence Diagram
Definition
It shows:
• Order of messages
• Object interactions over time
Components
1. Object
Participants in interaction.
2. Lifeline
3. Message
Example
Advantages
Disadvantages
A state chart diagram represents different states of an object and transitions between those
states.
Component Meaning
State Condition of object
Transition Change between states
Event Trigger for transition
Advantages
Disadvantages
Applications
• ATM systems
• Traffic control systems
• Embedded systems
8. Activity Diagram
Definition
It is similar to a flowchart.
Components
Component Purpose
Activity Task performed
Decision Branching condition
Start Node Beginning
End Node Completion
Example
Start
↓
Login
↓
Validate User
↓
Access Granted
↓
End
Advantages
Disadvantages
Applications
9. Implementation Diagram
Implementation diagrams show physical implementation of software components.
They include:
1. Component Diagram
2. Deployment Diagram
A. Component Diagram
Definition
Components
• Software modules
• Libraries
• Interfaces
Example
Advantages
B. Deployment Diagram
Definition
Components
Component Meaning
Node Hardware device
Artifact Software component
Communication Link Network connection
Example
Advantages
Disadvantages
Advantages of UML
• Standardized notation
• Better design understanding
• Easy maintenance
• Supports object-oriented development
Disadvantages of UML
Class Diagram
Classes:
• User
• Product
• Cart
• Payment
Sequence Diagram
Shows:
• Login process
• Order placement
Activity Diagram
Shows:
• Shopping workflow
Deployment Diagram
Shows:
• Client browser
• Web server
• Database server