SDM: Software Design and Modelling
Welcome to Software Design and Modelling
Learning Outcomes
On successful completion of this course, you should be able to:
- design simple object-oriented systems.
- create, read and modify UML diagrams documenting designs, both on paper and in an appropriate tool.
- determine whether a UML model and a body of Java code are consistent; if they are inconsistent, identify the inconsistencies precisely and propose remedies.
- evaluate and evolve object-oriented software designs, making use of common design patterns if appropriate.
- discuss the use of modelling and model-driven development tools in software development, e.g. why and how models of software can have varying degrees of formality, capabilities and limitations of the tools.
Course Outline
The course begins by placing design and modelling in the context of the various software engineering processes in widespread use today. Via labs, lectures and self-study using readings, videos and formative exercises, it teaches students to produce (initially straightforward) designs and to document them using UML models, both on paper and with an appropriate tool. We discuss the different affordances of these modes and how models may be used (i) purely informally, (ii) as reviewed documentation for designs, and/or (iii) in model-driven development in which models are formal artefacts and code may be generated from them.
The second part of the course focuses on identifying and producing good designs. What principles should a good object-oriented design follow? We learn some common design patterns and their role in development and learning.
Finally we turn to practical model-driven development: how can the cost-benefit ratio of modelling be improved, now and potentially in the future? Students will learn about model transformations, both model-to-model and model-to-text (e.g., code generation) and be introduced to current tools supporting these. We discuss the role of domain specific languages and the integration of model driven development with agile processes. Throughout the course, we identify the deficiencies as well as the benefits of the fast-changing state of the art, aiming to equip students to critically evaluate tools and techniques that become available to them in future.
Frequently Asked Questions (FAQs)
Q: I've never learned any UML, should I do this course?
A: You can, but you need to pay particular attention to the "revision" readings and videos in Week 1, which will be new material for you.
Q: I've never learned any Java, should I do this course?
A: If you are thoroughly fluent in a closely related language such as C++ or C#, you may (you'll need to do a bit of work to pick up basic Java, but that should be straightforward if you already know a closely related language); otherwise, no, I don't recommend it.
Q: Isn't there any coursework?
A: There will be no for-credit coursework.
Q: What's the 50% that's not exam then?
A: As explained in the intro talk, it's a "lab assessment", checking that you've got the first part of the course material, before we build on it in the second half of the course. This is done in a physical lab in the scheduled lab slot. Keep up with the course and you will be fine.
Q: Which parts of the material are examinable?
A: Everything that doesn't explicitly say Optional - that includes in particular lectures, readings, skills videos, labs. Moreover, remember that the university's common marking scheme expects me only to give marks in the upper ranges to students who have gone beyond the required materials.
Q: I have a clash with the discussion session, and/or with the scheduled lab. Can I still do the course?
A: You absolutely must be available for the scheduled lab session of Week 6, when we do the lab assessment. The other lab sessions can be done in your own time and this is likely to work ok, provided that you are proactive enough to discuss on Piazza anything you have difficulty with (don't just skip the labs, they do contain examinable material!). Missing the discussion sessions is more problematic - they are intended to be interactive and to respond to whatever comes up, so in many ways they are the most interesting parts of the course, and although I don't deliberately present examinable material only in a discussion session, it may be hard to learn the examinable material thoroughly enough without them. These sessions will not be recorded - watching recordings wouldn't work anyway. If you can't come, I'd suggest reconsidering whether you want to do this course.