32
CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Embed Size (px)

Citation preview

Page 1: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

CSI1502Introduction au génie logiciel

Chapitre 1:Introduction aux systèmes

informatiques

Page 2: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Objectifs du cours: Comprendre les enjeux de la modélisation

de problèmes. Voir en quoi les capacités de modélisation

sont cruciales. Décrire les différents niveaux de

conceptualisation lors de la programmation.

Comprendre un premier programme Java et ses structures élémentaires.

Sources: Les sections 1.3 à 1.5 du livre de cours.

Page 3: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Rappel: Prérequis supposés connus. Concepts informatiques de base. Les composants matériels de l’ordinateur:

CPU, I/O, mémoire principale / secondaire. Ordinateurs numériques et nombres binaires. Reseaux:

Connexions réseaux. LAN, WAN Internet Le Web

Si le besoin se fait sentir, veuillez lire les sections 1.0 à 1.2 du livre de cours.

Page 4: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Modéliser un problème avec un langage de programmation.

Supposer que nous ayons un problème à résoudre.

Nous décidons de concevoir et implémenter un programme informatique pour le résoudre.

Nous nous appuyons sur un langage informatique pour réaliser le programme.

Rappelez-vous votre cours GNG1101….

Page 5: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Modéliser un problème avec un langage de programmation.

Un language de programmation spécifie les mots et symboles disponibles pour écrire un programme.

Un language de programmation utilise un ensemble de règles définissant l’élaboration d’instructions de programmation valides à partir des symboles et mots disponibles.

Exemples de languages de programmation: Fortran, Cobol, C++, C, Delphi, Pascal,

Smalltalk, JAVA.

Page 6: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Que’est-ce que la modélisation de problème? Dans notre cas il s’agit d’écrire un

programmation résolvant le problème. Les étapes principales en sont les suivantes:

Comprendre le problème. Décomposer le problème en sous problèmes

plus simples. Elaborer une solution. Considérer des solutions alternatives et les

affiner. Implémenter la solution retenue. Tester la solution et en résoudre les

problèmes (bogues).

Page 7: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Approche: « Diviser pour régner » Plusieurs projets logiciels échouent par

manque de compréhension du problème. Eviter les suppositions et expliciter

les ambiguïtés ! Quand les problèmes deviennent

compliquer, il faut s’efforcer de les décomposer en sous-problèmes plus simples: « Diviser pour régner ».

Techniques fondamentale en génie logiciel.

Page 8: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Différents niveaux de conceptualisation /

programmation

Il y a 4 niveaux de programmation: Langage machine. Langage assembleur. Langage de haut niveau. Langage de 4ème génération.

Chaque type de CPU a son propre langage machine.

Les langages supérieurs ont été créés afin de faciliter l’écriture et la lecture de programmes.

Page 9: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Une modélisation orientée-objet

On organise notre solution en entités appelées classes et objets. Ceci est en soi une appoche « orientée-objet ».

« Si vous désirez manger un éléphant, prenez une bouchée à la fois ! »

Page 10: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Développement ordinaire d’un programme:

Ecriture, sauvegarde du programme

Compilation

Exécution et évaluation des résultats

erreurs

erreurs

Page 11: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Résolution de problème à l’aide de Java

Le langage Java a été créé par Sun Microsystems, Inc.

Il a été présenté en 1995 et sa popularité a grandi depuis.

C’est un langage orienté-objet.

Page 12: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Structure d’un programme Java

En Java: Un programme se compose d’une ou

plusieurs classes. Une classe contient une ou plusieurs

méthodes. Une méthode contient une ou plusieurs

instructions. Ces termes seront présentés tout au long

du cours. Un programme Java contient toujours une

méthode main. Voir Lincoln.java (page 30)

Page 13: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Structure d’un programme Java

// Commentaires sur la classe.

public class MyProgram // nom de la classe {

// Corps de la classe entre accolades.// Les commentaires peuvent être placés entre

accolades.

}

Page 14: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Structure d’un programme Java

// Commentaires sur la classe.

public class MyProgram {

public static void main(String [] argv) // déclaration de la méthode{

// Corps de la méthode entre accolades.}

}

Page 15: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Un example simple en Java:

// Exemple de programme Java:

public class Hello { //--------------------- // Tâche: imprimer « Hello World » // public static void main(String []argv) {

System.out.println(“Hello World”);}

}

Page 16: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Langages de programmation:

Composants de base: Commentaires Noms (mots-clé) Symboles ( i.e <,>,=, etc…) Syntaxe et règles sémantiques Erreurs

Page 17: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Qu’est-ce qu’un commentaire? Les commentaires d’un programme peuvent être

considérés comme documentation en ligne. Ils ont pour but d’expliquer le but d’une portion de code. Ils n’ont pas d’effet sur le programme. Il peuvent être déclarer sous 3 formes:

// Ceci est un commentaire sur une ligne. /* Ceci

est commentaire sur plusieurs lignes.*/

/** Ceci est un commentaire pour la documentation Java */

Page 18: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

L’importance des commentaires

Expliquent: QUI, QUOI, COMMENT, PAR QUI.

Très utiles pour la réutilisation du code: Pour comprendre un code une année plus

tard… Pour améliorer la productivité du

programmeur. Il faut les écrire au fûr et à mesure du

dévelopement !

Page 19: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Que sont les noms?

Les noms sont les mots utilisés par le programmeur.

Parfois ils sont choisis par le programmeur (exemple: Lincoln).

D’autres fois nous réutilisons un code et utilisons donc des noms définis par d’autres programmeurs (println).

Page 20: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Les noms en Java Un nom peut être composé de lettres, chiffres, des

caractères ‘_’ et ‘$’. Les noms ne peuvent commencer par un chiffre. Java est sensible à la casse: Total, total, et TOTAL sont

considérés comme différents. Par convention, les programmeurs utilisent:

Des noms commençant avec une majuscule pour les noms de classe - Total

Des noms commençant avec une minuscule pour les objets - totalDesStocks

Des noms tout en majuscules pour les constantes - TOTAL.

Page 21: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Que sont les mots-clé ?

Certains noms ont une signification propre dans le langage de programmation. Ce sont des mots-clé.

En aucun cas leur signification ne peut être changée. i.e if (temp < 30) then

Page 22: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Mots-clé de Java:

abstract boolean break byte casecatch char class const continue default

do double else extends finalfinally float for future genericgoto if implementsimport innerinstanceof int interface longnative new null operator outerpackage private protected publicrest return short staticsuper switch synchronized thisthrow throws transient tryvar void volatile while

 

Page 23: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Syntaxe et règle sémantiques Les règles de syntaxe d’un langage

définissent la manière dont sont assemblés les mots. i.e if (height > tallest) then

{ tallest = height;} Les règles de sémantique d’un

langage définissent le sens des mots, leur rôle. Le bout de code précédent déterminait la

personne la plus grande.

Page 24: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Syntaxe et sémantique Un programme syntaxiquement correct

n’est pas forcément sémantiquement / logiquement correct.

Un programme n’effectue que ce que nous lui disons de faire et non pas ce que nous souhaiterions qu’il fasse !!!

Une erreur classique: inégalités incorrectes. i.e (height > tallest) au lieu de (height >=

tallest)

Page 25: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Que sont les espaces ? Les caractères espace ‘ ’, lignes sautées, tabulations

sont dénommés espaces. Ils sont utilisés pour séparer les mots du programme. Les caractères espace ‘ ’ supplémentaires sont ignorés. Un programme Java peut être mis en forme de

différentes manières. Les programmes DOIVENT être MIS EN FORME

(indentation) pour améliorer la lisibilité !!! Voir Lincoln2.java page 37. Voir Lincoln3.java page 38.

Page 26: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Un programme illisible…

public class d42_SVVEZ{ public static void main(String []abvfue){ System.out.println(“ Hello World”);}}

Page 27: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Interprétation du langage de programmation Un programme doit être traduit en

langage machine pour pouvoir être exécuté par un CPU.

Ceci peut se faire de plusieurs manières. Un compilateur est un outil portant un

langage de programmation en un langage cible.

Souvent les langages cibles sont des langages machine propres à certains CPU…

Java fonctionne différemment.

Page 28: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

L’interprétation en Java

Compilateur Java

Interpréteur Java Compilateur de bytecode

Code source Java Bytecode Java

Code machine

Page 29: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

L’interpretation Java Le compilateur Java traduit le code source

en un type de données appelé bytecode. Le bytecode ne peut être utilisé par les CPU

ordinaires. Un outil logiciel nommé interpréteur traduit

le bytecode en langage machine et l’exécute.

Ainsi le compilateur java est indépendant de toute machine.

Java est donc considéré architecturalement neutre.

Page 30: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

A propos des erreurs Un programme peut avoir 3 types d’erreurs:

Erreurs de compilation: erreurs de syntaxe, primaires détectées par le compilateur. S’il y en a, aucune version exécutable n’est produite.

Erreurs d’exécution: Le problème de peut être détecté qu’à l’exécution (division par zéro,etc…) interruption anormale du programme.

Erreurs logiques: le programme tourne mais produit des résultats erronés.

Page 31: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Ecrire un programme: environnements de

developpement

Sun Java Development Kit ( JDK) Sun Forte for Java Borland Jbuilder MetroWerks CodeWarrior Microsoft Visual J++ Symantec Café Monash BlueJ jGrasp (utilisé sur le CD du livre de cours) realJ (www.realJ.com) Used in Lab B02

Ces différents environnements de programmation sont différents mais leurs fonctionnements sont similaires.

Page 32: CSI1502 Introduction au génie logiciel Chapitre 1: Introduction aux systèmes informatiques

Résumé Ce chapitre était centré autour de la

programmation et des langages utilisés pour. Ce que vous devez savoir:

Savoir ce qu’implique la résolution d’un problème. Connaître l’importance des techniques de

résolution. Décrire les différents niveaux de programmation. Comprendre un programme Java et sa structure

primaire.