Section A – Software Engineering Detailed Notes
1. Introduction to Software
Software is a collection of programs, data, and instructions that enable a computer to perform specific tasks.
Unlike hardware, which is physical, software is intangible and developed through systematic processes. It
acts as the bridge between the user and the computer hardware, enabling communication and task
execution. Without software, hardware is useless, as there would be no instructions to follow.
Characteristics of software include: (1) Intangible – cannot be touched physically, (2) Developed, not
manufactured – created through engineering processes, (3) Does not wear out – remains functional unless
modified, (4) Evolves over time – updated to meet new needs, (5) Customizable – tailored to user
requirements, and (6) Complex – large systems may contain millions of lines of code. The main
components are: Programs (set of instructions), Data (information processed by programs), and
Documentation (manuals, help files). Types of software include System Software (operating systems,
utilities), Application Software (word processors, browsers), Embedded Software (in appliances, vehicles),
and Web Applications (websites, services).
2. Introduction to Software Engineering
Software Engineering is the application of systematic, disciplined, and quantifiable approaches to the
development, operation, and maintenance of software. It ensures that high-quality, efficient, and
maintainable software is produced to meet user needs within time and budget constraints. The need for
software engineering arises from growing software complexity, demand for high-quality outputs, cost and
time constraints, and the challenge of managing large teams and systems. Major software engineering
paradigms include: 1. Waterfall Model – sequential phases: Requirements, Design, Implementation,
Testing, Deployment, Maintenance. 2. Prototyping Model – building a prototype to clarify requirements. 3.
Incremental Model – developing software in parts and delivering them progressively. 4. Spiral Model –
combines iterative development with risk analysis. 5. Fourth Generation Techniques (4GT) – use high-level
tools to speed up development. 6. Interactive Enhancement – improving systems gradually through user
feedback. These paradigms provide structured approaches to software development, reducing risks and
improving efficiency.
3. Software Requirement Specification (SRS)
A Software Requirement Specification (SRS) is a formal document detailing the functional and
non-functional requirements of a software system. It serves as a contract between the client and the
development team, ensuring a mutual understanding of what the system will do. The purpose of an SRS is
to provide clarity, serve as a reference, assist in cost and time estimation, and reduce misunderstandings.
The process involves: (1) Problem Analysis – understanding client needs, (2) Structuring Information –
organizing requirements logically, (3) Data Flow Diagram (DFD) – showing movement of data in the system,
(4) Data Dictionary – defining data elements, and (5) Structured Analysis – breaking down complex
requirements. Characteristics of a good SRS include correctness, unambiguity, completeness, consistency,
verifiability, and modifiability. Components include Functional Requirements, Non-functional Requirements,
External Interface Requirements, and Constraints.
4. Planning a Software Project
Software Project Planning involves defining the scope, estimating resources, scheduling activities, and
determining costs for software development. Effective planning ensures the project is delivered on time,
within budget, and meets quality standards. Objectives include identifying scope and objectives, estimating
cost, time, and effort, assigning tasks, managing risks, and ensuring client satisfaction. Cost estimation
methods include: 1. Single Variable Model – uses Lines of Code (LOC) to estimate cost: Effort = a ×
(KLOC)^b. 2. COCOMO Model (Constructive Cost Model) – predicts effort, time, and staff size based on
project type (Organic, Semi-detached, Embedded) using constants (a, b, c, d). Uncertainties in cost
estimation arise from changing requirements, incorrect size estimation, new technology, and team
experience. Proper planning minimizes delays, cost overruns, and resource wastage.