Friday, April 23, 2010

Designing Large Scale Software Systems for Change

Today's software systems are of a complexity we can hardly manage. Even harder than just maintaining a system is adopting the system to new market needs. Changing an existing system is nearly impossible. Let's explore why.

One of the most important thing for designing a large scale software system is an up-to-date overview of all Business Objects an their relations. For an even deeper understanding, Business Objects need to be categorized by Business Classes. Designing a Service Oriented Architecture, Business Classes and their relationship might be as follows:

Using conventional programming technique, we have to implement the Business Object using classes. Say we do have 10 different services, we do need at least 10 different classes representing these services.

Anytime a new service is implemented as a class, the Service Concept gets cemented a little more. Having implemented dozens of services, nobody can even think of touching the underlying concept.

The problem seems to be easy to understand:

  • Every concept is a directive how to build some things
  • Changing the concept enforces the change of every built thing
Having built lots of things already, changing the concept will get more and more expensive.
The basic idea of actifsource is very simple:

  • Implement every concept only once
At a first glance, this sounds impossible. But we can achieve this by providing one generic implementation. The tedious work of implementing the concept over and over again can be let to your computer. That's what machine can do best!

  • Every implementation of a concept has to be done only once as a generic implementation
  • Specific implementations can now be generated
  • Changing the concepts only leads to the change of one single implementation
  • Therefore changing concepts becomes cheap

No comments:

Post a Comment