CM1202: Developing Quality Software

School Cardiff School of Computer Science and Informatics
Department Code COMSC
Module Code CM1202
External Subject Code I300
Number of Credits 20
Level L4
Language of Delivery English
Module Leader Miss Helen Phillips
Semester Double Semester
Academic Year 2019/0

Outline Description of Module

This module introduces Software Engineering principles and practices that are needed to develop software-intensive systems. Students will work in a team on a software development project involving group and individual tasks. They will gain practical experience of project management skills and performing key technical tasks in the software development lifecycle.


On completion of the module a student should be able to

1. Understand the importance of the fundamental Software Engineering concepts, principles and practices.
2. Show an understanding of how to plan and manage a project through the effective use of a variety of tools and techniques
3. Gain an appreciation of how the main stages in the software development lifecycle contribute to the development of a high-quality software system by performing key technical tasks from each stage of the project including:
 i) Specify appropriate functional and non-functional requirements & design a system using appropriate use of models to meet a given problem.
ii) Create a prototype system to demonstrate how some of the main requirements can be implemented
 iii) Develop a set of test cases to demonstrate how the system can be validated
4 Evaluate techniques used in project management and the technical tasks involved in each stage of the development lifecycle
5. Demonstrate an awareness of the nature of professional bodies and relevant codes of ethics and professional conduct
6. Reflect on their experience of working in a team and their individual contributions to the project
7. Present their work to the customer

How the module will be delivered

The module will be delivered through a combination of traditional lectures and flipped class teaching with supervised lab sessions, example classes and tutorials as appropriate.

Skills that will be practised and developed

Project Planning and Time Management
Requirements specification
Software construction and testing
Using IDEs to write, structure, refactor, build and test code
Systems modelling
Team working & Communications Skills
Presentation skills
Defending your work
Using version control software to collaborate on a project


How the module will be assessed

During this module, the students will, in teams, develop an application to demonstrate their understanding and ability to implement in practice a range of skills and techniques covered in our sessions.
There will be four points of assessment in the module:
(1) Teams will be required to develop a requirement specification for a larger scale software project and develop a Risk assessment. This piece of work will assess their knowledge and ability to elicit requirements, undertake design and assess the risk of managing the project. (LO1, LO3i).
(2) Teams will be required to develop UML designs plus a risk assessment. (LO2, LO3i)
(3) Teams will be required to develop and test the system taking into consideration Quality characteristics. (LO2, LO3ii, LO3iii, LO7)
(4) Write an individual report reflection on their experience of working in a team, managing and developing a large software project. (LO4, LO5, LO6)

All four assessments will allow the student to demonstrate their knowledge and practical skills and to apply the principles taught in lectures.

Students will be provided with reassessment opportunities in line with University regulations.

Assessment Breakdown

Type % Title Duration(hrs)
Report 40 Individual Reflective Report N/A
Presentation 30 Software Development N/A
Written Assessment 15 Identifying User Requirements N/A
Written Assessment 15 Uml And Risk Assessment N/A

Syllabus content

The need for Software Engineering – the software crisis
Software Development Methodologies including Waterfall Model and Agile Development
          Software Development Lifecycle
          Analysing, & specifying requirements for software systems
          Software Design
          Software Implementation: Modularity, Usability, Programming Style, Defensive
          Using software (IDEs) to write, refactor, test and run code
          Software Testing & Validation
          Decommissioning of information systems
An introduction to Project management
         Project tracking and team communication (Kanban, Scrum, Slack)
         Balance of time, resource and quality
         Using version control software to collaborate on aspects of a project (code/documentation)
         Nature of professional bodies
         Relevant codes of ethics and professional conduct.
         Legal requirements e.g. data protection, intellectual property rights
Unified Modelling Language
         Class diagrams
         Use case diagrams


Essential Reading and Resource List

There is no single text that covers the full syllabus for this module.

Background Reading and Resource List

There is no single text that covers the full syllabus for this module, the books below contain useful reference sections. They can be found in the University Library.
 Software Engineering , 10th Ed,  Ian Sommerville, Addison-Wesley Longman, 2011
Software Engineering: a Practitioner's Approach – 7th Ed,  Roger S. Pressman, McGraw-Hill Publishing Company, 2010
Software Engineering: Principles & Practice, 3rd Ed, Hans van Vliet, Wiley & Sons, 2008
UML Distilled, Fowler M, Scott K, Addison-Wesley, 3rd edition, 2003,
Applying UML and Patterns, An introduction to Object Oriented Analysis and Design and the Unified Process, 2nd Edition, C.Larman, Prentice Hall, 2002,
The Unified Modelling Language User Guide, Booch G, Rumbaugh J, Jacobson I, Addison-Wesley, 2nd edition, 2005
UML 2.0 in a Nutshell By Dan Pilone, Neil Pitman, Publisher: O'Reilly Media Released:June 2005
Learning UML 2.0, Hamilton O'Reilly 2006



Copyright Cardiff University. Registered charity no. 1136855