|Semester||1 & 2|
|Prerequisites||CS207 Advanced Programming|
|Availability||Not available as an elective|
|Contact||Lectures: 20 | Tutorials: 0 | Labs: 40
Assignments: 115 | Self study: 25
|Assessment||100% classwork (by demonstration of project work and class tests).|
|Resit||Resit is by individual project.|
|Lecturer||Dr Sotirios Terzis | Dr Murray Wood|
To extend and deepen the students understanding of the analysis, design and implementation of software systems; to provide further experience in the activity of designing and implementing non-trivial systems; and to enable the student to demonstrate practical competence in a group environment.
The goal for the student is the development in a group setting of significant systems from scratch aiming not just at any solution but a good solution, and to be introduced to more general Software Engineering topics.
On completion of the class, a student should be able to:
- understand the need for working effectively within a team environment, on practical software engineering problems.
- display a disciplined approach to good practices in the general area of software engineering, and to apply software engineering techniques to practical problems.
- appreciate the importance of organisation, management and professionalism in the development of large scale software.
- undertake a requirements analysis and to write a software requirements specification.
- determine, from an object-oriented analysis, a detailed design which incorporates the necessary technical infrastructure and which provides a basis for implementation.
- identify opportunities for re-use, including the use of design patterns.
- distinguish between designs in terms of their intrinsic quality and in terms of objective criteria such as flexibility, robustness to change etc.
Further study of software engineering methods drawn from the following: requirements analysis and specification, establishing stakeholders’ viewpoints, use-case modelling, systems analysis, specification, design (in particular the development of a detailed design for the construction phase, designing for re-use and future change, further design patterns, design metrics, implementation and testing of designs), implementation, verification and validation, and maintenance. Further study of software development tools, especially those that facilitate software development in a group context (e.g. version control and configuration management tools, xUnit etc.). Software engineering management: project management, team organization.
The substantial practical activity will exercise skills from a selection of syllabus topics, and will incorporate a group project. This material thus provides a broader experience of the management and organisation of software processes for the production of large-scale software.
* This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.