|LEVEL||02 - Years 2, 3 in Modular Undergraduate Course|
|DESCRIPTION||This course introduces students to concepts and techniques involved in the engineering of complex software systems. Following an introduction to software engineering and the notion of software quality, activities involved the life cycle of software development activities will be discussed and UML is used to model entities in each activity. Having covered life cycle activities in their own right, we then discuss how these can be assembled into different development models in order to enable teams of engineers to construct complex software systems. A range of development models will be covered with a particular focus on the Agile development process.
Whilst the course is meant to provide a flavour across the whole life cycle from specification through to design, implementation, testing and maintenance, there will be a particular focus on the design phase through the coverage of design patterns.
The course will also have a practical track aimed at giving students the opportunity to practice using skills and tools to construct non-trivial software systems. This will expose students to current state-of-the-art practices in the industry, thus enabling to be immediately productive in software engineering environments after graduation.
This unit aims to familiarise students with concepts and skills which will ultimately help them to function effectively as members of professional teams entrusted with the development of complex software systems.
The multi-faceted and subjective nature of software quality renders this imperative knowledge for any modern-day aspiring software engineer.
1. Knowledge & Understanding:
By the end of the study-unit the student will be able to understand the the notion of software quality and how quality can be built into software systems throughout a development life cycle rather than being added on at the end. Whilst understanding individual software development activities from specification through to testing, deployment and maintenance, students will also be able to discuss the characteristics of various software development life cycles as well as understand which life cycles to deploy depending on a particular context. Finally, students will have an in-depth knowledge of system design concepts through design patterns and UML.
By the end of the study-unit the student will be able to competently contribute to the professional development of software systems in a modern environment. The skills which contribute to this overall goal include working in teams whilst adhering to a software development process, utilising version control systems to manage situations where multiple engineers work on the same codebase, utilise test-driven development and continuous integration to maintain confidence in product quality during development, and finally be able to apply design patterns to solve practical problems in object-oriented software design.
Main Text/s and any supplementary readings:
- “Software Engineering – A Practitioner's Approach”latest Ed. by R. Pressman, McGraw Hill.
- “Design Patterns – Elements of Reusable Object-Oriented Software” – Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley.
- “UML Distilled” – Martin Fowler, Pearson Education.
|ADDITIONAL NOTES||Students taking this study-unit are assumed to have knowledge of the material covered in the following study-units:
- CPS1000 or CPS1011;
|STUDY-UNIT TYPE||Lecture and Independent Study|
|METHOD OF ASSESSMENT||
The University makes every effort to ensure that the published Courses Plans, Programmes of Study and Study-Unit information are complete and up-to-date at the time of publication. The University reserves the right to make changes in case errors are detected after publication.
The availability of optional units may be subject to timetabling constraints.
Units not attracting a sufficient number of registrations may be withdrawn without notice.
It should be noted that all the information in the description above applies to study-units available during the academic year 2020/1. It may be subject to change in subsequent years.