HomeNews and blogs hub

Introducing the Software Engineering Support Centre

Bookmark this page Bookmarked

Introducing the Software Engineering Support Centre

Author(s)

David Worth

Posted on 20 September 2013

Estimated read time: 6 min
Sections in this article
Share on blog/article:
Twitter LinkedIn

Introducing the Software Engineering Support Centre

Posted by s.hettrick on 20 September 2013 - 1:34pm

SoftEngC.png

A new centre was launched recently by the group who run CCPForge (a collaborative software development environment tool for the Collaborative Computational Projects). The Software Engineering Support Centre (SESC) - an EPSRC funded project -  aims to work with researchers and help bring software engineering to the heart of research software. Here at the Institute, we're great advocates of software engineering being taken seriously in research: it is a fundamental part of building sustainable software. For this reason, we asked David Worth - project manager at SESC - to provide us with an overview of the group's work.

Software Engineering is coming to research software. If you cringe at the thought, don’t worry, the Software Engineering Support Centre is here to help you get started. You may believe it’s already come, that’s great, the Software Engineering Support Centre is here to help you go further.

In this blog post I’ll say why I think software engineering is a good thing for research computing and how SESC can help you with your software development process.

Software Engineering – a good thing

First of all we should say what software engineering is. This is not a hard and fast, text book definition it’s just one we can work with for now. Software Engineering is:

The use of processes and associated tools to write good quality software that produces excellent scientific results

The processes we are thinking of need not be tedious and long-winded but having a process or processes for different tasks will help organise your work and keep development under control. Using tools to help with the processes saves time and means it is easy to keep a consistent method of working for yourself and new developers. There are also tools to measure the quality of your software and help you build and test its correctness. The figure above shows the elements that are traditionally included in software engineering and how these form a basis for our thinking. It looks like a waterfall with one stage leading neatly to the next but we know that’s not how things happen in practice. Development is an iterative process with a variety of time scales and different level of detail required at each stage.

Now, why is software engineering a good thing?

It’s good for you as a scientist or developer and it’s good for funding bodies. Let’s get the latter out of the way first. Funders increasingly need more impact (urgh) from less cash. They don’t want to be paying people to re-implement existing software; they want new stuff built on what’s already available. Of course research software development provides many of these building blocks and for them to be of good quality and sustainable requires software engineering. It doesn’t have to be heavy but enough to demonstrate that you have done a good job and make your software easy for others to re-use or extend.

Now we come to the selfish part! I want my software to be used by as many people as possible and I want it to help me build my career. To achieve these aims I need to have confidence that it will work when others use it and be ready to extend and adapt the software or let others do it. These are not claims I could make about the software I wrote for my PhD. Having confidence in software means knowing it does what it was designed to do, that it gets the correct answers and understanding its limitations. All this is down to software engineering – requirements, design, implementation, testing, and documentation in whatever form they take. Just so long as they are available to others. Neither last-minute brain dumps nor ESP work in my experience – write things up as you go along. All this information will be invaluable when it comes to re-using your software whether as a component in some larger scheme or by extending its functionality. And, even if you’re the only one working on the software, don’t be fooled into thinking that you’ll remember all the details. Painful experience says that’s not true.

Software Engineering Support Centre

The Software Engineering Support Centre (SESC) is a five-year EPSRC funded project with the aim of promoting software engineering in the UK research software community. We provide information, advice and training on practical software engineering tools and techniques through reports, tutorials, hands-on workshops and seminars.

We have experience in helping developers in computational science improve their development process, testing and documentation with the use of simple tools such as revision control for their files, coverage testing and systems to extract code comments as documentation.

One of the major components of SESC is the CCPForge service a collaborative development environment for the UK scientific software community and their collaborators. CCPForge provides the following for registered projects:

  • Revision control for files with CVS, Subversion git, bazaar and Mercurial
  • Software release downloads for source or pre-compiled versions
  • Flexible licensing of software
  • User forums for help from other users and developer discussions
  • Tracking of support and feature requests
  • Traditional mailing lists
  • Task managements
  • Documentation repository
  • Flexible access control to information based on roles

Training and dissemination of ideas is important to us and we:

  • Run hands-on workshops for tools to give users an insight in to what the tools offer
  • Give seminars on SESC, practical software engineering, software quality, testing among other topics
  • Prepare tutorials, HowTo guides, tool review reports which are available from the web site
  • Hold meetings so people interested in the software engineering of their code can get together and share experiences and learn from others

Future plans

The stand-out features for the future are:

  • Enhanced CCPForge service – on-line access to QA tools for projects – share results with colleagues to aid collaborative software improvement.
  • Buildbot service – run tests of your code on a number of platforms (including your own) with a range of compilers, libraries etc and get a summary of the test results on-line.
  • QA tools server – access to advanced software engineering quality assurance tools to check your software and identify areas for improvement.

We’ll also be canvasing the views of the research software development community as we build up the work that SESC does. For more information you can visit our website or to discuss how we can support you please contact me.
 

Share on blog/article:
Twitter LinkedIn