CM1202: Developing Quality Software
School | Cardiff School of Computer Science and Informatics |
Department Code | COMSC |
Module Code | CM1202 |
External Subject Code | 100374 |
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) |
---|---|---|---|
Presentation | 30 | Software Development | N/A |
Written Assessment | 15 | Identifying User Requirements | N/A |
Report | 40 | Individual Reflective Report | 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
Testing
Programming
Using software (IDEs) to write, refactor, test and run code
Software Testing & Validation
Decommissioning of information systems
An introduction to Project management
Representation:
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)
Professionalism
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