Jibe - Concepts

Introduction
Component Based Development
Extreme Programming

Introduction 

As mentioned in the introduction, Jibe is a combination of ideas, concepts and tools and is meant to provide a solution to build, test and release your software as well as keep the codebase, the versioning process and the collection of releases manageable. To provide you an insight into the ideas we had (and got) while developing Jibe we'll give you a short explanation of some of the concepts and ideas used.

Extreme Programming (XP) 

'Extreme Programming (XP) is actually a deliberate and disciplined approach to software development', according to www.extremeprogramming.org. What, in my opinion is the perfect thing about XP is the fact that you can choose from the XP elements whatever you want. We at SmartHaven are not working directly for customers all the time, but still we incorperate lots of XP concepts in our software development process. Below a couple of rules and practices that might help you get a clear picture about XP (more information about those rules and practices can be found at www.extremeprogramming.org

@todo LINK TO EXAMPLES

Component Based Development (CBD) 

'About 70% of all software development will be done on a component based basis, by the end of 2003' is what I read in a Gartner report last February (2002). Well, numbers can be thrown around by anybody, but it is a known fact that reusable and component based software has proven itself. To be able to design and develop reusable software you've got to have a decent design strategy that you apply to all your designs. To give you a simple idea about such a design strategy, below a some rules-of-thumb can be found that apply to our design strategy:

@todo LINK TO EXAMPLES

Component Based Building 

If you're doing Component Based Development, it's a small step to building, testing and assembling your software in the same module, component based way. Because you're applied the correct design strategies and haven't created circular dependencies it'll be a piece of cake to build, test and assemble the various combination of the elements you've developed. In this process we basically use the same layering process, that of modules, components and (web)applications. The web is put between braces on purpose here, because it don't necessarily have to be webapplications.

This layered approach to doing the build, test, assembly and release process is incorperated into Jibe.

@todo LINK TO EXAMPLES

The BuildMeister

We believe in a strong division between the two roles of on the one hand the developer and on the other hand the build and release 'managers'. Placing the responsibility of maintaining the release process with a small group of people (often called the buildmeisters) creates a consistent approach to building your software. All modules, all applications and all components are treated in the same way, i.e. the way the buildmeister has come up with. Giving the developers control over how their software is build, can only deliver you unpredictable behavior, impossiblities in your release process etc.

Using a templating mechanism with a couple of predefined possibilities for the developer to do additional stuff, you can keep the behavior of our build process predictable, thus increasing the quality of your software.

@todo LINK TO EXAMPLES

Continuous Integration

The concept of continuous integration states that integrating your software into usable application(s) should happen as often as possible (if, at least, changes have been made to the codebase).