projets dossier de conception logiciel benoit diard
TRANSCRIPT
ProjetsDossier de conception
Logiciel
Benoit DIARD
Dossier de conception Projet orienté Objet :
MCD Diagramme de classes Diagrammes séquence si découpage en
couches Projet Web ?
Orienté Objet MCD Diagramme de classes Diagrammes séquence si découpage en couches
Non orienté Objet MCD Que faire ?
MCD Le SI est un point très sensible dans le
développement d’applications de gestion S’appuyer sur le MCD pour concevoir ce
SI Valider les champs (attributs) avec le
demandeur. Réaliser le dictionnaire des données.
Le MCD élaboré et réfléchi doit être soumis au tuteur enseignant
Générer le MPD et le script de création de la base adaptée au SGBD choisi
Programmation Web non objet Conseil : s’appuyer sur le modèle
MVC2
MVC Web non objet
La Vue représente l’ensemble des interfaces clients (fenêtres, formulaires, feuilles de styles …)
Le contrôleur contrôle le déroulement de l'application(appel de fenêtre en fonction des interactions …)
Le modèle c'est la logique des traitements. L’accès aux données de la BD : c'est une couche supplémentaire, mais on peut la rajouter au modèle si on ne veut pas trop détailler
MVC Web non objet Concrètement :M : fichiers de traitement php des
formulairesV : formulaires, feuilles de style,
interfaces utilisateur, …C : fichier de redirection,
confirmation, erreur, …
MVC Web non Objet
Créer un diagramme de conception web et mettre en évidence :
Inclusions Fonctions Actions Liens M,V,C
Décrire l’ensemble des fonctions et des scripts
Cela vous permettra de préparer la documentation
MVC Web non Objet
Questions à se poser : doit-on structurer son code ? Faire des fonctions ?
Réponse : OUI Exemple : FonctionsBD.php définissant des fonctions réutilisables pour interagir avec la BD
Peut-on réutiliser du code ?Réponse : OUIExemple1 : formulaires réutilisables pour différentes actions (ajout, modifier)Exemple2 : générateur dynamique d’affichage d’un tableau nxm
Remarque : éviter le copier/coller donc il faut structurer.
Doit-on mettre du php dans le l’HTML ?Réponse : à éviter le plus possible, appeler un fonction php situé dans un autre fichier plutôt.Exemple : <input type=text value="<?php echo $val; ?>">
MVC Web non Objet Diagramme de conception web
Visio 2007 Règles de fléchage :
Remarque : Eviter de trop charger le diagramme. Solution :
découpage, préciser les inclusions générales
Lien
Action (formulaire)
inclusion
Inclusion en utilisant une fonctionFonction()
Lien avec $_get[‘variable’]variable
Exemple :
MVC Web non Objet
fonctionsSQL.php surcharge le diagramme.
Le préciser en commentaire et le supprimer du diagramme
MVC Web non Objet
Diagrammes de séquence ? Pas indispensable mais la cinématique doit être explicite dans le diagramme de conception web
Projet orienté Objet Diagramme de classes :
Diagramme des différentes couches (si découpage en couches)
Exemple
0..*
1..1
0..*
0..1
0..*
0..1
Memo
-----
idresumedetaildateestAnnuel
: int: String: String: DateMemo: boolean
MemoCyclique
----
datescycleuniteCycledateFinCycle
: ArrayList: int: int: DateMemo
++
calculDates ()aCycleValide ()
: void: boolean
User
-----
idloginpassnomprenom
: int: String: String: String: String
Categorie
--
idlibelle
: int: String
Importance
----
idlibCourtlibLongcouleur
: int: String: String: Color
Entite
+++
modifie ()supprime ()sauvegarde ()
: int: int: int
Liste
++++++
getListeUser ()getListeCategorie ()getListeImportance ()getListeMemosDuJour ()getListeMemos ()getListeMemosDunJour (Date jour)
: ArrayList: ArrayList: ArrayList: ArrayList: ArrayList: ArrayList
métier
Exempleprésentation
Fiche
{abstract}
---
panelOkAnnulerbutOKbutAnnuler
: JPanel: JButton: JButton
+++
{abstract} valide (){abstract} annule (){abstract} setBoundsPanelOkAnnuler ()
: int: int: void
ImportanceFiche
{abstract}
UserFiche
{abstract}
CategorieFiche
{abstract}
--
labLibelletxtLibelle
: JLabel: JTextField
++
{abstract} valide (){abstract} annule ()
: int: int
MemoFiche
{abstract}
MemoCycleFicheCategorieFicheAjout CategorieFicheModif CategorieFicheConsult CategorieFicheSuppr
Liste
JDialog
CategorieListe ImportanceListe UserListe MemoListe
{abstract}
MemoListeJour MemoListeMultiCriteres
ExempleDAO
0..*
1..1
DataBaseManager
-------
driverurluserpasswordconnexioninitinstance
: String: String: String: String: Connection: String: DateBaseManager
+++++
<<Getter>>
<<Constructor>>
getInstance ()getConnexion ()deleteInstance ()DataBaseManager ()executeUpdate ()
: DataBaseManager: Connection: void
: int
EntiteDAO
{abstract}
+++++ <<Constructor>>
{abstract} selectAll (){abstract} update (Entite o){abstract} delete (Entite o){abstract} insert (Entite o)EntiteDAO ()
: ArrayList: int: int: int
MemoDAO
++++
selectMemosDuJour ()selectMemos ()selectMemosDunJour (Date jour)getInstance ()
: ArrayList: ArrayList: ArrayList: MemoDAO
UserDAO
+ getInstance () : UserDAO
CategorieDAO
+ getInstance () : CategorieDAO
ImportanceDAO
+ getInstance () : ImportanceDAO
MemoCycleDAO
MVC Web Objet Le PHP 5 est orienté Objet Vous pouvez vous aider d’un
framework PHP : Aukyla Framework PHP CakePHP PHP on Trax PhpMVC symfony
Conseils règles de nommage
Objet : respecter les règles de nommage objet PHP non objet :
Vue : formNomFormulaire.html menu.php Consultation.php
Modèle : traiteNomFormulaire.php
Contrôle : redirection.php, confirmationAction.html,
ErreurAction.html, …
Versionning
Exemple de règles de version : X.YY.ZZZZX releaseYY major issueZZZZ minor issue (n° de commit SVN) patch