This course is designed for students interested in planning, management and
development of large and complex software systems. Such systems are often
mission-critical, developed by teams, and maintained over many years. The
course comprises disciplined and comprehensive coverage of software engineering
principles, methods and techniques. Requirements engineering, construction and
validation components are covered. Students learn to develop software
architectures, using standard building blocks and achieving domain-specific
solutions for a range of problems. They work in a variety of programming
languages across a range of platforms. Tools used include computer-aided
software engineering, user interface generators and prefabricated, reusable
components.
Specific knowledge is developed in the processes for requirement definition and
specification, object-oriented design and programming, systematic testing and
validation methodologies and software development maintenance and
re-engineering processes. Students complete a 'real world' project over several
semesters. Broad training is also given in software project management and
mathematical tools for product and project analysis and costing.
Students can specialise in one of the following areas in the last three
semesters:
The course is offered jointly by the Faculty of Information Technology and the Faculty of Engineering.