Vous êtes sur la page 1sur 39

1

Chapitre 1

Premiers pas

Dveloppement d'application
Transformation progressive d'une suite de modles :
du 1er modle, description des besoins du client au dernier, programme compltement test

Etapes :
analyse, conception, implmentation, tests

Analyse : spcification des fonctionnalits du systme Conception : architecture en terme de composants Tests : unitaires et d'intgration
2

Cycle de vie du logiciel

Les tapes du cycle de vie


- Analyse Dans cette tape, on s'attache rpondre trois grandes questions :
comprendre le problme, identifier les donnes et les rsultats attendus dgager les grandes fonctionnalits du systme (spcification fonctionnelle) identifier les ressources ncessaires (matrielles et humaines)

Cette phase est indpendante de tout langage d'implantation.


4

Les tapes du cycle de vie


- Conception On dcompose le problme en sous-problmes plus simples : Ceci donne naissance un ensemble d'units informatiques (composants) qui constituent le logiciel d'application. C'est dans cette phase que l'architecture du logiciel est labore. Les composants (modules ou units ) et leurs relations sont spcifis. Il s'agit d'un processus itratif qui peut conduire un retour vers l'analyse. Java peut tre utilis comme langage de conception.
5

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 prcisment, il s'agit de traduire les traitements en terme de structures de contrle et les donnes en termes des structures de donnes du LP On utilise un langage de programmation (Ada, C, Java, C+ +, Eiffel, Cobol, Fortran, Pascal, ...) pour exprimer le code.
6

Les tapes du cycle de vie


- validation/vrification tests unitaires (niveau composant) :
chaque composant fait, individuellement, l'objet de tests

tests d'intgration (niveau systme) L'volution du systme est contrle travers le processus conception/codage/test.
7

Crise du logiciel
complexit croissante cot qualit
En 1976, une tude met en lumire le cot prohibitif du logiciel d la complexit croissante : 75 $ par instruction dveloppe 4000$ par instruction modifie (aprs livraison)
8

Une tude (1)


Un autre tude mene en 1979 par le gouvernement amricain et portant sur 487 projets illustre le cot exorbitant de la maintenance : 41,8% est d un changement de spcification 17,4% est d un changement dans le format des donnes 12,4% des sorties d'urgence 9% des dfaillances ncessitant un dbogage

Une tude (2) La mme tude indique que :

47% des applications dlivres ne sont jamais utilises

29% payes mais non termines 19% abandonnes ou rcrites 3% utilises aprs modifications
10

2% utilises sans changement

Une autre tude


Une enqute effectue aux USA en 1986 auprs de 55 entreprises rvle que 53% du budget total d'un logiciel est affect la maintenance :
34% la maintenance volutive : modification des spcifications

initiales

11

10% la maintenance adaptative : nouvel environnement, nouveaux utilisateurs ; 17% la maintenance corrective : correction des bogues ; 16% la maintenance perfective : amliorer les performances sans changer les spcifications ; 6% l'assistance aux utilisateurs ; 6% au contrle qualit ; 7% l'organisation et au suivi ; 4% divers.

Qualits d'un logiciel

12

cot de la non qualit

Dveloppement de composants logiciels


Dveloppement
Spcification => UML, interfaces Implantation => Java

Dveloppement par spcialisation


Hritage

Qualits attendues
Rutilisabilit Modularit Extensibilit
13

UML : Diagrammes de classe

14

Spcification d'un composant


interface IRectangle { static final int XMAX=800, YMAX=600; /** * smantique * @param x abscisse de la position finale * @param y ordonne de la position finale * preconditions * deplacer(x,y) => 0<=x<=XMAX et 0<=y<=YMAX */ void deplacer(int x, int y); /** * smantique * @return la surface du rectangle */ int surface(); }

15

Implantation d'un composant


public class Rectangle implements Rectangle{ public int largeur = 0; public int hauteur = 0; public Point origine; public Rectangle() { origine = new Point(0, 0); } public Rectangle(Point p) { origine = p; } public Rectangle(int w, int h){ this(new Point(0, 0), w, h);} public Rectangle(Point p,int w,int h) { origine = p; largeur = w;hauteur = h; } public void deplacer(int x, int y){ origine.x=x; origine.y=y;} public int surface() { return largeur * hauteur; } }

16

public class CreateObjectDemo { public static void main(String[] args) { Point origine_1 = new Point(23, 94); Rectangle rect_1 = new Rectangle(origine_1, 100, 200); Rectangle rect_2 = new Rectangle(50, 100); System.out.println("Largeur of rect_1: "+ rect_1.largeur); System.out.println("Hauteur of rect_1: "+ rect_1.hauteur); System.out.println("Surface of rect_1: "+ rect_1.surface()); rect_2.origine = origine_1; System.out.println("X Position of rect_2: "+ rect_2.origine.x); System.out.println("Y Position of rect_2: "+ rect_2.origine.y); rect_2.deplacer(40, 72); System.out.println("X Position of rect_2: "+ rect_2.origine.x); System.out.println("Y Position of rect_2: "+ rect_2.origine.y); } }
17

Choix de Java
Multithreading Web et Applettes Programmation vnementielle Programmation rseau type client-serveur

18

Caractristiques de Java
C'est un langage simple qui hrite des constructions de C et C++ C'est un langage orient objet qui permet la conception et la ralisation d'applications complexes avec une architecture modulaire. C'est un langage robuste muni d'un mcanisme de gestion des exceptions qui permet de dceler et de traiter des erreurs pendant l'excution du programme. Java est indpendant de la plate forme d'excution, donc indpendant de la machine et de son systme d'exploitation. Java est un langage distribu. Un programme peut tre dploy sur plusieurs machines d'un rseau d'ordinateurs et excut sur celui-ci. C'est un langage sr. Il possde des caractristiques qui permettent une protection contre du code non fiable (virus). Il impose des contraintes aux applications Web ds que le tlchargement dans un navigateur est effectu.
19

Java API
Application Program Interface (API) est un ensemble de classes et interfaces prdfinies 3 ditions d'API :
J2SE pour le dveloppement d'applications cot client ou d'applettes J2EE pour le dveloppement d'applications cot serveur J2ME dveloppements pour mobiles

20

Outils de dveloppement
Ces outils fournissent un environnement de dveloppement intgr 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)

21

Environnement Java
J2SE (Java 2 Standard Edition) disponible sur java.sun.com (actuellement J2SE 6) comprend un JDK (Java Development Toolkit), ensemble de programmes (javac, java, javadoc, jar, appletviewer, ...) invocables partir d'une ligne de commande Rassemble :
Environnement dexcution Langage Application Programming Interfaces Bibliothques

22

Compilation
Un compilateur traduit un programme source en langage machine Inconvnient : le rsultat dpend de l'ordinateur vis L'ide de java est de placer un intermdiaire dans la phase de compilation Au lieu de compiler dans un langage machine spcifique un ordinateur particulier, 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 indpendant de tout ordinateur
23

Interprtation
Avec un compilateur normal, le programme est excut directement par l'ordinateur. Le processeur lit les instructions et les excute. En Java, le programme compil n'est pas directement comprhensible par un ordinateur. Un programme, appel interprteur, traduit au vol (pendant l'excution mme du programme) le bytecode en instructions pour l'ordinateur.

24

Compilation vs interprtation
Chaque interprtation produit sa traduction. Le programme produit par l'interprteur n'est pas conserv. Le programme produit par le compilateur est conserv L'interprtation est moins efficace (en temps) que la compilation Un programme Java compil peut tre interprt sur tout ordinateur (la JVM est partout prsente) Pour excuter un programme crit dans un autre langage, il faut le recompiler

25

Edition

nedit, vi, emacs, blueJ

Hello.java

Compilation

javac

Hello.class (sur disque) bytecode en mmoire centrale bytecode valide contraintes de scurit respectes interprtation et excution Du code

Chargeur de classe

classloader, appletviewer

Vrification

bytecode verifier

Interprtation
26

java

Un premier programme
Un programme Java est constitu de classes, au moins une appele classe principale. Une des classes doit contenir une mthode main charge de recevoir les arguments de la commande de lancement du programme. Le traditionnel premier programme est enregistr dans un fichier Hello.java contenant le code source suivant : public class Hello{ public static void main( String[] args ){ System.out.println( "Hello!"+args[0]+args[1]+2007 ); } }

27

Production de programme
javac Hello.java java Hello nouvelle anne

rsultat affich

args[0]

args[1]

Hello!nouvelleanne2007

28

Sous bluej
dition du programme

excution du programme

rsultat

29

Autre version
import javax.swing.JOptionPane; public class Hello{ public static void main( String[] args ){ JOptionPane.showMessageDialog(null, "Hello!"+args[0]+args[1]+2007 ); } }

javac Hello.java java Hello nouvelle anne


30

Applet : flot de contrle


La JVM charge le .class Le navigateur cre l'applet Le navigateur invoque la mthode init() start() stop()

stop()

destroy()

31

Applet : Hello.java
import java.awt.*; import javax.swing.*; public class Hello extends JApplet{ String msg=null; public void init(){ msg=JoptionPane.showInputDialog("Votre message"); } public void paint(Graphics g){ super.paint(g); g.drawString(msg+2009,25,25 ); } public void start(){} public void stop(){} public void destroy(){} }
32

Applet : Hello.html

<html> <head> applet Hello world</head> <body> <applet code = "Hello.class" width = 200 height = 300> </applet> </body> </html>

33

Applet : Hello.html
C: > appletviewer Hello.html

34

Lecture partir du clavier


Lire un fichier ou lire les donnes tapes sur un clavier sont deux oprations quivalentes. On importe la classe java.util.Scanner : lecture partir clavier

Scanner in = new Scanner( System.in ); String s = in.next(); ou bien int i = in.nextInt(); ou encore boolean b = in.nextBoolean(); double d = in.nextDouble();

35

Sorties formates (1/3)


Introduction en Java 1.5 de la mthode printf ( l'image de celle du langage C) System.out.printf(format,items) format est une chane de caractres incluant des spcificateurs de format

Exemple
System.out.printf("numro=%d,solde=%f",numero,solde);

numro=6457,solde=457.980000

cran

36

Sorties formates (2/3)


spcificateur %b %c %d %f %e spcificateur sortie valeur boolenne caractre entier rel virgule flottante rel notation scientifique sortie exemple true ou false 'g' 654 76.98000 3.5467e+01 exemple

37

Sorties formates (3/3)


spcifier la largeur et la prcision
%5c %7b %5d %10.2f 4 espaces avant le caractre ajoute 3 espaces avant true et 2 avant false affiche l'entier sur au moins 5 caractres si entier<5, ajoute des espaces avant le nombre affiche le rel sur au moins 10 espaces incluant le point dcimal et 2 chiffres aprs le point si rel<10, ajoute des espaces avant le nombre affiche le rel sur au moins 10 espaces incluant le point dcimal et 2 chiffres aprs le point et la partie exponentielle 4 espaces avant le caractre

%10.2e

%5c

38

Quelques sites utiles


Bibliographie Programmer en Java, C.Delannoy, Eyrolles Introduction to Java programming, Y.Daniel Liang, Pearson Prentice Hall Java how to program Deitel&Deitel, Prentice hall Java by Dissection, Ira Pohl & Charlie McDowell, Addison Wesley Compilateurs, bibliothques, tutoriels, documentation http://java.sun.com IDE http://www.bluej.org http://www.eclipse.org http://www.netbeans.org

39

Vous aimerez peut-être aussi