Software Engineering Complete Exam Notes
This PDF contains simplified and exam-oriented notes for important Software Engineering topics discussed in the
chat. The notes are written in an easy-to-learn style for quick revision before exams.
Characteristics of Good Software
Correctness, Reliability, Efficiency, Security, Maintainability, Portability and User Friendliness are major
characteristics of good software.
Software Engineering as Layered Technology
Software Engineering consists of layers: Quality Focus, Process, Methods and Tools. Quality is the foundation of all
software activities.
Software Crisis
Software crisis refers to problems such as late delivery, high cost, poor quality and maintenance difficulty in software
projects.
Software Development Life Cycle (SDLC)
Main phases are Requirement Analysis, Design, Coding, Testing, Deployment and Maintenance.
Waterfall Model
A linear model where one phase starts after completion of the previous phase.
Spiral Model
A risk-driven software model involving Planning, Risk Analysis, Engineering and Evaluation.
Requirement Engineering
Process of gathering, analyzing, documenting and validating user requirements.
Requirement Elicitation Techniques
Interviews, Questionnaires, Observation, Brainstorming and Prototyping are common techniques.
Feasibility Study
Checks whether a project is technically, economically, legally and operationally possible.
Types of Feasibility
Technical, Economic, Operational, Legal and Schedule feasibility.
Data Flow Diagram (DFD)
Graphical representation showing movement of data through a system.
Decision Table
A tabular representation of conditions and corresponding actions.
SEI CMM
Capability Maturity Model measures software process maturity in five levels: Initial, Repeatable, Defined, Managed
and Optimizing.
Fire Fighting State
A situation where developers continuously solve emergencies due to poor planning and weak processes.
Software Testing
Process of finding bugs and ensuring software quality and correctness.
Objectives of Testing
Finding defects, verifying requirements, improving quality, reliability and security.
White Box Testing
Testing internal code structure using techniques like statement, branch and path coverage.
Boundary Value Analysis
Testing edge values such as minimum and maximum input limits.
Integration Testing
Testing combined software modules together.
Integration Techniques
Big Bang, Top-Down, Bottom-Up and Hybrid Integration.
System Testing
Testing the complete integrated software system.
Regression Testing
Re-testing software after modifications to ensure old functionality still works.
Mutation Testing
Testing quality of test cases by introducing small changes in code.
Alpha and Beta Testing
Alpha testing is done internally while beta testing is performed by real users.
Error, Fault and Failure
Error is a human mistake, fault is a bug in code and failure is incorrect software behavior.
Code Inspection and Reviews
Inspection, FTR, Peer Review and Walkthrough help detect defects early.
Software Maintenance
Process of modifying software after delivery to fix bugs and improve performance.
Types of Maintenance
Corrective, Adaptive, Perfective and Preventive maintenance.
Software Re-engineering
Improving old software systems without changing their main functionality.
Steps in Re-engineering
Inventory Analysis, Document Restructuring, Reverse Engineering, Code/Data Restructuring and Forward
Engineering.
Software Configuration Management (SCM)
Process of controlling and tracking software changes.
SCM Tasks
Configuration Identification, Version Control, Change Control, Status Accounting and Auditing.
Version Control
Managing multiple software versions using tools like Git.
Project Risk and Technical Risk
Project risk affects budget and schedule while technical risk affects software quality and technology.
CASE Tools
Computer Aided Software Engineering tools automate software development activities.
Software Complexity Measures
Measures complexity using LOC, Halstead metrics and Cyclomatic Complexity.
Function Point
Measures software size based on functionality provided to users.
COCOMO Model
Constructive Cost Model estimates effort, cost and development time.
Person-Month
Represents the work done by one person in one month.
Software Risk Analysis and Management
Process of identifying, analyzing and controlling software project risks.
Ultra Fast Revision Sheet
• SDLC = Requirement → Design → Coding → Testing → Maintenance
• Waterfall = Linear model
• Spiral = Risk-focused model
• White Box = Test internal code
• Regression Testing = Recheck old features after changes
• Boundary Value Analysis = Test edge values
• SCM = Manage software changes
• Maintenance = Fix and improve software
• Re-engineering = Improve old software
• CASE Tools = Software helping make software
• COCOMO = Cost estimation model
• Error → Fault → Failure