0% ont trouvé ce document utile (0 vote)
5 vues42 pages

Introduction au développement Java et cycle de vie logiciel

Transféré par

zakaria
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)
5 vues42 pages

Introduction au développement Java et cycle de vie logiciel

Transféré par

zakaria
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

Chapitre 1 : introduction

objectifs du cours
introduction à Java

1
[Link] : VARI-NFP 135 cours n°1
Objectifs généraux

Spécifier, concevoir, réaliser des composants logiciels, des applications


informatiques en Java.

Avec les qualités requises pour un produit industriel :


efficacité
fiabilité
lisibilité
réutilisabilité
extensibilité

Donner les bases durables du métier de concepteur, développeur


d'applications informatiques

Permettre une adaptation rapide aux différents langages de


programmation
2
[Link] : VARI-NFP 135 cours n°1
Cycle de vie du logiciel

3
[Link] : VARI-NFP 135 cours n°1
Environnement de programmation

applications informatiques génie logiciel

développement d’une application cycle de vie

étapes de développement analyse, conception, codage, tests, maintenance

environnement de programmation outils, méthodes, langages

méthodes UML, SADT, SART, Merise

outils interface utilisateur, gestionnaire de données,


compilateur, chargeur, éditeur de liens

langages Ada, C++, Eiffel, Java

4
[Link] : VARI-NFP 135 cours n°1
Les étapes du cycle de vie
- Analyse -

Dans cette étape, on s'attache à répondre à trois grandes questions :


– comprendre le problème, identifier les données et les résultats attendus
– dégager les grandes fonctionnalités du système (spécification fonctionnelle)
– identifier les ressources nécessaires (matérielles et humaines)

Cette phase est indépendante de tout langage d'implantation.

5
[Link] : VARI-NFP 135 cours n°1
Les étapes du cycle de vie
- Conception -

On décompose le problème en sous-problèmes plus simples :

– Ceci donne naissance à un ensemble d'unités informatiques (composants) qui


constituent le logiciel d'application.
– C'est dans cette phase que l'architecture du logiciel est élaborée. Les composants
(modules ou unités ) et leurs relations sont spécifiés.

Il s'agit d'un processus itératif qui peut conduire à un retour vers l'analyse.

Java peut être utilisé comme langage de conception.

6
[Link] : VARI-NFP 135 cours n°1
Les étapes du cycle de vie
- Codage -

Il s'agit, dans cette étape, d'implanter (coder) la conception, c'est à dire


l'ensemble des composants de l'application.

Plus précisément, il s'agit de traduire les traitements en terme de


structures de contrôle et les données en termes des structures de
données du LP

On utilise un langage de programmation (Ada, C, Java, C++, Eiffel, Cobol,


Fortran, Pascal, ...) pour exprimer le code.

7
[Link] : VARI-NFP 135 cours n°1
Les étapes du cycle de vie
- validation/vérification -

 tests unitaires (niveau composant) :


– chaque composant fait, individuellement, l'objet de tests
 tests d'intégration (niveau système)

L'évolution du système est contrôlée à travers le processus


conception/codage/test.

8
[Link] : VARI-NFP 135 cours n°1
Qualités d'un logiciel

coût de la non qualité 9


[Link] : VARI-NFP 135 cours n°1
Qualités d'un logiciel :
- efficacité -

 Optimalité de l'utilisation des ressources (temps, espace)

 Importance de la macro-efficacité qui se reflète dans une bonne structure de la


solution au dépens de la micro-efficacité

10
[Link] : VARI-NFP 135 cours n°1
Qualités d'un logiciel :
- fiabilité -

L'industrie du logiciel est l'industrie la moins fiable.

 Un aspect de la fiabilité concerne la correction. On dit qu'un programme est


correct si la solution répond bien au problème posé (spécification). L'application
réalise les fonctions attendues par l'utilisateur dans les conditions normales et
avec les performances attendues.

 Un autre aspect de la fiabilité concerne la récupération des pannes. Un


programme est considéré comme fiable s'il propose un mode de fonctionnement
dégradé, sans provoquer d'effets de bords.

11
[Link] : VARI-NFP 135 cours n°1
Qualités d'un logiciel :
- lisibilité -

La base d'une bonne lisibilité est le maintien de la relation entre le


problème et sa solution.

Au niveau du codage :
 bonne documentation de la solution
 bon style de codage
Au niveau de la conception :
 clarté de l'architecture

12
[Link] : VARI-NFP 135 cours n°1
Qualités d'un logiciel :
- extensibilité -

 Une application informatique évolue au fil du temps et des besoins de


l'entreprise à laquelle elle appartient.

 Il est important de ne pas devoir réécrire une application lorsque les


spécifications subissent des modifications.

 L'extensibilité est la qualité d'un logiciel peu sensible aux changements


de spécification.

13
[Link] : VARI-NFP 135 cours n°1
Qualités d'un logiciel :
- réutilisabilité, modularité -

Les composants logiciels qui forment l'application, conçus de manière à ne


pas dépendre du contexte, deviennent réutilisables.

Une application est portable si elle est indépendante du système


d'exploitation, du système dE/S et du matériel.

Les critères de modularité sont :


 couplage faible (interconnexion limitée)
 cohésion forte (éléments internes étroitement reliés)

14
[Link] : VARI-NFP 135 cours n°1
Démarche d'analyse des problèmes
Déterminer le problème à résoudre :
• quelles sont les données d’entrée et leur nature ?
• quelles sont les données attendues en sortie et leur nature ?

Déterminer la méthode :
• comment modéliser les données (d’entrée, de sortie, intermédiaires) ?
• identifier, selon les données en entrée, les différents cas à traiter, et les traitement associés.
• exprimer sous-forme d’algorithme la manière d’obtenir le résultat final à partir des
traitements sur les données.

Correction, complétude et lisibilité


• tous les cas des entrées et sorties ont-ils été prévus?
• obtient-on dans chaque cas ce que l’on voulait calculer ?
• l'algorithme est-il compréhensible par quelqu’un d’autre ?

Tests
• élaborer un jeu de tests représentatif de tous les cas possibles de données en entrée.
15
[Link] : VARI-NFP 135 cours n°1
Notre approche

Afin de nous concentrer sur le coeur de l'activité de programmation,


nous nous limiterons aux trois phases essentielles :

 spécification
 codage
 tests

16
[Link] : VARI-NFP 135 cours n°1
Spécification

La spécification est la description du problème à résoudre.

Spécification informelle
 Le problème est décrit en langage naturel.
 La description conserve éventuellement quelques imprécisions,
ambiguïtés.
 Elle est souvent incomplète

Spécification formelle
 Il s’agit d'une description complète et rigoureuse du problème,
exprimée dans un langage formel (proche des maths).
 Elle permet de faire des preuves de correction et de terminaison d'un
calcul.

17
[Link] : VARI-NFP 135 cours n°1
Codage

Le codage correspond à la traduction de la solution d'un problème dans un


langage de programmation (LP).

Par rapport à la phase de spécification, les problèmes posés sont de


nature différente. Ils tiennent :

 aux caractéristiques physiques de la machine (E/S)


 à la représentation des données
 à la traduction des actions dans un LP

18
[Link] : VARI-NFP 135 cours n°1
Tests

En général, un programme ne peut pas être testé pour toutes les


données possibles.

Des jeux de tests sont élaborés de manière à visiter tous les


chemins que peut prendre l'exécution du programme.

Cela ne fournit pas une preuve de la correction du programme,


mais donne un indice de confiance dans son fonctionnement.

19
[Link] : VARI-NFP 135 cours n°1
Exemple de spécification (1)

Spécification informelle

On veut savoir si un nombre entier n, non négatif, est un carré parfait.


Le résultat produit est :

 vrai si et seulement si n est un carré parfait


 un entier égal à la racine carrée entière de n.

Spécification formelle

{n>=0} {( m [0..n] vrai m*m=n) ( m N


faux m*m<n<(m+1)*(m+1)}

20
[Link] : VARI-NFP 135 cours n°1
Exemple de spécification (2)

Spécification informelle

Calcul de np, p est un entier naturel mais il peut être nul sauf si n est nul

Spécification formelle

{p∈ [(p ≥ 0) (p 0 n = 0)]} {résultat=np}

21
[Link] : VARI-NFP 135 cours n°1
Crise du logiciel

– complexité croissante
– coût
– qualité

En 1976, une étude met en lumière le coût prohibitif du logiciel dû à la


complexité croissante :

– 75 $ par instruction développée


– 4000$ par instruction modifiée (après livraison)

22
[Link] : VARI-NFP 135 cours n°1
Une étude (1)

Un autre étude menée en 1979 par le gouvernement américain et


portant sur 487 projets illustre le coût exorbitant de la
maintenance :

 41,8% est dû à un changement de spécification


 17,4% est dû à un changement dans le format des données
 12,4% à des sorties d'urgence
 9% à des défaillances nécessitant un débogage

23
[Link] : VARI-NFP 135 cours n°1
Une étude (2)

La même étude indique que :

 47% des applications délivrées ne sont jamais utilisées


 29% payées mais non terminées
 19% abandonnées ou réécrites
 3% utilisées après modifications
 2% utilisées sans changement

24
[Link] : VARI-NFP 135 cours n°1
Une autre étude

Une enquête effectuée aux USA en 1986 auprès de 55 entreprises


révèle que 53% du budget total d'un logiciel est affecté à la
maintenance :

 34% à la maintenance évolutive : modification des


spécifications initiales
 10% à la maintenance adaptative : nouvel environnement,
nouveaux utilisateurs ;
 17% à la maintenance corrective : correction des bogues ;
 16% à la maintenance perfective : améliorer les performance
sans changer les spécifications ;
 6% à l'assistance aux utilisateurs ;
 6% au contrôle qualité ;
 7% l'organisation et au suivi ;
 4% divers.
25
[Link] : VARI-NFP 135 cours n°1
Langages et programmes (1/3)

langage machine/ langage d'assemblage


langage natif ≡
≡ bas niveau
ensemble d'instructions instructions machine symboliques
primitives intégrées à une 
machine nécessité d'une traduction par un
instructions sous forme binaire assembleur
ADD R1 R2 R3
1001011100011010

assemblage

1001011100011010

langage dépendant du processeur 26


[Link] : VARI-NFP 135 cours n°1
Langages et programmes (2/3)

langage de haut niveau



plus proche du langage naturel

programme source
float r=5;
indépendant de toute
circ=2*3.14159*r;
machine

compilateur compilateur
pour machine A pour machine B
codes objet :
forment après
édition de liens
1001011100011010
00111001 les codes
01000111
1011011000110001 11
exécutables
01110110
0
machine A 27
[Link] : VARI-NFP 135 cours n°1 machine B
Langages et programmes (3/3)
Machines en réseau => créer des programmes exécutables sur n'importe
quelle plate-forme sans recompilation
Java
compilation

byte
code
byte byte
cod cod
e e

byt
e
cod
e

28
[Link] : VARI-NFP 135 cours n°1
Choix de Java

Multithreading

Web et Applettes

Programmation évènementielle

Programmation réseau type client-serveur

29
[Link] : VARI-NFP 135 cours n°1
Caractéristiques de Java

• C'est un langage simple qui hérite des constructions de C et C++


• C'est un langage orienté objet qui permet la conception et la
réalisation d'applications complexes avec une architecture modulaire.
• C'est un langage robuste muni d'un mécanisme de gestion des
exceptions qui permet de déceler et de traiter des erreurs pendant
l'exécution du programme.
• Java est indépendant de la plate forme d'exécution, donc
indépendant de la machine et de son système d'exploitation.
• Java est un langage distribué. Un programme peut être déployé sur
plusieurs machines d'un réseau d'ordinateurs et exécuté sur celui-ci.
• C'est un langage sûr. Il possède des caractéristiques qui permettent
une protection contre du code non fiable (virus). Il impose des
contraintes aux applications Web dès que leur téléchargement dans un
navigateur est effectué.

30
[Link] : VARI-NFP 135 cours n°1
Java API

Application Program Interface (API) est un ensemble de classes et


interfaces prédéfinies

3 éditions d'API :
– J2SE pour le développement d'applications coté client ou d'applettes
– J2EE pour le développement d'applications coté serveur
– J2ME développements pour mobiles

31
[Link] : VARI-NFP 135 cours n°1
Outils de développement

Ces outils fournissent un environnement de développement intégrés dans


une interface graphique (Integrated Development Environment )
Principaux IDE :
– JBuilder (Borland)
– NetBeans Open Source (Sun)
– Sun One (version commerciale de NetBeans)
– Eclipse Open Source (IBM)

Outil pédagogique : c’est celui que nous utiliserons en TPs


– Bluej (téléchargeable sur [Link])

32
[Link] : VARI-NFP 135 cours n°1
Environnement Java

J2SE (Java 2 Standard Edition) disponible sur [Link] (actuellement


J2SE 6.0)

comprend un JDK (Java Development Toolkit), ensemble de programmes


(javac, java, javadoc, jar, appletviewer, ...) invocables à partir d'une ligne
de commande rassemble :

– Environnement d’exécution (jre)


– Langage
– Application Programming Interfaces
– Bibliothèques

33
[Link] : VARI-NFP 135 cours n°1
Compilation
Un compilateur traduit un programme source en langage machine

Inconvénient : le résultat dépend de l'ordinateur visé

L'idée de java est de placer un intermédiaire dans la phase de


compilation

Au lieu de compiler dans un langage machine spécifique à un


ordinateur particulier (langage natif), le compilateur Java
transforme le programme source en un programme dans le
langage machine de la machine virtuelle Java (JVM)

Ce langage est un langage de bas niveau appelé bytecode.


Il est indépendant de tout ordinateur
[Link] : VARI-NFP 135 cours n°1
34
Interprétation
Avec un compilateur normal, le programme est exécuté
directement par l'ordinateur. Le processeur lit les
instructions et les exécute.

En Java, le programme compilé n'est pas directement


compréhensible par un ordinateur.

Un programme, appelé interpréteur, traduit au vol


(pendant l'exécution même du programme), instruction
par instruction, le bytecode en instructions pour
l'ordinateur. 35
[Link] : VARI-NFP 135 cours n°1
Compilation vs interprétation
Chaque interprétation produit sa traduction. Le
programme produit par l'interpréteur n'est pas conservé.
Le programme produit par le compilateur est conservé
L'interprétation est moins efficace (en temps) que la
compilation
Un programme Java compilé peut être interprété sur
tout ordinateur (la JVM est partout présente)
Pour exécuter un programme écrit dans un autre
langage, il faut le recompiler

36
[Link] : VARI-NFP 135 cours n°1
Edition nedit, vi, emacs, blueJ [Link]

[Link]
Compilation javac
(sur disque)

bytecode
Chargeur de classe classloader, en mémoire
appletviewer
centrale

bytecode valide
Vérification bytecode verifier contraintes de
sécurité
respectées

Interprétation java interprétation


et exécution
[Link] : VARI-NFP 135 cours n°1
du code 37
Un premier programme
Un programme Java est constitué de classes, au moins une appelée classe
principale.

Une des classes doit contenir une méthode main chargée de recevoir les
arguments de la commande de lancement du programme.

Le traditionnel premier programme est enregistré dans un fichier [Link]


contenant le code source suivant :

public class Hello{


public static void main( String[] args ){
[Link]( "Hello!"+args[0]+args[1]+2007 );
}
}

38
[Link] : VARI-NFP 135 cours n°1
Production de programme

javac [Link]

java Hello nouvelle année

résultat affiché args[0] args[1]

Hello!nouvelleannée2007

39
[Link] : VARI-NFP 135 cours n°1
Sous bluej
édition du programme

exécution du programme

résultat

40
[Link] : VARI-NFP 135 cours n°1
Autre version
import [Link];
public class Hello{
public static void main( String[] args ){
[Link](null,
"Hello!"+args[0]+args[1]+2007 );
}
}

javac [Link]
java Hello nouvelle année
41
[Link] : VARI-NFP 135 cours n°1
Quelques sites utiles

Cours en ligne

[Link]
Bibliographie

• Programmer en Java, [Link], Eyrolles


• Introduction to Java programming, [Link] Liang, Pearson Prentice
Hall
• Java how to program Deitel&Deitel, Prentice hall
• Java by Dissection, Ira Pohl & Charlie McDowell, Addison Wesley

Compilateurs, bibliothèques, tutoriels, documentation

[Link] 42
[Link] : VARI-NFP 135 cours n°1

Vous aimerez peut-être aussi