Architecture logicielle : quelques éléments
L'architecture informatique définit la structuration d'un système informatique (i.e. matériel et logiciel) en termes de composants et d'organisation de ses
Unified Software Development Process / Unified Process (UP)
14 oct. 2014 un processus de développement logiciel. - construit sur UML ... d'architecture logicielle (ou architecture logique) :.
Analyse et Conception avec UML
IUT Nice Sophia Antipolis. Site web du module : https://mbf-iut.i3s.unice.fr/. Page 2. Extrait d'un Rapport Polytech SI5 Architecture Logicielle
Untitled
Tests et Validation du logiciel http://home.nordnet.fr/~ericleleu pas de boucle dans l'architecture. ? c'est souvent possible.
Conception en UML Architecture n-tiers
https://mbf-iut.i3s.unice.fr/lib/exe/fetch.php?media=2014_2015:s3:concprogobjet:mvc-2014-2015.pdf
GRASP : conception objet et responsabilités Première approche des
10 sept. 2014 En génie Logiciel un patron de conception (design pattern en ... standards pour répondre à des problèmes d'architecture et de conception.
Mocks and Stubs
18 sept. 2013 complète et cohérente du logiciel (avec l'intégralité des modules ... ?Détection précoce des défauts d'architecture.
Mise en oeuvre dune méthode Agile -
10 sept. 2014 Un logiciel qui fonctionne est produit à chaque sprint ... Architecte concepteur
GRASP : conception objet et responsabilités
En génie Logiciel un patron de conception (design pattern en anglais) est standards pour répondre à des problèmes d'architecture et de conception.
Ecrire du bon code : Les principes S.O.L.I.D.
5 oct. 2014 d'architecture mais les principes présentés restent toujours vrais et ... Les entités logicielles doivent être ouvertes à l'extension.
Tests dÕintgration
1 mercredi 18 septembre 13Tests d'intgration
n Diffrents modules d'une application peuvent fonctionner unitairement, leur intgration, entre eux ou avec des services tiers, peut engendrer des dysfonctionnements. n Il est souvent impossible de raliser les tests unitaires dans l'environnement cible avec la totalit des modules disposition. n Les tests d'intgration ont pour objectif de crer une version tests unitairement) et de garantir sa bonne excution dans l'environnement cible. 2 mercredi 18 septembre 13 iut informatique, NiceTests dÕintgration
3Objectif
VriÞer les interactions entre composants unitaires DifÞcults principales de lÕintgration - Interfaces ßoues - Implantation non conforme la spciÞcation - Rutilisation de composants1) modliser la structure de dpendances entre chaque
composant et son environnement (graphe de dpendance des tests)2) Choisir un ordre pour intgrer (assembler)
mercredi 18 septembre 13 iut informatique, NiceGraphe de dpendance : construction
AB ABassociationABcompositionABaggregationABnavigabilitydependencyABACBassociation classABInterfacesInterface Name
ABABinheritance
ABC 4 mercredi 18 septembre 13 CCline ROUDET67
Compilateur GNU pour Eiffel :
Graphe de dpendanceDiagramme UML
Programmation par les tests5
mercredi 18 septembre 13 iut informatique, NiceTest dÕintgration : les
interdpendances n Une solution simple consiste contraindre le concepteur - pas de boucle dans lÕarchitecture q cÕest souvent possible q mais les optimisations locales ne sont pas toujours optimales globalement q mais concevoir des composants interdpendants est souvent naturel 6 mercredi 18 septembre 13 La communication de ce document est soumise autorisation de la R&D de France TlcomD - 08/02/11
France Tlcom
Recherche & Dveloppement
Bouchon de test
nBouchon : une unit qui simule le
comportement dÕune unitABCCFCABC
C A C BBouchon spcifique
7 mercredi 18 septembre 13 iut informatique, NiceTests dÕintgration
Unit testerDpendance
tester nArchitecture des dpendances Note: in reality, one rarely sees a tree due to shared components and cyclic dependencies.However, one can always Þnd a reasonable tree
abstraction from any given composition hierachy. 8 mercredi 18 septembre 13 iut informatique, NiceStratgies
n Big-bang : tout est test ensemble (peu recommand) nTop-down (peu courant)
nBottom-up (la plus classique)
9 mercredi 18 septembre 13 iut informatique, NiceIntgration - Big-Bang
n 10 http://emmanuelchenu.blogspot.com/ mercredi 18 septembre 13 iut informatique, NiceIntgration - Big-Bang
11Tests lÕinterface du
¥ Les tests produisent des erreurs : Quelle en est la cause?¥ La complexit induit des tests manquants
¥ Les tests ne commencent que lorsque tous les composants ont t ÇcodsÈ.Intgration de tous les
composants tester en une seuletape. (intgration massive)
mercredi 18 septembre 13 iut informatique, NiceApproche descendante
12Unit testerDpendance testerDpendance sous testUnit sous testBouchon de test (stub)Dpendance simuleUnit testeDpendance teste
48mercredi 18 septembre 13 iut informatique, Nice
Approche descendante
nCration de bouchons
nTest tardif des couches basses
n Dtection prcoce des dfauts d'architecture nEffort important de simulation des composants
absents et multiplie le risque dÕerreurs lors du remplacement des bouchons. nLa simulation par Ç
n couches nÈ nÕest pas obligatoire
13 mercredi 18 septembre 13 iut informatique, NiceApproche Ascendante
14Unit testerDpendance tester
Lanceur
Unit testeDpendance sous testDpendance teste mercredi 18 septembre 13 iut informatique, NiceApproche ascendante
nAvantages
-Faible effort de simulation -Construction progressive de l'application s'appuie sur les modules rels. Pas de version provisoire du logiciel -Les composants de bas niveau sont les plus tests, -DÞnition des jeux d'essais plus aise -Dmarche est naturelle. nInconvnients
-Dtection tardive des erreurs majeures -PlaniÞcation dpendante de la disponibilit des composants 15 mercredi 18 septembre 13 iut informatique, NiceApproche Mixte
n Combinaison des approches descendante et ascendante. nAvantages :
-Suivre le planning de dveloppement de sorte que les premiers composants termins soient intgrs en premier n -Prise en compte du risque li un composant de sorte que les composants les plus critiques puissent tre intgrs en premier. n La principale difÞcult dÕune intgration mixte rside dans sa complexit car il faut alors grer intelligemment sa stratgie de test aÞn de con cilier le s deux modes dÕintgration n : ascendante et descendante. 16 mercredi 18 septembre 13Mocks and Stubs
17M. Blay-Fornarino
mercredi 18 septembre 13Example Ð Electronic Store
nOrders and a Warehouse
Diet Coke
5 Bread 3 Rice 7Sprite
10 Order1: Diet Coke - 5Order3: Sprite - 3Order2: Diet Coke - 2Order4: Bread - 118 mercredi 18 septembre 13Example Ð Electronic Store
nUse Case Model
nSystem Sequence
19 mercredi 18 septembre 13Diagramme de squence (Conception)
20 mercredi 18 septembre 13Diagramme de squence (Conception)
21mercredi 18 septembre 13
Example Ð Electronic Store
nDomain Model
22mercredi 18 septembre 13
Packages & Sparation des
responsabilits 23mercredi 18 septembre 13
Example Ð Electronic Store
public class Order { n pu blic Order(String product, int i) { t his. product = product; t his. amount = i; t his. isFilled = false; pu blic void fill(Warehouse warehouse) { if (warehouse.hasInventory(product,amount)) { warehouse.remove(product,amount); isFi lle d = true; pu blic boolean isFilled() { re turn isFilled; nTesting the
Order class
24mercredi 18 septembre 13
Example Ð Electronic Store
public class OrderStateTester extends TestCase { n pu blic void testOrderIsFilledIfEnoughInWarehouse(){O rder order = new Order(DIET_COKE,5);
orde r.fill(warehouse); // Primary object test a ssertT rue(order.isFilled()); // Secondary object test(s) a ssertEq uals(0,warehouse.getInventory(DIET_COKE)); pu blic void testOrderDoesNotRemoveIfNotEnough(){O rder order = new Order(SPRITE,11);
o rder .fill(warehouse); // Primary object test a ssertF alse(order.isFilled()); // Secondary object test(s) a ssertEq uals(10, warehouse.getInventory(SPRITE)); nTesting the
Order class
25mercredi 18 septembre 13
Example Ð Electronic Store
nTesting the Order class:
public class OrderStateTester extends TestCase { pri vate static String DIET_COKE = qDiet Cokeq; pri vate static String SPRITE = qSpriteq;W arehouse warehouse;
pro tected void setUp() throws Exception { //Fixture with secondary object(s) ware house = new WarehouseImpl(); w areh ouse.add(DIET_COKE,5); w areh ouse.add(SPRITE,10); n 26mercredi 18 septembre 13
Example Ð Electronic Store
nUsing a stub to run the tests -
qStubs return canned data to methods calls:
public class WarehouseImpl implements Warehouse { pu blic void add(String product, int i) {} pu blic int getInventory(String product) { retu rn 0; pu blic boolean hasInventory(String product) { re turn false; pu blic void remove(String product, int i) { } Stub 27mercredi 18 septembre 13 28
mercredi 18 septembre 13
Example Ð Electronic Store
nThe tests fail since the stub object Ð
warehouse (secondary) misses the required functionality nRemember: the intension is to test the
behavior of the primary object - Order, all other objects are tested in their own corresponding tests. nThe test is only State-Based
qE.g., was the remove() method invoked? Other
methods of the warehouse object? 29mercredi 18 septembre 13
Example Ð Electronic Store
nState Based tests:
q All objects involved must be created Ð complex fixture q After the primary object was ÒkickedÓ with the behavior that is being tested, the result is evaluated against: nThe primary object
nAll secondary objects
q If the test fails, its source might be fuzzy between the primary and the secondary objects qNo interaction is being testedn
nA possible solution Ð Mock objects
BeforeAfter30
mercredi 18 septembre 13Example Ð Electronic Store
nTests bass sur les interactions
q Les tests doivent vrifier quelles mthodes ont t appeles sur les objets secondaires. q Tous les objets secondaires sont remplacs par des ÇmocksÈ q => spcification des interfaces des objets secondaires q Test en Isolation: Les Bugs dtects dans les tests sont uniquement lis aux objets primaires q avec la refactorisation 31mercredi 18 septembre 13
Using EasyMock
nDefine only the interface of the Mock object:
public interface Warehouse { voi d add(String product, int i); in t getInventory(String product); bo olean hasInventory(String product,int amount); voi d remove(String product, int i); 32mercredi 18 septembre 13
Using EasyMock
nCreate the Mock object:
pro tected void setUp() throws Exception { / /Fi xture with secondary object(s) mock = createMock(Warehouse.class); 33nAdd the EasyMock jar file (easymock.jar) from this directory to your classpath n import static org.easymock.EasyMock.*;
You need to :
mercredi 18 septembre 13Using EasyMock
nRunning tests with expectations:
pu blic void testOrderIsFilledIfEnoughInWarehouse(){ //Expectations e xpect (mock.hasInventory(DIET_COKE,5)).andReturn(true); mo ck.remo ve(DIET_COKE,5); replay(mock);O rder order = new Order(DIET_COKE,5);
order.fill(mock); / / Pri mary object test a ssertT rue(order.isFilled()); // Secondary object test(s) verify(mock); 34public void fill(Warehouse warehouse) { if (warehouse.hasInventory(product,amount)) { warehouse.remove(product,amount) isFilled = true; mercredi 18 septembre 13
Using EasyMock
nVerifying Behavior
qIf the method is not called on the Mock Object
pu blic void testDemo(){quotesdbs_dbs22.pdfusesText_28[PDF] Architecture logicielle MVC - LIG Membres
[PDF] 1 Architecture traditionnelle et réhabilitation au Maroc - RehabiMed
[PDF] Le matériel : architecture des ordinateurs - Limuniv-mrsfr
[PDF] Architecture matériel et logiciel 2
[PDF] Architectures Logicielles et Matérielles - Verimag
[PDF] Vers une architecture n-tiers
[PDF] Les réseaux Peer-to-Peer
[PDF] L 'architecture postale - La Poste
[PDF] Partie 1 : Architecture et communications Client/Serveur - Univ Lyon 1
[PDF] Architecture Traditionnelle Méditerranéenne Méthode RehabiMed
[PDF] La fabrication de l architecture en Tunisie indépendante : une
[PDF] l 'architecture traditionnelle en tunisie : l 'habitat rural - RehabiMed
[PDF] Etude d une architecture IP intégrant un lien satellite - OATAO
[PDF] Les règles de classement et d 'archivage des documents d 'entreprise