Software Engineering – Unit 1 Notes
1. Introduction to Software Engineering
Software Engineering is a systematic, disciplined, and quantifiable approach to the development,
operation, and maintenance of software. It applies engineering principles to software development
to produce reliable, efficient, and cost-effective software systems. The main objectives are quality,
reliability, maintainability, and scalability. It includes processes, methods, and tools that help in
building large and complex software systems.
2. Software Life Cycle Models
A Software Development Life Cycle (SDLC) model defines the sequence of phases involved in
software development. It provides a structured framework for planning, designing, building, testing,
and maintaining software.
a) Waterfall Model
The Waterfall model is a linear and sequential approach where each phase must be completed
before the next begins.
Phases: Requirement Analysis → System Design → Implementation → Testing → Deployment →
Maintenance.
Advantages: Simple, easy to manage, suitable for small projects.
Disadvantages: Inflexible, difficult to handle changes, late testing.
b) Spiral Model
The Spiral model combines iterative development with systematic risk analysis. Development
proceeds in spirals, each representing a phase.
Each spiral consists of: Planning, Risk Analysis, Engineering, Evaluation.
Advantages: Risk management, flexible, suitable for large projects.
Disadvantages: Complex, expensive, requires expert risk analysis.
c) Prototype Model
In this model, a working prototype is built to understand user requirements clearly.
Steps: Requirement gathering → Build prototype → User evaluation → Refinement → Final
product.
Advantages: Better requirement clarity, user involvement.
Disadvantages: Poor documentation, may lead to unrealistic expectations.
d) Evolutionary Model
Software is developed in increments, and each version adds more features.
Advantages: Early delivery, flexible to changes.
Disadvantages: Difficult planning, may cause design issues.
e) RAD (Rapid Application Development) Model
RAD emphasizes fast development using reusable components and user feedback.
Phases: Requirement planning, User design, Construction, Cutover.
Advantages: Faster delivery, high user involvement.
Disadvantages: Not suitable for large or complex systems.
3. Software Project Management
It involves planning, organizing, directing, and controlling resources to achieve software goals
within constraints of time, cost, and quality.
Responsibilities of a Software Project Manager
- Requirement analysis and planning
- Team management
- Scheduling and budgeting
- Risk management
- Communication with stakeholders
- Quality assurance
Project Planning
Project planning defines scope, objectives, tasks, schedules, and resources. It includes effort
estimation, time scheduling, resource allocation, and risk planning.
Metrics for Project Size Estimation
- Lines of Code (LOC)
- Function Points (FP)
These metrics help estimate effort, cost, and time.
Project Estimation Techniques
- Expert Judgment
- Delphi Technique
- Work Breakdown Structure (WBS)
- Empirical Models
Empirical Estimation Techniques
Based on historical data and formulas. Examples include Halstead’s model and COCOMO.
COCOMO (Constructive Cost Model)
COCOMO estimates effort, cost, and schedule based on project size.
Modes: Organic, Semi-detached, Embedded.
Formula: Effort = a × (KLOC)^b person-months.
Software Configuration Management (SCM)
SCM controls and tracks changes in software during development and maintenance.
Functions: Version control, Change control, Status accounting, Auditing.
Benefits: Consistency, traceability, controlled evolution of software.