We’ve just handed in our group coursework for Software Engineering and Professional Practice at the University of Birmingham. The module is about everything that goes into software before and around the code: requirements, design in UML, architecture, testing and prototyping. The coursework was to come up with an app for a smart city and take it through all of them.
My group had seven people, and for most of the project I was the scrum master. I ran the schedule, checked in on everyone’s progress and kept us to it, and worked out who should do what. I helped across the whole report. I was in charge of the use case diagram, which I drew in draw.io, and did part of the requirements analysis and the testing write-up. I helped guide everyone through the diagrams built on the use cases, and I made the prototype in Balsamiq and the video that pitches it.
We made Klyp, an app for locking up your own bike in town. You put your bike in a docking unit, it shows a one-time password and a QR code, and you type in one or scan the other, and your bike’s locked in until you come back, undock it and pay.
1Find The app shows the free units.
2Dock The unit shows a password and a QR code.
3Lock Enter one or scan the other.
4Undock Undock it in the app, and pay.
Here are some of the diagrams we drew for it. They’re simplified to fit here: the real ones were a lot bigger.
At first UML felt strange. I kept wondering whether systems are really organised like this, and why anyone would draw them this way. It made more sense once I saw it’s the thinking I’d do before building an app anyway. The hard part is that nothing gets built, so nothing tells you where you’ve assumed wrong.
They also all have to agree, since they’re the same system from different angles. We agreed a set of names to use in all of them, but everything sits on the requirements and the use cases, and those kept changing, so diagrams we’d finished had to be redrawn. Plenty took several goes.
At the start of term I couldn’t read most of these. Now I still can’t. I’m joking, I can, but it took me a long time to get my head round what they’re for. They don’t turn one-to-one into code. They’re there so the engineers understand the system.