Vous êtes sur la page 1sur 12

Cours Installation et maintenance des logiciels ISESTMA

2021

Chapitre I :

Rappel des concepts du Génie Logiciel

Introduction

A la même vitesse que la taille et la complexité des systèmes informatiques s’accroissent,


les exigences et attentes des organismes à l’égard des logiciels deviennent problématiques. En effet,
l’intérêt apporté par les premiers programmes malheureusement écrits par des programmeurs
travaillant seuls et pour leur propre utilisation, motiva les experts à faire de la production logicielle
non plus seulement une affaire pour les programmeurs isolés mais d’équipe. Ainsi, avec
l’augmentation de la complexité des projets logiciels, les équipes aussi ont rapidement grandis et
un nouveau besoin a fait surface : l’amélioration de la gestion de ces projets informatiques.
Cependant, en plus du coût très élevé de production logiciel par rapport au coût du matériel,
s’ajoute le déclin de la qualité des produits logiciels et les échecs spectaculaires de beaucoup de
projets, l’on assiste donc dans les années 1960 à ce qui s’est appelé la crise logicielle. En réponse
donc aux 2 problématiques engendrées par les logiciels à savoir :
✓ Comment produire des logiciels (Cycle de vie) ?
✓ Qu’attend-on réellement d’un logiciel (critère de qualité) ?
Est né lors de la Conférence de l’OTAN 1968 (Organisation de traité de l’Atlantique Nord) à
Garmish en Allemagne la discipline du « Génie logiciel » ou « Software Engineering ». Rappelons
que cette expression fût prononcée par la mathématicienne et informaticienne Margaret Hamilton
auteur du système embarqué lié au programme Apollo (Ce sont des systèmes réactifs en interaction
permanente avec leur environnement, dans le but de les contrôler).
Le génie logiciel est considéré comme un domaine scientifique de l’ingénierie axé sur l’ensemble
des activités visant à la rationalisation, la production et le suivit du logiciel jusqu’à sa disparition.
Cette discipline est une réponse aux défis posés par la complexification des logiciels et de l'activité
qui vise à les produire.

I. Principes du génie logiciel et les caractéristiques du logiciel


1. Définition des concepts
1.1. Le logiciel
« Le logiciel est l'ensemble des programmes, procédés et règles, et éventuellement de la
documentation, relatifs au fonctionnement d'un ensemble de traitements de l'information »
(arrêté du 22 déc. 1981).

Proposé par M. DIFFOUO TAZO Evariste Page 4


Cours Installation et maintenance des logiciels ISESTMA
2021

Autrement dit, un logiciel est un ensemble d’entités nécessaires au fonctionnement d’un processus
de traitement automatique de l’information (Conf Génie Logiciel Avancé, Stefano Zacchiroli
Laboratoire PPS, Février 2011). Parmi ces entités, on retrouve :
Des programmes (en format code source ou exécutables) ;
La documentation (des informations de configuration, guide d’utilisation) ;
Des contrôleurs matériels (opérations d’interactions avec le matériel).
Les logiciels en effet déterminent les tâches précises que peuvent effectuer la machine pour lui
procurer son utilité fonctionnelle. Les séquences d’instructions qu’accomplissent de façon unique
chacune de ces tâches sont appelées programmes et sont ordinairement structurées en fichiers.
Donc : Logiciel = programme + documentation

i. Catégories de logiciels
En pratique on distingue deux principales catégories de logiciels : les logiciels applicatifs et les
logiciels système.
Les logiciels système sont destinés à effectuer des opérations viables en rapport immédiat
avec le matériel informatique. Un logiciel système est l’interface de communication entre le
matériel et les autres logiciels. Il facilite l’indépendance entre les logiciels applicatifs vis-à-vis du
matériel. (Exemples : les Systèmes d’exploitation ; les logiciels embarqués (bios)…)
Les logiciels applicatifs sont destinés à aider les utilisateurs à effectuer certaines tâches
complémentaires à celles qu’offrent les logiciels systèmes. On y retrouve :
- Les logiciels utilitaires : outils d’administration systèmes (SGBD…), de sécurités
(antivirus), les outils de bureautiques… ;
- Les outils de développement d’application (Dreamever, eclipse, Windev…) ;
- Les SGBD (Oracle, PostgreSQL; SQL Server, MySQL…).

x
Machine/composants Logiciels Logiciels
matériels système d’application

ii. les types de logiciels


Plusieurs types de logiciel existe :
✓ Logiciels commerciaux ou propriétaires

Proposé par M. DIFFOUO TAZO Evariste Page 5


Cours Installation et maintenance des logiciels ISESTMA
2021

✓ Les sharewares qui sont des logiciels d’essaies mis à disposition gratuitement pour essaie
pendant une durée définit mais payant pour une utilisation régulière après période d’essai. La
licence de ces logiciels peut être distribué aux tiers utilisateurs.
✓ Les freewares mis à disposition gratuitement et peuvent être librement utilisé sans contribution
✓ Les logiciels libres ou Open sources qui sont fournis avec leurs codes sources pour
d’éventuelle modification par le public.

1.2.Le génie logiciel


Dans chaque métier de l’ingénierie, s’applique des principes, des méthodes, des outils dont la mise
en commun crée un consommable satisfaisant à sa cible. Le génie logiciel (software engineering)
constitue ce métier de l’informatique où sont appliqués des principes d’ingénierie nécessaires à la
création ou production des logiciels. C’est dans ce sens que Stefano Zacchiroli (Conf Génie
Logiciel Avancé Laboratoire PPS, Février 2011) définit Le génie logiciel comme un domaine des
sciences de l’ingénieur dont l’objet d’étude est la conception, la fabrication et la maintenance des
systèmes informatiques. Autrement dit, Le génie logiciel est l’ensemble des activités de conception
et de mise en oeuvre des produits et des procédures tendant à rationaliser la production du logiciel
et son suivi (Source : Wikipédia).

i. Enjeux du Génie logiciel

Un enjeu peut être considéré comme un ensemble des risques encourus


par un développeur pour la mise en œuvre d’un logiciel. Le génie logiciel vise à
rationaliser et à optimiser le processus de production d'un logiciel. Les enjeux associés
sont multiples :
Adéquation aux besoins du client ;
Respect des délais de réalisation prévus ;
Maximisation des performances et de la fiabilité ;
Facilitation de la maintenance et des évolutions ultérieures.
Comme tout projet, la réalisation d'un logiciel est soumise à des exigences contradictoires et
difficilement conciliables (triangle coût-délai-qualité).
La qualité d'un logiciel peut s'évaluer à partir d'un ensemble de facteurs tels que :
Le logiciel répond-il aux besoins exprimés ?
Le logiciel demande-t-il peu d'efforts pour évoluer aux regards de nouveaux besoins ?
Le logiciel peut-il facilement être transféré d'une plate-forme à une autre ? ...

Proposé par M. DIFFOUO TAZO Evariste Page 6


Cours Installation et maintenance des logiciels ISESTMA
2021

ii. Les besoins du génie logiciel

Les besoins du génie logiciel sont dû au taux de changement plus élevé des
besoins des utilisateurs et de l'environnement sur lequel le logiciel fonctionne. Ce sont des
besoins de coûts (prix) ; de gestion de qualité ; d’évolutivité ; de nature dynamique et de gros
logiciel.

2. Les qualités ou les caractéristiques d’un logiciel

La qualité est l’ensemble des caractéristiques intrinsèques d’une entité qui lui confèrent
l’aptitude à satisfaire des besoins exprimés par des futurs utilisateurs (AFNOR Juillet 1982).
Pour qu’un logiciel soit de qualité, celui-ci doit intégrer des caractéristiques bien définies afin
de répondre aux attentes du client.
La caractéristique d’un logiciel est un ensemble de traits dominants ou l’expression de la
correspondance entre une cause (grandeur d’entrée) et un effet (grandeur de sortie) dans la
production ou le processus de développement des logiciels. Un produit logiciel doit évaluer en
fonction de ce qu'il offre et de sa facilité d'utilisation. Un bon logiciel doit satisfaire les 3
catégories de critères suivants :
Critères généraux ; Critères externes ; Critères internes.

2.1.Les critères généraux

Les critères généraux sont en somme, des principes et éléments de référence qui
permettent de juger ; d’estimer et de vérifier régulièrement si le processus de développement
d’un logiciel possède ou non les différentes propriétés déterminées. Cette catégorie peut se
matérialiser selon 3 différents processus (aspects) :
Opérationnel : Cela nous indique dans quelle mesure le logiciel fonctionne bien dans les
opérations. Ces opérations peuvent être mesurées entre autres part : budgétisation, facilité
d’utilisation, efficacité, exactitude, fonctionnalité, fiabilité, sécurité.
Proposé par M. DIFFOUO TAZO Evariste Page 7
Cours Installation et maintenance des logiciels ISESTMA
2021

Transitionnel : Cet aspect est important lorsque le logiciel est déplacé d'une plate-forme à
une autre : Portabilité, Interopérabilité, Réutilisation et Adaptabilité.
Maintenance : Cet aspect explique comment un logiciel a la capacité de se maintenir dans
une infrastructure et environnement en constante évolution : maintenabilité, modularité,
Flexibilité et Évolutivité.

2.2.Les critères externes : front office (côtés utilisateur)

Les critères externes expriment ce qu’est un bon logiciel du point de vue des utilisateurs. Un
logiciel de qualité doit être :

Fiabilité : (correction, justesse et conformité) : le logiciel est conforme à ses


spéciations, les résultats sont ceux attendus ;
Robustesse et Sureté :(dysfonctionnements ou ne plante pas) : le logiciel fonctionne
raisonnablement en toutes circonstances, rien de catastrophique ne peut survenir, même en
dehors des conditions d'utilisation prévues ;
Efficacité : (Le logiciel fait-il bon usage de ses ressources, en termes d’espace mémoire et
temps d’exécution) ;
Convivialité et Utilisabilité : (Est-il facile et agréable à utiliser) ;
Documentable : (accompagné d’un manuel utilisateur, ou d’un tutoriel) ;
Ergonomique : L’architecture du logiciel doit particulièrement êt re adaptée aux
conditions de travail de l’utilisateur ;
Sécurité : c’est la sûreté (assurance) et la garantie offerte par un logiciel, ou
l’absence du danger lors de l’exploitation du logiciel ;
Adéquation et validité : c’est la conformité au maquettage du logiciel et au but
qu’on se propose ;

Proposé par M. DIFFOUO TAZO Evariste Page 8


Cours Installation et maintenance des logiciels ISESTMA
2021

Intégrité : c’est l’état d’un logiciel a conservé sans altération ses qualités et son
degré originel. Autrement dit, C’est l’aptitude d’un logiciel à protéger son code et ses
données contre des accès non autorisé.

2.3.Les critères interne (Côté concepteur) : back office

Les critères de qualité internes expriment ce qu’est un bon logiciel du point de vue du
développeur. Ces critères sont essentiellement liés à la maintenance d’un logiciel. Un bon
logiciel doit être facile à maintenir, et pour cela doit être :

Documentable : (a-t-il été précédé par un document de conception ou architecture) ;


Lisibilité et Clarté : (est-il écrit proprement, et en respectant les conventions de
programmation) ;
Portabilité : Un même logiciel doit pouvoir fonctionner sur plusieurs machines ainsi le
rendre indépendant de son environnement d'exécution ;
Extensibilité : (est-il souple ou flexible ? ou permet-il l’ajout possible de nouvelles
fonctionnalités) ;
Réutilisabilité : (des parties peuvent être réutilisées pour développer d’autres logiciels
similaires) ;
Interopérabilité et coulabilité : Un logiciel doit pouvoir interagir en synergie avec
d'autres logiciels ;
Traçabilité : c’est la possibilité de suivre un produit aux différents stades de sa
production, de sa transformation et de sa commercialisation ;
Testabilité et vérifiabilité : c’est la possibilité de soumettre un logiciel à une
épreuve de confirmation de la tâche à exécuter.

Proposé par M. DIFFOUO TAZO Evariste Page 9


Cours Installation et maintenance des logiciels ISESTMA
2021

3. Les principes du génie logiciel

Un certain nombre de grands principes (de bon sens) se retrouvent dans toutes ces méthodes.
En voici une liste proposée par Ghezzi dans son ouvrage « Fundamentals of Software
Engineering » Prentice Hall, 2nd Edition, 2002.

3.1. La rigueur
Les principales sources de défaillances d’un logiciel sont d’origine humaine. À tout moment, il
faut se questionner sur la validité de son action. Des outils de vérification accompagnant le
développement peuvent aider à réduire les erreurs. Cette famille d’outils s’appelle (CASE
“Computer Aided Software Engineering”). C’est par exemple : typeurs, générateurs de code,
assistants de preuves, générateurs de tests, outil d’intégration continue, . . .

3.2. La généralisation
C’est le regroupement d'un ensemble de fonctionnalités semblables en une fonctionnalité
paramétrable.

3.3. La structuration
La Structuration est la manière de décomposer un logiciel (utilisation d'une méthode bottom-up
ou top-down). C’est la décomposition des problèmes en sous problèmes indépendants. Outre,
Il s’agit de la Décorrélation. Les problèmes pour n’en traiter qu’un seul à la fois. Ou de la
Simplification. Les problèmes (temporairement) pour aborder leur complexité progressivement.
C’est par exemple : le modèle TCP.

3.4. La modularité
Il s’agit de partitionner le logiciel en modules qui ont une cohérence interne (des invariants) ;
et possèdent une interface ne divulguant sur le contenu du module que ce qui est strictement
nécessaire aux modules clients. L’évolution de l’interface est indépendante de celle de
l’implémentation du module. Les choix d’implémentation sont indépendants de l’utilisation du
module. Ce mécanisme s’appelle le camouflage de l’information (information hiding).

3.5. L’abstraction
Il s’agit de présenter des concepts généraux regroupant un certain nombre de cas particuliers et
de raisonner sur ces concepts généraux plutôt que sur chacun des cas particuliers. Le fait de
fixer la bonne granularité de détails permet de raisonner plus efficacement et de factoriser le
travail en instanciant le raisonnement général sur chaque cas particulier. C’est par exemple : les

Proposé par M. DIFFOUO TAZO Evariste Page 10


Cours Installation et maintenance des logiciels ISESTMA
2021

classes abstraites dans les langages à objets, le polymorphisme de Caml et le generics de


Java, les foncteurs de Caml et le templates de C++, . . .

3.6. La documentation
La Documentation : correspond à la gestion des documents incluant leur identification,
acquisition, production, stockage et distribution. Il est primordial de prévoir les évolutions
possibles d’un logiciel pour que la maintenance soit la plus efficace possible. Pour cela, il faut
s’assurer que les modifications à e ffectuer soient le plus locales possibles. Ces modifications
ne devraient pas être intrusives car les modifications du produit existant remettent en cause ses
précédentes validations. Concevoir un système suffisamment riche pour que l’on puisse le
modifier incrémentalement est l’idéal.

3.7. La vérification
C’est la détermination du respect des spéciations établies sur la base des besoins identités dans
la phase précédente du cycle de vie.

II. Le cycle de vie et les modèles de développement du logiciel


1. Les étapes du cycle de vie de développement du logiciel

De par sa définition, Le Cycle de vie du développement d’un logiciel est un ensemble d’étapes
de la réalisation, de l’énoncé des besoins à la maintenance au retrait du logiciel sur le marché
informatique. De façon générale, on peut dire que le cycle de vie du logiciel est la période de
temps s’étalant du début à la fin du processus du logiciel. Il commence donc avec a proposition
ou la décision de développer un logiciel et se termine avec sa mise hors service.

Le développement de logiciel impose d’effectuer un certain nombre d’étapes. Il existe de


nombreux modèles de cycle de vie du développement d’un logiciel, les plus courants
comportent les phases suivantes :
La communication : C’est la première étape du cycle de vie de développement logiciel
où l’utilisateur initie la demande du produit logiciel souhaité.
La collection des exigences : Cette étape fait avancer le travail de l’équipe du
développement du logiciel jusqu’à la visibilité du projet informatique. A ce niveau,
l’équipe de développement discute avec certains partenaires des divers problèmes du
domaine et essaie de proposer autant d’informations possibles sur les différentes

Proposé par M. DIFFOUO TAZO Evariste Page 11


Cours Installation et maintenance des logiciels ISESTMA
2021

exigences. A ce niveau, les exigences sont contemplées et isolées en fonction des


besoins des utilisateurs ; les exigences du système et les exigences fonctionnelles
L’étude du préalable (faisabilité ou opportunité) : Elle comprend à la fois des aspects
techniques et de gestion. Cette phase a comme objectif de répondre aux questions
suivantes : Pourquoi développer le logiciel ? Comment procéder pour faire ce
développement ? Quels moyens faut-il mettre en œuvre ?
Définition et analyse de besoins (Spécification) : Lors de la phase d’analyse, également
appelée phase de spécification, on analyse les besoins de l’utilisateur ou du système
englobant et on définit ce que le logiciel devra faire. Le résultat de la phase d’analyse
est consigné dans un document appelé « cahier des charges du logiciel ou spécification
du logiciel ».
La conception du logiciel : La phase d’analyse est suivie de la phase de conception,
généralement décomposée en deux phases successives :
Conception générale ou conception architecturale : Si nécessaire, il faut
commencer par l’ébauche de plusieurs variantes de solutions et choisir celle qui offre le meilleur
rapport entre coûts et avantages. Il faut ensuite figer la solution retenue, la décrire et la détailler.
Conception détaillée : La conception détaillée affine la conception générale. Elle
commence par décomposer les entités découvertes lors de la conception générale en entités plus
élémentaires. Cette décomposition doit être poursuivie jusqu’au niveau où les entités sont
faciles à implémenter et à tester.

Le codage : Après la conception détaillée, on peut passer à la phase de codage,


également appelée phase de construction, phase de réalisation ou phase
d’implémentation. Lors de cette phase, la conception détaillée est traduite dans un
langage de programmation.
Les tests : Durant cette phase, les composants du logiciel sont évalués et intégrés, et le
logiciel lui-même est évalué pour déterminer s’il satisfait la spécification élaborée lors
de la phase d’analyse. Cette phase est en général subdivisée en pl usieurs phases.
L’intégration et l’installation : Après avoir effectué avec succès la phase des tests de
tous les composants, on peut procéder à leur assemblage, qui est effectué pendant la
phase d’intégration. Après avoir intégré le logiciel, on peut l’installer dans son
environnement d’exploitation, ou dans un environnement qui simule cet environnement

Proposé par M. DIFFOUO TAZO Evariste Page 12


Cours Installation et maintenance des logiciels ISESTMA
2021

d’exploitation, et le tester pour s’assurer qu’il se comporte comme requis dans la


spécification élaborée lors de la phase d’analyse.
La maintenance : Après l’installation suit la phase d’exploitation et de maintenance .
Le logiciel est maintenant déployé dans son environnement opérationnel, son
comportement est surveillé et, si nécessaire, il est modifié. Cette dernière activité
s’appelle la maintenance du logiciel. Il peut être nécessaire de modifier le logiciel pour
corriger des défauts, pour améliorer ses performances ou autres caractéristiques, pour
adapter le logiciel à un nouvel environnement ou pour répondre à des nouveaux besoins
ou à des besoins modifiés. Voici les différentes formes de maintenance qui peuvent
exister en génie logiciel : La Maintenance corrective ; la Maintenance adaptative et
la Maintenance perfective et d’extension
La disposition : Comme en informatique, le temps est un facteur indispensable qui doit
être surveillé quant à tout ce qui concerne le développement des produits informatiques.
C’est ainsi qu’un logiciel peut subir une détérioration proportionnellement à sa
performance. Il peut être complètement obsolète ou exigera une intense mise à jour.
Bref, cette phase concerne la gestion de versions.

De manière générale, La figure suivante résume les étapes du cycle de vie du logiciel :

Proposé par M. DIFFOUO TAZO Evariste Page 13


Cours Installation et maintenance des logiciels ISESTMA
2021

2. Les modèles de développement du logiciel

Les modèles de développement ont pour objectifs :

D’organiser les différentes phases du cycle de vie pour l'obtention d'un logiciel fiable,
adaptable et efficace ;
De guider le développeur dans ses activités techniques ;
De fournir des moyens pour gérer le développement et la maintenance (ressources,
délais, avancement, etc.).

Plusieurs modèles de développement existent parmi lesquels : le modèle (linéaire) en cascade,


le modèle en V, le modèle en spirale…

2.1. Le modèle (linéaire) en cascade ou Waterfall model

C’est un modèle qui a comme objectif majeur de jalonner (présenter sobrement)


rigoureusement le processus de développement et de définir de façon précise les rôles respectifs
du fournisseur qui produit un livrable et du client qui accepte ou refuse le résultat. Le découpage
temporel se présente comme une succession de phases affinant celles du découpage classique :
Étude de faisabilité, Définition des besoins, Conception générale, Conception détaillée,
Programmation, Intégration, Mise en œuvre. Chaque phase donne lieu à une validation
officielle. Si le résultat du contrôle n’est pas satisfaisant, on modifie le livrable. Ce modèle est
mieux adapté aux petits projets ou à ceux dont les spécifications sont bien connues et fixes.

2.2. Le modèle en V

Le modèle en V du cycle de vie du logiciel précise la conception des tests : (les tests système
sont préparés à partir de la spécification ; les tests d’intégration sont préparés à partir de la
conception architecturale ; les tests unitaires sont préparés à partir de la conception détaillée
des composants). Dérivé du modèle de la cascade, le modèle en V du cycle de développement
montre non seulement l’enchaînement des phases successives, mais aussi les relations logiques
entre phases plus éloignées. Ce modèle fait apparaître le fait que le début du processus de
Proposé par M. DIFFOUO TAZO Evariste Page 14
Cours Installation et maintenance des logiciels ISESTMA
2021

développement conditionne ses dernières étapes. Le modèle du cycle de vie en V est souvent
adapté aux projets de taille et de complexité moyenne.

2.3. Le modèle en spirale

Ce modèle repose sur le même principe que le modèle évolutif, mais il s’inscrit dans une relation
contractuelle entre le client et le fournisseur. De ce fait les engagements et validations
présentent un caractère formalisé. Chaque cycle donne lieu à une contractualisation préalable,
s’appuyant sur les besoins exprimés lors du cycle précédent.

Proposé par M. DIFFOUO TAZO Evariste Page 15

Vous aimerez peut-être aussi