Place centrale de la programmation dans le cycle de vie
Un programme est un assemblage d’algorithmes et de fonctions dont la représentation est le codage. Il doit gérer les ressources (mémoire, espace disque …) et les différents composants matériels. Il est constitué de différentes structures de données qui permettent la gestion des E/S, des ressources, et de paramétrages.
Le modèle de programmation est la manière dont une machine réelle est vue au travers des langages.
– Cobol : univers plat (accessibilité générale), statique, séquentiel.
– PLE, Algol, Pascal, C : univers hiérarchique, dynamique, asynchronisme (exception sauf en C).
– Ada, C++ : héritage, exceptions, modèle objet.
– client-serveur.
Métrologie de programmation est la mesure de l’activité de programmation dont on a 3 niveaux de productivité :
– L’assembleur.
– Les langages évolués : C, Pascal, …
– Les languages de 4eme Génération (L4G) : Smaltalk, C++, Ada, …
La productivité est liée au modèle et pas au langage.
On caractérise le W de programmation en nombre de ligne de source à réaliser : unité ‘kls’ ou kilo ligne de source.
Aspect dynamique : La taille du code réservée à la lecture de la structure de données définie la difficulté de représentation de la structure de données.
Profil d’exécution en terme de volume
Normalisation, standards
Aspects positifs : image qualitative, définition d’un langage commun (permet une communication facile), garantie de la pérennité si la norme est internationale
Aspect négatif : élément de stratégie industrielle profitant uniquement aux groupes qui la contrôle.
Méthodes d’évaluation de coûts de projet informatique
On utilise différents modèles, principalement basé sur des études statistiques qui ont été estimées à partir d’une expérience passée.
Introduction
Les modèles statiques (micro-modèle) :
Le prédicateur est la variable de départ pour le calcul des autres variables. c’est modèle remontant qui va des plus petit composants vers les plus gros.
On distingue deux types : – les modèles univariables avec un seul prédicateur.
– les modèles multivariables avec des équations qui sont constituées de plusieurs prédicateurs.
Exemple : SEL (Software Engeenerie Laboratory – université du Maryland)
Le modèle de COCOMO (Constructive Cost Model) permet l’estimation du nombre de lignes de code.
Il commence au plus bas de l’architecture, c’est à dire au niveau du module (BOEHM) puis il prend en considération les niveaux supérieurs.
Les modèles dynamiques (macro-modèles) :
On définit des équations entre les variables intéressantes du modèle (coût, taille, et temps), sans en privilégier aucune. Ces modèles sont dit « dynamiques » car ils sont non-orientés. On peut calculer n’importe quelle variable à partir des autres. Ils sont appelés aussi des « macro-modèles » car les détails sont ignorés. On assimile cette notion à une méthode descendante. Seules sont conservées les variables principales.
Exemple : le modèle de Putman est basé sur les fonctions de Norden-Rayleigh. Effort = f(Temps).
« Un logiciel est un ensemble de sous-problèmes indépendants. »
a) Il y a un nombre fini de sous-problèmes.
b) Chaque effort de développement enlève un sous-problème
c) L’effort restant est proportionnel au nombre de sous-problèmes restants.
Le point de départ est l’estimation de la taille du code.
Modèle de Parr : Les problèmes ne sont pas indépendants car la résolution d’un problème peut en impliquer de nouveaux (l’inspection du code peut entraîner la découverte d’erreurs).
On suppose que les sous problèmes sont de complexité équivalente.
1. COURS : Introduction au Génie Logiciel
1.1. / Données économiques
1.1.1. / Evolution de la demande en logiciels
1.1.2. / Volume, délai, durée de vie, effort
1.1.3. / Evolution des coûts
1.1.4. / Nature du risque logiciel
1.2. / Typologie et criticité
1.2.1. / Classification
1.2.1.1. / Les S-programme
1.2.1.2. / Les P-programme
1.2.1.3. / E-programme (EMBEDDED)
1.2.2. / Progiciel et programme « clé en main »
1.3. / Le problème fondamental du Génie Logiciel
1.3.1. / Le problème de l’erreur
1.3.2. / Nature et fonction du logiciel
1.4. / Modèle de développement : le cycle de vie du logiciel
1.4.1. / Les différentes phases du cycle de vie – Processus QUALITE
1.4.2. / Maintenance et Evolutions (Lois de Lehman)
1.4.3. / Ré ingénierie du logiciel
1.4.4. / Intégration de systèmes à logiciels prépondérants
1.4.5. / Outils de gestion du cycle de vie
1.5. / Cinétique, dynamique, régulation du cycle de vie
1.5.1. / Le contrôle de processus
1.5.2. / Classification par difficulté
1.5.3. / Place centrale de la programmation dans le cycle de vie
1.5.4. / Normalisation, standards
1.6. / Méthodes d’évaluation de coûts de projet informatique
1.6.1. / Introduction
1.6.2. / Paramètres d’estimation
1.6.3. / COCOMO (Constructive Cost Model)
1.7. / Discipline de test
1.7.1. / Constatations
1.7.2. / Introduction
1.7.3. / Facteurs de qualité
1.7.4. / Méthode de test du logiciel
1.7.5. / Pratiques courantes
1.7.5.1. / Le test unitaire (ou des unités)
1.7.5.2. / Le test d’intégration (ou du système)
1.7.5.3. / Le test de réception (ou recette)
1.8. / Principes pour la conduite de tests
1.8.1. / Outil de test : la revue de contrôle
1.8.1.1. / Rôle
1.8.1.2. / Planification des revues
1.8.1.3. / Organisation des revues
1.8.1.4. / Efficacité des revues
1.8.2. / Tests des spécifications
1.8.2.1. / Objectif
1.8.2.2. / Méthodes de test
1.8.3. / Tests de conception
1.8.3.1. / Objectif
1.8.3.2. / Méthode
1.8.4. / Tests individuels de programme
1.8.4.1. / Introduction
1.8.4.2. / Importance de la motivation et planification
1.8.4.3. / Tests unitaires sur les spécifications
1.8.4.4. / Tests unitaires sur la conception
1.8.4.5. / Tests unitaires de robustesse (ou tests des extrêmes)
1.8.4.6. / Tests par construction d’une base de chemins
1.8.4.7. / Test pour la modification d’un logiciel (Maintenance)
1.8.4.7.1. / Introduction
1.8.4.7.2. / Réalisation et tests des modifications
1.9. / Gestion de projet et qualité
1.9.1. / Le chef de projet
1.9.1.1. / Ces devoirs
1.9.1.2. / Ce qu’il doit être capable de faire
1.9.1.3. / Ce qu’il ne doit pas faire
1.9.1.4. / Ces rôles
1.9.2. / Les outils de base en gestion de projet
1.9.2.1. / La documentation
1.9.2.2. / Les réunions
1.9.2.3. / La découpe en tâches
1.9.3. / L’organisation du projet
1.9.4. / Le suivi du projet
1.9.5. / Assurance qualité et gestion de projet
1.10. / Le langage Z
1.10.1. / Introduction
1.10.2. / Les types
1.10.3. / Ensemble de valeurs
1.10.4. / Ensemble de constante
1.10.5. / Opérateurs
1.10.6. / Diagramme de Venn
1.10.7. / Intervalle de nombre
1.10.8. / Disjoint
1.10.9. / Partition
1.10.10. / Taille, cardinalité
1.10.11. / Définition en compréhension
1.10.12. / Calcul propositionnel (Algèbre de Boole)
1.10.13. / Les schémas
2. TRAVAUX DIRIGES
2.1. Exercice 1
2.2. Exercice 2
2.3. Exercice 3
2.4. Exercice 4
2.5. Exercice 5
2.6. Exercice 6
2.7. Exercice 7
2.8. Exercice 8
Cours introduction au génie logiciel (984 KO) (Cours PDF)