Cette citation de Juan Gris, un artiste peintre montre la principale contrainte de toute architecture: le respect des principes liés au domaine d'application de la dite architecture.
Dans le cadre du développement logiciel, les conditions à remplir pour que votre conception soit considérée comme une architecture sont défini par la norme ISO/CEI 9126. Si le rôle d'un architecte logiciel est d'élaborer le plan de construction et de coder les grandes lignes d'architecture d'un système logiciel, sa phase de conception globale doit impérativement prendre en compte les indicateurs de qualité définis par cette norme. Ces indicateurs sont:
- La capacité fonctionnelle : La conformité des fonctionnalités du logiciel avec celles décrites dans le cahier des charges.
- La fiabilité : La faculté du logiciel à gérer correctement ses propres erreurs de fonctionnement en cours d'exécution.
- La portabilité : La possibilité de porter le logiciel sur des plates-formes (machines, systèmes d'exploitation, environnements) différentes.
- Le rendement / L'efficacité : La capacité du logiciel à exploiter au mieux les ressources offertes par la ou les machines hôtes.
- La facilité d'utilisation : La facilité d'apprentissage et d'utilisation du logiciel par les usagers.
- La maintenabilité : La simplicité de correction, de modification et d'extension du logiciel.
De ces six indicateurs, seuls les quatre premiers sont respectés par la plus part des architectes, et croyez moi, c'est uniquement la vision contractuelle du projet logiciel qui limite leur conception. En effet, il est clair qu'en appliquant ces quatre principes (Capacité fonctionnelle, Fiabilité, portabilité et Efficacité) au dépends des deux plus importants et plus compliqués à respecter, le contrat sera rempli, le client sera content, et même, il peut arrivé que l'utilisateur final soit aussi content après la recette (car ses cas d'utilisation marchent). En me basant sur la citation de Juan Gris suscité, je dirai que vous avez construit quelque chose qui marche, mais cette chose n'est pas de l'architecture. C'est le fameux Get It Done(GID) de la plus part des architectes.
Un architecte ne doit pas avoir comme référence le GID, mais plutôt le GIR (Get It Right). Le GIR passe par le respect inconditionnel des différents indicateurs de qualité définis par la norme ISO/CEI 9126 et par ricochet est le fruit d'une architecture basée sur l'humain. Il est évident que tout logiciel est conçu pour être utilisé et potentiellement évolué, L'utilisation et la maintenance (corrective et évolutive) sont en générale effectuées par des humains, autres que vous / votre équipe, d'où le concept de développement centré sur l'humain. Un projet de développement logiciel centré sur l'humain est un projet qui respecte les indicateurs de maintenabilité et de facilité d'utilisation et ne vous trompez pas, car pour réellement respecter ces indicateurs, il ne faut pas se limiter aux techniques de l'ingénieur classique qui vous mèneront directement au GID, il faut avoir le savoir faire, et le savoir être; et idéalement, il faut être un software craftsman.
Alors, vous me direz que tout ceci est beau, mais que la réalité reste le respect du contrat, et moi je vous dirai que vous avez raison. Et c'est tout là l'intérêt de ce post, maintenant que vous avez lu cet article, vous ferez désormais le lien entre qualité de code et conception logiciel, ce qui vous permettra de mieux penser vos estimations de budget.
Toutefois, vous devez savoir, qu'avec l’avènement de nouveaux paradigmes de programmation et principalement celui de la programmation orienté objet, des méthodes de conduite de projet par l'agilité, et de l'artisanat du logiciel, vous pouvez concevoir votre architecture GIR en respectant simplement les principes de bases du design objet. Ce qui fait qu'une bonne maitrise des trois types d'architecture: orientée objet, en couche et distribuée utilisés comme base de départ, peut faire le bonheur de tout architecte logiciel.
--------------------------------------------------
Source: http://blog.kadary.me