Software Engineering Notes
1. Introduction to Software Engineering
Software: A collection of programs that perform tasks on a computer.
Software Engineering: A systematic approach to software development,
maintenance, and management.
Software Development Life Cycle (SDLC): The process of planning, creating,
testing, and deploying software. Phases:
1. Requirements Analysis
2. Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance
2. Software Development Models
Waterfall Model: Linear and sequential.
Agile Model: Iterative and incremental. Encourages collaboration, flexibility, and
customer feedback.
V-Model: Extends the waterfall model with validation and verification stages.
Spiral Model: Focuses on risk analysis and iterative development.
3. Software Design
Design Patterns: Reusable solutions to common problems. Examples: Singleton,
Factory, Observer.
UML (Unified Modeling Language): A standard way to visualize the design of a
system.
o Class Diagram: Represents the structure of a system.
o Sequence Diagram: Shows interactions between components over time.
Modularity: Dividing a system into smaller, manageable components.
4. Testing
Unit Testing: Testing individual components or modules.
Integration Testing: Ensuring different modules work together.
System Testing: Testing the complete system.
Acceptance Testing: Verifying the software meets the requirements.
Automated Testing: Using tools like Selenium for repetitive tasks.
5. Software Maintenance
Corrective Maintenance: Fixing bugs and issues.
Adaptive Maintenance: Updating the software to run in new environments.
Perfective Maintenance: Enhancing software performance.
Preventive Maintenance: Anticipating future issues and improving software.