By Peter Bell

Software Product Lines

I’ve been busy building the framework, but since software product lines came up in the previous post, I figured it would be a good time to return to some core application generation concepts so they’d be in place when we started to get into cool stuff like decision support systems and declarative meta-programming later in the year!

What is a software product line? It is a real, proven approach to code reuse across similar applications. Like OO compared to procedural programming, a product line is a little more work upfront, but it will typically pay for itself within 2-4 applications. Without software product lines to cover our most frequent use cases, we would be unable to hit the kind of application generation levels we’re already achieving at SystemsForge (my day job :->) . . .

Components are not reusable across applications – there is simply too much coupling in even the best designed applications. Maybe you can reuse packages (sets of related components), but typically the functionality required from a package varies too much between applications (different attributes, business rules, validations, etc.).

With a software product line, you design upfront for variability – not within an application, but across multiple applications and use a combination of dynamic design patterns, configuration metadata (XML or databased) and application generation to generate project specific code bases from a single set of master templates.

As always, the challenge is to create elegant variation points and to develop sufficiently expressive but simple domain specific languages, but the benefit is the complete elimination of cutting and pasting and the ability to allow your clients (or interns :->) to build all but the truly custom parts of each application.

Microsoft is doing a lot of (in my opinion misguided) work in this space under the title of Software Factories, but look out for an explosion of approaches to improving efficiency in software development and reuse over the next 2-3 years, and start to think about how you could automate the variability of code between your applications. My goal is to provide a full set of tools and tutorials to allow CF developers to start building their own software product lines over the next few months.

Related Blog Entries

Comments
BlogCFC was created by Raymond Camden. This blog is running version 5.005.