This is a 20-credit module delivered in one semester, so expect the work-rate to be twice that as for a 10-credit module. The teaching and learning method is based around 40 hours lectures and 20 hours team-work. Assessments are in addition to this. You will cover two topics per week, each delivered in a 2-hour lecture split into three main segments, with interactive mini-labs in between. These will involve some online polls (please bring your device to the lecture) and some pen-and-paper formative exercises that you will finish outside of the lectures, and for which solutions will appear.
This page is the main source for the lecture slides and other handouts. The content-links have campus-only access (requires sign-in). This page will eventually contain information about the group design project and the individual testing assignment.
Lecture | Contents | Handout |
---|---|---|
01: Software Engineering | Software crisis, software engineering, and choosing a lifecycle model | |
02: Information Security | Security vulnerabilities, countermeasures, policies and legal obligations | |
03: Project Management | Managing customers, perceptions, risks, socio-politics and coordination | |
04: Requirements Modelling | Capturing requirements incrementally using UML use cases | |
05: Interview Role-Play | Realistic developer-customer interaction, with unexpected results | |
06: Information Modelling | Capturing and structuring information using UML class diagrams | |
07: Database Design | Data normalisation using ERM and the UML database profile | |
08: Query Processing | From Relational Algebra to SQL: query processing and indexing | |
09: Java and MySQL | Using Java Database Connectivity (JDBC) with a MySQL database | |
10: Security and Robustness | The four pillars of security and robust design strategies | |
11: Control Flow Design | Specifying control flows and data flow using UML activity diagrams | |
12: State-Based Design | Specifying states and transitions with UML state machine diagrams | |
13: System Design Patterns | Mapping system designs onto object clusters using Design Patterns | |
14: Swing Design Patterns | Building Java Swing user interfaces using Design Patterns | |
15: Formal Systems Design | Formal development approaches and the Object Constraint Language | |
16: Verification and Testing | Formal and informal methods to check for software correctness | |
17: Specifying Code Detail | Specifying detailed coding decisions and method execution in UML | |
18: Architectural Design | System architecture with UML deployment and package diagrams | |
19: Agile Methods and JUnit | From DSDM and SCRUM to Extreme Programming with JUnit testing | |
System Testing in week 11 - no lectures | ||
Reading Week in week 12 - no lectures |
Role-Play | Contents | Use in Session |
---|---|---|
01: Interviewing Skills | Instruction booklet for the Customer-role in the role-play exercise | Monday Week 3 |
Assignment | Description | Deadline |
---|---|---|
All Project Teams | A dynamically-updated list of properly-constituted teams | Available now |
Project Team Sign-Up | A web-form allowing you to sign up as a pair for a team of four | Friday Week 2 |
Systems Design Project | The complete instructions for the group project assignment | Out week 4 |
Resource | Description | Source |
---|---|---|
UML Model Tutor | An automatic grader for UML diagrams of different kinds | Simons, 2023 |
Connector/J Driver | A local copy of the MySQL Connector/J Driver | Oracle, 2021 |
Full Tutorial on OCL | A slide-show systematically introducing OCL with UML | ULB Brussels, 2016 |
Short Tutorial on OCL | Another slide-show introducing OCL with UML | B Beckert, 2014 |
Writing OCL Specifications | A quick-reference guide to writing OCL specifications | AJH Simons, 2006 |