SE Sec-A
SE Sec-A
INTRODUCTION
Software Engineering – Definition
2. What is Software?
● Programs
● Data
● Documentation
3. Types of Software
1
● Example: MS Word, Web Browser
👉 In simple words:
It is the actual situation, system, or field for which we are developing software.
2
2. Explanation
3. Examples
3
● Makes development more efficient
1. Definition
Software Engineering Challenges are the difficulties or problems faced during the
development, maintenance, and management of software systems.
1. Complexity
2. Changing Requirements
3. Time Constraints
4
● Limited time affects quality
4. Cost Management
● Budget limitations
● High cost of development and maintenance
● Poor planning can increase expenses
5. Quality Assurance
6. Security Issues
7. Maintenance
5
8. Scalability
9. Integration
1. Definition
2. Explanation
6
Instead of writing code randomly, software engineering follows a step-by-step
process to:
● Plan
● Design
● Develop
● Test
● Maintain software
1. Systematic Development
2. Use of Models
3. Requirement Analysis
7
4. Modular Design
5. Documentation
7. Maintenance
4. Advantages
8
1. Definition
2. Objectives of SDLC
Outputs:
Activities:
9
● Requirement gathering
● Feasibility study (technical, economic, operational)
● Requirement analysis
🔹 2. System Design
● Converts requirements into system design
● Defines system architecture
Types of Design:
Outputs:
● Design documents
● Flowcharts, UML diagrams
🔹 3. Implementation (Coding)
● Actual development of software
● Programmers write code based on design
Activities:
10
🔹 4. Testing
● Ensures software is free from errors
● Verifies and validates the system
Types of Testing:
🔹 5. Deployment
● Software is released to users
● Installed in real environment
Types:
● Pilot deployment
● Full deployment
🔹 6. Maintenance
● Longest phase of SDLC
● Happens after deployment
Types of Maintenance:
11
● Adaptive – adapting to new environment
● Perfective – improving performance
● Preventive – avoiding future issues
12
⭐⭐Chapter 2:
Software Development Process Models
1. Waterfall Model
➤ Definition
13
A linear and sequential model where each phase must be completed before the
next begins.
➤ Phases
● Requirement
● Design
● Implementation
● Testing
● Deployment
● Maintenance
➤ Features
➤ Advantages
● Easy to manage
● Well-documented
● Suitable for small projects
➤ Disadvantages
● Not flexible
● Difficult to handle changes
● Late testing
14
🔹 2. Agile Model
➤ Definition
An iterative and flexible model where software is developed in small parts called
iterations.
➤ Features
● Continuous feedback
● Customer involvement
● Quick delivery
➤ Advantages
● Flexible to changes
● Faster development
● High customer satisfaction
➤ Disadvantages
🔹 3. Spiral Model
➤ Definition
15
➤ Phases (in loop/spiral)
● Planning
● Risk Analysis
● Engineering
● Evaluation
➤ Advantages
➤ Disadvantages
● Complex
● Expensive
● Requires expertise
➤ Features
➤ Advantages
16
● High quality
● Early bug detection
➤ Disadvantages
● Rigid
● Not suitable for changing requirements
🔹 5. Incremental Model
➤ Definition
Software is developed in small parts (increments) and each part is delivered step
by step.
➤ Advantages
➤ Disadvantages
🔹 6. Prototype Model
➤ Definition
17
A working model (prototype) is created to understand user requirements before
final development.
➤ Advantages
➤ Disadvantages
● Time-consuming
● May increase cost
🔹 Definition
The Waterfall Model is a linear and sequential software development model in
which each phase of the development process is completed before moving to the
next phase, with no overlapping between phases.
18
○ Define HLD and LLD
3. Implementation (Coding)
○ Developers write code
○ Convert design into software
4. Testing
○ Detect and fix errors
○ Perform unit, integration, system testing
5. Deployment
○ Deliver software to users
6. Maintenance
○ Fix bugs and update system
🔹 Features
● Sequential flow
● No phase overlap
● Documentation at every stage
🔹 Advantages
● Simple and easy to understand
● Easy to manage
19
● Well-documented process
🔹 Disadvantages
● Not flexible to changes
● Late testing
● Not suitable for large/complex projects
🔹 Suitable For
● Small projects
● Projects with fixed requirements
🔹 Types of Prototyping
● Throwaway Prototype – discarded after use
● Evolutionary Prototype – improved continuously
🔹 Features
● User involvement
● Early feedback
● Improves requirement understanding
21
🔹 Advantages
● Reduces requirement errors
● Better user satisfaction
● Early detection of problems
🔹 Disadvantages
● Time-consuming
● Can increase cost
● Too much user dependency
🔹 Suitable For
● Projects with unclear requirements
● User-interactive systems
22
The Iterative Model is a software development approach in which the system is
developed in small parts through repeated cycles (iterations), and each iteration
improves the previous version of the software.
23
🔹 Features
● Repeated development cycles
● Continuous improvement
● Early delivery of partial system
🔹 Advantages
● Flexible to changes
● Early bug detection
● Better risk management
🔹 Disadvantages
● Requires good planning
● More management effort
● Can increase cost
🔹 Suitable For
● Large projects
● Projects with changing requirements
24
📊 🔥 Comparison (Very Important for
Exam)
25
Chapter 3: Software Process
🔹 1. Definition
A Software Process is a structured set of activities, methods, and practices used to
develop, deliver, and maintain software systems in a systematic and organized way.
26
👉 Output: SRS (Software Requirement Specification)
3. Software Validation
👉 Types:
● Unit Testing
● Integration Testing
● System Testing
27
● Maintainability – easy to update
● Scalability – handles growth
● Understandability – easy to understand
● Specification
● Development
● Validation
● Evolution
1. Understandability
2. Visibility
28
● Progress of the project should be visible
● Milestones and results should be clearly defined
3. Reliability
4. Maintainability
5. Efficiency
6. Scalability
7. Flexibility
29
● Should handle changing requirements
● Allows modifications during development
8. Quality Assurance
🔹 Objectives
● Complete project on time
● Stay within budget
● Deliver high-quality software
● Meet user requirements
🔸 2. Project Planning
● Create detailed project plan
● Estimate time, cost, and resources
● Define tasks and schedule
👉 Tools:
● Gantt Chart
● PERT Chart
🔸 3. Project Execution
● Actual development work starts
● Team members perform assigned tasks
● Resources are utilized
🔸 5. Project Closure
● Final delivery of software
● Documentation completion
● Review project performance
32
🔹 Importance of Project Management
● Improves project success rate
● Controls time and cost
● Ensures proper coordination
● Reduces risks
🔹 Definition
Software Configuration Management (SCM) is the process of identifying,
organizing, controlling, and tracking changes in software components throughout
the software development life cycle.
🔹 Objectives of SCM
● Control changes in software
● Maintain consistency of system
● Track different versions of software
● Improve software quality
33
● Avoid confusion and errors
🔹 What is Configuration?
A Configuration refers to all the components of a software system, such as:
● Source code
● Documents
● Design files
● Test cases
👉 Answers:
● What changes were made?
● Who made them?
🔸 4. Configuration Auditing
● Verify that changes are correct
● Ensure system follows standards
👉 Types:
● Functional Audit
● Physical Audit
🔸 5. Version Control
● Manage different versions of software
● Allows rollback to previous versions
👉 Tools:
● Git
● SVN
35
🔹 SCM Tools
● Git
● GitHub
● SVN (Subversion)
🔹 Advantages of SCM
● Better control over changes
● Reduces errors and conflicts
● Improves team coordination
● Easy tracking of versions
● Supports maintenance
🔹 Disadvantages
● Requires proper planning
● Can be complex
● Needs skilled team
36
⭐⭐Chapter 4: Project Planning
🔹 1. Definition
Project Planning is the process of defining project objectives, estimating
resources, scheduling tasks, and preparing a roadmap to complete a software
project successfully within time and budget.
37
🔸 2. Feasibility Study
● Check whether the project is possible
👉 Types:
● Technical Feasibility – technology available or not
● Economic Feasibility – cost vs benefit
● Operational Feasibility – usability in real environment
🔸 3. Resource Estimation
● Estimate required:
○ Human resources
○ Hardware & software
○ Time
🔸 4. Cost Estimation
● Calculate total project cost
● Include development, testing, maintenance
🔸 5. Scheduling
● Decide timeline of tasks
38
👉 Tools:
● Gantt Chart
● PERT Chart
39
🔹 (b) PERT Chart
● Network diagram
● Shows task dependencies
● Helps in time estimation
🔹 7. Advantages
● Better resource management
● Early risk identification
● Improves efficiency
● Smooth workflow
40
Project Planning Activities are the tasks performed to organize, prepare, and
manage a software project before development begins.
🔸 2. Feasibility Analysis
● Check whether the project is possible or not
Types:
● Technical Feasibility
● Economic Feasibility
● Operational Feasibility
🔸 3. Resource Planning
● Identify required resources:
○ Human resources (developers, testers)
○ Hardware and software
41
○ Tools and technologies
🔸 4. Cost Estimation
● Estimate total project cost
● Includes development, testing, maintenance
🔸 5. Time Estimation
● Estimate time required for each task
● Helps in scheduling
🔸 6. Project Scheduling
● Arrange tasks in proper sequence
● Assign deadlines
👉 Tools:
● Gantt Chart
● PERT Chart
42
🔸 8. Quality Planning
● Define quality standards
● Plan testing and validation
🔸 9. Communication Planning
● Define communication between team members
● Ensure proper information flow
🔹 Definition
The COCOMO Model (Constructive Cost Model) is a mathematical model used to
estimate the effort, time, and cost required to develop a software project based
on the size of the software.
🔹 Purpose of COCOMO
● Estimate development effort (in person-months)
● Estimate time required
43
● Estimate project cost
● Help in project planning
● E = Effort (person-months)
● KLOC = Thousands of lines of code
● a, b = Constants (depend on project type)
● T = Time (months)
● E = Effort
● c, d = Constants
44
● Experienced team
● Flexible requirements
🔸 2. Semi-Detached Mode
● Medium size projects
● Mixed experience team
🔸 3. Embedded Mode
● Complex and large projects
● Strict requirements
● Hardware + software constraints
45
🔹 4. Types of COCOMO Models
🔸 1. Basic COCOMO
● Uses only KLOC
● Simple estimation
🔸 2. Intermediate COCOMO
● Includes cost drivers (team, tools, environment)
🔸 3. Detailed COCOMO
● More detailed estimation
● Considers each phase separately
🔹 5. Advantages
● Easy to use
● Provides quick estimation
● Helps in project planning
🔹 6. Disadvantages
● Based on estimation (not 100% accurate)
46
● Depends on correct KLOC value
● Not suitable for modern agile projects
🔹 1. Definition
Software Metrics are quantitative measures used to evaluate the size, complexity,
quality, performance, and productivity of software and the software development
process.
🔸 1. Quality Measurement
● Helps in measuring software quality
● Ensures reliability and performance
47
🔸 2. Better Project Planning
● Helps in estimating time, cost, and effort
● Makes planning more accurate
🔸 3. Improves Productivity
● Measures developer performance
● Helps in increasing efficiency
🔸 4. Progress Tracking
● Tracks project progress at every stage
● Compares actual vs planned work
🔸 5. Risk Management
● Identifies potential risks early
● Helps in taking preventive actions
🔸 6. Decision Making
● Provides data for better decisions
● Helps managers choose best strategies
48
🔸 7. Cost Control
● Helps in managing and reducing project cost
● Avoids unnecessary expenses
🔸 8. Performance Evaluation
● Evaluates system performance
● Identifies areas for improvement
🔸 1. Product Metrics
● Measure the characteristics of the final software product
👉 What it measures:
● Size
● Complexity
● Performance
● Reliability
👉 Examples:
● Lines of Code (LOC)
● Defect Density
49
● Response Time
🔸 2. Process Metrics
● Measure the software development process
👉 What it measures:
● Efficiency of development
● Error detection rate
● Development time
👉 Examples:
● Number of defects found during testing
● Time taken to fix bugs
● Process improvement rate
🔸 3. Project Metrics
● Measure project performance and management
👉 What it measures:
● Project progress
● Resource usage
● Team productivity
👉 Examples:
50
● Cost of project
● Effort required
● Schedule variance
🔹 Definition
Complexity Metrics are measures used to evaluate how complex a software
program or system is. They help in understanding the difficulty of developing,
testing, and maintaining the software.
👉 Formula:
V(G)=E−N+2PV(G) = E - N + 2PV(G)=E−N+2P
● E = Number of edges
● N = Number of nodes
● P = Number of connected components
👉 Simple form:
V(G)=Number of Decision Points+1V(G) = \text{Number of Decision Points} +
1V(G)=Number of Decision Points+1
👉 Measures:
● Program length
● Vocabulary
● Volume
52
● Effort
🔹 Disadvantages
● Not always 100% accurate
● May not reflect real complexity
● Requires proper understanding
53
⭐⭐Chapter 6: Software Quality
🔹 1. Definition
Software Quality refers to the degree to which a software product meets specified
requirements and satisfies user needs while being reliable, efficient, and easy to
maintain.
54
🔸 2. Reliability
● Software works without failure for a given time
🔸 3. Efficiency
● Uses system resources effectively
🔸 4. Usability
● Easy to learn and use
🔸 5. Maintainability
● Easy to modify and update
🔸 6. Portability
● Can run on different systems
🔸 7. Security
● Protects data from unauthorized access
55
🔹 4. Software Quality Assurance (SQA)
👉 Definition
SQA is a set of activities that ensure software processes and products meet quality
standards.
👉 Activities of SQA
● Process monitoring
● Quality planning
● Reviews and audits
● Testing
56
Process-oriented Product-orient
ed
🔹 7. Quality Standards
● Define rules and guidelines for software quality
👉 Examples:
● ISO standards
● IEEE standards
57
🔹 9. Conclusion
Software quality is essential for developing reliable, efficient, and user-friendly
software. Proper quality assurance and control ensure successful software
products.
🔹 Definition
Software Quality Attributes are the characteristics or properties that determine
how well a software system performs and satisfies user requirements.
🔸 2. Reliability
● Software works without failure for a specific period
● Produces consistent results
58
🔸 3. Efficiency
● Uses system resources (CPU, memory) effectively
● Provides fast performance
🔸 4. Usability
● Easy to learn and use
● User-friendly interface
🔸 5. Maintainability
● Easy to modify, fix bugs, and update
● Reduces maintenance effort
🔸 6. Portability
● Can run on different platforms or systems
● Easy to transfer
🔸 7. Security
● Protects data from unauthorized access
● Ensures data privacy
59
🔸 8. Flexibility
● Easy to adapt to changes
● Supports future modifications
🔸 9. Reusability
● Components can be reused in other projects
● Saves time and cost
🔸 10. Robustness
● Handles errors and unexpected inputs effectively
● Does not crash easily
🔹 Definition
Cyclomatic Complexity is a software metric used to measure the complexity of a
program by calculating the number of independent execution paths in the
program.
60
🔹 Purpose
● Measure program complexity
● Identify difficult and risky code
● Help in test case design
● Improve code quality
🔹 Formula
👉 Main Formula:
V(G)=E−N+2PV(G) = E - N + 2PV(G)=E−N+2P
👉 Simplified Formula:
V(G)=Number of Decision Points+1V(G) = \text{Number of Decision Points} +
1V(G)=Number of Decision Points+1
🔹 Decision Points
61
These increase complexity:
● if
● else if
● while
● for
● case (switch)
11 – 20 Moderate
complexity
21 – 50 High complexity
🔹 Example (Simple)
If a program has:
62
● 3 decision points
👉 Then:
V(G)=3+1=4V(G) = 3 + 1 = 4V(G)=3+1=4
🔹 Advantages
● Helps in test case design
● Identifies complex modules
● Improves code maintainability
● Easy to calculate
🔹 Disadvantages
● Does not measure all types of complexity
● May not reflect real-world difficulty
● Focuses only on control flow
63
Chapter 7: Software Requirement
Analysis
🔹 1. Definition
Software Requirement Analysis is the process of identifying, gathering, analyzing,
and documenting the requirements of a software system to understand what the
user needs.
🔹 2. Objectives
● Understand user requirements clearly
● Define system functionality
● Reduce development errors
● Provide a base for design and development
🔹 3. Types of Requirements
🔸 1. Functional Requirements
● Describe what the system should do
64
👉 Examples:
● User login
● Data processing
● Report generation
🔸 2. Non-Functional Requirements
● Describe how the system performs
👉 Examples:
● Performance
● Security
● Reliability
● Usability
🔸 2. Requirement Analysis
● Study and refine requirements
65
● Remove inconsistencies
🔸 3. Requirement Specification
● Document requirements clearly
🔸 4. Requirement Validation
● Check if requirements are correct and complete
● Ensure they meet user needs
66
● Verifiable
67
Need of SRS (Software Requirement
Specification)
68
● Makes development more structured
🔸 5. Facilitates Testing
● Helps testers verify whether software meets requirements
● Used to design test cases
🔸 6. Improves Communication
● Ensures proper communication between stakeholders
● All team members understand the system
69
● Ensures both follow agreed requirements
🔹 Definition
A Data Flow Diagram (DFD) is a graphical representation of how data flows
through a system, showing the input, processing, storage, and output of data.
🔹 Purpose of DFD
● Understand system requirements
● Visualize data movement
● Simplify complex systems
● Help in system design
70
🔸 2. Data Flow (Arrow)
● Shows movement of data
● Direction indicates flow
🔹 Definition
A Data Dictionary is a centralized collection of information that describes the
structure, meaning, and usage of data elements in a system.
👉 In simple words:
It is a “data about data” (metadata).
71
🔹 Purpose of Data Dictionary
● Define all data elements clearly
● Avoid confusion and ambiguity
● Ensure consistency in data usage
● Help developers and analysts understand the system
● Data name
● Description
● Data type (integer, string, etc.)
● Size/length
● Format
● Allowed values
● Source of data
● Destination of data
72
● Linked with database system
🔹 Definition
An Entity Relationship Diagram (ERD) is a graphical representation of entities,
their attributes, and the relationships between them in a database system.
🔹 Purpose of ERD
● Design database structure
● Show relationships between data
● Help in database development
● Improve system understanding
🔹 Components of ERD
73
🔸 1. Entity
● Represents a real-world object
👉 Examples:
● Student
● Employee
● Product
👉 Symbol: Rectangle
🔸 2. Attribute
● Describes properties of an entity
👉 Examples:
● Name, Age, ID
👉 Types:
● Simple Attribute – cannot be divided
● Composite Attribute – can be divided
● Derived Attribute – calculated
👉 Symbol: Oval
🔸 3. Relationship
● Shows how entities are connected
74
👉 Examples:
● Student enrolls in Course
👉 Symbol: Diamond
🔹 Types of Relationships
🔸 1. One-to-One (1:1)
● One entity is related to only one entity
🔸 2. One-to-Many (1:M)
● One entity is related to many entities
🔸 3. Many-to-Many (M:N)
● Many entities related to many entities
🔹 Keys in ERD
75
🔸 1. Primary Key
● Unique identifier of an entity
👉 Example: Student_ID
🔸 2. Foreign Key
● Links one entity to another
| |
(ID) (Course_ID)
(Name) (Title)
🔸 1. Correct
● All requirements should be accurate
● Reflect actual user needs
76
🔸 2. Complete
● Includes all functional and non-functional requirements
● No missing information
🔸 3. Consistent
● No conflicts between requirements
● All statements should agree with each other
🔸 4. Unambiguous
● Requirements should be clear and easy to understand
● Avoid confusion
🔸 5. Verifiable
● Requirements should be testable
● Can be checked through testing
🔸 6. Feasible
● Requirements should be achievable
● Within time and budget
77
🔸 7. Modifiable
● Easy to update when changes occur
🔸 8. Traceable
● Each requirement can be tracked
● From origin to implementation
Components of SRS
🔸 1. Introduction
● Purpose of system
● Scope of project
● Definitions and abbreviations
🔸 2. Overall Description
● Product perspective
● Product functions
● User characteristics
● Constraints
78
🔸 3. Functional Requirements
● What the system should do
👉 Examples:
● Login system
● Data processing
🔸 4. Non-Functional Requirements
● How the system performs
👉 Examples:
● Performance
● Security
● Reliability
🔸 6. System Features
79
● Detailed description of system functions
🔸 7. Constraints
● Limitations of system
👉 Example:
● Budget
● Hardware limitations
🔸 8. Appendices (Optional)
● Additional information
● References
Requirement Validation
bjectives of Validation
80
🔹 Need of Validation
● Avoid costly mistakes in later stages
● Reduce rework
● Ensure clear understanding
● Deliver correct software
Validation Checks
🔸 1. Validity
● Are we building the right product?
🔸 2. Consistency
● No conflicting requirements
🔸 3. Completeness
● All requirements are included
🔸 4. Realism (Feasibility)
● Requirements are achievable
81
🔸 5. Verifiability
● Requirements can be tested
🔸 1. Reviews / Inspections
● Experts examine requirements
● Find errors and issues
🔸 2. Prototyping
● Build a sample system
● Get user feedback
🔸 4. Automated Tools
● Use tools to check consistency and completeness
82
🔹 Advantages of Validation
● Reduces errors
● Saves time and cost
● Improves quality
● Increases user satisfaction
83