Approach to some software engineering terms

by kai on 16/06/2004

To start, I’ll try to introduce some terms and to give some hopefully 😉 helpful sort-of-definitions of often used terms in software engineering – and of sadly often overused terms…

But be careful: All I’m going to write on that topic is strongly influenced by my own point of view in architecting software systems – and be warned, I don’t follow the theoretical how-to’s always – sometimes there are situations you might need to use a more practical solution for a problem… and – I’m not going to give you a lesson in computer science here, I’ll try to stay on the road for practical daily use…Let’s start with patterns:

In software engineering theory a pattern doesn’t have anything to do with real-life code in the first step. It’s more of a document (however) which provides and gives an abstract solution for a often upcoming task in building an architecture or an application.

Depending on which development metaphore you’re talking about (object-oriented, component-based, functional etc.), a pattern description could contain UML diagrams, abstract class descriptions, object or component definitions etc.

So – a pattern should provide a general approach to solve a problem.

The history of patterns started in the early and mid-ninties of the last century with the famous GOF (Gang of Four – E. Gamma, R. Helm, R. Johnson, and J. Vlissides) providing the book “Design Patterns: Elements of Reusable Object-Oriented Software” – I really recommend you to get a copy of it, it’s 100% worth reading.

A famous example for a pattern is MVC (Model-View-Controller) – I’m going to write on that one in one of the next entries.

However, that leads over to pattern frameworks (often just “frameworks“):

A first approach is quite easy – a pattern framework should be a collection of single patterns. But – in my terms – a framework is more of just that. To call something a framework, I’d like to get some sort of methodology with the pattern stuff. That doesn’t have to go so far as – for example Fusebox providing a complete software development process like FLiP.

The other important property in my terms for calling something a framework is that it behaves more applicable and more concrete as a pattern.

For example: Fusebox, Mach II, Struts etc. are web development frameworks.

So far – so good. I’m quite sure, that those “definitions” will call up some people to start a discussion – at least I hope so 🙂 I’m very interested in Martin Heideggers opinion – probably he’ll be the first one to beat me up verbally for some too loosely used terms 🙂

Comments on this entry are closed.

Previous post:

Next post: