Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Ş Ş abloane de proiectare XML abloane de proiectare XML
Sabin-Corneliu Buraga Facultatea de Informatică
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
cuprins cuprins
• Punerea problemei
• Ce este un pattern?
• Pattern-uri de proiectare a structurii XML
• Pattern-uri de proiectare
a aplicaţiilor utilizând XML
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
punerea
punerea problemei problemei
• O problemă poate apărea frecvent
• Cei experimentaţi au găsit diverse soluţii pentru problema în cauză, reuşind
să recunoască problema şi să aleagă soluţia (optimă) care poate fi aplicată într-un anumit context
• Apare astfel un şablon (pattern) de
proiectare (soluţionare) a problemelor
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
ce ce este este un un pattern pattern ? ?
• Un pattern ≡ o regulă care exprimă
o relaţie dintre un context, o problemă si o soluţie (Christopher Alexander, 1979)
– Iniţial, folosit în arhitectură
– Ulterior, în proiectarea software (object-oriented software design):
pattern ≡ “mind sized” chunk of information – W. Cunningham & K.Beck, 1987
– “Design Patterns” (E. Gamma et al., 1995)
Context Context
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
ce ce este este un un pattern pattern ? ?
• Un pattern poate descrie cunoştinţele unui expert (pe baza experienţei sale
personale) în domeniul problemei în ceea ce priveşte recunoaşterea problemei,
a contextului şi a soluţiei la acea problemă
• Un pattern nu reprezintă o regula fermă (uneori nu trebuie aplicat!)
• Este necesară adoptarea unui vocabular
comun corespunzător domeniului
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
ce ce este este un un pattern pattern ? ?
• Tipuri de pattern-uri
–De proiectare –De arhitectură –De analiză
–De creaţie
–De structură
–De comportament
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
ce ce este este un un pattern pattern ? ?
• “Recunoaşterea” unui pattern
poate avea loc la unul dintre nivelurile:
–De prezentare
–De procesare (business logic)
–De integrare
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
ce ce este este un un pattern pattern ? ?
• Specificarea unui pattern:
– Numele
– Rezumatul – Problema – Contextul – Soluţia
– Exemplele – Utilizările
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
ce ce este este un un pattern pattern ? ?
• În cazul nostru, ne interesează meta-limbajul (familia) XML
• Întrebări:
– Cum trebuie structurat un document XML pentru a stoca anumite date sau metadate?
– Cum trebuie proiectată o aplicaţie
care utilizează XML ca limbaj de specificare, stocare şi/sau prezentare a datelor?
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Proiectarea structurii unui document XML
– Lungimea documentului
– Uşurinţa folosirii marcajelor (ease of authoring)
– Uşurinţa procesării (ease of processing) – Uşurinţa validării
– Flexibilitatea – Consistenţa
– Gradul de abstractizare
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• XML Design Patterns
– Oportunitatea folosirii XML-ului: Use XML
– Reutilizarea tipurilor de documente existente:
Reuse Document Type
– Alegerea elementului/elementelor rădăcină:
Multiple Document Types, Multi Root Document Types – Stabilirea gradului de abstractizare: Envelope,
Short Understandable Names, Domain Element, Container Element, Collection Element,...
– Asocierea de metadate: Separate Metadata & Data,
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• XML Design Patterns – continuare
– Organizarea documentului
• Referenţierea unor construcţii:
Declare Before First Use
• Aceeaşi informaţie referenţiată în locuri multiple: Flyweight
• Arbore (ierarhie) versus graf: Marketplace – Extinderea ulterioară: Catch-All Element,
Role Attribute, Extensible Content Model – Asigurarea consistenţei:
Common Attributes, Consistent Element Set
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Use XML
– Determină situaţia în care XML e soluţia viabilă de reprezentare a informaţiei (semi)structurate – Existenţa unor reprezentări multiple:
binar, CSV, HTML, baze de date relaţionale, obiecte serializate, XML
– XML poate fi o soluţie adecvată când:
• Conţinutul (datele) trebuie separate de formatare
• Datele trebuie partajate între aplicaţii, organizaţii,...
• Reprezentarea să poată fi înţeleasă şi de oameni
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Use XML
– Factori care trebuie consideraţi: simplitatea, extensibilitatea, interoperabilitatea,
existenţa instrumentelor de procesare, transformarea facilă în alte reprezentări, uşurinţa validării, existenţa standardizării – XML ca limbaj pentru reprezentarea
atât a datelor, cât şi a metadatelor
<rdf:Description
about="http://s.infoiasi.ro/studenti.cgi?matricol=33">
<nume porecla="Sammy">Mihai Alexandru Serea</nume>
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Short Understandable Names
– Numele elementelor & atributelor trebuie să fie scurte şi uşor de înţeles atât de autori, cât şi de dezvoltătorii soft-ului de procesat documentul – Pattern-ul poate fi utilizat pentru orice tip de
document
– Numele prea scurte sunt dificil de înţeles, dar reduc lungimea documentelor
– Convenţii de numire: <nume_tag>, <NumeTag>
– Exemple:
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Content Element
– Un container grupează elemente (copil) înrudite – Problema: numeroase elemente care apar
pe acelaşi nivel în document
şi care pot fi divizate în grupuri distincte
– Pattern-ul ajuta la structurarea documentului, dar e foarte general (pot exista pattern-uri
mai specializate, derivate din acesta)
– Pattern-ul adaugă un nivel de abstractizare, gruparea elementelor oferind informaţii
semantice suplimentare (e.g., asocierea de metadate unui grup de elemente)
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Content Element
<config>
<ram>256</ram>
<hdd tip="...">80</hdd>
<parser limbaj="C++">
Xerces</parser>
<editor>vim</editor>
<parser limbaj="Perl">
Expat</parser>
</config>
<config>
<hardware>
<ram>256</ram>
<hdd tip="...">80</hdd>
</hardware>
<software>
<parser limbaj="C++">
Xerces</parser>
<parser limbaj="Perl">
Expat</parser>
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Collection Element
– Creează un element al cărui model de conţinut permite doar instanţe de singur tip
– Problema: există un element care trebuie repetat la acelaşi nivel al documentului
– Context: gruparea pe categorii a elementelor, existenta multor “fraţi” (siblings),
asocierea de metadate etc.
– Soluţie: crearea unui element conţinând mai multe elemente de acelaşi tip
– Structura rezultată e mult mai uşor de procesat – Dacă volumul de metadate este mare,
se va putea utiliza pattern-ul Head-Body
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Envelope
– Oferă un tip de document care va desemna un “plic” în care se vor putea stoca
date XML arbitrare
– Problema: diferite seturi de date trebuie livrate unui sistem, într-o manieră consistentă
– Context: structura datelor din “plic” poate varia şi nu e cunoscută la momentul creării sistemului – Pattern-ul permite separarea diferitelor tipuri de
conţinuturi, oferind un mecanism de livrare a datelor XML; plicul nu interferează
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Flyweight
– Când aceeaşi informaţie este inclusă în diferite locuri în document, atunci ea poate fi plasată o singură dată şi referită în locuri multiple
– Problema: plasarea repetată a aceloraşi date în locuri diferite poate cauza erori si dificultăţi în mentenanţa documentului;
creşte nejustificat lungimea documentului – Soluţie: utilizarea entităţilor XML (externe),
folosirea datelor “embed” via XLink, utilizarea atributelor ID şi IDREF etc.
– Pattern-ul măreşte gradul de mentenanţă şi modularizare, dar poate afecta abilitatea
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri XML XML structurale structurale
• Flyweight
<?xml version="1.0" ?>
<!DOCTYPE Titlu [
<!ENTITY titlu "Situl WebGroup">
]>
<html>
<head>
<title>&titlu;</title>
<meta name="description" content="&titlu;" />
</head>
<body>
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri de de proiectare proiectare XML XML
• Proiectarea unei aplicaţii Web (bazata pe tehnologiile XML)
– Separaţia dintre modul de stocare a datelor, vizualizarea lor şi maniera de procesare – Pattern-ul consacrat:
Model-View-Controller (MVC)
• Problema:
disponibilitatea pe un sit Web
a datelor provenite din surse XML distribuite
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri de de proiectare proiectare XML XML
• Exemple de pattern-uri de proiectare:
– XML In Out Tray – rezolvă problema obţinerii, procesării şi returnării datelor XML,
procesele interne de prelucrare fiind ascunse – External Assistant – procesul de generare
a formatului de prezentare plecând de la XML este realizat de o aplicaţie externă
– Information Grouping – soluţionează
problema grupării şi prezentării datelor XML, indiferent de aplicaţia care generează aceste date – XML Mediator – rezolvă problema
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri de de proiectare proiectare XML XML
• Exemple de pattern-uri de proiectare:
– XML In Out Tray
• Organizează activitatea componentelor implicate în procesele de colectare şi de vizualizare a datelor
• Scop: dezvoltarea de conexiuni între componente traversate de date XML păstrând o cuplare slabă şi o coeziune ridicată (similar cu pattern-ul Proxy)
• Existenţa unui “lipici” între componente
⇒ independenţa de limbaj/platformă ININ
OUTOUT
Worker
Worker XMLXML
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri de de proiectare proiectare XML XML
• Exemple de pattern-uri de proiectare:
– Information Grouping
• Date la intrare documente XML, pattern-ul oferă o modalitate de a formata datele XML, grupate pe diverse criterii (asemănător lui group by din SQL)
• Asigura separarea între formatul de reprezentare şi cel de stocare a datelor, putând organiza informaţiile într-un mod diferit de cel al stocării
XSLXSL XHTMLXHTML
WMLWML
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
Pattern
Pattern - - uri uri de de proiectare proiectare XML XML
Exemple demonstrative
de aplicare a pattern-urilor XML
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
biblio biblio
• E. Gamma et al., Design Patterns, Addison-Wesley, 1995
• B. Daum, U. Merten, System Architecture with XML, Elsevier Science, 2003
• S. Buraga, Semantic Web, Matrix Rom, 2004
• S. Buraga (coord.), Aplicaţii Web la cheie, Polirom, 2003
• S. Buraga (coord.), Situri Web la cheie,
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
biblio biblio
• www.w3.org/XML
• www.XMLpatterns.org
• www.mobileworkspace.com/xmlstds
• www.dublincore.org
• www.ZVON.org
Sabin
Sabin--CorneliuCorneliu BuragaBuraga
rezumat rezumat
• Punerea problemei
• Ce este un pattern?
• Pattern-uri de proiectare a structurii XML
• Pattern-uri de proiectare
a aplicaţiilor utilizând XML
Sabin
Sabin--CorneliuCorneliu BuragaBuraga