logo
Published on developer.* Blogs (http://www.developerdotstar.com/community)

Multidimensional Software Design – Do you agree?

By orlink
Created 2006-09-18 13:22

Business problems solved by software systems are inherently multidimensional with dozens or sometimes hundreds of dimensions and complex relationships among them.

To name just a few basic dimensions: time, number of users, frequency of use, number of transactions processed per hour, transaction size (in bytes, money value, etc), business value of a feature, number of input fields, number of possible field values, network bandwidth, processor speed, uptime level required, hardware failure frequency, etc.

Thus a business problem has a shape/body in a multidimensional space (like a 3-D shape, but in more than three dimensions).

Software Analysis is about determining the multidimensional shape of the business problem and coming up with a streamlined model of it focused only on the significant dimensions and relationships.

Software Design is about coming up with a streamlined multidimensional solution shape to match the problem shape.

Multidimensional thinking is absolutely necessary in this process. Without it one can not envision the true shapes of the problems and solutions and can not separate the significant from the insignificant in them in order to arrive at streamline models.

Thinking that is only logical and linear is impotent when it comes to software design.

Yet, having decent logical thinking ability together with some mathematical ability is considered enough to enter the software development profession.

In the early days programs were more algorithmic, logical and linear than today, as they mostly implemented algorithms to solve scientific problems. Quickly they became much more complex and multidimensional and nowadays we think of them as “software”.

Many have attempted “software engineering”, few have recognized that software development is inherently a DESIGN activity. It is so, because every business problem has its own unique shape in a complex multidimensional space and thus it tends to have an original optimal solution.

Someone once said that the difference between a great design and a good design is an order of magnitude. True multidimensional software design, indeed, typically results in an order of magnitude improvement in terms of project cost, amount of code, available functionality and quality. It is the real key to successful software projects.

There are many methodologies and frameworks aimed at guiding software development towards successful results and avoiding project failures. Not withstanding the many useful principles and rules they advocate, they all fail to address the most fundamental thing about software – its multidimensional nature!

For instance, the number one rule to follow in software projects is to include in the team a software designer with strong multidimensional thinking ability. Right there you have insured an order of magnitude better result. You would then also need someone with fast logic and good attention to detail to insure quality.

Unfortunately people with multidimensional thinking ability are a rare breed. Their number is much less than the number of software development teams out there and this is the main reason for many failed or more often overly expensive, poor quality, inflexible software systems.

Multidimensional design principles underlie most concepts in software development – Object Oriented, design patterns, n-tier and service oriented architectures, etc. etc. They are all solutions to certain multidimensional problem models. These problem models should really be well documented along with the respective solution models in all literature and teaching. Otherwise, as it is common today, many will tend to keep applying the same solutions even for problem shapes that are not anymore matching and arguing alternatives will be difficult.

P.S.
It seems that there are three nice categories of people in regards to spatial thinking - people with fast logical linear thinking (good at logic and algebra), people who in addition think well in 2-D (good at geometry), and people with multidimensional thinking ability (good at 3-D geometry and Physics).


Source URL:
http://www.developerdotstar.com/community/community/node/588