The objectives of this subject are to: develop in students a critical understanding of issues related to the engineering of large complex software systems; bring students to the point where they are fluent in the objectives of software engineering; and ensure that students are competent in techniques of realising software systems utilising appropriate software engineering approaches, tools and techniques. Students learn how to develop a set of requirements, apply rigorous software analysis, and design, code and test their work. On completion of the subject students are competent at engineering moderately complex software systems as members of a software development team.
Topics include: software engineering concepts, including software projects, planning, management, processes and methodologies; software requirements engineering; formal methods for software engineering; adaptation of software development methodologies to suit specific projects; validation and verification; software estimation and costing; configuration management; software project planning, budgeting and quality assurance (including walkthroughs and reviews); and software development CASE tools. The subject uses a problem-based learning approach with students working in small teams. A set of lectures is combined with workshops where students apply the techniques introduced.
Assessment: Typically assessment is based on a team project involving project specification, initial acceptance testing, requirements and design modifications, a final report and an individual oral examination.
Autumn semester, City campus
Spring semester, City campus