At the end of this course, students will be able to:
- Understand the domain and the basic terminology of Software Engineering.
- Analyse widely used software process models.
- Compare plan-driven and agile approaches to software development.
- Distinguish user requirements and system requirements.
- Distinguish functional requirements and different kinds of non-functional requirements.
- Compose a software requirement specification that is verifiable, correct, consistent, complete and unambiguous.
- Apply UML for modelling various aspects of computer-based systems using a state-of-art tool.
- Construct a requirements model for a computer-based system using UML.
- Construct a design model for a computer-based system using UML.
- Analyse system architecture from multiple viewpoints.
- Assess candidate architectural patterns and design patterns for a given design problem.
- Distinguish different levels of testing.
- Select testing techniques appropriate for a given test objective.
- Understand the fundamental concepts of quality as related to software, such as process quality and product quality, along with related standards.
- Understand software metrics and their relation to product quality.
- Discuss the processes involved in evolution of software.
- Identify ethical issues in a given situation, using the terminology of ACM/IEEE SECEPP.