Une approche pragmatique pour mesurer la qualité des applications à base de composants logiciels. (A pragmatic approach to measure the quality of Component-Based Software Applications)

Ces dernieres annees, de nombreuses entreprises ont introduit la technologie orientee composant dans leurs developpements logiciels. Le paradigme composant, qui prone l’assemblage de briques logiciels autonomes et reutilisables, est en effet une proposition interessante pour diminuer les couts de developpement et de maintenance tout en augmentant la qualite des applications. Dans ce paradigme, comme dans tous les autres, les architectes et les developpeurs doivent pouvoir evaluer au plus tot la qualite de ce qu’ils produisent, en particulier tout au long du processus de conception et de codage. Les metriques sur le code sont des outils indispensables pour ce faire. Elles permettent, dans une certaine mesure, de predire la qualite « externe » d’un composant ou d’une architecture en cours de codage. Diverses propositions de metriques ont ete faites dans la litterature specifiquement pour le monde composant. Malheureusement, aucune des metriques proposees n’a fait l’objet d’une etude serieuse quant a leur completude, leur cohesion et surtout quant a leur aptitude a predire la qualite externe des artefacts developpes. Pire encore, l’absence de prise en charge de ces metriques par les outils d’analyse de code du marche rend impossible leur usage industriel. En l’etat, la prediction de maniere quantitative et « a priori » de la qualite de leurs developpements est impossible. Le risque est donc important d’une augmentation des couts consecutive a la decouverte tardive de defauts. Dans le cadre de cette these, je propose une reponse pragmatique a ce probleme. Partant du constat qu’une grande partie des frameworks industriels reposent sur la technologie orientee objet, j’ai etudie la possibilite d’utiliser certaines des metriques de codes "classiques", non propres au monde composant, pour evaluer les applications a base de composants. Parmi les metriques existantes, j’ai identifie un sous-ensemble d’entre elles qui, en s’interpretant et en s’appliquant a certains niveaux de granularite, peuvent potentiellement donner des indications sur le respect par les developpeurs et les architectes des grands principes de l’ingenierie logicielle, en particulier sur le couplage et la cohesion. Ces deux principes sont en effet a l’origine meme du paradigme composant. Ce sous-ensemble devait etre egalement susceptible de representer toutes les facettes d’une application orientee composant : vue interne d’un composant, son interface et vue compositionnelle au travers l’architecture. Cette suite de metrique, identifiee a la main, a ete ensuite appliquee sur 10 applications OSGi open- source afin de s’assurer, par une etude de leur distribution, qu’elle vehiculait effectivement pour le monde composant une information pertinente. J’ai ensuite construit des modeles predictifs de proprietes qualite externes partant de ces metriques internes : reutilisation, defaillance, etc. J’ai decide de construire des modeles qui permettent de predire l’existence et la frequence des defauts et les bugs. Pour ce faire, je me suis basee sur des donnees externes provenant de l’historique des modifications et des bugs d’un panel de 6 gros projets OSGi matures (avec une periode de maintenance de plusieurs annees). Plusieurs outils statistiques ont ete mis en œuvre pour la construction des modeles, notamment l’analyse en composantes principales et la regression logistique multivariee. Cette etude a montre qu’il est possible de prevoir avec ces modeles 80% a 92% de composants frequemment bugges avec des rappels allant de 89% a 98%, selon le projet evalue. Les modeles destines a prevoir l’existence d’un defaut sont moins fiables que le premier type de modele. Ce travail de these confirme ainsi l’interet « pratique » d’user de metriques communes et bien outillees pour mesurer au plus tot la qualite des applications dans le monde composant.