Software Engineering Syllabus Notes
1. Introduction to Software Engineering
Software engineering is a disciplined approach to software development. It involves applying engineering
principles to software creation, ensuring reliability and efficiency.
- Types of Systems:
- Open System: Interacts with its environment.
- Closed System: Isolated from the environment.
- Static System: Structure does not change.
- Dynamic System: Changes over time.
- Software vs Programs: A program is a small piece of software with limited functionality, while software
includes programs, documentation, and configuration data.
- Evolution of Software Engineering: From early programming to high-level languages and
structured/object-oriented design.
Software Engineering Syllabus Notes
2. Software Life Cycle Models
Software Life Cycle Models outline the phases through which software progresses, from conception to
retirement.
- Waterfall Model: Sequential phases; easy to manage but rigid.
- Prototyping Model: Early working model to refine requirements.
- Iterative Model: Develops system through repeated cycles.
- Spiral Model: Combines iterative development with risk assessment.
- Agile Model: Incremental, iterative, and flexible; emphasizes collaboration and customer feedback.
Comparison: Agile offers flexibility and rapid delivery, while Waterfall is structured but inflexible.
Software Engineering Syllabus Notes
3. Software Planning
Planning ensures the project is executed efficiently.
- Project Manager Responsibilities: Resource planning, scheduling, risk management, and communication.
- Size Estimation Metrics:
- LOC: Counts lines of code; simple but language-dependent.
- Function Point: Measures functionality delivered.
- COCOMO Model: Cost estimation model using project size and complexity to estimate effort, time, and cost.
Software Engineering Syllabus Notes
4. Requirement Analysis and Specification
This phase determines what the software should do.
- Requirement Gathering: Involves stakeholders to gather functional and non-functional requirements.
- Software Requirement Specification (SRS): A document that outlines system requirements in detail.
- Good SRS Characteristics: Clear, complete, consistent, modifiable, and verifiable.
Software Engineering Syllabus Notes
5. Software Design and Implementation
Design translates requirements into architecture.
- Good Design: High cohesion, low coupling.
- Design Approaches:
- Function-Oriented: Uses DFDs and structured charts.
- Object-Oriented: Focuses on objects and classes.
- Structured Coding: Clear, modular code with standard coding styles and proper documentation.
Software Engineering Syllabus Notes
6. Software Testing
Testing ensures the software meets requirements and is defect-free.
- Verification vs Validation:
- Verification: Are we building the product right?
- Validation: Are we building the right product?
- Types of Testing:
- Unit Testing: Individual components.
- Integration Testing: Combined components.
- System Testing: Entire system.
- Black Box: Without internal knowledge.
- White Box: Internal logic tested.
- Configuration Management: Manages changes to ensure consistency.