Software Engineering — Clean Notes (Placement
Ready)
PART 1: Introduction to Software Engineering
Chapter 1: Introduction
Software engineering is an engineering discipline concerned with all aspects of software production.
Core activities: Specification → Development → Validation → Evolution
• Software: Programs + documentation + configuration data
• Product types: Generic (off-the-shelf) and Customized (bespoke)
• Quality attributes: Maintainability, Dependability & Security, Efficiency, Acceptability
Ethics (ACM/IEEE)
• Public interest first
• Act in client/employer best interest
• Ensure high product standards
• Maintain integrity in judgment
• Promote ethical management
• Support colleagues
• Continuous learning
Chapter 2: Software Processes
A software process is a set of activities leading to the production of a software product.
All processes include: Specification, Development, Validation, Evolution
• Waterfall: Sequential, stable requirements
• Incremental: Build in parts, early delivery
• Spiral: Risk-driven iterations
• RUP: Iterative, structured phases
Chapter 3: Agile Development
• Focus on customer collaboration
• Respond to change quickly
• Deliver working software frequently
• Methods: Scrum, Extreme Programming (XP)
Chapter 4: Requirements Engineering
• Functional: What system should do
• Non-functional: Performance, security, usability
• Outputs: SRS document
Chapter 5: System Modeling
• Use Case Diagrams — user interactions
• Class Diagrams — structure
• Sequence Diagrams — interactions
• State Diagrams — behavior
Chapter 6: Architectural Design
• Defines system structure
• Patterns: Layered, Client-Server, MVC
Chapter 7: Design & Implementation
• Object-Oriented Design (OOD)
• Design patterns: Singleton, Observer
• Reuse and open-source development
Chapter 8: Software Testing
Goal: Find defects before users do
• Unit Testing: Individual components
• Integration Testing: Module interaction
• System Testing: Entire system
• User Testing: End-user validation
• Static Testing: Reviews, no execution
• Dynamic Testing: Execute code
Chapter 9: Software Evolution
• Software changes after release
• Maintenance types: Corrective, Adaptive, Perfective
PART 2: Dependability & Security
Dependability
• Reliability: Works without failure
• Availability: Ready when needed
• Safety: No harm
• Security: Protected from attacks
Risk Management
• Identify risks
• Analyze impact
• Mitigate risks
Fault Tolerance
• Redundancy — backups
• Diversity — multiple systems
• System continues even after failure
Security Engineering
• Confidentiality
• Integrity
• Availability
• Use authentication, encryption
Testing & Assurance
• Static analysis
• Reliability testing
• Security testing
INTERVIEW QUICK REVISION
• SDLC phases
• Static vs Dynamic testing
• Functional vs Non-functional requirements
• Agile vs Waterfall
• Reliability vs Availability
• Design patterns basics