1.
Introduction to Software Engineering
Definition: The application of engineering principles to software
development in a systematic, disciplined, and quantifiable manner.
Goals: High-quality software that is reliable, maintainable, and
delivered on time and within budget.
🔁 2. Software Development Life Cycle (SDLC) Models
Waterfall Model – Linear and sequential
Spiral Model – Risk-driven iterative model
Agile Model – Flexible, iterative, and customer-focused
V-Model – Emphasizes verification and validation
📋 3. Requirements Engineering
Functional Requirements – What the system should do
Non-Functional Requirements – Performance, security, usability
SRS (Software Requirements Specification) – A formal document
outlining all requirements
🧱 4. Software Design
Design Principles – Modularity, abstraction, cohesion, coupling
Architectural Design – High-level structure (e.g., client-server,
layered)
UML Diagrams – Use-case, class, sequence, activity diagrams
💻 5. Software Construction (Coding)
Best Practices – Code readability, commenting, version control
Programming Paradigms – Procedural, object-oriented, functional
🧪 6. Software Testing
Types: Unit, Integration, System, Acceptance
Techniques: Black-box, White-box, Regression testing
Test Automation – Tools like Selenium, JUnit
🔧 7. Software Maintenance
Types: Corrective, Adaptive, Perfective, Preventive
Challenges: Legacy code, documentation, evolving requirements
📊 8. Software Project Management
Estimation Models: COCOMO, Function Point Analysis
Scheduling: Gantt charts, PERT diagrams
Risk Management and Quality Assurance