Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
solutions applicatives I
Les problèmes et principes du génie logiciel ;
- La qualité du logiciel ;
- La conduite de projet informatique ;
- Les phases de développement ou les 7 étapes de la vie d’un logiciel.
I Définition
Système : Un système est un ensemble d’éléments interagissant entre eux suivant un
certains nombres de principes et de règles dans le but de réaliser un objectif.
La frontière d’un système est le critère d’appartenance au système. L’environnement est la
partie du monde extérieure au système. Un système est souvent hiérarchisé à l’aide de sous-
systèmes.
Un logiciel est un ensemble d’entités nécessaires au fonctionnement d’un processus de
traitement automatique de l’information. Il est composé de :
des programmes (en format code source ou exécutables) ;
des documentations d’utilisation ;
des informations de configuration.
Un logiciel est en général un sous-système d’un système englobant. Il peut interagir avec
des clients, qui peuvent être :
des opérateurs humains (utilisateurs, administrateurs, . . . ) ;
d’autres logiciels ;
des contrôleurs matériels.
Il réalise une spécification : son comportement vérifie un ensemble de critères qui
régissent ses interactions avec son environnement.
III.2 Principes
Le génie logiciel repose sur 7 principes fondamentaux (proposés par Carlo Ghezzi):
rigueur,
séparation des problèmes (« separation of concerns »),
modularité,
abstraction,
anticipation du changement,
généricité,
construction incrémentale.
III.2.1 Rigueur
La production de logiciel est une activité créative, mais qui doit se conduire avec une
certaine rigueur. Certains opposent parfois créativité et rigueur.
Le niveau maximum de rigueur est la formalité, c’est à dire le cas où les descriptions et les
validations s’appuient sur des notations et lois mathématiques. Il n’est pas possible d’être formel
tout le temps : il faut bien construire la première description formelle à partir de connaissances
non formalisées.
III.2.2 Séparation des problèmes
C’est une règle de bons sens qui consiste à considérer séparément différents aspects d’un
problème afin d’en maîtriser la complexité. C’est un aspect de la stratégie générale du « diviser
pour régner ».
Elle prend une multitude de formes :
séparation dans le temps (les différents aspects sont abordés successivement),
avec la notion de cycle de vie du logiciel que nous étudierons en détail,
séparation des qualités que l’on cherche à optimiser à un stade donné (ex :
assurer la correction avant de se préoccuper de l’efficacité),
séparations des ‘vues’ que l’on peut avoir d’un système (ex : se concentrer sur
l’aspect ‘flots de données’ avant de considérer l’aspect ordonnancement des
opérations ou ‘flot de contrôle’),
séparation du système en parties (un noyau, des extensions, …),
Les méthodes aident à organiser le travail en guidant dans la séparation et
l’ordonnancement des questions à traiter.
III.2.3 Modularité
Un système est modulaire s’il est composé de sous-systèmes plus simples, ou modules. La
modularité est une propriété importante de tous les procédés et produits industriels. La
modularité permet de considérer séparément le contenu du module et les relations entre
modules. Elle facilite également la réutilisation de composants biens délimités.
Un bon découpage modulaire se caractérise par une forte cohésion interne des modules
et un faible couplage entre les modules (relations inter modulaires en nombre limité et
clairement décrites).
I.1 Définition
Comme pour toutes les fabrications, il est important d’avoir un procédé de fabrication du
logiciel bien défini et explicitement décrit et documenté. En GL, il s’agit d’un type de fabrication
un peu particulier : en un seul exemplaire, car la production en série est triviale (recopie).
Le « cycle de vie d'un logiciel » (software lifecycle ), désigne toutes les étapes du
développement d'un logiciel, de sa conception à sa disparition. Ce découpage permet de définir
des jalons intermédiaires permettant la validation du développement logiciel (conformité
du logiciel avec les besoins exprimés), et la vérification du processus de développement
(adéquation des méthodes mises en œuvre).
L'origine de ce découpage provient du constat que les erreurs ont un coût d'autant plus
élevé qu'elles sont détectées tardivement dans le processus de réalisation.
Le cycle de vie permet de détecter les erreurs au plus tôt et ainsi de maîtriser la qualité du
logiciel, les délais de sa réalisation et les coûts associés.
Ceci rend explicite la préparation des dernières phases (validation-vérification) par les
premières (construction du logiciel), et permet ainsi d’éviter un écueil bien connu de la
V ESTIMATION DE CHARGE
La charge d’un logiciel se définit comme étant la quantité de travail qu'une personne peut
réaliser. Elle s’exprime en jour / homme, mois / homme, année / homme.
Remarque: Un mois vaut en général 20 jours.
La Taille du projet: la taille du projet se mesure à sa charge.
I Catégories d’AGL
Les AGL peuvent être classés selon plusieurs aspects :
richesse du support : ensemble d'outils, outils intégrés, aide à la démarche.
type de problèmes : logiciels embarqués, temps réel, "business applications", applications
métiers …
„type de projet d’ingénierie logicielle : développement logiciel (cf. cycle de vie), intégration
de systèmes, système à base de connaissance.
„Ampleur du projet : complexité, nombres de participants, durée ...
„Gestion des ressources du projet : les considérations managériales des ressources mises
en œuvre dans le projet sont elles prises en compte ? (planification, ordonnancement, …).
Phase du cycle de développement prises en compte : conception et/ou développement.
La classification basée sur le cycle de développement pris en compte distingue deux types
d’AGL comme le montre la figure ci-dessous :
Exemple: Win design, Power Designer, Power AMC, Rational Rose, Argo UML
A- Définition: Génie Logiciel, cycle de vie d'un logiciel, abstraction, prototypage, maquettage.
Le génie logiciel est l’art de spécifier, de concevoir, de réaliser et de faire évoluer, avec des
moyens et dans un délai raisonnable, des programmes, des documents et des procédures de
qualité en vue d’utiliser un ordinateur pour résoudre certains problèmes du monde réel.
L'abstraction signifie que l'on se concentre sur ce qu'est un objet et ce qu'il fait en mettant
l'accent sur ses propriétés essentielles, inhérentes (dans le domaine d'application), et en
ignorant les propriétés accidentelles (ce qui relève des détails d'implantation).
Le cycle de vie du logiciel passe par les phases (ou étapes) suivantes :
Étude de faisabilité ;
Spécifications ;
Production ;
Contrôles ;
Essais ;
Contrôle de la production ;
Vente/utilisation/entretien ;
Pour mieux maîtriser le processus développement on se réfère à des modèles de cycle de vie,
permettant de prendre en compte, en plus des aspects techniques, l'organisation et les aspects
humains.
La maquette : elle est considérée comme exploratoire si elle est utilisée pour préciser les besoins
des utilisateurs, ou expérimentale si elle intervient lors de la conception pour aider à
expérimenter différents choix.
B-)
1 Ecriture d’un rapport au directeur de la société, lui expliquant pourquoi son entreprise
doit basculer au modèle « rapid prototyping ». Notre rapport doit être succinct et attirer
l’attention du directeur quant au changement de modèle de développement.
CHAHIE THOMAS PAULIN Page 23
A Monsieur le Directeur de la Société
Monsieur, je viens respectueusement auprès de votre bienveillance, vous faire une proposition
dans le but d’améliorer le modèle de développement de la société qui actuellement est le modèle
« waterfall » par le modèle « rapid prototyping » pour la raison suivante:
le modèle « rapid prototyping permet d'obtenir, au cours du cycle de développement de
produit, dans des délais très courts, à moindre coût et avec le minimum d'outillage, un modèle
qui servira à la validation de la conception d'un point de vue esthétique, géométrique,
fonctionnel ou technologique.
L'avantage du « rapid prototyping » est la réduction des délais de fabrication. Plus la pièce est
complexe et plus la différence avec une fabrication traditionnelle s'accroît. De plus, le
prototypage rapide apporte de nouvelles possibilités de fabrication et de mise en forme des
matériaux en réalisant des pièces sans moule ni matrice. Cette technique intègre trois notions
fondamentales : temps, coûts et complexité des formes.
• Temps : réaliser rapidement dans un délai très court des modèles physiques, permettant ainsi
la réduction du temps de développement de produit.
• Coût : réaliser des modèles physiques sans avoir la nécessité d’utiliser des moyens coûteux.
Autrement, utiliser un minimum d’outillage dans les étapes intermédiaires de développement de
produit.
• Complexité des formes : réaliser des modèles physiques peu importe leur complexité qui
pourront parfois être irréalisables par l’usinage.
Avantages productifs :
Avantages commerciaux :
2) Description du type de situation dans laquelle nous pensons que le modèle « waterfall » peut
être source de problèmes
Bien que dans une étape les activités peuvent être conduites en parallèle, le
modèle waterfall est fondamentalement séquentielle. Quelques experts en matière
d'innovation croient que le développement de produit devrait être organisé réellement
en parallèle, utilisant des boucles.
Le cadre originel de Passage d'Etape n'a pas traité le procédé de découverte et les
activités pour créer de nouvelles idées.
Une tension existe entre l'organisation et la créativité. Tous les deux sont très
importants dans l'innovation.
Exercice 1
LISTE : Structure de données classiques composée d'une tête de liste et d'une queue de liste.
Elle est dite " chainée" lorsqu'elle renferme des pointeurs vers d'autres listes.
PILE : Désigne une architecture fréquente d'informations, dans laquelle les informations les plus
récentes sont les premières à sortir.
VECTEUR : Un vecteur AB va correspondre à tous les bipoints qui sont équivalents au bipoint (A,
B). Désigne également un tableau n'ayant qu'une dimension.
Exercice 2
En génie logiciel, plusieurs travaux ont mené à la définition de la qualité du logiciel en termes de
facteurs, qui dépendent entre autres, du domaine d’application et des outils utilisés.
1. Quelles sont les différentes vues ou classes que peuvent avoir ces facteurs et de qui
dépendent-ils ?
Qualité externe
Validité : aptitude d'un produit logiciel à remplir exactement ses fonctions, définies par le cahier
des charges et les spécifications.
Extensibilité : facilité avec laquelle un logiciel se prête à une modification ou à une extension des
fonctions qui lui sont demandées.
Réutilisation : aptitude d'un logiciel à être réutilisé, en tout ou en partie, dans de nouvelles
applications.
Compatibilité : facilité avec laquelle un logiciel peut être combiné avec d'autres logiciels.
Portabilité : facilité avec laquelle un logiciel peut être transféré sous différents environnements
matériels et logiciels.
Intégrité : aptitude d'un logiciel à protéger son code et ses données contre des accès non
autorisés.
3. Les facteurs de qualité de logiciel sont parfois contradictoires, Expliquer cette assertion
et donner un exemple.
4. Que faut il faire pour développer un logiciel ayant les qualités désirés ?
Questions de cours
a) Le génie logiciel est un domaine de recherche qui a été défini (fait rare) du 7 au 11 octobre
1968, à Garmisch-Partenkirchen, sous le parrainage de l'OTAN. Il a pour objectif de répondre à
un problème qui s'énonçait en deux constatations : d'une part le logiciel n'était pas faible, d'autre
part, il était incroyablement difficile de réaliser dans des délais prévus des logiciels satisfaisant
leur cahier des charges.
Oui le génie logiciel est une science car elle promet de meilleurs logiciels moins chers et sans
erreur, de bonnes raisons pour l’adopter. De plus elle a un cycle de vie.
Le développement d’un logiciel est abstrait, alors que la construction d’un pont est concrète
.
Oui il y’a des similitudes dans les deux processus, les deux processus ont les
mêmes étapes de réalisation
d) Quelle est selon vous l’étape la plus importante dans le processus de développement
d’un logiciel ?
L'analyse de l'existant
Les choix techniques
La modélisation
Le codage du logiciel
une méthode (ordre des tâches préconisé pour réaliser une spécification)
un langage pour écrire la spécification. Ce langage peut être informel ou formel. Dans ce
dernier cas, on distingue :
o les langages avec une syntaxe formelle
o les langages avec une syntaxe et une sémantique formelles
o des outils d'aide :
éditeurs
vérificateurs de syntaxe
vérificateurs de typage
prouveurs (en général, la logique sous-jacente au langage de spécification
n'est pas décidable. On est en semi-décidable. Le spécifieur doit intervenir
dans le processus de preuve)
des « contrôleurs de modèles » (model-checkers)
des animateurs de spécification
* Tests d'intégration
* Tests de non-régression
* Tests de performance
* Tests de réception
* Tests de validation
* Tests unitaires
La méthode DSDM (Dynamic Software Development Method) a été mise au point en s'appuyant
sur la méthode RAD afin de combler certaines de ses lacunes, notamment en offrant un canevas
prenant en compte l'ensemble du cycle de développement.
La méthode du Processus Unifié (UP pour Unified Process) est un processus de développement
itératif et incrémental, ce qui signifie que le projet est découpé en phases très courtes à l'issue
de chacune desquelles une nouvelle version incrémentée est livrée. Il s'agit d'une démarche
s'appuyant sur la modélisation UML pour la description de l'architecture du logiciel
(fonctionnelle, logicielle et physique) et la mise au point de cas d'utilisation permettant de
décrire les besoins et exigences des utilisateurs.
RUP (Rational Unified Process) est une méthode de développement par itérations promue par la
société Rational Software, rachetée par IBM. RUP propose une méthode spécifiant notamment
la composition des équipes et le calendrier ainsi qu'un certain nombre de modèles de
documents.
L' eXtrême Programming est notamment basé sur les concepts suivants :
Les équipes de développement travaillent directement avec le client sur des cycles très
courts d'une à deux semaines maximum.
Les livraisons de versions du logiciel interviennent très tôt et à une fréquence élevée pour
maximiser l'impact des retours utilisateurs.
L'équipe de développement travaille en collaboration totale sur la base de binômes.
Le code est testé et nettoyé tout au long du processus de développement.
Des indicateurs permettent de mesurer l'avancement du projet afin de permettre de
mettre à jour le plan de développement.