OU blog

Personal Blogs

Christopher Douce

Exploring TM354 Software Engineering

Visible to anyone in the world

Over the last year I’ve taken over as the incoming module chair for TM354 Software Engineering, taking over from Leonor Barroca, who has done a brilliant job ever since the module was launched back in 2014. I first learnt about TM354 through a module briefing which took place in September 2014.

What follows is a summary of the various elements that can be found within the TM354 module website. I’ve written this blog whilst wearing my ‘tutor hat’; to help students who are new to this module.

It goes without saying that two of the most important elements are, of course, the module calendar, and the assessment page which provides access to all the TMAs. One thing that I tend to do whenever I study a module is to get a printout of each of the TMAs, using the ‘view as single page’ option, just so I get an early idea about what I have coming up. You should also take some time to review the module guide and the accessibility guide.

Key resources: the blocks

TM354 is based around three printed blocks which can also be downloaded as PDFs by visiting the resources tab:

  • Block 1: Units 1-4 From domain to requirements
  • Block 2: Units 5-8 From analysis to design
  • Block 3: Units 9-12: From architecture to product

Complementing these blocks is, of course, the module glossary, which can be accessed through the resources pages.

In OU modules, the glossary is pretty important. It presents the module team’s definition of key terms. If there is an exam or an EMA question which calls for a definition, you should always draw on terms that are defined by the glossary. A practical tip is: do spend time looking at and going through the module glossary.

Software

There are three bits of software that you will need to use, and the first of these is optional:

A sketching tool: In your TMAs you will be required to draw some sketches using a graphical language called the unified modelling language (UML). UML is a really useful communication tool. It can be used to depict the static structure of software (which bits it contains), and the dynamic interaction between components (which is how they are used with each other). How you draw your diagrams is completely up to you. You can draw a sketch by hand, draw a sketch using the tools that you have in your word processor, or you can download a tool to help you. My recommendation is to use a tool that specifically helps you to draw UML diagrams. This way, the software gives you a bit of help, saving you time (although you have to spend a bit of time learning a tool). I use a tool called Visual Paradigm, which is available under a student licence, but other tools, such as UMLet might be useful. There are a lot of tools available, but if you’re pressured for time, a pencil, ruler and paper, and digital photograph will be sufficient.

ShareSpace: this is an OU tool which you will use to share some of your software designs with fellow students. Software engineering is a team sport. ShareSpace is used to simulate the sharing and collaboration between fellow software engineers. As well as posting your sketches, you will be asked to comment on the design of fellow students. When you leave comments, you will be able to see comments about your own design.

NetBeans: Netbeans is an integrated development environment; a tool for developing software. You will use Netbeans in the final block of the module to look at, and change some software code that relates to design patterns. If you’re familiar with other development environments, such as IntelliJ, or even BlueJ (from earlier studies with M250) you could use those instead.

Forums

The module has a number of forums. A practical recommendation is to subscribe to each of these, so you are sent email copies of the messages that are posted to them. 

There is a module forum, where you can ask questions about the module, and a forum for each of the TMAs. You can use these TMA forums to ask questions about the assessments if you’re unclear about what you need to do. Do bear in mind that the moderator can only offer guidance and might direct you towards relevant bits of the module materials.

There is a tutor group forum, where you can interact with your TM354 tutor. Your tutor may well share some materials through this forum, so it is important that you subscribe to it, or check it from time to time.

There is what is called a ‘online tutorial forum’. Tutorials are run in clusters. What this means is that groups of tutors work together to offer a programme of tutorials (which are sometimes known as learning events). These tutors will use this forum to share resources that relate to their tutorials. They may, for example, post copies of PowerPoint presentations that formed the basis of their tutorials, which may contain useful notes in the notes section of each slide.

Finally, there is the café forum. This is an informal area to chat with fellow students about TM354 and OU study. This area isn’t extensively monitored by the forum moderator.

One thing to note is that sometimes the names of these forum areas can and do change. The names of the forums here might not be the names of the forums that you have on your module website.

Study guides

Although most of the module materials are available through the printed blocks, there are some important elements of the module that are only available online. Within the module calendar, you will see study guide pages. To make sure you go through each of these. Sometimes, these guides are presented along side other accompanying online resources that you need to work through to answer some of the TMA questions.

Resources pages

The Resources pages (which is sometimes known as the resources tab) is a place that collates everything together: all the guides (module, accessibility and software guides), PDF versions of the blocks, online version of each of the units (which can be found within each of the blocks), and any additional resources that need to be studied:

  • Choosing closed-box test cases
  • Monoliths versus microservices
  • Introducing Jakarta EE
  • Implementing use cases

Towards the bottom of this page, there is a link to a zip file which contains some source code that is used with TMA 3, along with some NetBeans software installation instructions.

The final bit of the Resources pages that I would like to emphasise is the Download link, which can be found on the right hand side of the page. Through this link, you can access all the module resources in different formats. You can, for example, download some of the media files onto your mobile device for you to review later, or you can download ePub versions of all the study guides and units onto an e-reader.

iCMAs

TM354 also has a set of interactive marked assessments (iCMAs). These are designed to help you to learn and to remember some of the key module concepts. The iCMAs do not formally contribute to your overall assessment result.

Tutorials

Before my final section, I’ll say something about tutorials. Do try to attend as many as you can. There are tutorials that introduce you to each of the block, and help to guide you through what is required for the TMAs. There are also a series of exam revision tutorials. Do try to attend as many as you can, since different tutors will present ideas in different ways.

Reflections

There is quite a lot to TM354; there are a lot of resources, which take a lot of reading. To familiarise myself with the materials I’ve taken an incremental approach: studying a bit at a time. Although the printed blocks are central to the module, it is important to pay attention to the online materials too.

My biggest tips are:

  • Get a printout of the module guide.
  • Get a printout of each of the TMAs.
  • Make sure that you thoroughly read the module guide. You might want to get a printout of this too.
  • Do remember to regularly refer to the module glossary. These definitions are important.
  • Attend as many tutorials as you can.

Permalink Add your comment
Share post
Christopher Douce

TM470 Considering software requirements

Visible to anyone in the world
Edited by Christopher Douce, Thursday, 11 Apr 2024, 09:30

If your TM470 project is all about the developing software to solve a problem, requirements are really important. Requirements are all about specifying what needs to be built and what software needs to do. A good set of requirements will also enable you to decide whether or not your software development has been successful. They can help you to answer the question: “does it do what we expect it to do?” There is a direct link between requirements and testing.

The exact nature of your requirements will depend on the nature of your project. There are different types of requirements. Two high level types of requirements are: functional requirements and non-functional requirements. Modules such as TM354 Software Engineering provide some further information about the different types and categories, and different aspects you might want to consider. 

One thing that you need to decide on is: how to you write down your requirements? The decisions that you take will, of course, relate to what your project is all about. Some projects will need formal approaches, perhaps using Volere shells, whereas other projects may use something like use case diagrams. If your project is interaction design heavy, your requirements may be embodied with artefacts such as sketches, prototypes, scenarios and personas. To learn more about these different approaches, you need to refer back to the module materials for some of the modules you have studied. You should also consider having a look in the OU library to see what you can find.

There is also, of course, also a link between your chosen project model, and your choice of requirements. Stakeholders are also of fundamental importance: you need to know who to speak with to uncover what your requirements are. You need to make a decision about how to record your requirements, and justify why you have adopted a particular approach. Different people will, of course, understand requirements in different ways. How you speak to fellow software engineers will be different to how you speak to end users.

I recently listened to a really interesting podcast about requirements engineering from something called Software Engineering Radio, which is associated with the IEEE Software magazine. Here's a link to the podcast: Software Requirements Essentials: SE Radio 604 Karl Wiegers and Candase Hokanson.

Although this is just over an hour (and I know everyone is busy), it is worth a listen.

Some key themes and topics addressed in this podcast includes:

  • What do requirements mean?
  • What is requirements elicitation?
  • How can requirements be presented? Or, what is does a requirement specification look like?
  • Do users know what they need?
  • How much requirements analysis is needed?

The podcast concludes with a question which begins: what tips would you share for someone who is involved with an ongoing project? (The answer to this question is very pragmatic)

Reflections

An interesting reflection (and comment that emerged from this podcast) is that the requirements approach that you adopt relates to the risks that are inherent within your project, and the implications of any potential software failures. This, in turn, is linked to the LSEP issues which are starting to be explored within your TM470 TMA 2.

When you are addressing requirements, you can highlight different requirement gathering approaches in your literature review. Do use module materials that you have previously studied as a jumping off point to do some further reading about the subject by looking at resources you can find in the OU library, but do be mindful about getting sucked into various ‘rabbit holes’; requirements engineering is a subject all of its own. When it comes to your TM470 project, you need to make practical decisions, and justify your decisions.

Permalink Add your comment
Share post
Christopher Douce

Preparing to chair TM354 Software Engineering

Visible to anyone in the world

Over the years I’ve had a connection with a number of Computing modules. I started as a tutor on M364, which then became TM356. When I became a staff tutor, I joined the TM352 for a short period of time, where I made a couple of very minor contributions, and TT284, where I offered some suggestions about web development frameworks. Most recently, I’ve been helping behind the scenes on TM112.

In the coming months, I’m going to be taking over the chairing TM354 Software Engineering. This module closely aligns with some of my long standing research interests. When I was a doctoral student, I studied the maintenance of object-oriented software, during which I looked at the subject of software metrics, where I made a very tiny contribution to the area. After completing all my studies, I worked in industry for a number of years, before returning to the university sector.

In September 2014, I attended a TM354 module briefing, where I wrote a quick summary of all the main components of the module. Since the briefing, I understand that the module has gradually changed and evolved over time.

From time to time, I shall be writing blog posts as an incoming module chair.

Figuring everything out

After a handover meeting, I have the following questions and the following tasks. 

I should add that I have mostly answered some of these questions:

  • Who do I need to speak to, to get things done? I know our curriculum manager, and fellow members of the module team, but there might well be other people who I need to know about.
  • What are the key dates and times by which things need to be done? I think I’ve seen a seen a document that contains the title ‘schedule’.
  • What are the biggest issues and challenges that immediately need to be dealt with? There is a lot going on at the moment in the university; I need to know what to prioritise.
  • What bits of software do I need to know about, and where should I go to find everything out?

Here are my immediate tasks. I have started some of them, but I need to work on others:

  • Acquaint myself with the module guide, assessment guide and accessibility guide.
  • Read all the module materials carefully (there is module mailing that is likely to be coming to me over the next couple of days)
  • Go through all the software engineering textbooks the outgoing module chair has left me.
  • Review all the assessment materials; the exams, the TMAs and and iCMAs.
  • Look at how the module makes use of Open Design Studio.
  • Listen to or watch any podcasts or videos that are used within the module.
  • Identify the file store or file areas that everyone uses to carry out assessment authoring.
  • Learn how much time every module team member has allocated to the module.

Reflections

I view TM354 as a really important level 3 module.

It is also a really interesting subject, since it links many different subjects together. On one hand, software engineering is quite a technical subject. On the other, it is about people and organisations; creating software is an intrinsically human activity. Software engineering processes and tools help to guide, manage and often magnify the creative contributions that people make to the development of software.

I would like to publicly acknowledge the contribution and efforts of our outgoing module chair, Leonor Barroca, who has worked on the module since the first presentation.

Permalink Add your comment
Share post
Christopher Douce

TM354 Software Engineering: briefing

Visible to anyone in the world
Edited by Christopher Douce, Monday, 11 Sep 2023, 16:27

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.

Permalink Add your comment
Share post

This blog might contain posts that are only visible to logged-in users, or where only logged-in users can comment. If you have an account on the system, please log in for full access.

Total visits to this blog: 2021892