Benefits
The computer science, the Information Technologies are complicated by themselves. But it so over complicated by technological stratification, by the “least of time to go to market” mantra, by “do it quick and dirty” asked by executives, by the monopoles, by the exponential avalanche of new technologies (the important word here is new, which does not means better).
However, a lot of long term successful companies have put quality at the first rank : think to german cars, to japanese products or at Apple. But let say it is not the majority case in our industry…
This ecosystem allocates many many rooms for geeks and experts of all kind. This is a chance for them, because most of domains in which they excel , are just a new declination of existing concepts on a most recent technology: ” a more modern one”. A new version of the same thing with enough specificities for disqualifying the older geeks and experts.
One of firsts motivation of ISA is to unify the architecture and to make it simple in order to eliminate these useless “expertise”.
So all the elements, the components, the technologies, the concepts, the paradigms, that are not needed or useful to elaborate ISA will not be retained. One of the key principles of ISA is to introduce a break with the existent. Thus this architecture is free to make its choices. In other words, compatibility with actual IT is not a concern for ISA. This primary option eliminates the niches for geeks and experts.
On the other hand, making things simple is not so simple !
But :
- The uniformity in way of doing things resulting in a common architecture, greatly simplifies the systems. It also render systems integration much easiest.
This conceptual integrity, this consistency means that ISA should only allows one way to do one thing. - Not be prisoner of existing profusion of technologies is more simple. In contrast, take advantage of well established technologies, of durable and efficient ones, is also simpler than reinvent the wheel.
- On the other hand, an attentive selection of the concepts, of the paradigms is very important for simplicity. So they must be selected carefully in order to be accessible for most people. Therefore, compromises have to be made between simplicity and efficiency (for instance in the language world between the simplicity of PHP and basic HTML and the power of C++ or of the functional languages).
- The automation has to be incorporated as soon as possible. Autoconfiguration (and above all prefer convention over configuration), auto-tuning, auto-alloc/free, etc. should be incorporated in ISA without impacts negatively on performance, on availability and applicability (and preferably promote these properties).
An other important benefit of incorporating many design patterns, of simplification and standardisation is the drastic decreasing of code with low added value (glue code, Objet-relational Mapping, services data mapping, data replication, basic user interface rendering, etc.). This will eliminate the need for a large panel of developers. This reduction, in turn, will greatly influence the process of making software in a way to focus much more on what are the requirements and the functionalities the software should satisfy. In one word : the end of the developer centric approach.
At last, making things simple can also be done by following the common world usual conventions. For exemple, by finishing sentences by a point (not a semicolon), start numbering by 1 (not by 0), etc.
Benefits list :
- Simplicity.
- Automatisation at design, build and run times.
- Increased speed and reduced cost for construction and exploitation.
- End the developers oriented process and focused on glue technologies.
- Freed from ivory tower of software developers.
- Freed of the inertness of administrators.
- Follow the common world conventions.
Challenges
Have an objective approach to select technologies, concepts and paradigms. This suppose before all to establish a big picture of the Ideal Software Architecture. And also to define a very reduced set of paradigms on which ISA relies. All of that in accordance with the wishes exposed here.
Study the concepts and existing technologies for all the components required by ISA.
Pay attention to evolutivity. Do not oversimplify or engrave in stone things that could change. For instance do not set an exchange speed in a connectivity protocol allow (+simple -flexible) and therefore put up negociation mechanism (-simple +flexible). Evolutivity could be set by establishing a base and by allowing extensions. Caution : Not opening a door where the geeks could rushing to denormalize ISA by forks and extensions proliferation.
The ISA evolutivity also means that several levels of maturity should be supported for individuals, small and big size organisations to answer their own usage.
Make it simple stupid!
Kill the developers centric process.