---
# System prepended metadata

title: <font size="8pt"><b>Qualité Logiciel - Résumé CP 1</b></font>
tags: [Qualité du Logiciel]

---

---
title: "Revision Quality of Software"
author: [Simon Meier]
date: "30.11.2021"
subject: "QoS"
keywords: [Génie Logiciel]
subtitle: "Résumé CP 1 Qualité Logiciel"
lang: "en"
titlepage: true,
titlepage-text-color: "FFFFFF"
titlepage-rule-color: "360049"
titlepage-rule-height: 0
titlepage-background: "background.pdf"
...

###### tags: `Qualité du Logiciel`

![](https://i.imgur.com/pW7K0Xp.png)

<font size="4pt"><sup>*Semestre automne 2021*</sup></font>

# <font size="8pt"><b>Qualité Logiciel - Résumé CP 1</b></font>


## Chapitre 1 : 

### Diapositive 21-22-23-24

Le mot **processus** vient du latin `pro` et de `cessus`, `cedere`, soit *aller vers/de l'avant*, *avancer*. Typiquement **shonen** comme truc en fait.
Il est également à l'origine du mot procédure, qui désigne plutôt la manière d'organisé, de changer les choses.

**Processus**: *ensemble d'activités corrélés, interactives, qui transforme des `inputs` en `outputs`.*

Caractéristiques principales: 
- Déclencheurs (triggers).
- Activités avec résultats spécifiques et valeur (avec inputs et outputs).
- Acteurs / clients.
- Un processus est mesurable: temps, resources.

![](https://i.imgur.com/Jd3edaj.png)
*image qui veut pas vraiment dire grande chose*

Exemple - Processus de gestion de changement: 

![](https://i.imgur.com/QuzTBAN.png)

**Processus d'assurance qualité logicielle :** 

- L'ensemble d'activités avec comme objectif de s'assurer que le logiciel développé répond aux exigences en terme de :
    - fonctionnalité
    - fiabilité
    - ergonomie
    - efficience / efficacité
    - maintenabilité
    - portabilité
truc mnémotechnique: la `ffeemp`

- Organisation
- Rôles et responsabilités
- Interaction avec les autres processus informatiques.


### Diapositives 29-30-31-32

**Coûts de la qualité du logiciel:**

|Catégorie majeure|Sous-catégorie|Définition|Coût élémentaire typique|
|:-:|:-:|:-:|:-:|
|**Coûts de prévention**|Etablir les fondements de la qualité|Efforts pour définir la qualité, établissement des objectifs de qualité, de normes et de seuil de qualité. Analyse de compromis liés à la qualité.|Définition de critères de succès des tests d'acceptation et de normes reliées à la qualité.|
||Interventions orientées projet et processus|Efforts pour prévenir la mauvaise qualité ou améliorer le processus de qualité|Formation, amélioration de processus, collecte de mesures et analyse|
|**Coûts de détection**|Découvrir l'état du produit|découvrir le niveau de la non-conformité| Tests, assurance qualité logicielle, inspections revues|
||S'assurer de l'atteinte de la qualité|Mécanismes de contrôle de la qualité|Audits de la qualité du produit, décision de livraison de nouvelles versions|
|**Coûts de défaillance**|Anomalie interne|Problèmes de qualité détectés avant la livraison au client|La gestion des défauts avant la livraison, les reprises, les revues et les tests à effectuer à nouveau.|
||Anomalie externe|Problèmes de qualité détectés après la livraison au client|Support technique des versions livrées, enquête de plaintes avis de défaut, mis à niveau et correction d'erreurs.|

**Equilibre entre niveau de qualité et coût**: 

Auparavant minoritaire, le coût du logiciel en 1965 représentait 50 % du coût total d'un système informatique. En 1985 la part du logiciel est de 80 % et les coûts dus à la correction des défauts dans les logiciels (maintenance) représentent jusqu'à trois quarts du coût total d'acquisition, un excédent dû uniquement à la mauvaise qualité du logiciel lors de sa livraison.

Selon une étude réalisée en 1994 par le Standish Group, 53 % des logiciels créés sont une réussite mitigée : le logiciel est opérationnel, cependant le délai de livraison n'a pas été respecté, les budgets n'ont pas été tenus, et certaines fonctionnalités ne sont pas disponibles. Le dépassement des coûts est en moyenne de 90 %, et celui des délais de 120 %, et la qualité moyenne est estimée à 60 %8.

![](https://i.imgur.com/eLpDGHD.png)

En bref, les erreus ça **coûtent** la masse.

![](https://i.imgur.com/Oeml9Fw.png)

---


## Chapitre 2:

### Définition:

**Normes:**
*Document établi par un consensus et approuvé par un **organisme reconnu**. Il fournit, pour des usages **communs et répétés**, des règles, lignes directrices et caractéristiques garantissant un niveau d'ordre optimal dans un contexte donné.

**Standard:**
Référentiel destiné à créer des spécifications communes rapidement. C'est en réponse à la lenteur des processus de normalisation. On parle également de bonnes pratiques.

![](https://i.imgur.com/73tlBb6.png)

---

### CMMI

- Signification:
    - Capability
    - Maturity
    - Model
    - Integration
Moyen mnémotechnique: 
- *intégrer un modèle c'est être capable de maturité*
- *MOINT DE KAMAS* (dofus)

En gros:
- Ensemble de bonnes pratiques relatives aux activités de développement, de maintenance appliquées aux produits et aux services.
- Bonne pratiques pour développer et maintenir des softs.


Basé sur:
- Itération pour toujours améliorer.
- Bonne pratiques à appliquer sur un projet.
- Modèle adaptable à beaucoup de projets / travaux.

Qu'est-ce que c'est pas?
- Pas une méthode de conduite de projet. C'est une démarche qui vise à rendre l'entreprise capable de faire des projets qui fonctionnent:
    - satisfaction des utilisateurs finaux.
    - maîtrise des projets: délais, budget et qualité.
    - transparence des projets pour tous les acteurs.

![](https://i.imgur.com/oqUwno4.png)

**Niveau de maturité:**

![](https://i.imgur.com/KCvBb3P.png)

---

### ITIL

- Information, Technology, Infrastructure Library. (pfff)
    - moyen mnémo: *infomaticien infra libre pour tech ce soir*
    - autre: Intelibrinfrasure.

- Ensemble d'ouvrages qui recensent les bonnes pratiques pour gérer les systèmes informatiques.
- Référentiel très large qui aborde comment:
    - organiser un système.
    - améliorier l'efficacité d'un système.
    - réduire les risques.
    - augmenter la qualité des services informatiques.

Machin qu'est sensé vouloir montrer un truc (pas besoin de savoir):
![](https://i.imgur.com/wWlbLgw.png)

---

<font size="6pt">**Cycle de vie du service:**</font>

![](https://i.imgur.com/r0g0apV.png)

<font size="5pt">**Service Strategy**</font>

- **Management stratégique (strategy generation)** : il permet l'établissement d'une stratégie. Pour cela, l’état du marché, les différentes offres et demandes, ainsi que les capacités de l'entreprise doivent être prises en compte.
- **Gestion du portefeuille des services (service portfolio management) :** elle comprend les services en projet, le catalogue de services (services en cours) et les services retirés. Elle décrit les services en termes de valeur. Seul le catalogue des services est disponible pour les clients.
- **Gestion financière (financial management) :** elle permet de comprendre les coûts qui sont liés à un service. De cette manière l'entreprise peut appréhender la valeur de ce dernier et ainsi établir un prix vis-à-vis de clients.
- **Gestion de la demande (demand management) :** elle consiste à comprendre les nécessités du client et leurs évolutions au long du cycle métier en ce qui concerne les services informatiques. Ce processus est lié aux autres concepts ITIL du cycle de vie des services tels que la conception, le catalogue, le portefeuille, l'exploitation et la gestion financière des services.
- **Gestions des relations business:** elle consiste à maintenir une relation de confiance avec les clients.

![](https://i.imgur.com/3woXLQK.png)

:::info
La stratégie des services informatiques a pour mission de valoriser un service informatique en définissant son utilité (utility) et en donnant une garantie de moyens (warranty) d'une exécution conforme à la demande sur le plan des niveaux de disponibilité, de la capacité, de la continuité et de la sécurité.

En amont de l'ensemble des processus opérationnels la stratégie des Services a pour mission de définir des Services adaptés à la Stratégie de l'entreprise.

Son objectif est de garantir que les futurs services soient adaptés aux besoins métiers et créeront une valeur opportune pour l'entreprise.
:::

<font size="5pt">**Service Design**</font>

- Coordination, conception
    - elles permettent de mettre en relation des processus.
- Gestion du catalogue des services
    - consiste à garder à jour les informations relatives aux différents services.
- Gestion des niveaux de service
    - elle est assurée à la fois par la conception des services et par la DSI. Elle permet la mise en relation entre les exigences, les besoins et les moyens liés à un service.
- Gestion de la disponibilité
    - elle permet de maintenir un niveau de stock permettant de répondre à la demande
- Gestion de la capacité
    - elle met en place et assure la relation entre les moyens mis en place, que ce soient des ressources humaines ou des techniques, et les objectifs du métier, c'est-à-dire la réalisation. La gestion de la capacité englobe trois sous-processus rapportés au gestionnaire de niveaux de service : business capacity pour gérer les capacités des futurs besoins, service capacity pour gérer les performances des services actuels et component capacity pour gérer les capacités matérielles. Toutes les données récoltées sont stockées dans la CMDB (capacity management database)
- Gestion de la continuité (BCM)
    - ce processus (BCP) vise à maintenir la continuité de service et plus particulièrement les plans de reprise d'activités (PRA à tester à la mise en œuvre puis annuellement) qui supportent les plans de continuité de business (BCP). Le processus réalise les analyses d'impact sur le business (BIA).
- Gestion de la sécurité de l'information
    - elle permet d'assurer la sécurité des informations.
- Gestion des fournisseurs
    - La conception des services informatiques a pour objectif de convertir les objectifs stratégiques en services disponibles au sein d'un portefeuille de services.

![](https://i.imgur.com/dJoXfmQ.png)

Probablement que celle entourée en rouge se retrouveront dans le test. Enfin peut-être quoi.


<font size="5pt">**Service Transition**</font>

- Planification et support à la transition (transition planning and support): 
    - ce processus consiste à organiser une ou plusieurs modifications de services, que ce soient des changements au sein d'un déjà existant ou bien la création d'un nouveau, et à assurer l'allocation des moyens propres à ces changements.
- Gestion des changements (change management): 
    - elle a pour objectif de minimiser les impacts négatifs liés aux changements.
- Gestion des actifs et des configurations *(service asset and configuration management)*:
- Gestion des mises en production et déploiements (release and deployment management):
    - elle permet de s'assurer que le bon matériel est utilisé au bon endroit, au bon moment, en d'autres termes il s'agit de mettre en place le matériel le mieux adapté.
- Validation et tests (service validation and testing)
- Évaluation (change evaluation): 
    - mesurer l’impact du changement, pour cela on a recours à un audit informatique.
- Gestion de la connaissance (knowledge management)

![](https://i.imgur.com/BX3lm5E.png)


<font size="5pt">**Service Operation**</font>

- Gestion des événements
    - Il existe quatre types d’événements : l'information, l'avertissement, l’exception et l'alerte.
- Gestion des incidents
    - a pour but de restaurer un fonctionnement normal.
- Exécution des requêtes
    - ce processus correspond à l'intégralité du cycle de vie des demandes faites par les utilisateurs.
- Gestion des problèmes
    - elle a pour objectif de comprendre et résoudre les causes des incidents observés et prévenir ces derniers
- Gestion des accès
    - il gère l’accès des utilisateurs aux différents services.

![](https://i.imgur.com/M18croD.png)

<font size="5pt">**Amélioration continue des services (continual service improvement)**</font>

Le CSI (Continual Service Improvement) est le pendant des Systèmes de Management décrit dans la norme ISO 9001 version 2000 (Système de Management de la Qualité). Dans la version 2 d'ITIL ce rôle est rempli par le Service Level Manager II.

**Le rôle du CSI (continual service improvement) :**
- Surveiller l'alignement des services sur les besoins remontés par le business.
- Surveiller l'évolution de la demande du business.
- Mettre en œuvre des plans d'amélioration des services


### Norme ISO/CEI 9126

Définit un langage commun pour modéliser les qualités d'un logiciel. Le langage de description utilise des termes tels que:
- facteurs qualité
- caractéristiques
- sous-caractéristiques
- métriques
pour classer de façon arborescente et structurée, sur la base de définitions standardisée, un vocable de plusieurs dizaines de propriétés en "ité" (portabilité, maintenabilité, fiabilité, etc.).


<font size="5pt">**Mesure interne, externe, en utilisation:**</font>

- Mesures internes:
    - attributs de qualité définissant le produit et non-visibles aux utilisateurs.
    - peuvent être effectuées en utilisant des analyses statiques potentiellement automatisées.
    - inclut les documents d'exigences, design, code, procédure de test ...
- Mesures externes:
    - attributs de qualité qui impactent le comportement du produit logiciel lors de l'exécution.
    - dépendent également du système dans lequel le logiciel tourne
    - effectuées d'une manière dynamique en exécution.
- Mesure en utilisation:
- s'intéresse ici à l'expérience utilisateur.

<font size="5pt">**Sous caractéristiques de qualité logicielle:**</font>

![](https://i.imgur.com/vfkUliO.png)

![](https://i.imgur.com/5lNeK8E.png)


---

## Chapitre 3:

- QA quality assurance:
    - assurance
    - process
    - preventive
    - quality audit

Pour moi ça veut pas dire grand chose, alors:
*ensemble d'activités destinées à évaluer le **processus** par lequel les produits sont dévelopés.*
*Les pratiques d'AQL varient selon le modèle d'affaire et l'industrie où le logiciel est utilisé.*

- QC quality control:
    - control
    - product
    - detective
    - testing
        - statique (revue)
        - dynamique (test)

*ensemble d'activités visant à évaluer la **qualité des produits** développés ou fabriqués.

![](https://i.imgur.com/cSNS7rC.png)

![](https://i.imgur.com/zoc7Kj6.png)

![](https://i.imgur.com/FTblQdr.png)

![](https://i.imgur.com/t9dnBxd.png)

![](https://i.imgur.com/JqQOR2Z.png)

<font size="6pt">**Phases principles du processus de test:**</font>

![](https://i.imgur.com/69jYSp7.png)

- Planification. 
Cette activité est celle qui est pratiquée au tout début de la phase de test. Elle permet de définir la stratégie qui sera mise en place tout au long de la phase de test.

- Analyse et conception des tests. 
Cette activité consiste en la rédaction des scénarios de tests qui seront joués. Elle définit pour chaque test à exécuter quels seront les pré-requis à posséder pour effectuer le test, les actions qu'il faudra mener et les résultats auxquels on s'attend.

- Implémentation et exécution. 
Cette activité est le test à proprement parler du logiciel. Dans le cas où une défaillance survient lors de cette phase, celle-ci est alors le plus souvent décrite dans une fiche d'anomalie qui permet de conserver une trace du problème.

- Evaluation des critères de sortie et communication. 
Cette étape permet d'évaluer si les activités de test sont conformes aux objectifs définis. Il s'agit également de communiquer les résultats des tests aux autres parties prenantes.

- Clôture. 
Cette activité permet de synthétiser la phase de test quand elle est terminée. Elle décrit tous les éléments survenus lors du test et peut s'accompagner de recommandations pour l'utilisation ou l'évolution du logiciel testé9.

<font size="5pt">**Conception de test:**</font>

![](https://i.imgur.com/ME0KJcd.png)

<font size="5pt">**Planification des tests:**</font>

![](https://i.imgur.com/6P4iyk3.png)


<font size="5pt">**Spécification des tests:**</font>

![](https://i.imgur.com/J1C0YdI.png)

<font size="5pt">**Implémentation et préparation:**</font>

![](https://i.imgur.com/x8wDSwc.png)

<font size="5pt">**Exécution des tests:**</font>

![](https://i.imgur.com/IULMLpP.png)

<font size="5pt">**Analyse des tests:**</font>

![](https://i.imgur.com/0lmVoSi.png)

### Chapitre 4

**Les dimensions déterminantes du périmètre**:

![](https://i.imgur.com/DxNR6qE.png)

**Types de tests**

![](https://i.imgur.com/6atwVGe.png)

**Quand tester**?:

![](https://i.imgur.com/tChOyH5.png)

<font size="5pt">**Environnements de tests:**</font>

- Il s'agit de spécifier un ou plusieurs environnements de tests afin de tester le produit logiciel à différents niveaux:
    - 1. Test unitaires
    - 2. Tests d'intégration
    - 3. Test Système / de validation
- Pour chaque niveau de test, préciser
    - Le nom de l'environnement
    - Les exigences ( sizing, données de test, ...)
    - Disponibilité (de quand à quand)

|Test level|Environnement|Requirements|From|To|
|``<IT>``|||||
|`<ST>`|||||
|`<UAT>`|||||

**Estimation de l'effort** 

- Afin de mieux maitriser ce processus d'estimation, il est recommandé de décommposer le périmètre global (à estimer) selon:
    - niveaux de test (it, st uat)
    - phases: 
        - préparation, exécution, clôture.
        - la phase exécution est la plus difficile à estimer.

![](https://i.imgur.com/9KYoduQ.png)

<font size="5pt">**Gestion des risques:**</font>

Un risque c'est:
- un problème potentiel.

Il est caractérisé par: 
- source
- catégorie (budget, ressources humaines, ...)
- probabilité d'apparaître
- impact 
- gravité = probabilité * impact
- plan de remédiation (mitigation)

**Procédure de gestion des risques:**

![](https://i.imgur.com/Gh6Z1cG.png)

**Exemple d'outil**:

![](https://i.imgur.com/8UryYp0.png)

**Exemples de risques**:
![](https://i.imgur.com/jd1eV3H.png)


