0% ont trouvé ce document utile (0 vote)
16 vues25 pages

Conception de Programmes Informatiques

Transféré par

Akram Maoujoud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues25 pages

Conception de Programmes Informatiques

Transféré par

Akram Maoujoud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

STIC A – SYSTÈMES INFORMATIQUE

CONCEPTION DE PROGRAMMES

[email protected]
UNE COMPLEXITÉ CROISSANTE

• Les objets et systèmes informatiques à concevoir sont de plus en


plus complexes
– Windows XP est composé de 50 millions de lignes de code
– Le SETIS (système de combat) de la frégate Chevalier Paul comprend
22 modules logiciels et un million de lignes de codes

• Difficultés, voire incapacité de les comprendre dans leur totalité

• Un développeur a une productivité de quelques lignes par heure


(tout compris) pour un programme algorithmiquement simple
(quelques milliers par mois)

• Impossibilité de créer ce type de programmes ex-nihilo, impose


– La réutilisation de code existants
– Le travail en parallèle : méthodologie pour travailler en équipe

STIC A - Systèmes Informatiques 2 Département Informatique, École Navale


PROCESSUS DE PROGRAMMATION

• Des modèles plutôt que du code : La construction de modèles


– Permet de mieux décrire, abstraire, comprendre ces objets
informatiques complexes
– Facilite la maintenance et l’évolution

• L’écriture du programme, bien que fondamentale, n’est donc


qu’une étape du processus de programmation

• Le processus de programmation est traditionnellement décomposé


en trois grandes étapes :
– L’analyse et la spécification du problème
– La conception (ou modélisation)
– L’implantation (ou codage)

• Les deux premières étapes sont humainement abordables sans


connaissances à priori d’un langage de programmation

STIC A - Systèmes Informatiques 3 Département Informatique, École Navale


L’ANALYSE ET LA SPÉCIFICATION DU PROBLÈME

• L’analyse et la spécification du problème permettent de préciser le


problème à résoudre et/ou d’isoler les fonctionnalités du logiciel à
mettre en œuvre

• Dans cette phase, on détermine quelles sont les données et leurs


propriétés, quels sont les résultats attendus, ainsi que les relations
exactes entre les données et les résultats

STIC A - Systèmes Informatiques 4 Département Informatique, École Navale


LA CONCEPTION

• La conception (ou modélisation) consiste généralement à


– Identifier formellement les entités, objets du programme
– Déterminer la méthode de résolution du problème (un algorithme) et
d’en identifier les principales étapes
– Concevoir la manière dont on va mettre en œuvre les fonctionnalités
du logiciel
Représentations formelles généralement indépendantes de l’architecture, du système et langage

Modélisation UML Algorithme, pseudo-code flowchart

STIC A - Systèmes Informatiques 5 Département Informatique, École Navale


IMPLÉMENTATION

• La dernière étape est l’étape de la mise en œuvre dans un ou


plusieurs langages de programmation en respectant la syntaxe

• Plusieurs approches
– Le codage « classique » consiste à traduire/coder les modèles,
méthodes et algorithmes identifiés dans un ou plusieurs textes de
programmes
– Le modèle est interprété : stratégie qui repose sur l'existence d'une
machine virtuelle capable de lire et exécuter le modèle directement
– Stratégie de génération de code qui consiste à utiliser un compilateur
de modèle pour générer une représentation de niveau inférieur du
modèle en utilisant des langages et plates-formes de programmation
existants

• Les deux dernières stratégies facilitent le travail et rendent plus


aisée la vérification de preuves (le programme exécuté conforme
avec ses spécifications)

STIC A - Systèmes Informatiques 6 Département Informatique, École Navale


CYCLE DE VIE D'UN LOGICIEL

• Le processus de programmation s’inscrit plus largement dans un


cycle de vie du logiciel incluant également des processus de tests,
validation et maintenance

• Formaliser ce cycle de vie ? Bidouillage ?

• Des modèles de cycle de vie ont été mis au point définissant les
étapes du développement ainsi que les résultats à produire
permettant de valider chacune des étapes avant de passer à la
suivante

Modèle en V Modèle en cascade Modèle en Spirale

STIC A - Systèmes Informatiques 7 Département Informatique, École Navale


ACTIVITÉS TYPES D’UN CYCLE DE VIE LOGICIEL

− Définition des objectifs : définir la finalité du projet


− Analyse des besoins et faisabilité : expression, recueil et formalisation des
besoins du demandeur et de l'ensemble des contraintes
− Conception générale : élaboration des spécifications de l'architecture générale
du logiciel
− Conception détaillée : définition précise de chaque sous-ensemble du logiciel
− Implémentation dans un langage de programmation des fonctionnalités
définies lors de phases de conception
− Tests unitaires : vérifier individuellement que chaque sous-ensemble du
logiciel est conforme aux spécifications
− Intégration : interfaçage des différents éléments (modules) du logiciel (inclue
des tests d'intégration)
− Qualification : vérification de la conformité du logiciel aux spécifications
initiales
− Documentation : production des informations nécessaires pour l'utilisation du
logiciel et pour des développements ultérieurs
− Mise en production
− Maintenance : comprend toutes les actions correctives et évolutives sur le
logiciel

STIC A - Systèmes Informatiques 8 Département Informatique, École Navale


LA SÉCURITÉ DANS LE DÉVELOPPEMENT

• Assurer la sûreté de fonctionnement (safe programming) consiste


à garantir que le système :
– Génère uniquement des données valides
– Fonctionne lors de la réception de données valides

• Dans le cas d’une programmation sécurisée, le système doit être


capable de traiter toutes les données reçues sans produire
d'erreurs ayant une conséquence au niveau de la sécurité

• Erreurs ayant une conséquence au niveau de la sécurité :


– Problème dans le développement
• Exemples : débordement de tampon, chaîne de format...
• En général peut être corrigé rapidement
– Problème dans la conception
• Exemples : dans un protocole, un automate d'états fini
• Peut nécessiter beaucoup de travail et impacter significativement le cycle
de vie

STIC A - Systèmes Informatiques 9 Département Informatique, École Navale


LA SÉCURITÉ DANS LE DÉVELOPPEMENT : DÉBORDEMENT

• Lors d’un appel de fonction, dans la pile d'exécution sont empilés :


– Les paramètres de la fonction appelée
– L'adresse de retour dans la fonction appelante
– Les variables locales de la fonction appelée

• Quand une variable locale « déborde »


– Par exemple recopie (avec strcpy) d'une longue chaîne dans un
tampon trop petit
– L'adresse de retour est modifiée
• Habituellement : Segmentation fault - core dump
• Sauf si l'attaquant redirige vers son propre code (shell-code)

non-vulnerable.c
vulnerable.c void main(int argc, char *argv[]){
void main(int argc, char *argv[]) { #define LG 512
char buffer[512]; char buffer[LG+1];
if (argc > 1) if (argc > 1)
strcpy(buffer,argv[1]); strncpy(buffer,argv[1],LG);
} buffer[LG]='\0';
}

STIC A - Systèmes Informatiques 10 Département Informatique, École Navale


STIC A – SYSTÈMES INFORMATIQUE

MODÉLISATION PAR ENTITÉ - ASSOCIATION


LE MODÈLE E - R

• Entité-Relation ou Entité-Association

• Modèle Conceptuel des Données (MCD)


– Description statique du système d’information à l’aide
• D’entité
• D’association
• D’attributs
– Pas de modélisation des traitements

• Langage graphique

STIC A - Systèmes Informatiques 12 Département Informatique, École Navale


ENTITÉ

• Une entité permet de modéliser un ensemble d'objets concrets ou


abstraits de même nature

• Représente des phénomènes du monde réel


– L'entité « élèves » représente tous les élèves dans un système
d'information
– L’entité est un type/concept, pas une instance/enregistrement

• Représentation graphique : rectangle

deux entités :
Navire Marin navire et marin

STIC A - Systèmes Informatiques 13 Département Informatique, École Navale


ASSOCIATION OU RELATION

• Relation : représente les liens entre deux ou plusieurs entités


– Généralement 2 : associations binaires

• Par exemple, l’affectation d’un marin à un navire

• Représentation graphique : rectangle arrondi, ellipse, hexagone

Navire Affectation Marin

STIC A - Systèmes Informatiques 14 Département Informatique, École Navale


ATTRIBUTS

• Décrit les entités et les associations


– Une entité possède au moins un attribut : son identifiant
• Exemple : « MMSI » pour l’entité « Navire »
– Une association peut être dépourvue d’attributs
• Exemple : « Affectation » à pour attributs deux dates

• Représentation graphique : champs associés aux formes

Marin
Navire Matricule
Affectation
MMSI Nom
date embarquement
Nom_Navire Prénom
date débarquement
Pavillon Grade
Adresse

STIC A - Systèmes Informatiques 15 Département Informatique, École Navale


TYPES DES ATTRIBUTS

• Les attributs peuvent être de différents types


– Simples
• Entier (de différentes précisions)
• Flottant (de différentes précisions)
• Caractères / Chaîne de caractères
• Heure / Date

– Ou plus complexes
• Intervalle
• Cercle
• Polyligne
• Polygone

STIC A - Systèmes Informatiques 16 Département Informatique, École Navale


LES CLÉS

• Un ou plusieurs attributs permettant d’identifier, de façon unique,


chaque occurrence d’une entité

• Par exemple : le MMSI de chaque navire


– Chaque Navire doit avoir un MMSI unique
– Le MMSI est non ambigüe (il n’y en a pas deux identiques)

• Représentation graphique : attribut(s) souligné(s)

Marin
Navire Matricule
Affectation
MMSI Nom
date embarquement
Nom_Navire Prénom
date débarquement
pavillon Grade
Adresse

STIC A - Systèmes Informatiques 17 Département Informatique, École Navale


LA CARDINALITÉ (1/2)

• Les entités participant aux associations ont des cardinalités


minimales et maximales

• Cardinalité minimale : nombre minimum de fois qu’une occurrence


d’une entité participe aux occurrences de l’association (0, 1, ...)

• Cardinalité maximale : nombre maximum de fois qu’une


occurrence d’une entité participe aux occurrences de l’association
(1, n, ...)

• Par exemple
– Un Navire a un ou plusieurs Marins
– Un Marin a 0 ou plusieurs navires d’affectation au cours de sa carrière

STIC A - Systèmes Informatiques 18 Département Informatique, École Navale


LA CARDINALITÉ (2/2)

• Représentation graphique
– Le nombre de gauche indique la cardinalité minimale
– Le nombre de droite indique la cardinalité maximale

Marin
Navire Matricule
1,N Affectation 0,N Nom
MMSI
date embarquement
Nom_Navire Prénom
date débarquement
pavillon Grade
Adresse

Un « Navire » a un (1) ou plusieurs (N) « Marins »

Un « Marin » a aucun (0) ou plusieurs (N) « Navires » d’affectation au cours de sa carrière

STIC A - Systèmes Informatiques 19 Département Informatique, École Navale


LA CARDINALITÉ : EXEMPLES

pays monogame

0,1 0,1
homme épouse femme

pays polygame 0,N 0,1


homme épouse femme
(homme)

1,1 1,1 la mairie


homme épouse femme
(service
mariage)

historique
épouse
0,N date début 0,N
homme femme
date fin
cause fin

Association « épouser »

STIC A - Systèmes Informatiques 20 Département Informatique, École Navale


ASSOCIATIONS RÉFLEXIVES

• Une association réflexive relie des occurrences de la même entité

• En général ces associations sont binaires (2 branches)

• Un rôle attribué à chaque branche de l'association

• Représentation graphique : ajout de rôles à chaque branche

• Deux types de relation :


– Hiérarchique : relation 0,1 – 0,N
– Non hiérarchique : relation 0,N – 0,N

STIC A - Systèmes Informatiques 21 Département Informatique, École Navale


ASSOCIATION RÉFLEXIVE HIÉRARCHIQUE

• Dans une association réflexive hiérarchique, une des cardinalité


maximale à la valeur 1

Un même salarié peut être à la fois chef et avoir un chef


Durand peut être chef de Dupond et d’autres salariés (0, N), il n’a qu’un seul chef au
maximum (0,1)
Dupond, qui a pour seul chef Durand, peut également être chef de plusieurs autres
salariés (0,N)

STIC A - Systèmes Informatiques 22 Département Informatique, École Navale


ASSOCIATION RÉFLEXIVE NON HIÉRARCHIQUE

• Association réflexive non hiérarchique (les 2 cardinalités


maximales ont la valeur n)

Pièces composants, composé = association réflexive non hiérarchique

Une même pièce (e.g. circuit imprimé) peut être composée d'autres pièces
(composants électroniques) et entrer dans la composition d'une ou plusieurs autres
pièces (e.g. carte réseau)

STIC A - Systèmes Informatiques 23 Département Informatique, École Navale


ASSOCIATIONS N-AIRES

• Associations non binaires


– Certaines relations sont représentables par une association n-aire
– Représentation graphique : plusieurs entités sont liées par une
association (exemple d’association ternaire)

• Par exemple (ternaire) : un prof. enseigne une à plusieurs


matières à une ou plusieurs classes

professeur enseigne classe


1,N 1,N
1,N
matière

STIC A - Systèmes Informatiques 24 Département Informatique, École Navale


Exemple
STIC A - Systèmes Informatiques 25 Département Informatique, École Navale

Vous aimerez peut-être aussi