There are several manifestations of architecture. All architecture is a construction, but all construction is not architecture. For a construction, a mental, material, visual or acoustic construction to be an architecture, it must meet certain conditions.
This quote from Juan Gris, a painter, shows the main constraint of any architecture: respect for the principles related to the field of application of said architecture.
As part of the logical development, the conditions for your design to be considered an architecture are defined by the standard ISO / IEC 9126. If the role of a software architect is to develop the construction plan and to code the broad architectural lines of a software system, its overall design phase must imperatively take into account the quality indicators defined by this standard.
These indicators are:
- Functional capacity: The conformity of the software functionalities with those described in the specifications.
- Reliability: The ability of the software to correctly handle its operating errors during execution.
- Portability: The ability to port the software to different platforms (machines, operating systems, environments).
- Performance / Efficiency: The software’s ability to make the most of the resources offered by the host machine (s).
- Ease of use: The ease of learning and use of the software by users.
- Maintainability: The simplicity of correcting, modifying, and extending the software.
Of these six indicators, only the first four are respected by most architects and believe me, it is only the contractual vision of the software project that limits their design. Indeed, it is clear that by applying these four principles (Functional Capacity, Reliability, Portability, and Efficiency) at the expense of the two most important and more complicated to respect, the contract will be fulfilled, the customer will be happy, and even, it can also happen that the end-user is also happy after the recipe (because his use cases work). Based on the quote from Juan Gris raised, I will say that you have built something that works, but that thing is not architecture. This is the famous Get It Done (GID) from most architects.
An architect should not have as a reference the GID, but rather the GIR (Get It Right). The IRM requires unconditional respect for different quality indicators defined by the standard ISO / IEC 9126 and in turn, is the result of human-based architecture. It is obvious that all software is designed to be used and potentially evolved, Use and maintenance (corrective and evolutionary) are generally carried out by humans, other than you/your team, hence the concept of development centered on the human. A human-centered software development project is a project that respects the indicators of maintainability and ease of use and makes no mistake because to respect these indicators, you must not be limited to the techniques of the engineer classic which will lead you directly to the GID, you must have the know-how, and the know-how; and ideally, you have to be a software craftsman.
So you will tell that all this is beautiful, but that the reality is respect for the contract, and we’ll tell you that you are right. And that’s all the point of this post, now that you’ve read this article, you will now make the connection between code quality and software design, which will allow you to better think about your budget estimates.
However, you should know that with the advent of new programming paradigms and mainly that of object-oriented programming, reactive programming, methods of project management by agility, software craftsmanship, you can design your IRM architecture while respecting the values and principles advocated by these paradigms.