Formation A Distance pour la (re) qualification des personnes

cowseedSoftware and s/w Development

Jun 12, 2012 (1 year and 10 months ago)

357 views

Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare1
Etude de cas «
Etude de cas «
Prison de Nantes
Prison de Nantes
»
»
Franck Barbier
Franck Barbier
Université de Pau et des Pays de l’Adour
Université de Pau et des Pays de l’Adour
Téléchargement :
Téléchargement :
www
www
.PauWare.
.PauWare.
com
com
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare2
Tout commence par le langage naturel…
Tout commence par le langage naturel…
L
L


informaticien
informaticien
:
:
«
«
est
est
-
-
ce qu
ce qu


un prisonnier peut
un prisonnier peut
arriver
arriver
à
à
la prison pour plusieurs affaires
la prison pour plusieurs affaires
?
?
»
»
Le directeur de la prison de Nantes
Le directeur de la prison de Nantes
:
:
«
«
il peut
il peut
ê
ê
tre
tre
é
é
crou
crou
é
é
en
en
«
«
pr
pr
é
é
ventive
ventive
»
»
. Dans ce cas,
. Dans ce cas,
il n
il n


a pas encore
a pas encore
é
é
t
t
é
é
condamn
condamn
é
é
. Mais il subit
. Mais il subit
une d
une d
é
é
cision d
cision d


incarc
incarc
é
é
ration qui a trait
ration qui a trait
à
à
une
une
affaire. Il a pu
affaire. Il a pu
ê
ê
tre
tre
é
é
crou
crou
é
é
parce qu
parce qu


il a
il a
é
é
t
t
é
é
condamn
condamn
é
é
pour une affaire. Il peut aussi
pour une affaire. Il peut aussi
ê
ê
tre
tre
é
é
crou
crou
é
é
parce qu
parce qu


il a
il a
é
é
t
t
é
é
condamn
condamn
é
é
pour
pour
plusieurs affaires.
plusieurs affaires.
»
»
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare3
Prison de Nantes
Prison de Nantes


Détenu

«unique» n°écrou
: Integer

prénom
: String

nom
: String
date naissance
: Time-Date
lieu naissance
: String

Affaire

n°affaire
: Integer

Juridiction

«unique» nom juridiction
: String
Time-Date
0..1
{subsets toutes}
1
n°affaire
1
*
1..*
toutes
*

1..*


Incarcération

date incarcération
: Time-Date
Motif

«unique» n°motif
: Integer

«unique» libellé motif
: String
1
*
D
écision

«const» n°type décision
: [1..3]
1
*

Réduction peine

«const» n°type décision
: [1..3] = 2
durée
: Integer

date
faits
Libération définitive

«const» n°type décision
: [1..3] = 3
1
date
libération
*
Condamnation

«const»

n°type décision
: [1..3] = 1
durée
: Integer

{complete, disjoint}
1
*
{
context

Décision

inv

:

let

d

: Décision

in

self <> d

implies


self.n°type décision <> d.n°type décision or
self.détenu <> d.détenu
or
self.date décision <> d.date décision}
date décision
Prison de Nantes

1
{
context

Prison de Nantes
inv
:
Pr
ison de Nantes.allInstances

size() = 1}
1 principale
{subsets toutes}
*
toutes
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare4
PIMs, rationalité des modèles
PIMs, rationalité des modèles

{
context
Préventive
inv:
condamnation->isEmpty()}
Détenu
«unique» n°écrou : Integer
prénom : String
nom : String
date naissance : Time-Date
lieu naissance : String
Préventive
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare5
PSMs, tiers «
PSMs, tiers «
persistance
persistance
»
»

Detenu
Affaire
Incarceration
Motif
Decision
Reduction_peine
Liberation_definitive
Condamnation
Detenu_Affaire
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare6
PSMs, tiers «
PSMs, tiers «
intergiciel
intergiciel
»
»

«EJBEntityBean»
Detenu
«EJBEntityBean»
Affaire

«EJBEntityBean»
Incarceration
«EJBEntityBean»
Motif

«EJBEntityBean»
Decision

«EJBEntityBean»
Reduction_peine
«EJBEntityBean»
Liberation_definitive
«EJBEntityBean»
Condamnation

participants
toutes
p
rincipal
e
«EJBStatelessSessionBean»
Prison_de_Nantes

«provided interfaces»
incarcerer
decider
p
reventive

«EJBModule»
Prison_de_Nantes
«JNDI»
«JNDI»
«JNDI»
«JNDI»
Notre propre stéréotype
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare7
PSMs, différents niveaux
PSMs, différents niveaux
Niveau «
Niveau «
compatibilité
compatibilité
EJB
EJB
Specification
Specification
Version 2.1
Version 2.1
»
»
Niveau «
Niveau «
serveur J2EE
serveur J2EE
»
»
Autres ?
Autres ?
Comment marier («
Comment marier («
tisser
tisser
») les modèles en
») les modèles en
conservant l’inter
conservant l’inter
-
-
cohérence ?
cohérence ?
NetBeans
NetBeans
5.0
5.0
n’y arrive pas…
n’y arrive pas…
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare8
PSMs niveau «
PSMs niveau «
EJB
EJB
Specification
Specification
Version 2.1
Version 2.1
»
»
Exemple
Exemple
Detenu
Detenu
-
-
Condamnation
Condamnation
<
<
ejb
ejb
-
-
relation>
relat
i
on>
<description/>
<description/>
<
<
ejb
ejb
-
-
relation
relat
i
on
-
-
name
name
>
>
Detenu
De
t
enu
-
-
Condamnation</
Condamnat
i
on<
/ejb
ejb
-
-
relation
relat
i
on
-
-
name
name
>
>
<
<
ejb
ejb
-
-
relationship
rela
ti
onship
-
-
role
role
>
>
<
<
ejb
ejb
-
-
relationship
relat
i
onship
-
-
role
role
-
-
name
name
>
>
detenu
detenu
</
</
ejb
ejb
-
-
relationship
relationship
-
-
role
role
-
-
name
name
>
>
<
<
multiplicity
multiplicity
>One</
>One</
multiplicity
multiplicity
>
>
<
<
relationship
relationship
-
-
role
role
-
-
source>
source>
<
<
ejb
ejb
-
-
name
name
>
>
DetenuBean
DetenuBean
</
</
ejb
ejb
-
-
name
name
>
>
</
</
relationship
relationship
-
-
role
role
-
-
source>
source>
<
<
cmr
cmr
-
-
field
field
>
>
<
<
cmr
cmr
-
-
field
field
-
-
name
name
>condamnation</
>condamnation</
cmr
cmr
-
-
field
field
-
-
name
name
>
>
<
<
cmr
cmr
-
-
field
field
-
-
type>java.
type>java.
util
util
.Collection</
.Collection</
cmr
cmr
-
-
field
field
-
-
type>
type>
</
</
cmr
cmr
-
-
field
fie
l
d
>
>
</
</
ejb
ejb
-
-
relationship
relat
i
onship
-
-
role
role
>
>
<
<
ejb
ejb
-
-
relationship
relat
i
onship
-
-
role
role
>
>
<
<
ejb
ejb
-
-
relationship
relat
i
onship
-
-
role
role
-
-
name
name
>condamnation</
>c
ondam
nation<
/
ejb
ejb
-
-
relationship
relationship
-
-
role
role
-
-
name
name
>
>
<
<
multiplicity
multiplicity
>
>
Many
Many
</
</
multiplicity
multiplicity
>
>
<
<
relationship
relationship
-
-
role
role
-
-
source>
source>
<
<
ejb
ejb
-
-
name
name
>
>
CondamnationBean
CondamnationBean
</
</
ejb
ejb
-
-
name
name
>
>
</
</
relationship
relationship
-
-
role
role
-
-
source>
source>
</
</
ejb
ejb
-
-
relationship
relationship
-
-
role
role
>
>
</
</
ejb
ejb
-
-
relation>
relation>
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare9
PSMs niveau «
PSMs niveau «
serveur J2EE
serveur J2EE
» :
» :
sun
sun
-
-
cmp
cmp
-
-
mappings
mappings
Exemple
Exemple
Detenu
Detenu
-
-
Condamnation
Condamnation
<
<
entity
entity
-
-
mapping
mapping
>
>
<
<
ejb
ejb
-
-
name
name
>
>
DetenuBean
DetenuBean
</
</
ejb
ejb
-
-
name
name
>
>
<table
<table
-
-
name
name
>DETENU</table
>DETENU</table
-
-
name
name
>
>
...
...
<
<
cmr
cmr
-
-
field
field
-
-
mapping
mapping
>
>
<
<
cmr
cmr
-
-
field
field
-
-
name
name
>condamnation</
>condamnation</
cmr
cmr
-
-
field
field
-
-
name
name
>
>
<
<
column
column
-
-
pair>
pair>
<
<
column
column
-
-
name
name
>DETENU.N_ECROU</
>DETENU.N_ECROU</
column
column
-
-
name
name
>
>
<
<
column
column
-
-
name
name
>CONDAMNATION.N_ECROU</
>CONDAMNATION.N_ECROU</
column
column
-
-
name
name
>
>
</
</
column
column
-
-
pair>
pair>
<
<
fetched
fetched
-
-
with
with
>
>
<none/>
<none/>
</
</
fetched
fetched
-
-
with
with
>
>
</
</
cmr
cmr
-
-
field
field
-
-
mapping
mapping
>
>
</
</
entity
entity
-
-
mapping
mapping
>
>
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare10
Navigations, d’OCL à EJB QL
Navigations, d’OCL à EJB QL
Exemple de la notion de «
Exemple de la notion de «
préventive
préventive
»
»
SELECT DISTINCT OBJECT(d1) FROM
SELECT DISTINCT OBJECT(d1) FROM
Detenu
Detenu
d1, IN (d1.
d1, IN (d1.
decision
decision
) as d2 WHERE
) as d2 WHERE
d2.
d2.
nTypeDecision
nTypeDecision
= ‘1’
= ‘1’
SELECT DISTINCT OBJECT(d) FROM
SELECT DISTINCT OBJECT(d) FROM
Detenu
Detenu
d WHERE d.condamnation IS NOT
d WHERE d.condamnation IS NOT
EMPTY
EMPTY
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare11
Satisfaction des contraintes
Satisfaction des contraintes
Cardinalités
Cardinalités
Opération d’interface «incarcerer» : l’incarcération a un et un
seul motif et une et une seule affaire dite «principale»
public interface IncarcerationLocalHome extendsEJBLocalHome {
IncarcerationLocal create(String nEcrou,java.sql.Timestamp dateIncarceration,MotifLocal
motif,AffaireLocalprincipale) throws CreateException;

}
OCL
OCL
contextDetenu invi1:
toutes->includesAll(incarceration.principale)
public booleani1() {
return getToutes().contains(getIncarceration().getPrincipale());
}
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare12
Why
Why
not?
not?
trouver détenu créer détenu
trouver affaire créer affaire
trouver motif créer motif
trouver
incarcération
créer
incarcération,
relation
incarcération-
motif, relation
incarcération-
principale
[found]
[not
found]
[found]
[not
found]
[found]
[not
found]
Prison_de_Nantes::incarcerer
[found]
[not
found]
créer relation
détenu-
incarcération,
créer relation
détenu-toutes,
créer relation
affaire-
participants
Les
Les
Activity Diagram
Activity Diagram
ne sont
ne sont
jamais que des organigrammes. Ils
jamais que des organigrammes. Ils
peuvent éventuellement servir à
peuvent éventuellement servir à
décrire le contenu d’opérations
décrire le contenu d’opérations
d’interfaces des EJBs, ici la
d’interfaces des EJBs, ici la
business
business
méthode
méthode
incarcerer
incarcerer
du
du
Stateless
Stateless
Session
Session
Bean
Bean
Prison_de_Nantes
Prison_de_Nantes
Développement coordonné UML 2 / EnterpriseJavaBeans™
©Franck.Barbier@FranckBarbier.com
-groupe de recherche PauWare13
Exercice
Exercice
Implanter les relations EJB
Implanter les relations EJB
Detenu
Detenu
-
-
Reduction
Reduction
_peine
_peine
et
et
Detenu
Detenu
-
-
Liberation
Liberation
_
_
definitive
definitive
Implanter ensuite la
Implanter ensuite la
business
business
méthode «
méthode «
decider
decider
»
»
de la
de la
provided
provided
interface
interface
de l’EJB
de l’EJB
Prison_de_Nantes
Prison_de_Nantes
, méthode qui crée une nouvelle
, méthode qui crée une nouvelle
décision et la rattache au détenu concerné
décision et la rattache au détenu concerné