On Saturday 27 September I went to a briefing for a new OU module, TM354 Software Engineering. I have to secretly confess that I was quite looking forward to this event for a number of reasons: I haven’t studied software engineering with the OU (which meant that I was curious), I have good memories of my software engineering classes from my undergraduate days and I also used to do what was loosely called software engineering when I had a job in industry. A big question that I had was: ‘to what extent is it different to the stuff that I studied as an undergrad?’ The answer was: ‘quite a bit was different, but then again, there was quite a bit that was the same too’.
I remember my old undergrad lecturer introducing software engineering by saying something like, ‘this module covers all the important computer stuff that isn’t in any of the other modules’. It seemed like an incredibly simple description (and one that is also a bit controversial), but it is one that has stuck in my mind. In my mind, software engineering is a whole lot more than just being other stuff.
This blog post summary of the event is mostly intended for the tutors who came along to the day, but I hope it might be useful for anyone else who might be interested in either studying or tutoring the module. There’s information about the module structure, something about the software that we use, and also something about the scheduling of the tutorials.
Module structure
TM354 has three blocks, which are also printed books. These are: Block 1 – from domain to requirements, Block 2 – from analysis to design, and Block 3 – from architecture to product. An important aspect to the module is a set of case studies. The module is also supported by a module website and, interestingly, a software tool called ShareSpace that enables students to share different sketches or designs. (This is a version of a tool that has been used in other modules such as U101, the undergraduate design module, and T174, an introduction to engineering module).
Block 1 : from domain to requirements
Each block contains a bunch of units. The first unit is entitled ‘approaches to software development’, which, I believe, draws a distinction between plan driven software development and agile software development. I’ve also noted down the phrase ‘modelling with software engineering’. It’s great to see agile mentioned in this block, as well as modelling. When I worked in industry as a developer, we used bits of both.
The second unit is called requirements concepts. This covers functional requirements, non-functional (I’m guessing this is things like ‘compatibility with existing systems’ and ‘maintainability’ – but I could be wrong, since I’ve not been through the module materials yet), testing, and what and how to document. Another note I’ve made is: ‘perspectives on agile documentation’.
Unit three is from domain modelling to requirements. Apparently this is all about business rules and processes, and capturing requirements with use cases. Prototyping is also mentioned. (These are both terms that would be familiar with students who have taken the M364 Interaction Design module). Unit four is all about the case study (of which I have to confess that I don’t know anything about!)
Block 2: from analysis to design
Unit five is about structural modelling of domain versus the solution. Unit six is about dynamic modelling, which includes design by contract. Unfortunately, my notes were getting a bit weak at this point, but I seem to remember thinking, ‘ahh… I wonder if this relates to the way that I used to put assertions in my code when I was a coder’. This introduction was piquing my interest.
Unit seven was entitled, ‘more dynamic modelling’, specifically covering states and activities, and capturing complex interactions. Apparently the black art of ‘state machines’ are also covered in this bit. (In my undergrad days, state machine were only covered in the completely baffling programming languages course) . Unit eight then moves onto the second part of the case study which might contain domain modelling, analysis and design.
Block 3: from architecture to product
This block jumped out at me as being the most interesting (but this reflects my own interests). Unit nine was about ‘architecture, patterns and reuse’. Architecture and requirements, I’ve noted, ‘go hand in hand’. In this section there’s something about architectural views and reuse in the small and reuse in the large. During the briefing there was a discussion about architectural styles, frameworks and software design patterns.
When I was an undergrad, software patterns hadn’t been discovered yet. It’s great to see them in this module, since they are a really important subject. I used to tell people that patterns are like sets of abstractions that allow people to talk about software. I think everyone who is a serious software developer should know something about patterns.
Unit ten seems to take a wider perspective, talking about ‘building blocks and enterprise architectures’. Other topics include component based development, services and service oriented architectures (which is a topic that is touched upon in another module, and also potentially the forthcoming TM352 module that covers cloud computing).
Unit eleven is about quality, verification, metrics and testing. My undergrad module contained loads of material on metrics and reliability, and testing was covered only in a fairly theoretical way, but I understand that test-driven development is covered in this module (which is a topic that is linked to agile methods). I’ll be interested to look at the metrics bit when this bit of the module is finalised.
The final unit takes us back to the case study. Apparently we look at architectural views and patterns. Apparently there are also a set of further topics that are looked. I’m guessing that students might well have to go digging for papers in the OU’s huge on-line library.
Software
I’ve mentioned ShareSpace, which is all about sharing of software models with other students (modelling is an important skill), to enable students to gain experience of group work and to see what other students are doing and creating: software development invariably happens in teams. Another important bit of software is an open source IDE (integrated development environment) called NetBeans. I’m not sure how NetBeans is going to be used in this module, but it is used across a number of different OU modules, so it should be familiar to some TM354 students.
Assessment
TM354 comprises of three tutor marked assignments, a formative quiz at the end of every unit (that students are strongly encouraged to complete), and an end of module exam. The exam comprises of two parts: a part that has questions about concepts, and a second bit that contains longer questions (I can’t say any more than this, since I don’t know what the exam looks like!)
Tutorials
Each tutor is required to deliver two hours of face to face tuition, and eight hours of on-line sessions through OU Live (as far as I understand). In the London region, we have three tutors, so what we’re doing is we’re having all the groups come to the same events and we’re having each tutor deliver a face to face session to support students through every block and every TMA.
We’re also planning on explicitly scheduling six hours of OU Live time, leaving two hours that the tutor can use at his or her discretion throughout the module (so, if there are a group of students who struggle with concepts such as metrics, design by contract, or patterns, a couple of short ad-hoc sessions can be scheduled).
All the OU Live sessions will be presented through a regional OU Live room. This means that students in one tutor group can visit a session that is delivered by another London tutor. The benefit of explicitly scheduling these sessions in advance is that all these events are presented within the student’s module calendar (so they can’t say that they didn’t know about them!) All these plans are roughly in line with the new tuition strategy policy that is coming from the higher levels of the university. A final thought regarding the on-line sessions is that it is recommended that tutors record them, so students can listen to the events (and potentially go through subjects that they find difficult) after an event has taken place.
A final note that I’ve made in my notebook is ‘tutorial resources sharing (thread to share)’. This is connected to a tutor’s forum that all TM354 tutors should have access to. I think there should be a thread somewhere that is all about the sharing of both on-line and off-line (face to face) tutorial resources.