S3 – Architecture logicielle

L’architecture logicielle décrit d’une manière symbolique et schématique les différents éléments d’un ou de plusieurs systèmes informatiques, leurs interrelations et leurs interactions. Contrairement aux spécifications produites par l’analyse fonctionnelle, le modèle d’architecture, produit lors de la phase de conception, ne décrit pas ce que doit réaliser un système informatique mais plutôt comment il doit être conçu de manière à répondre aux spécifications. L’analyse décrit le « quoi faire » alors que l’architecture décrit le « comment le faire ».

La phase de conception logicielle est l’équivalent, en informatique, à la phase de conception en ingénierie traditionnelle (mécanique, civile ou électrique); cette phase consiste à réaliser entièrement le produit sous une forme abstraite avant la production effective. Par contre, la nature immatérielle du logiciel (modelé dans l’information et non dans la matière), rend la frontière entre l’architecture et le produit beaucoup plus floue que dans l’ingénierie traditionnelle. L’utilisation d’outils CASE (Computer-aided software engineering) ou bien la production de l’architecture à partir du code lui-même et de la documentation système permettent de mettre en évidence le lien étroit entre l’architecture et le produit.

L’architecture logicielle constitue le plus gros livrable d’un processus logiciel après le produit (le logiciel lui-même). En effet, la phase de conception devrait consommer autour de 40 %[1] de l’effort total de développement et devrait être supérieure ou égale, en effort, à la phase de codage mais il peut être moindre. L’effort dépend grandement du type de logiciel développé, de l’expertise de l’équipe de développement, du taux de réutilisation et du processus logiciel.

Les deux objectifs principaux de toute architecture logicielle sont la réduction des coûts et l’augmentation de la qualité du logiciel; la réduction des coûts est principalement réalisée par la réutilisation de composants logiciels et par la diminution du temps de maintenance (correction d’erreurs et adaptation du logiciel). La qualité, par contre, se trouve distribuée à travers plusieurs critères; la norme ISO 9126 est un exemple d’un tel ensemble de critères.