The discipline of software engineering has changed considerably since its introduction three decades ago. Although the principles remain the same, the context in which they are applied is continuously evolving. This module teaches principles and their application in a way that can help students learn new paradigms fast and catch up with inevitable changes of software development realities. It provides an introduction to process models, requirements elicitation and covers the principles and concepts relevant to software design. In CS2103, an introductory software engineering module, students learn the basic concepts and knowledge of software engineering in terms of the object oriented analysis and design. There are many other activities in software development process that every software engineer is expected to be well versed with. This module considers various activities in software development process, and emphasises software architectural design, design principles and best practices. It also prepares students with essentials to take on the role of software engineer in the industry by introducing them to the basics of software evolution and project management.
At the end of this module, student shall be able to
Understand the software development process models and be able to reason about their characteristics,
Describe an architecture accurately,
Recognize major architectural styles in existing software systems,
Evaluate design alternatives for a problem
Construct a design specification for a medium-sized software system that satisfies a requirement specification,
Understand the use of various design principles and patterns and be able to reason about them, and understand the use of design quality attributes and be able to evaluate a design.
- Explain how programs treat the other programs as their input data.
- Understand the basic concepts of software evolution.