Using Software Product Line Engineering in a Small Organisation

In my last post I mentioned some case studies on success stories of software product line engineering in small businesses:

In this post I’m going to have a go through those and cherry pick some highlights from that first one.

Examples of Software Product Lines

Paul Clements certainly likes software product lines:

Software product lines represent perhaps the most exciting paradigm shift in software development since the advent of high-level programming languages. Nowhere else in software engineering have we seen such breathtaking improvements in cost, quality, time to market, and developer productivity, often registering in the order-of-magnitude range. Let me say that again: *often registering in the order-of-magnitude range*. Just to be clear, we are talking about software systems built for around one-tenth the cost. With around one-tenth the faults. Delivered in around one-tenth the time. If you know of another way to achieve such a staggering combination of better-faster-and-cheaper, please let me know.

He works at the Software Engineering Institute at Carnegie Mellon doing stuff with software product lines.

They maintain a list of SPLE case studies of where software product line engineering has been used effectively.

What the Eff Is… Software Product Line Engineering?

There’s something rumbling around in academia at the moment called software product line engineering. It’s used in industry too, though presently mostly by bigger corporations it seems (examples being Siemens, Luthansa, those kinds of big fish.) It hasn’t really crossed over into the mainstream yet, for small-to-medium sized businesses, but there’s some activity going on in that area, and to make it more agile. (Sometimes it can seem a bit Big Design Up Front.)

(I should preface all this by saying I’m by no means an expert. I just happen to be researching into the area.)

So anyway, what is it?

Weekly Bits and Pieces

In lieu of finding time to write full blog posts at the moment, I’m going to at least jot down the micro bits and pieces I make a note of during the week, usually from podcasts I’ve listened to or articles I’ve read.

OpenIDE: A New Hope

Well this just about made my day.

OpenIDE EditorEngine is an open source project maintained by the ContinuousTests team. The purpose of this tool is to provide a basic set of IDE type features around your favorite editor like type search, project file management and more.

There’s a video here.

Updates to Lad

I put in a couple of pulls requests (here and here) to lad for the issues mentioned in my previous post, and the maintainer has pulled them in.

I’m not sure if they’ll be getting bundled into a new release anytime soon, so for now one way to use them is to clone the lad repo and run:

$ rake build
$ sudo rake install

Bootstrapping an ASP.NET MVC4 Project for Mono

I got around to setting up a template solution for ASP.NET MVC4 for Mono on github. You can use this to bootstrap new MVC4 Mono projects (using the unfortunately named strapping-young-lad bootstrapper.)

This setup gives you a way to quickly get going with a new MVC4 project that builds and runs with Mono and XSP4. It’s kind of like doing a file new empty MVC project in Visual Studio.

My primary use case so far is so I can quickly answer MVC questions on stackoverflow without having to reboot into Windows, but hopefully other uses will become apparent…

Libgdiplus Linker Errors for Libglib

I was building libgdiplus (in order to build Mono) on Ubuntu 13.04 and hit the following error during the make step:

Making all in tests
make[2]: Entering directory `/home/neil/monobuild/libgdiplus/tests'
/bin/bash ../libtool --tag=CC   --mode=link gcc  -g -O2 -pthread   -o testgdi testgdi.o ../src/ -lpthread -lfontconfig
libtool: link: gcc -g -O2 -pthread -o .libs/testgdi testgdi.o  ../src/.libs/ -lpthread -lfontconfig -pthread
/usr/bin/ld: testgdi.o: undefined reference to symbol 'g_print'
/usr/bin/ld: note: 'g_print' is defined in DSO /lib/x86_64-linux-gnu/ so try adding it to the linker command line
/lib/x86_64-linux-gnu/ could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

This is on the 2.10.8 tag of libgdiplus from github.

Based on this little snippet related to libgdiplus on Slackware, I was able to fix the error (and a subsequent one for X11) by amending tests/Makefile:

LIBS = -lpthread -lfontconfig -lglib-2.0 -lX11

That allows the build to complete.