|Prerequisites||CS308 Building Software Systems|
|Availability||Semesters 1 and 2|
|Contact||Lectures: 22 | Tutorials: 0 | Labs: 22
Assignments: 78 | Self study: 78
|Assessment||40% coursework, 60% written examination.|
|Lecturer||Dr Marc Roper | Dr Murray Wood|
Aims and Objectives
- To enable students to understand the challenges of advanced software design and the issues associated with large-scale software architectures, frameworks, patterns and components.
- To develop the students’ understanding of the tools and techniques that may be used for the automatic analysis and evaluation of software.
On completion of the class, a student should be able to:
- understand some of the challenging design issues that software engineers face and the trade-offs associated with the solutions to these.
- understand the principles behind software patterns and be able to apply a number of the fundamental patterns
- understand the need for software architecture and the principles of the classic architectural styles
- understand the issues behind the construction and use of a software framework, and to be able to put this into practice
- understand the major approaches to automated software analysis achievable through static and dynamic analysis
- demonstrate practical competence in the application and construction of tools to support automated software analysis
Software Design: Key design principles and heuristics and trade-offs between these. “Bad smells” and refactoring.
Design Patterns: history, principles and expectations. Ways of using patterns. Detailed study of a number of representative patterns.
Software Architecture: why is architecture important? Classical architectural styles such as pipe and filter, data abstraction or OO based, event-based, etc.
Frameworks: frameworks as reusable chunks of architecture, the framework lifecycle, development using frameworks, detailed study of some well-known frameworks (e.g. HotDraw).
Major approaches to automated evaluation and analysis: dynamic analysis (e,g, testing, debugging, model inference, and visualisation) and static analysis (e.g. call and control graph extractions, metrics calculation, dataflow analysis, type systems, model checking, symbolic execution), and their application and limitations. Construction of tools to support such analysis.
* 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.