ENCT352
Software Engineering
Syllabus
- Introduction (4 hours)
- Software and software engineering
- Nature and characteristics of software
- Software application domains
- Legacy software
- Software crisis
- Software myths
- Software engineering practice: essence of practice, general principles
- The Software Process (8 hours)
- Process framework and umbrella activities
- Traditional (plan-driven) process models: waterfall and its extensions, incremental, evolutionary (prototyping, spiral)
- Agile and adaptive process models: agile manifesto and the 12 principles, agile versus plan-driven development, Scrum framework (roles, artifacts, ceremonies), Extreme Programming (XP) practices, lean software development
- Model selection considerations
- Software Requirements Engineering (6 hours)
- Requirement engineering process
- SRS (structure, characteristics, users)
- Functional and non-functional requirements
- Gathering requirements using use cases modeling and scenarios
- Agile requirements engineering: user stories and acceptance criteria, product backlog creation and prioritization, story mapping basics, continuous requirements refinement (backlog grooming)
- Architectural Design (3 hours)
- Introduction and importance
- Architectural design principles
- Taxonomy of architectural styles
- Modular design, cohesion and coupling
- System Modeling (9 hours)
- System modeling: need for system modeling, role of abstractions in managing complexity
- Process modeling using DFD
- Scenario-based analysis: concept of scenarios, use-case descriptions and diagrams
- Behavioral and structural modeling: activity diagrams, class-based modeling
- Coding and Testing (5 hours)
- Coding standards and guidelines
- Code review: code walkthrough, code inspection, cleanroom technique
- Software testing fundamentals: verification and validation, unit, integration, system and acceptance testing
- Black-box and white-box testing approach
- Agile testing practices: test-driven development (TDD), continuous testing, automated unit testing basics, refactoring for code quality
- Software Quality, Assurance, Maintenance (4 hours)
- Quality concepts
- Quality attributes
- Reviews, inspections and QA concepts
- ISO standards, CMMI levels
- Software maintenance and its types
- Maintenance effort and lifecycle considerations
- Software Configuration Management (3 hours)
- Software configuration management
- Version control and continuous integration
- Change management process
- Branching strategies (Git-flow basics)
- Recent Trends (3 hours)
- DevOps and continuous deployment pipelines
- Continuous integration/continuous delivery (CI/CD) in modern projects
- Cloud-native, microservices architectures and infrastructure as code (IaC)
- AI-assisted software development
- Low-code/no-code, green software engineering
Practicals
- Preparation and organization of software requirements specification (SRS) using standard templates
- Construction of UML diagrams (use case, activity, class, and sequence) using modeling tools
- Design of system architecture and component structure using CASE tools
- Implementation of key system modules following coding standards and best practices
- Execution of testing procedures (unit and integration) and documentation of results
- Application of version control (Git), CI/CD workflow setup, and containerization using Docker
- Term project