Software Engineering - Complete Viva Revision Notes
Module 1: Introduction to Software Engineering and Process Models (7 hrs)
1.1 Software Engineering Process Framework & CMM
Software Engineering Process Framework:
- Definition: Systematic approach to software development encompassing methods, tools, and procedures
- Key Elements:
- Process activities (communication, planning, modeling, construction, deployment)
- Work products (deliverables)
- Quality assurance points
- Milestones and checkpoints
Capability Maturity Model (CMM):
- Purpose: Framework to assess and improve organizational software development processes
- Five Maturity Levels:
- Initial: Ad-hoc processes, unpredictable, chaotic
- Repeatable: Basic project management, process discipline
- Defined: Documented standards, processes integrated organization-wide
- Managed: Quantitative process management, metrics collection
- Optimizing: Continuous process improvement, innovation
Advanced Trends in Software Engineering:
- DevOps and CI/CD pipelines
- Microservices architecture
- Cloud-native development
- AI/ML integration in SDLC
- Low-code/No-code platforms
- Containerization (Docker, Kubernetes)
- Serverless computing
1.2 Prescriptive Process Models
Waterfall Model:
- Characteristics: Sequential, linear approach
- Phases: Requirements → Design → Implementation → Testing → Maintenance
- Advantages: Simple, well-documented, works for stable requirements
- Disadvantages: Inflexible, late testing, no working software until late
Incremental Process Model:
- Approach: Software developed in increments/builds
- Features: Core functionality first, then add features incrementally
- Advantages: Early partial working system, easier to test and debug
- Disadvantages: Requires good planning, architectural issues if not designed well
Evolutionary Process Models:
RAD (Rapid Application Development):
- Timeline: 60-90 days development cycle
- Phases:
- Business modeling
- Data modeling
- Process modeling
- Application generation
- Testing and turnover
- Requirements: Reusable components, powerful tools, small team
- Advantages: Fast development, user involvement
- Disadvantages: Not suitable for large teams, requires skilled developers
Spiral Model:
- Creator: Barry Boehm
- Structure: Risk-driven, iterative process combining waterfall and prototyping
- Four Quadrants:
- Determine objectives and constraints
- Risk analysis and prototyping
- Development and testing
- Planning next iteration
- Advantages: Risk management, flexibility, early user feedback
- Disadvantages: Complex, expensive, requires risk assessment expertise
1.3 Agile Process Models
Extreme Programming (XP):
- Core Values: Communication, Simplicity, Feedback, Courage, Respect
- 12 Practices:
- Planning game
- Small releases
- Metaphor/System metaphor
- Simple design
- Test-driven development (TDD)
- Refactoring
- Pair programming
- Collective code ownership
- Continuous integration
- 40-hour week
- On-site customer
- Coding standards
Scrum:
- Framework: Iterative, incremental agile methodology
- Roles:
- Product Owner: Defines features, prioritizes backlog
- Scrum Master: Facilitator, removes impediments
- Development Team: Self-organizing, cross-functional (5-9 members)
- Artifacts:
- Product Backlog: Prioritized list of features
- Sprint Backlog: Work selected for current sprint
- Increment: Potentially shippable product
- Events/Ceremonies:
- Sprint: 2-4 week iteration
- Sprint Planning: Define sprint goal and backlog
- Daily Scrum: 15-minute standup
- Sprint Review: Demo to stakeholders
- Sprint Retrospective: Team improvement discussion
Kanban:
- Origin: Toyota Production System
- Principles:
- Visualize workflow (Kanban board)
- Limit Work in Progress (WIP)
- Manage flow
- Make policies explicit
- Continuous improvement
- Board Columns: To Do → In Progress → Testing → Done
- Advantages: Flexible, continuous delivery, identifies bottlenecks
- Difference from Scrum: No fixed iterations, more flexible
Module 2: Software Requirements Analysis and Modeling (4 hrs)
2.1 Requirement Engineering
Requirement Engineering Process:
- Elicitation: Gathering requirements from stakeholders
- Techniques: Interviews, questionnaires, observation, brainstorming, prototyping
- Analysis: Understanding and organizing requirements
- Specification: Documenting requirements formally
- Validation: Ensuring requirements meet stakeholder needs
- Management: Handling requirement changes