Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete...

54
Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007

Transcript of Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete...

Page 1: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Models d’aplicacions web

Toni Navarrete

Enginyeria del Software II – UPF 2007

Page 2: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 2

Problema

• Les aplicacions basades en JSPs sovint barregen en un únic JSP totes les capes, i per exemple, llegeixen dades d’un formulari, accedeixen a la base de dades, escriuen la resposta, generen missatges d’error...

• Objectiu:– Separar clarament els aspectes de

presentació, de l’accés al repositori de dades, i també de la lògica de negoci

Page 3: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 3

Esquema Model 1

• L’accés a la BD i part de la lògica de negoci està encapsulada mitjançant una sèrie de classes (JavaBeans)

• Encara hi ha una barreja de HTML i Java que dificulta la lectura i manteniment: no separació entre lògica i presentació

Page 4: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 4

Esquema Model 2• Un Servlet rep les peticions i instancia una o

més classes que seran les que accedeixen a la BD

• El resultat final del procés és un JSP que s’envia al client

• Model 2 és en realitat una adaptació del MVC per a sistemes web

Page 5: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 5

Patró d’arquitectura Model-View-Controller (MVC)• Podem veure qualsevol sistema amb una divisió

en 3 àrees:– Controlador (controller), que manega l’entrada que

canvia el sistema• Exemple: el volant, l’accelerador, la palanca de marxes,...

– Model, que són les dades o el model del sistema• Exemple: el motor, suspensió, transmissió,...

– Vista (view), que és la presentació de les dades, ja sigui de forma textual, gràfica...

• Exemple: el comptaquilòmetres, indicadors lluminosos, ...

• MVC és típic en desenvolupaments GUI– A la web, la connexió “stateless” entre servidor i client

no permet que un controller notifiqui els canvis al view de forma fàcil, com sí passa en una GUI “típica”

Page 6: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 6

MVC en entorns web (Model 2 o MVC 2)

• Estructura d’una aplicació web seguint MVC2:– Un servlet controller recull les dades necessàries

típicament des d’un formulari– Hi ha una sèrie de classes (model) que fan una sèrie

d’operacions relacionades amb la lògica del negoci, normalment accedint a una BD. És el servlet controller l’encarregat d’instanciar i inicialitzar aquestes classes

– També el servlet controller centralitza la lògica de dispatching: selecció de la següent vista (un JSP), segons els paràmetres d’entrada i estat de l’aplicació

• Això fa que hi hagi una separació entre els JSPs de vista i el servlet de control

• A més, s’evita que les vistes tinguin referències d’altres vistes• En resum, les aplicacions són més fàcils de mantenir i

d’extendre

Page 7: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 7

MVC en entorns web (Model 2 o MVC 2)

Page 8: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 8

Estructura del controller:Lògica de dispatching

• Per despatxar una petició a una vista des del servlet controller s’utilitza:RequestDispatcher d =

getServletContext().getRequestDispatcher(URLVista);// retorna un objecte RequestDispatcher//que actua com a un wrapper de la vista (a una URL

concreta)//Normalment la vista és un JSP

d.forward(request,response); // passa la petició a la vista

NOTA: el servlet que fa el forward d’una petició no ha d’escriure res a la sortida, o en cas contrari es produirà una excepció

• D’aquesta forma el Controller està lligat a la vista (necessitem el path)

Page 9: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 9

Estructura del controller:Identificació de les operacions a realitzar

• 3 opcions:– Amb una variable oculta de formulari (POST)– Amb un paràmetre d’URL (GET)

http://host/app/servlet?operacio=1

– Amb mappings (definint noms virtuals)<servlet-mapping>

<servlet-name>myServlet</servlet-name><url-pattern>*.do</url-pattern>

</servlet-mapping>

(típic amb frameworks)

Page 10: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 10

Estructura del controller:Invocació dels mètodes del model

• Una forma simple:if (op==1){

User u = new User(request.getAttribute("user"),

request.getAttribute("pass")); } else if (op==2){ ... }...

Page 11: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 11

Estructura del controller:Invocació dels mètodes del model

• Patró Command:– Es defineix una classe abstracta Action,

per representar una acció, amb un mètode perform, per delegar-hi peticions

– Es creen tantes subclasses com operacions concretes s’hagin identificat

– El controller té una taula, on per cada operació, s’indica quina subclasse li correspon

Page 12: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 12

Estructura del controller:Invocació dels mètodes del model

// Action.java: public abstract class Action {

protected Model model; public Action(Model model) {

this.model = model; } public abstract String getName();public abstract Object perform(HttpServletRequest req);

}

Page 13: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 13 Estructura del controller:Invocació dels mètodes del model// CreateUserAction.java: public class CreateUserAction extends Action {

public CreateUserAction(Model model) {

super(model); } public String getName() {

return "createUser"; } public Object perform(HttpServletRequest req) {

return model.createUser(req.getAttribute("user"), req.getAttribute("pass"));

} }

Page 14: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 14 Estructura del controller:Invocació dels mètodes del modelpublic class ControllerServlet extends HttpServlet {

private HashMap actions; public void init() throws ServletException {

actions = new HashMap(); CreateUserAction cua = new CreateUserAction(model);actions.put(cua.getName(), cua); //... create and add more actions

} public void doPost(HttpServletRequest req, HttpServletResponse resp)

throws IOException, ServletException { // First identify operation "op" from URL. // method getOperation() is defined elsewhere. String op = getOperation(req.getRequestURL()); // Then find and execute corresponding ActionAction action = (Action)actions.get(op); Object result = null; try {

result = action.perform(req); } catch (NullPointerException npx) { ... } //determine next view result to determine next view

} ...

}

Page 15: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 15

Estructura del controller:Lògica de dispatching

• Per evitar que el Controller estigui lligat a la Vista, el dispatcher pot estar separat del servlet controller. El controller delega la selecció de la següent vista en el dispatcher.– Patró Dispatcher View

• També és freqüent que una vista sigui múltiple, en el sentit de què és la composició de vàries vistes– Patró Multiple View o Composite View

Page 16: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 16

Dispatcher i CompositeView

Model

Page 17: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 17

Dispatcher i CompositeViewModel

Page 18: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 18

Observació

• El controller (Action) és qui típicament crearà les instàncies que calgui del model i li passarà a les vistes

• Aquestes només criden a mètodes de get d’aquestes instàncies

• Els mètodes de modificació/inserció típicament es criden des del controller

Page 19: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 19

Estructura del Controller

• Podem tenir un controller únic per a tot el sistema o un per a cada cas d’ús– Per exemple, en un framework com Struts

només n’hi ha un únic servlet controller que ens el dóna el propi framework i que és configurable mitjançant fitxers XML

• Nota: sovint es parla de Front Controller per parlar del servlet controller (és el nom d’un patró J2EE)

Page 20: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 20

Estructura del Model

• El model de classes de domini és la base per al Model• Al disseny cal assignar a les classes les responsabitats

de dur a terme les operacions identificades en els SSD:– SSD: Diagrama de Seqüència de Sistema, on vegem com cada

usuari interactua amb el sistema (representat com si fos un objecte) per a cada cas d’ús concret

– Hem d’acabar creant els diagrames d’interacció per cada operació del SSD o bé un diagrama per a tot el cas d´ús

• Utilitzem els patrons GRASP (i altres) per a l’assignació de responsabilitats

• Patrons GRASP: Patterns of General Principles in Assigning Responsabilities. Els 3 més comuns:– Information Expert (o Expert)– Creator– Controller (ja explicat anteriorment en el context web)

Page 21: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 21

Exemples de diagrama de casos d’ús i SSD per al cas d’ús “Processar venda”

Llibreria LECTOR

Chart ID : LlibreriaUCDChart Name : Casos d'Us de la Llibreria LECTORChart Type : UML Use Case Diagram

Depenent

Processar venda

Processar devolució

Consulta llibre

Veure extractes

Chart ID : LlibreriaSDSChart Name : Diagrama de Seqüència de Sistema de la Llibreria LECTORChart Type : UML Sequence Diagram

d : Depenent

LECTOR : System

ferNovaVenda( )

introduirExemplar( )

títol,preu

fiVenda( )

total, IVA, totalIVAinc

pagament(quantitat)

canvi

* [més exemplars]

Page 22: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 22

Exemple de diagrama de classes de dominiChart ID : LlibreriaCD2Chart Name : Diagrama de Classes de la Llibreria LECTORChart Type : UML Class Diagram

+Línia Vendaquantitat

+Venda

+Pagament

+Exemplar+Producte

+Llibre +CDROM +Revista

+Publicació Periòdica

+Stock

Pertany

Conté

descriu

descriu

conté

format per

pagat per

quantitat és un atribut derivat de la relació amb Exemplar

Page 23: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 23

Objectius de l’assignació de responsabilitats: 1. Baix acoblament

• Low coupling (baix acoblament)– L’acoblament és una mesura de com de fortament

un element està connectat a, té coneixement de, o està relacionat amb altres elements

– Un element amb baix acoblament no depèn de molts altres elements

– No són desitjables classes amb alt acoblament perquè tenen els següents problemes:

• Els canvis en classes relacionades forcen canvis locals• És difícil d’entendre aïlladament• És difícil de reutilitzar, ja que requereix altres classes

Page 24: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 24

Objectius de l’assignació de responsabilitats: 2. Alta cohesió

• High cohesion (alta cohesió)– La cohesió és una mesura de com fortament estan

relacionades les responsabilitats que té un element– Si un element ha de fer moltes coses diferents entre

elles, és poc cohesionat, la qual cosa no és desitjable

– Els elements amb baixa cohesió tenen els següents problemes:

• Difícil de comprendre• Difícil de reutilitzar• Difícil de mantenir• Patiran canvis constants

Page 25: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 25

Patrons GRASP: Information Expert

• Principi general d’assignació de responsabilitats:– Assignar la responsabilitat al “Information

Expert”, la classe que té la informació necessària per a dur a terme la responsabilitat

Page 26: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 26

Patrons GRASP: Information ExpertUn exemple

• Qui ha de ser el responsable de saber el total d’una venda?

• Venda sap el total de la venda:– Afegim l’operació

getTotal() a Venda

• LíniaVenda sap el subtotal:– Afegim l’operació getSubtotal() a LíniaVenda

• Producte sap el preu del producte– Afegim l’operació

getPreu() a Producte

+Línia Vendaquantita t

+ProducteproducteIDtito lpreu

+VendadatahoracompletarVenda( )

format per

descriu

v : Venda lv : Línia Venda

p : Producte

d : Depenent

1* : st := getSubtotal( )

1.1* : p := getPreu( )

t := getTotal( )

Page 27: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 27

Patrons GRASP: Information ExpertUna excepció

• Una excepció a Information Expert és quan treballem amb bases de dades

• No convé afegir els mètodes per connectar amb la base de dades a cada una de les classes– Això donaria problemes de baixa cohesió i

duplicació

• Millor separar la capa de “negoci” de la capa de la base de dades

Page 28: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 28

Patrons GRASP: Creator

• Qui és el responsable de crear una nova instància d’una classe?– Assignar a la classe B la responsabilitat de

crear una instància de la classe A si una o més de les següents condicions es compleix:

• B agrega objectes A• B conté objectes A• B guarda objectes A• B usa objectes A• B té les dades d’inicialització que s’han de passar

a A per poder crear una instància (és a dir B és un expert respecte a la creació d’A)

Page 29: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 29

Patrons GRASP: CreatorUn exemple

• Qui ha de ser el responsable de crear una instància de LíniaVenda?– Resposta: Venda +Línia Venda

quantita t+ProducteproducteIDtito lpreu

+VendadatahoracompletarVenda( )

format per

descriu

v : Venda

lv : Línia Venda

d : Depenent

ferLiniaVenda( )

crear( )

Page 30: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 30

Patrons GRASP: Controller• Qui ha de ser el responsable de manegar un

esdeveniment d’entrada al sistema?

– Assignar la responsabilitat de rebre o manegar un esdeveniment de sistema a una classe que compleixi una de les següents alternatives:

• Representa el sistema complet o un subsistema:– Patró Façade

• Representa un controlador d’un escenari d’un cas d’ús.

Domain Layer

Interface Layer

???

:VendaJFrame

System event

Page 31: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 31

Patrons GRASP: ControllerUn exemple

• Qui gestiona els esdeveniments de sistema– ferNovaVenda– introduirExemplar– finalitzarVenda– controlarPagament

• Dues opcions:– ProcessarVendaController – Façade (que gestiona tots els casos d’ús)

Page 32: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 32

Altres patrons GRASP• Pure Fabrication

– Problema: a vegades Information Expert no és adequat (exemple: Base de dades)

– Solució: s’assignen un conjunt de responsabilitats a una classe artificial que no representa cap concepte del domini

– Exemples GoF: Adapter, Command, Strategy ...

• Indirection– Problema: a vegades no ens interessa acoblar dos

elements determinats– Solució: s’assigna la responsabilitat a un objecte intermedi

que media entre elements per tal de què no estiguin directament acoblats

– La majoria dels Indirection són Pure Fabrications– Exemples GoF: Adapter, Bridge, Facade, Observer,

Mediator

Page 33: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 33

Estructura del Model

• És convenient separar els mètodes d’accés a la BD de les classes de domini.– En JDO, l’accés a la BD és transparent– En EJB, hi ha la possibilitat de què els EJBs d’entitat

ho encapsulin tot

• Solució: Patró Data Access Object (DAO)– Un DAO abstreu i encapsula tots els accessos al

magatzem de dades. – El DAO gestiona la connexió amb el magatzem i les

operacions de selecció i modificació de dades– 1 DAO per tot el sistema, o per a cada cas d’ús– 1 DAO per classe (on tots els DAO hereten d’una

classe abstracta DAO general que té els mètodes per establir la connexió a la BD): el més habitual

Page 34: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 34

Estructura del Model: Patró DAO

• En realitat DAO és un Adapter entre l’objecte de “negoci” i el magatzem de dades

Page 35: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 35

Estructura del Model: DAO i Factory• Es pot emprar un Factory que construeixi

diferents DAOs en funció del tipus de magatzem de dades: major flexibilitat front a canvis del tipus de magatzem (canvi de gestor o de paradigma)

Page 36: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 36

Model 2 web application frameworks

• Els anomentats web application frameworks (o web-tier frameworks) simplifiquen la implementació d’aplicacions basades en MVC2:– J2EE BluePrints Web Application Framework (WAF)– Apache Structs, és el més conegut– JavaServer Faces

• Inclouen un servlet controller configurable, i aporten unes classes abstractes que poden ser exteses per manegar la lògica de dispatching

• Alguns frameworks inclouen un llenguatge de macros o altres eines per simplificar la construcció de l’aplicació

Page 37: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 37

Unes notes sobre arquitectura...

• Arquitectura basada en capes– Capa de presentació– Capa de “negoci”– Capa de dades

• No confondre les capes d’arquitectura amb la separació entre model-vista-controlador

• Esquemes d’arquitectura general de l’aplicació:– D’una capa– De dues capes– De tres capes– “Mitja capa” (cas típic: 2,5 capes)

Page 38: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 38

Arquitectura d’una capa

Capa de presentació

Capa de negoci

Capa de dades

Web server

File

system

Browser

Page 39: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 39

Arquitectura de dues capes

Capa de presentació

Capa de negoci

Capa de dades

Web server+CGI o

Web server+servlet engine

File

system

Browser

HTTP

Base de dades

JDBC

Page 40: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 40

Arquitectura de tres capes

Capa de presentació

Capa de negoci

Capa de dades

Application server: components distribuïts

File

system

Browser

HTTP

Base de dades

JDBC

Web server

CORBA/RMI/ Web Services/...

Page 41: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 41

Arquitectura de dues capes i mitja

Capa de presentació

Capa de presentació

Web server+servlet engine

File

system

HTTP

Capa de dades

JDBC

Browser

JavaScript

HTML dinàmic

Page 42: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 42

Factors de determinació d’arquitectures de dues o tres capes

Complexitat de

l’aplicació

Mantenibilitat

Pressió de la planificació

Experiència de l’equip

de desenvolupament

Aplicacions de

2 capes

Aplicacions de

3 capes

Page 43: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 43 Algunes particularitats de les aplicacions web Aspectes tecnológics de l’ES per web • Tecnologies

– HTML– Llenguatges de script– Cookies– XML– CGIs, NSAPI, ISAPI, – Servlets– Pàgines amb codi incrustat (ASP, JSP, PHP)– EJB i altres models de components

• Web-services

• Arquitectura– Models de capes

• Servidors web• Servidors d’aplicacions• Clients thick i clients thin

Page 44: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 44

Algunes particularitats de les aplicacions web Especificació de requeriments

• Se sol basar en un model de casos d’ús (se solen utilitzar mètodes use-case driven)

• Se li dóna molta importància a la interfície d’usuari– Existeixen mètodes específics centrats en la

interfície– La navegació pot ser un aspecte important de la

interfície. Hi ha mètodes centrats en la navegació– Es habitual utilitzar prototipus no funcionals de la

interfície (amb pàgines estàtiques o imatges)

Page 45: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 45

Algunes particularitats de les aplicacions web Especificació de requeriments

• Cal decidir el model de l’arquitectura– nombre de capes– clients thin o thick

Page 46: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 46

Algunes particularitats de les aplicacions web Disseny

• Decidir la tecnologia per a les vistes:– Pàgina estàtica HTML– Swing (en applets)– Servlets– JSP– Usant XML/XSL– ...

• Extensió UML per aplicacions web

Page 47: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 47

Algunes particularitats de les aplicacions web Estensió web d’UML

• Estereotips per modelar – Server Page– Client Page– Form– Frameset– Target– ClientScript Object– Web Page– ASP Page– JSP Page– Servlet– Script Library

Page 48: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 48

Algunes particularitats de les aplicacions web Estensió web d’UML. Exemples d’estereotips

JSP

Formulari Script de client Llibrería de scriptsPàgina web

Servlet

Page 49: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 49 Algunes particularitats de les aplicacions web Estensió web d’UML. Un exemple

Page 50: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 50

Algunes particularitats de les aplicacions web Disseny

• Decidir la tecnologia per a les classes entitat (persistència) – JDBC, EJB amb BMP o CMP, JDO, altres

frameworks ...

• Gestor de connexions a la BD (si és el cas):– Un DAO global– Un DAO per classe

• Controller: servlet (frameworks MVC com Struts o Java Server Faces)

• Views: JSP

Page 51: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 51

Algunes particularitats de les aplicacions web Proves

• El model de contingut de l’aplicació web és revisat per descobrir errors

• El model de disseny per l’aplicació web és revisat per descobrir errors de navegació

• S’apliquen proves d’unitat als components de procés seleccionats i a les pàgines web

• Es construeix l’arquitectura, es realitzen les proves d’integració

• L’aplicació web ensamblada es prova per a aconseguir una funcionalitat global i un contingut

• L’aplicació web s’implementa en una varietat de configuracions diferents d’entorns; cal comprovar la compatibilitat amb cada configuració

• L’aplicació web es prova amb una població d’usuaris finals controlada i monitoritzada

Page 52: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 52

Més informació: patrons J2EE

• J2EE Patterns Catalog– http://java.sun.com/blueprints/patterns/catalog.html

• Core J2EE Patterns. Best Practices and Design Strategies– http://www.corej2eepatterns.com/index.htm

• J2EE Best Practices– http://www.middleware-company.com/

• Designing Enterprise Applicationswith the J2EETM Platform, Second Edition– http://java.sun.com/blueprints/guidelines/designing_e

nterprise_applications_2e/index.html

Page 53: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 53

Més informació: Struts

• Web d’Apache Struts– http://struts.apache.org/

• Curs de Struts a coreservlets.com– http://courses.coreservlets.com/Course-Materials/struts.html

• Llibre (en castellà)– Chuck Cavanness: Jakarta Struts.

Anaya Multimedia - O’Reilly, 2005

Page 54: Enginyeria del SW II: Models d’aplicacions web Models d’aplicacions web Toni Navarrete Enginyeria del Software II – UPF 2007.

En

gin

yeri

a d

el S

W II

: Mod

els

d’a

plic

aci

on

s w

eb

Pàgina 54

Més informació: ES per web

• Pressman: Ingeniería del Software, un enfoque práctico. 5ª edición. McGraw Hill, 2002.