Académique Documents
Professionnel Documents
Culture Documents
Processus
de
conception
de
systèmes
d'information
(C352)
Pascal
ANDRÉ,
Alain
VAILLY
(Université
de
Nantes)
juin
2016
version
imprimable
du
cours
Chapitre
4
Concevoir
la
solution
L’étape
de
conception
décrit
une
solution
au
problème
spécifié
dans
l'analyse
dans
le
cadre
technique
choisi.
Elle
définit
la
solution
retenue
par
prise
en
compte
des
caractéristiques
logiques
d'usage
du
futur
système
d'information
et
des
moyens
de
réalisation,
humains,
techniques
et
organisationnels.
Reprenons
l’introduction
de
Jacques
Lonchamp
à
ce
sujet
[18]
:
«
La
phase
de
conception
logicielle
est
l’équivalent,
dans
le
domaine
de
l’informatique,
de
la
phase
de
conception
que
l’on
retrouve
dans
toutes
les
disciplines
de
l’ingénierie
traditionnelle
(génie
mécanique,
génie
civil,
génie
électrique,
etc.).
Toute
conception
a
pour
finalité
de
penser
et
de
représenter
le
produit
à
réaliser
sous
une
forme
abstraite,
avant
sa
production
effective.
Cependant,
la
nature
immatérielle
du
logiciel
rend
la
frontière
entre
la
conception
et
le
produit
plus
floue
que
dans
l’ingénierie
traditionnelle.
La
différence
entre
le
plan
d’un
pont
et
le
pont
lui-‐même
est
plus
évidente
que
la
différence
entre
un
schéma
de
classes
et
le
programme
objet
qui
l’implante.
»
La
conception
est
une
vaste
activité
fondée
sur
la
maîtrise
de
techniques
de
mise
en
œuvre
mais
aussi,
et
surtout,
de
concepts
et
pratiques
relatifs
à
la
qualité
des
résultats.
La
figure
1,
extraite
d’un
cours
de
Gerson
Sunyé
à
l’Université
de
Nantes
[26],
montre
la
complexité
du
problème.
figure
1-‐
La
conception
de
logiciels,
un
problème
complexe
Pressman
consacre
un
chapitre
complet
à
ces
concepts,
le
chapitre
8
de
son
ouvrage
[20].
Les
concepts
clés
sont
l’abstraction,
l’architecture,
les
patrons
récurrents
(patterns),
la
séparation
des
préoccupations,
la
modularité,
l’indépendance
fonctionnelle,
etc.
Le
résultat
est
un
modèle
figure
2
-‐
Notation
UML
:
les
vues
Chapitre
4
:
Grandes
catégories
de
solutions
Pattern
d’architecture
Framework
Méthode
:
règles
de
conception,
bonnes
pratiques
Gestion
de
projet
agile,
itérations…
Plan
I.
Introduction................................................................................................................................................ 6
A.
Localisation
dans
le
cycle
de
vie
du
logiciel........................................................................................... 6
B.
Enjeux
et
risques.................................................................................................................................... 6
C.
Processus
et
résultats .......................................................................................................................... 12
D.
Déroulement ....................................................................................................................................... 16
E.
Support ................................................................................................................................................ 17
II.
Architectures
logicielles........................................................................................................................... 18
A.
Définitions ........................................................................................................................................... 18
figure
3
-‐
Processus
2TUP
Le
mot
clé
à
ce
niveau
est
«
architecture
».
Le
résultat
doit
donc
être
une
vision
claire
de
l’application,
à
un
niveau
suffisamment
abstrait
pour
masquer
les
détails
mais
faciliter
la
compréhension.
Evidemment
la
manière
de
faire
varie
avec
l’approche
technologique
choisie
(solution
distribuée
ou
pas,
sur
le
web,
en
mobilité…).
L’élaboration
met
au
point
et
valide
l’architecture
du
système,
c’est-‐à-‐dire
qu’à
l’issue
de
cette
étape
le
cadre
de
développement
est
bien
défini
et
la
faisabilité
est
assurée.
Elle
établit
l’architecture
et
la
planification
contrôlée
du
projet.
1. Les
objectifs
Les
objectifs
d’une
«
bonne
conception
»
sont
multiples.
Elle
doit
être
facile
à
comprendre
(intelligibilité).
La
modification
des
fonctionnalités
existantes
doit
être
aussi
aisée
que
possible,
sans
reprogrammations
excessives
(flexibilité),
de
même
que
l’implantation
de
nouvelles
fonctionnalités
(extensibilité).
Ces
évolutions
ne
doivent
pas
mettre
en
péril
l’existant
(robustesse,
non-‐régression).
Certaines
parties
d’une
application
doivent
pouvoir
être
reprises
pour
en
construire
d’autres
(modularité
et
réutilisabilité).
Pressman
propose
un
guide
pour
la
qualité
de
la
conception
[20],
page
219
:
1. A
design
should
exhibit
an
architecture
that
(1)
has
been
created
using
recognizable
architectural
styles
or
patterns,
(2)
is
composed
of
components
that
exhibit
good
design
characteristics
(these
are
discussed
later
in
this
chapter),
and
(3)
can
be
implemented
in
an
evolutionary
fashion,
thereby
facilitating
implementation
and
testing.
2. A
design
should
be
modular;
that
is,
the
software
should
be
logically
partitioned
into
elements
or
subsystems.
3. A
design
should
contain
distinct
representations
of
data,
architecture,
interfaces,
and
components.
4. A
design
should
lead
to
data
structures
that
are
appropriate
for
the
classes
to
be
implemented
and
are
drawn
from
recognizable
data
patterns.
5. A
design
should
lead
to
components
that
exhibit
independent
functional
characteristics.
6. A
design
should
lead
to
interfaces
that
reduce
the
complexity
of
connections
between
components
and
with
the
external
environment.
7. A
design
should
be
derived
using
a
repeatable
method
that
is
driven
by
information
obtained
during
software
requirements
analysis.
8.
A
design
should
be
represented
using
a
notation
that
effectively
communicates
its
meaning.
Selon
Pressman,
ces
qualités
ne
sont
pas
dues
au
hasard
mais
à
l’application
de
principes
fondamentaux
de
conception,
détaillés
sous
forme
de
concepts
dans
le
chapitre
8
de
son
ouvrage
[20]
(Abstraction,
Architecture,
Patterns,
Separation
of
Concerns,
Modularity,
Information
Hiding,
Functional
Independence,
Refinement,
Aspects,
Refactoring,
Object-‐Oriented
Design
Concepts).
figure
4
-‐
dimensons
du
modèle
de
conception
4. Les
risques
Contrairement
à
l’expression
du
besoin
et
son
analyse
(chapitre
3),
les
risques
se
focalisent
plus
sur
les
aspects
techniques,
notamment
la
qualité
intrinsèque
du
logiciel,
que
son
adéquation
au
besoin.
Nous
nous
trouvons
plus
dans
le
«
mal
faire
»
que
«
pas
faire
».
En
effet,
via
la
figure
5
-‐
De
l'analyse
à
la
conception,
selon
Pressman
2. Utilisation
d’UML
Les
modèles
utilisés
en
conception
sont
une
abstraction
des
modèles
finaux,
en
ce
sens
on
y
fait
apparaître
les
éléments
de
conception
à
haut
niveau
d’abstraction
i.e.
sans
les
détails
précis.
Nous
les
qualifions
de
modèles
d’implantation.
Ils
étaient
très
développés
dans
la
méthode
de
Booch,
mais
ils
le
sont
moins
en
UML.
Si
la
technologie
cible
le
permet,
on
peut
utiliser
les
diagrammes
du
niveau
logique
(chapitre
3)
et
les
spécialiser
(une
classe
en
analyse
n’a
pas
le
même
degré
de
précision
qu’en
conception.
Deux
diagrammes
sont
spécifiques
aux
couches
basses
des
modèles
:
le
diagramme
de
composants
et
le
diagramme
de
déploiement.
1
http://www.uml-‐diagrams.org/deployment-‐diagrams-‐examples.html
En
2000,
Jim
Conallen
proposait
déjà
une
notation
UML
spécifique
pour
les
applications
Web
[8].
Les
exemples
sont
développés
en
ASP.NET2.
On
peut
imaginer
adapter
la
notation
à
J2EE.
3. La
validation
À
ce
stade,
la
validation
est
surtout
faite
sous
forme
de
lecture
croisée
par
des
experts.
On
peut
aussi
vérifier
la
cohérence
avec
le
style
architectural
et
exploiter
les
métriques
de
qualité
lorsqu’elles
sont
disponibles.
D. Déroulement
Bien
que
dans
le
livre
sur
le
processus
unifié
[17],
la
conception
soit
un
tout,
les
auteurs
proposent
quatre
activités
séquentielles
:
conception
architecturale
(support
de
déploiement,
décomposition
en
sous-‐systèmes,
classes
principales
de
conception,
mécanismes
communs
–notre
architecture
technique),
conception
des
cas
d’utilisation
(raffinement),
conception
des
classes
de
conception
(les
classes
clés),
et
conception
des
sous-‐systèmes.
L’objectif
est
d’alimenter
les
modèles
dans
chacune
des
vues
de
la
figure
2.
Le
processus
est
itératif
sur
les
activités.
Le
résultat
est
une
description
de
modèles
de
conception
couvrant
la
logique
métier
issue
de
l’analyse
et
les
domaines
techniques
que
sont
la
persistance
et
la
distribution
(concurrence,
communication)
à
travers
le
déploiement
sur
les
unités
physiques.
Ces
modèles
de
conception
doivent
rester
à
un
niveau
d’abstraction
élevé
(architecture)
et
masquer
les
détails
d’implantation
(qui
seront
explicités
dans
la
conception
détaillée).
2
http://phrogz.net/tmp/webuml/whitepaper/ModelingWebApplications.htm
1. Activités
Les
activités
de
la
conception
architecturale
consistent
à
faire
correspondre
l’architecture
logique,
issue
de
l’analyse
et
l’architecture
technique
(cf
figure
3).
Nous
en
traçons
l’esquisse
ici.
Rappelons
que
les
principes
de
conception
de
la
section
Erreur
!
Source
du
renvoi
introuvable.
s’appliquent
pleinement
ici.
Les
cas
d’utilisation
enrichis
lors
de
l’analyse
par
des
diagrammes
de
séquences
détaillés
font
apparaître
un
niveau
de
détail
supplémentaire
relatifs
aux
concepts
de
conception
(classes,
beans,
pages
JSP,
pages
HTML…).
Le
raffinement
se
fait
à
un
certain
niveau
d’abstraction
et
se
poursuivra
dans
la
conception
détaillée.
Fixer
le
niveau
d’abstraction
est
une
affaire
d’expérience.
2. Processus
Reprenons
la
description
de
Pressman
([20],
p.
257).
«
As
architectural
design
begins,
the
software
to
be
developed
must
be
put
into
context—that
is,
the
design
should
define
the
external
entities
(other
systems,
devices,
people)
that
the
software
interacts
with
and
the
nature
of
the
interaction.
This
information
can
generally
be
acquired
from
the
requirements
model
and
all
other
information
gathered
during
requirements
engineering.
Once
context
is
modeled
and
all
external
software
interfaces
have
been
described,
you
can
identify
a
set
of
architectural
archetypes.
An
archetype
is
an
abstraction
(similar
to
a
class)
that
represents
one
element
of
system
behavior.
The
set
of
archetypes
provides
a
collection
of
abstractions
that
must
be
modeled
architecturally
if
the
system
is
to
be
constructed,
but
the
archetypes
themselves
do
not
provide
enough
implementation
detail.
Therefore,
the
designer
specifies
the
structure
of
the
system
by
defining
and
refining
software
components
that
implement
each
archetype.
This
process
continues
iteratively
until
a
complete
architectural
structure
has
been
derived.
»
Les
détails
sont
donnés
en
page
258
de
[20].
E. Support
Les
activités
de
support
sont
similaires
à
celles
de
l’analyse,
sauf
pour
la
partie
prototypage
où
elles
sont
proches
du
développement
logiciel.
A. Définitions
Citant
la
norme
IEEE
1471-‐2000,
Jacques
Lonchamp
définit
ainsi
l’architecture.
Définition
1. L’architecture
d’un
système
logiciel3
décrit
son
organisation
générale,
exprimée
en
termes
de
ses
composants,
des
relations
entre
ses
composants
et
avec
l’environnement,
et
des
principes
qui
gouvernent
sa
conception
et
son
évolution.
On
le
voit,
l’architecture
est
à
la
fois
le
«
blue
print
»
et
son
mode
d’emploi.
Elle
explique
les
choix
et
la
manière
de
les
maintenir.
La
difficulté
principale
dans
l’expression
d’une
architecture
logicielle
est
que
qu’il
ne
s’agit
pas
simplement
d’abstraction
mais
souvent
de
structuration.
En
effet,
au
niveau
de
l’implantation
les
concepts
principaux
sont
ceux
de
la
programmation
à
objets
(en
plus
de
la
persistance,
des
réseaux
et
des
affichages
IHM),
il
n’existe
pas
de
composants
ou
services.
Dès
lors,
on
doit
grouper,
reformuler,
structurer
pour
présenter
une
architecture.
Il
y
a
donc
un
décalage
fort
entre
l’architecture
et
sa
mise
en
œuvre.
Dans
une
des
bibles4
sur
le
sujet
[4],
Clements
et
al.
suggèrent
la
définition
suivante
:
Définition
2. The
software
architecture
of
a
system
is
the
set
of
structures
needed
to
reason
about
the
system,
which
comprise
software
elements,
relations
among
them,
and
properties
of
both.
La
définition
est
précisée
par
un
certain
nombre
de
remarques.
Bien
que
les
décisions
architecturales
importantes
soient
prises
au
début,
ce
n'est
pas
systématique
dans
un
développement
itératif.
L'architecture
est
un
ensemble
de
structures
logicielles
et
non
une
seule
structure.
Les
structures
sont
de
trois
types
:
les
modules,
les
interactions
(connexions)
et
le
3
Comme
le
fait
remarquer
Jacques
Lonchamp,
ce
système
ne
comprend
pas
que
des
composants
logiciels,
il
y
a
aussi
des
bases
de
données,
des
flux
de
messages,
ou
d’événements,
des
fichiers
de
configuration,
et
des
éléments
physiques
pour
le
déploiement
(serveurs,
navigateurs,
intergiciels
…).
4
L'autre
est
l'ouvrage
de
Garlan
et
Shaw
[25].
Il
ne
faut
pas
confondre
architecture
(système)
avec
architecture
(d'entreprise).
Les
deux
disciplines
incluent
le
logiciel
mais
ne
se
résument
pas
à
cela.
L'architecture
système
vise
à
définir
la
correspondance
entre
les
fonctionnalités
et
les
composants
matériels
et
logiciels.
La
seconde
décrit
la
structure
et
le
comportement
d'une
organisation
(processus,
flux
d'information,
organisation...)5.
S’il
n’est
besoin
de
montrer
la
difficulté
à
saisir
le
sujet,
soulignons
que
J.
Printz,
qui
consacre
un
ouvrage
complet
à
l’architecture
logicielle
[21]
ne
déclare
tenter
une
définition
qu’à
la
page
59
de
son
ouvrage,
définition
qu’il
ne
donne
pas
formellement
en
synthétisant
et
analysant
les
définitions
les
plus
courantes
pour
y
voir
plutôt
des
règles
d’architecture.
1. Le
genre
architectural
Le
genre
architectural
proposé
par
Grady
Booch
et
repris
par
Pressman
[20],
qui
correspond
plus
à
un
type
d'application
qu'un
type
(un
style)
d'architecture6.
• Artificial
intelligence—Systems
that
simulate
or
augment
human
cognition,
locomotion,
or
other
organic
processes.
• Commercial
and
nonprofit—Systems
that
are
fundamental
to
the
operation
of
a
business
enterprise.
• Communications—Systems
that
provide
the
infrastructure
for
transferring
and
managing
data,
for
connecting
users
of
that
data,
or
for
presenting
data
at
the
edge
of
an
infrastructure.
• Content
authoring—Systems
that
are
used
to
create
or
manipulate
textual
or
multimedia
artifacts.
• Devices—Systems
that
interact
with
the
physical
world
to
provide
some
point
service
for
an
individual.
• Entertainment
and
sports—Systems
that
manage
public
events
or
that
provide
a
large
group
entertainment
experience.
• Financial—Systems
that
provide
the
infrastructure
for
transferring
and
managing
money
and
other
securities.
• Games—Systems
that
provide
an
entertainment
experience
for
individuals
or
groups.
5
Revoir
le
chapitre
2
de
ce
cours
à
ce
sujet.
6
On
retrouve
de
telles
classifications
dans
les
standards
de
l'OMG.
2. Le
style
architectural
Les
styles
architecturaux
décrivent
une
certaine
philosophie
d'organisation
selon
Lonchamp
[18].
La
classification
initiale
est
due
à
Garlan
et
Shaw
[25]
n'a
guère
bougé
même
si
des
variations
existent.
Le
style
est
à
la
fois
une
grille
de
lecture
et
un
guide
de
construction.
Pressman
[20]
distingue
cinq
styles,
ceux
de
Lonchamp
[18]
sont
peu
ou
prou
les
mêmes.
• L'architecture
basée
sur
les
données
(dépôt
de
donnée)
dans
laquelle
la
base
de
donnée
est
centrale,
les
autres
composants
l'invoquent
pour
consulter,
ajouter,
modifier
ou
supprimer
des
données
(figure
8).
Une
variante
existe,
appelée
tableau
noir,
dans
laquelle
des
traitements
sont
déclenchés
sur
le
dépôt
-‐
solveur
de
problème
par
exemple).
figure
8
-‐
style
architectural
centré
sur
les
données
• L'architecture
flots
de
données
dans
laquelle
les
composants
autonomes
agissent
sous
l'impulsion
de
données.
Des
variantes
existent
comme
les
traitements
batch,
tubes
et
filtres
(figure
9),
ou
la
boucle
de
contrôle.
Ces
variantes
sont
souvent
des
patterns.
• L'architecture
appel
et
retour
avec
flot
de
contrôle
unique
qu'on
retrouve
dans
le
classique
découpage
fonctionnel
hiérarchique
(figure
10).
figure
10
-‐
style
architectural
appel
et
retour
Source
:
http://eprints.cs.univie.ac.at/2366/1/porto-‐soa.pdf
figure
12
-‐
Architecture
SOA
en
couches
3. Le
patron
architectural
Les
patterns
architecturaux
décrivent
des
assemblages
précis
pour
résoudre
un
problème
particulier
dans
un
contexte
donné
[18],
à
l'instar
des
patterns
de
conception
que
nous
aborderons
dans
le
chapitre
suivant.
Plusieurs
classifications
existent
([13],
[24]).
Reprenons
celle
de
Lonchamp
[18]
qui
lui-‐même
reprend
[24].
• Patrons
généraux
d'organisation
o layers,
o pipes
and
filters,
o blackboard,
o shared
repository,
• Patrons
de
systèmes
interactifs
figure
13
-‐
Pattern
client
web
léger
figure
14
-‐
Pattern
Client
lourd
• Livraison
web
pour
des
applications
distribuées
avec
en
plus
d'HTML
pour
la
communication
client
serveur,
des
protocoles
IIOP
ou
DCOM
ou
maintenant
des
services
web.
http://immobilis.developpez.com/articles/dotnet/architecture-‐multicouche-‐asp-‐net/
figure
17
-‐
Architecture
multi-‐couche
ASP.NET
figure
18
-‐
YAPS
architecture
en
6
couches
7
Nous
la
reverrons
en
détail
au
chapitre
6.
Dans
[19],
J.
Molière
propose
une
description
épurée
des
couches
sans
détailler
les
composants
logiciels
(figure
20).
Il
s'agit
plus
d'une
architecture
technique
qu'applicative
même
si
cette
dernière,
implicite
du
point
de
vue
des
modèles
dans
l'ouvrage,
est
supportée
dans
la
même
organisation.
figure
20
-‐
Architecture
Web
J2EE
en
5
couches
http://www.thibaut-‐delcroix.fr/blog/article-‐34-‐introduction-‐a-‐la-‐soa-‐ou-‐architecture-‐orientee-‐services.html
figure
21
-‐
Architecture
SOA
et
non
SOA
D. Architecture
Web
Brossons
un
rapide
tour
d’horizon
des
architectures
Web
avant
d’en
voir
les
principales
mises
en
œuvre.
1. Introduction
Les
architectures
Web
correspondent
à
une
forme
particulière
de
client-‐serveur8
en
(au
moins)
trois
tiers,
le
tiers
client
(présentation),
le
tiers
intermédiaire
(applicatif
ou
métier)
et
le
tiers
ressources
(bases
de
données,
autres
applications).
Elles
sont
détaillées
dans
le
chapitre
14
[18].
La
figure
22
illustre
cette
architecture
abstraite.
8
Le
côté
serveur
occupe
les
deux
derniers
tiers.
En
pratique,
il
existe
une
grande
variété
de
solutions
(composants)
qu’il
faut
choisir
et
faire
cohabiter
au
mieux
[18].
Toute
l’expérience
des
développeurs
web
(et
notamment
J2EE)
consiste
à
maîtriser
ces
solutions,
techniques
et
autres
frameworks.
Pour
la
conception
de
solutions
web,
on
s’attachera
à
mettre
en
évidence
des
patterns
qui
résolvent
de
manière
standard
les
problèmes
associés
à
ce
type
de
conception
(voir
le
chapitre
5
à
ce
sujet).
J.
Lonchamp
met
ainsi
en
évidence
quelques
patterns
pour
une
architecture
Web
J2EE
dans
l’exemple
de
la
figure
23.
figure
23
-‐
Patterns
pour
une
architecture
Web
À
ce
sujet,
citons
un
poste
du
blog
octo9
:
«
Les
applications
Web
évoluent.
Depuis
les
premiers
sites
en
HTML
statique
jusqu’aux
applications
AJAX
de
ces
dernières
années,
en
passant
par
les
multiples
technologies
de
sites
Web
dynamiques
(PHP,
ASP,
Java,
Rails…),
les
architectures
applicatives
et
les
outils
pour
les
mettre
en
place
connaissent
régulièrement
des
avancées
majeures
et
des
points
de
ruptures.
».
Le
schéma
de
la
figure
24
illustre
l’évolution
des
architectures
d’applications
Web
dans
lequel
la
part
côté
client
monte
avec
le
temps.
9
http://blog.octo.com/les-‐nouvelles-‐architectures-‐front-‐web-‐et-‐leur-‐impact-‐sur-‐les-‐dsi-‐partie-‐1/
figure
25
-‐
Applications
Web
et
Mobiles
2. Framework
Web
Dans
un
article
introductif10,
Gunjan
Samtani
et
Dimple
Sadhwani
expliquent
et
illustre
la
notion
de
framework
pour
les
applications
Web,
en
lien
avec
les
Web
services.
Synthétiquement,
les
fonctions
attendues
sont
celles
de
la
figure
26
:
gestion
des
contenus,
des
communications
via
les
réseaux,
de
la
persistance,
de
la
sécurité,
des
transactions,
etc.
figure
26
-‐
Fonctions
d'un
framework
web
Deux
grandes
catégories
de
frameworks
se
sont
imposées
pour
les
applications
web
:
J2EE
de
Sun
et
ASP.NET
de
Microsoft.
3. ASP.NET
ASP.NET
est
une
solution
pour
créer
des
sites
Web
basés
sur
les
standards
HTML5,
CSS3
et
JavaScript
dans
le
monde
Windows.
L’architecture
de
la
version
4.5
est
donnée
dans
la
figure
2711.
Elle
est
basée
sur
le
framework
à
composants
.NET
et
le
langage
de
description
de
pages
web
avec
des
contrôles.
10
http://nws.noaa.gov/oh/hrl/hseb/docs/ApplicationFrameworks.pdf
11
http://www.dotnet-‐tricks.com/Tutorial/aspnet/SaJc221013-‐Understanding-‐Detailed-‐Architecture-‐of-‐ASP.NET-‐
4.5.html
L’architecture
évolue
pour
prendre
en
compte
les
nouvelles
technologies,
à
savoir
la
mobilité
du
côté
clients
et
le
cloud
du
côté
serveur12.
La
version
2015
est
illustrée
par
la
figure
28
et
la
figure
29.
figure
28
-‐
Evolution
ASP.NET
12
https://blogs.msdn.microsoft.com/cesardelatorre/2014/11/18/what-‐is-‐net-‐core-‐5-‐and-‐asp-‐net-‐5-‐within-‐net-‐2015-‐
preview/
Le langage Visual Basic intègre les éléments de la solution (figure 30).
figure
30
-‐
Architecture
de
développement
ASP.NET
5
4. J2EE
Nous
invitons
le
lecteur
à
consulter
notre
introduction
au
sujet13.
Citons
wikipedia14.
Java
Enterprise
Edition,
ou
Java
EE
(anciennement
J2EE),
est
une
spécification
pour
la
technique
Java
d'Oracle
plus
particulièrement
destinée
aux
applications
d’entreprise.
Ces
applications
sont
considérées
dans
une
approche
multi-‐niveaux.
Dans
ce
but,
toutes
les
implémentations
de
cette
spécification
contiennent
un
ensemble
d’extensions
au
framework
Java
standard
(JSE,
Java
Standard
Edition)
afin
de
faciliter
notamment
la
création
d’applications
réparties.
La
figure
31
illustre
le
positionnement
de
J2EE
par
rapport
à
JSE,
le
framework
Java.
13
http://pagesperso.lina.univ-‐nantes.fr/~andre-‐p/download/dvtj2ee.pdf
14
https://fr.wikipedia.org/wiki/Java_EE
http://tekslate.com/distributed-‐systems-‐j2ee-‐architecture/
figure
32
-‐
Architecture
J2EE
Différents
composants
peuvent
être
contenus
dans
une
implémentation
Java
EE
:
• Servlet
:
Composant
représentant
le
C
(Controller)
du
paradigme
MVC,
• Portlet
:
Conteneur
Web
(extension
de
l’API
Servlet),
• JavaServer
Pages
(JSP)
:
Framework
Web,
• Java
Standard
Tag
Library
(JSTL)
:
bibliothèque
de
balises
pour
les
JSP,
• JavaServer
Faces
(JSF)
:
Java
Server
Face,
Framework
Web,
• EJB
:
Composants
distribués
transactionnels,
• JNDI
:
API
de
connexion
à
des
annuaires,
notamment
des
annuaires
LDAP,
et
espace
de
noms
d’objet
(ENC),
• JDBC
:
API
de
connexion
à
des
bases
de
données,
• Java
Message
Service
(JMS)
:
API
de
communication
asynchrone
par
message,
• JCA
:
API
de
connexion,
notamment
à
des
PGI,
figure
33
-‐
Architecture
de
Java
EE
5
[14]
Les
serveurs
d’application
peuvent
être
open-‐source
(JBoss,
JRun,
JOnAS,
Geronimo,
OpenEJB,
JFox,
Tomcat…)
ou
payants
(Websphere
IBM,
WebLogic
BEA,
Oracle
Application
Server…).
Les
serveurs
d'applications
sont
certifiés
(source
wikipedia)
selon
leur
compatibilité
avec
la
norme
Java
EE
7
:
• Oracle
GlassFish
Server
Open
Source
Edition
4.03,4
• TmaxSoft
TMAX
JEUS
85
• RedHat
Wildfly
8.0.06
http://www.oracle.com/technetwork/java/javaee/appmodel-‐135059.html
figure
34
-‐
Modèle
d’architecture
d’entreprise
http://www.commentcamarche.net/j2ee/j2ee-‐intro.php3
figure
35
-‐
MVC
et
J2EE
15
Un
exemple
d’implantation
d‘architecture
pour
web
services
sous
Eclipse
est
commenté
dans
un
article
sur
JST .
Il
permet
de
se
faire
une
idée
de
l’envers
du
décor.
5. Comparaison
Une
comparaison
des
deux
frameworks
est
proposée16
qui
permet
de
mesurer
la
complexité
des
couches
logicielles
et
la
variété
des
solutions.
15
https://eclipse.org/webtools/jst/components/j2ee/api/j2ee_models_overview.html
16
https://msdn.microsoft.com/en-‐us/library/aa478961.aspx
Les
deux
frameworks
ne
sont
pas
directement
compatibles
mais
les
solutions
sont
intégrables
comme
le
montre
la
figure
37.
http://nws.noaa.gov/oh/hrl/hseb/docs/ApplicationFrameworks.pdf
figure
37
-‐
Intégration
de
frameworks
via
les
services
web
Nous
n’avons
pas
vu
d’études
récentes
sur
l’utilisation,
les
deux
plateformes
étaient
réparties
de
manière
équilibrée.
Avec
le
mobile
et
Android,
Java
devrait
prendre
l’avantage.
a) Exemples
Comme
exemple
d’architecture
indirecte,
citons
[8]
où
Conallen
met
en
avant
les
3
patrons
de
conception
mais
la
conception
en
ASP.NET
apparait
dans
des
diagrammes
de
conception
détaillée,
avec
une
notation
UML
spécifique
pour
le
web
via
les
stéréotypes.
Il
y
a
donc
une
sorte
de
rupture.
Dans
[15],
Kadima
va
jusqu’à
détailler
les
méta-‐modèles
EJB
pour
de
la
transformation
mais
la
mise
en
œuvre
ne
présente
pas
de
vue
architecturale.
Dans
[14],
une
présentation
par
composants
UML
et
nœuds
de
déploiement
est
proposée
pour
déployer
des
composants
sur
l’architecture
technique
J2EE
(figure
19
reprise
ci-‐après).
Le
serveur
physique
comporte
une
base
de
données
et
un
serveur
d’applications.
Ce
dernier
est
composé
d’un
conteneur
de
servlets
et
d’un
conteneur
d’EJB.
Pour
la
partie
web,
on
retrouve
les
JSP,
JSF
et
JSTL,
alors
que
le
conteneur
d’EJB
héberge
les
beans.
L’application
YAPS
couvre
diverses
implantations
de
J2EE
avec
des
clients
lourds
ou
légers
et
une
interface
de
service
Web
avec
des
partenaires.
Les
services
web
sont
déployés
sur
les
serveurs
des
partenaires.
Dans
[20],
Pressman
établit
d’abord
un
diagramme
de
contexte
architectural
pour
l’application
SafeHome
(figure
38)
avant
de
décrire
les
composants
et
leurs
relations
(figure
39).
figure
39
–
Structure
architecturale
de
application
SafeHome
avec
les
composants
de
premier
niveau
On
trouve
sur
le
même
site
un
exemple
de
déploiement
pour
le
web
qui
illustre
bien
le
problème
de
la
répartition
sur
le
réseau
de
nœuds
de
déploiement
(figure
41).
Dans
[4],
différents
patterns
architecturaux
sont
présentés,
notamment
une
mise
en
œuvre
J2EE
(figure
42
-‐
Architecture
n-‐tier
du
système
Adventure
Builder)
SOA
(figure
43)
pour
un
système
appelé
Adventure
Builder,
OPC
signifie
ici
‘Order
Processing
Center’,
qui
centralise
les
requêtes.
figure
42
-‐
Architecture
n-‐tier
du
système
Adventure
Builder
Bien
que
ce
ne
soit
pas
le
propos,
mais
tout
de
même
lié
aux
contraintes
non
fonctionnelles
de
l’application,
nos
recherches
nous
ont
conduit
à
ce
croisement
entre
architecture
technique
et
sécurité.
Cela
fait
partie
des
préoccupations
à
inclure
dans
la
conception.
Les
contrôles
apparaissent
à
tous
les
niveaux
et
entre
les
couches
logicielles.
https://msdn.microsoft.com/en-‐us/library/ff648647.aspx
figure
44
-‐
Architecture
et
sécurité
De
même,
bien
que
ce
soit
en
dehors
de
notre
périmètre,
la
délocalisation
dans
le
cloud
a
aussi
une
influence
sur
l’architecture.
Sans
entrer
dans
les
détails,
on
ajoute
des
couches
supplémentaires
pour
des
données
(figure
45)
ou
des
services
distants
(figure
46).
Chapitre
4
–
Concevoir
la
solution
C352
44/72
http://www.ibm.com/developerworks/cloud/library/cl-‐ibm-‐leads-‐building-‐web-‐app-‐hosting-‐cloud-‐solutions-‐trs/index.html
figure
46
-‐
Exemple
d'architecture
logicielle
pour
le
Cloud
Toujours
à
titre
d’illustration,
car
nous
ne
détaillons
pas
ces
architectures,
les
applications
mobiles
mobilisent
aussi
beaucoup
de
dispositifs
et
de
couches
logicielles.
La
figure
47
met
en
évidence
ces
dispositifs
et
les
logiciels
qui
y
sont
attachés.
Le
middleware
est
assuré
par
des
communications
entre
services.
https://aws.amazon.com/fr/blogs/aws/innovative-‐social-‐gaming-‐and-‐location-‐based-‐services-‐startup-‐in-‐the-‐cloud/
figure
47
-‐
Architecture
pour
applications
mobiles
Ce
qui
précède
n’est
qu’un
échantillon
un
peu
aléatoire.
Voyons
aussi
d’autres
exemples
qui
ne
représentent
pas
vraiment
le
concept
d’architecture.
b) Contre-exemples
De
manière
plus
détaillée,
les
architectures
sont
explicitées
par
des
diagrammes
UML
comme
l’illustre
la
figure
48,
due
à
Conallen
qui
montre
via
des
éléments
stéréotypes
(spécialisés)
les
composants
de
conception
d’une
application
Web.
Néanmoins
cette
vue
correspond
plus
à
de
la
conception
détaillée
qu’architecturale
de
par
son
niveau
de
détail.
Il
en
est
de
même
pour
l’exemple
de
la
figure
49
qui
met
plus
en
évidence
une
«
collaboration
»
d’éléments
de
l’application
que
l’architecture
et
la
manière
de
catégoriser
les
éléments.
http://doi.ieeecomputersociety.org/cms/Computer.org/dl/trans/ts/2010/01/figures/tts20100100962.gif
figure
49
–
Organisation
d’éléments
de
l’architecture
(formulaires,
jsp…)
http://www.codingthearchitecture.com/images/2014/20140709-‐techtribesje-‐webapp.png
figure
50
-‐
Composants
dans
une
architecture
Spring
L’exemple
suivant
illustre
l’architecture
d’entreprise
qui
inclut
celle
des
applications
et
la
vision
des
processus
métier.
http://enterprisearchitect.blogs.ilrt.org/
figure
51
-‐
Enterprise
Architecture
at
Bristol
Terminons
par
une
série
sur
l’art
de
visualiser
des
architectures17,
en
lien
avec
le
concept
de
cartographie.
La
figure
52
montre
le
côté
visuel
et
schématique
des
présentations.
Finalement,
ce
qui
prime
est
le
point
de
vue
exprimé
et
que
l’idée
soit
bien
communiquée
et
comprise.
figure
52
-‐
Des
visions
architecturales
17
https://leanpub.com/visualising-‐software-‐architecture/read
Nous
avions
vu
auparavant
le
diagramme
de
contexte
(figure
38).
Celui-‐ci
peut
être
affiné
comme
le
montre
la
figure
54
(ce
n’est
pas
le
même
exemple)
en
mettant
en
évidence
une
partie
de
l’architecture
applicative.
figure
54
-‐
Diagramme
de
contexte
détaillée
du
cas
techribes
figure
55
-‐
Contenu
du
composant
ContentUpdater
du
cas
techribes
figure
57
-‐
Modèles
de
la
conception
architecturale
-‐
RUP
Rappelons que l’architecture est un des fondements du processus unifié.
Le
processus
de
mise
au
point
est
itératif,
une
version
est
proposée
dans
la
figure
58
;
il
est
aussi
itératif
sur
l’ensemble
du
processus
de
développement.
La
figure
5818
montre
que
l’on
part
toujours
d’un
existant
architectural.
18
Il
s’agit
d’un
document
IBM
et
non
pas
d’un
document
RUP.
B. Démarche
ATAM
Regardons
maintenant
l’approche
de
Pressman
([20],
p.
262)
qui
reprend
une
méthode
d'analyse
proposée
par
le
SEI.
Citons
:
An
Architecture
Trade-‐Off
Analysis
Method
The
Software
Engineering
Institute
(SEI)
has
developed
an
architecture
trade-‐off
analysis
method
(ATAM)
that
establishes
an
iterative
evaluation
process
for
software
architectures.
The
design
analysis
activities
that
follow
are
performed
iteratively:
1. Collect
scenarios.
A
set
of
use
cases
is
developed
to
represent
the
system
from
the
user’s
point
of
view.
2. Elicit
requirements,
constraints,
and
environment
description.
This
information
is
determined
as
part
of
requirements
engineering
and
is
used
to
be
certain
that
all
stakeholder
concerns
have
been
addressed.
3. Describe
the
architectural
styles/patterns
that
have
been
chosen
to
address
the
scenarios
and
requirements.
The
architectural
style(s)
should
be
described
using
one
of
the
following
architectural
views:
o Module
view
for
analysis
of
work
assignments
with
components
and
the
degree
to
which
information
hiding
has
been
achieved.
C. Démarche
ADD
Bass
et
al.
consacrent
le
chapitre
17
de
leur
ouvrage
[4]
à
la
conception
de
l’architecture.
Leur
stratégie
de
conception
architecturale
est
basée
sur
trois
idées,
la
décomposition,
la
conception
des
besoins
prioritaires,
la
génération
et
le
test.
• Décomposition.
On
décompose
en
sous-‐systèmes,
composants,
modules
et
autres
éléments
mais
on
doit
conserver
la
qualité
globale
définie
par
plusieurs
attributs
tels
que
la
disponibilité,
la
performance,
l’évolutivité…
pour
lesquels
les
auteurs
proposent
des
tactiques.
Par
ailleurs
s’appuyer
sur
des
patterns
facilite
la
décomposition.
• Conception
des
besoins
prioritaires.
Certains
besoins
sont
significatifs
du
point
de
vue
architectural,
convertibles
en
attributs
qualité.
Un
processus
de
consultation
permet
de
les
exhiber
(business
goals)
et
les
prioriser.
19
The
Software
Architecture
Analysis
Method
(SAAM)
is
an
alternative
to
ATAM
and
is
well-‐worth
examining
by
those
readers
interested
in
architectural
analysis.
A
paper
on
SAAM
can
be
downloaded
from
www.sei.cmu.edu/publications/articles/saam-‐metho-‐propert-‐sas.html.
http://www.sei.cmu.edu/library/assets/klein1.pdf
Notons
aussi
que
de
nombreux
conseils
sont
disséminés
dans
l’ouvrage
tant
sur
l’adaptation
de
l’architecture
à
son
contexte
que
les
qualités
attendues
d’une
architecture
logicielle
en
proposant
des
tactiques
adaptées
à
chacune
de
ces
qualités.
figure
59
-‐
Spirale
d'amélioration
continue
de
l'architecture
et
du
processus
de
développement
La
démarche
proposée
par
P.-‐Y.
Cloux
est
descendante.
Elle
part
du
système
d’information
dans
son
ensemble,
d’un
existant,
en
identifiant
les
risques
associés
au
changement.
Elle
est
schématisée
dans
la
figure
60.
Une
première
phase
d’analyse
de
l’architecture
d’entreprise
sous
l’angle
de
l’intégration
doit
produire
une
liste
des
risques
d’intégration,
un
plan
d’intégration,
une
préconisation
en
matière
de
modèle
d’architecture.
Cette
matière
sert
ensuite
à
la
conception
de
l’architecture.
Cette
démarche
s’inscrit
dans
celle
plus
large
du
processus
unifié,
la
figure
61
montre
les
interactions
entre
les
deux
démarches.
figure
61
-‐
Conception
d'architecture
et
RUP
A. Bonnes
pratiques
Les
bonnes
pratiques
s’inspirent
directement
des
principes
de
conception
de
la
section
Erreur
!
Source
du
renvoi
introuvable..
Les
qualités
de
la
conception
architecturale
sont
discutées
en
détail
dans
[4].
On
notera
que
ce
qui
prime
pour
le
modèle
d’architecture
est
la
‘communicabilité’
de
la
solution
pour
les
développeurs
et
l’intégrabilité
dans
le
système
d’information
pour
les
décideurs
et
urbanistes.
20
Certains
préconisent
du
NoUML
-‐
http://www.infoq.com/fr/articles/agile-‐software-‐architecture-‐sketches-‐NoUML
21
http://www.aadl.info/
22
http://www.archimatetool.com/
figure
64
-‐
Organisation
de
la
conception
Nous
ne
discutons
que
légèrement
les
aspects
gestion
de
projet
et
industrialisation
dans
la
mesure
où
les
aspects
planification
et
organisation
ne
sont
pas
fondamentaux
pour
ce
qui
n’est
finalement
qu’un
prototype.
A. Architecture
technique
Pour
l’application
du
cas
fil
rouge,
on
peut
reprendre
l’architecture
technique
Web
autour
de
Java
J2EE
de
la
figure
20
et
y
placer
des
solutions
concrètes
et
des
frameworks
(figure
65)
figure
65
-‐
Architecture
Web
J2EE
en
5
couches
pour
le
cas
bancaire
2. Représentation
On
peut
utiliser
un
diagramme
de
paquetage
pour
représenter
les
couches
logicielles
ou
des
diagrammes
de
composants
ou
de
déploiement.
La
figure
66
montre
un
exemple
pour
J2EE/
Spring/Hibernate
sous
forme
de
paquetages
tandis
que
la
figure
67
utilise
aussi
des
composants.
Nous
avions
aussi
vu
en
figure
7
un
exemple
avec
des
nœuds
de
déploiement.
http://www.uml-‐diagrams.org/web-‐application-‐uml-‐manifest-‐diagram-‐example.html
figure
67
-‐
Example
of
manifestation
diagram
for
web
application
Il
serait
raisonnable
de
ne
pas
mélanger
les
notations,
néanmoins
ce
qui
prime
c'est
la
lisibilité
des
schémas.
figure
68
-‐
Diagramme
de
déploiement
du
cas
Compte
bancaire
• Nous
considérons
deux
applications,
une
pour
le
client
et
l’autre
pour
le
conseiller.
Nous
aurions
pu
faire
une
seule
application
mais
dans
ce
cas
le
croisement
des
règles
fixant
les
fonctionnalités
autorisées
par
rôle
(gestion
des
accès)
vient
à
l’encontre
des
exigences
non
fonctionnelles
de
sécurité.
Ce
découplage
des
actions
se
retrouvera
dans
un
découplage
des
diagrammes
de
séquence
de
la
gestion
des
comptes.
Il
simplifie
l’écriture
des
applications
mais
correspond
aussi
à
une
perspective
dans
laquelle
le
poste
du
conseiller
soit
une
application
riche
Swing
qui
communique
via
un
protocole
RMI
ou
JMS
avec
des
EJB
ou
bien
une
solution
par
webservice
(SOAP)
(voir
figure
19).
• Ces
applications
sont
structurées
en
composants
logiciels
que
nous
n’avons
pas
définis
ici.
Le
degré
de
granularité
et
le
nombre
de
diagrammes
dépendent
évidemment
à
la
fois
de
la
taille
du
périmètre
de
l’application
et
du
degré
de
décision
atteint
sur
les
composants
techniques.
Ce
degré
est
faible
dans
l’itération
courante
du
cas
que
nous
traitons.
B. Persistance
La
persistance
couche
en
fait
plusieurs
couches,
et
la
présentation
peut
varier
d'un
auteur
à
l'autre.
• La
couche
la
plus
basse
est
celle
de
la
base
de
données.
Nous
devons
fournir
le
schéma
de
la
base.
Le
modèle
de
la
base
sera
mis
en
évidence
dans
la
conception
détaillée.
On
peut
en
tracer
les
grandes
lignes
mais
c’est
tout.
• La
couche
d'accès
aux
données
(DAO)
se
fait
en
une
ou
deux
couches
:
o Hibernate
pour
la
connexion
à
la
base
via
le
connecteur
Java
JDBC.
o L’accès
aux
données
sera
mis
en
œuvre
avec
JPA
qui
permet
les
annotations
du
code
pour
générer
la
couche
d'accès
aux
données.
On
utilise
une
base
de
données
relationnelles
avec
un
connecteur
hibernate.
L’accès
aux
données
sera
mis
en
œuvre
avec
JPA.
23
un
tutorial
sur
le
sujet
https://openclassrooms.com/courses/creez-‐votre-‐application-‐web-‐avec-‐java-‐ee
24
http://orm.bdpedia.fr/introjpa.html
25
http://www.journaldev.com/7122/jsf-‐spring-‐hibernate-‐integration-‐example-‐tutorial
D. IHM
L’IHM
se
traduit
par
l’usage
d’un
navigateur
Web
léger.
Une
certaine
liberté
est
laissée
quand
à
l’usage
de
techniques
autour
de
Javascript
et
de
chargements
partiels
de
pages.
On
pourra
utiliser
la
technologie
AJAX
pour
améliorer
la
gestion
du
mode
client-‐serveur.
On
peut
utiliser
des
frameworks
comme
Angular
JS
ou
React
pour
enrichir
la
partie
cliente
et
l’ouvrir
vers
le
mobile.
Cet
aspect
sera
abordé
dans
la
conception
détaillée,
l’idée
est
de
reprendre
les
diagrammes
de
séquence
et
d’y
ajouter
les
objets
techniques.