Having defined the scope of the Ideal Software Architecture (ISA), it's time first to make a list to Santa Claus of what will be nice to have in computer science.
Wish N°1 – plug and play generalized.
An old dream to begin, connect a computing unit as easily as we connect any device, like a washing machine or a telephone, and it is ready to run. In other words, all the needed things are either embedded or come from the connections.
This usability should not be limited to some kind of devices like powerful computers or to any proprietary technology. This requirement therefore applies from the smallest “wearable” device to the most powerful computer.
Wish N°2 – distribution.
The world, the universe is not centralized. They don't have center. Any attempt to ignore this fact in an ideal architecture will fail. Of course I am not saying that some centralized architectures can't be built, mainframe and big data systems are proof of the contrary. My point is that an ideal architecture cannot be centralized because the reality is not like that, else it is not ideal.
To illustrate this, just thinks that behind a centralized access, big data systems are often themselves distributed…
This requirement in particular means that the disjunction between desktop and remote applications have to be dropped. The real disjunction is the following : An acces to the remote resources is it available or not ?
It also means that spatial/horizontal distribution (scale out) is preferred first to pure velocity/vertical scaling (scale up).
Distributed computing and storage have to be at the heart of ISA in order to adhere to the reality. Like as I often say, if you stick to the concept, every thing goes better for now and the future (performance, resilience, resource usage, scalability, flexibility, etc.).
Wish N°3 – intrinsic securisation.
The security concerns must be addressed by the base infrastructure of ISA. This means that authentication and crypting, that are the two pilars of security have to be a) incorporated at the lowest level of abstraction and b) absolutly sure.
The a) requirement takes into account that security is rather costly in development projects for often discutable results. So putting the security in the lowest technological layers is certainly the best place to address both of these problems.
The b) requirement is motivated by the often necessary confidentiality of exchanges between individuals, groups and machines (paiement, private correspondence, restricted community, etc.) in a world where burglars and spies are so commons.
Wish N°4 – be both static and dynamic.
Statics and dynamics have pros and cons :
- Static often offers the efficiency, an easiest use and the robustness. It can also be an answer to scaling problems (static pool of threads). But on the other hand it is also rigid, difficult to make evolve and often doesn't scale well.
- Dynamics offers simplicity and flexibility. It scale well in most cases. It is also more fragile (errors discovered at runtime), it lacks of structure and of warranties on which to rely on.
An ideal architecture shouldn't have to choose. It has to incorporate gracefully both statics and dynamics in an unified world.
Wish N°5 – simple and freed of experts.
Many of todays technologies require very experienced experts in particular fields. Exemple : Needs for a Java expert, but also Spring X, Y expert, but also JPA, but also versions C, D and E, and also over JBoss, etc. Many similar examples exist on the system administration, the data bases and others.
One goal of ISA is to be simple and uniform enough in order to be at least freed of geeks and of constraints coming from exploitation.
All of this is not only in our hands : the adoption of ISA as a norm is not the least condition. However make things as simple and uniformisables as possible must be targeted.
Wish N°6 – Modern, performant and durable.
Take into account today technologies and rely on them to make the Ideal Software Architecture. Think and design it to be durable to several decades.
This means for instance that most of todays computers are 64 bits, that networks and mobility are widely deployed, that the Internet Of Things is now coming, and so on. Also, the actual practices, experiences and technologies are of course good inspiration sources for an ideal architecture : either for taking the best options or to avoid the worst ones.
Wish N°7 – life cycle foundations and ground floor.
ISA should provide the foundations to support the software life cycle. The foundations mean that all life cycle steps should be addressed by a set of artefacts. This artefacts must be gracefully incorporated in the architecture in order to be consistents, and even better unified.
The “ground floor” relates to basic functionalities offered by ISA to its major types of users. This level of course relies on the foundations above. The most of these functions could be customizable and replaceable.
This kind of structure and of behavior around software life cycle are generally not or poorly managed by real world base architectures and languages. The use of external tools, of framework and of specific practices are often required. ISA should offer a basic common management for specification, design, test, delivery and the like.
Wish N°8 – Use existing technologies when acceptable.
Despite the base approach of ISA, that is to be designed independently of existing technologies, if any of them appears to offer an acceptable support for a given item, there is no reason to reinvent another one.
So optionally if an existing technology is a good candidate to be an ISA part and that it meets all the requirements above, then it should be retained.