• Nu S-Au Găsit Rezultate

• Pattern-uri de proiectare a structurii XML

N/A
N/A
Protected

Academic year: 2022

Share "• Pattern-uri de proiectare a structurii XML"

Copied!
30
0
0

Text complet

(1)

Sabin

Sabin--CorneliuCorneliu BuragaBuraga

Ş Ş abloane de proiectare XML abloane de proiectare XML

Sabin-Corneliu Buraga Facultatea de Informatică

[email protected]

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

Sabin

Sabin--CorneliuCorneliu BuragaBuraga

ce ce este este un un pattern pattern ? ?

• Specificarea unui pattern:

– Numele

– Rezumatul – Problema – Contextul – Soluţia

– Exemplele – Utilizările

(9)

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?

(10)

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

(11)

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,

(12)

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

(13)

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

(14)

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>

(15)

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:

(16)

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)

(17)

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>

(18)

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

(19)

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ă

(20)

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

(21)

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>

(22)

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

(23)

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

(24)

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

(25)

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

(26)

Sabin

Sabin--CorneliuCorneliu BuragaBuraga

Pattern

Pattern - - uri uri de de proiectare proiectare XML XML

Exemple demonstrative

de aplicare a pattern-urilor XML

(27)

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,

(28)

Sabin

Sabin--CorneliuCorneliu BuragaBuraga

biblio biblio

• www.w3.org/XML

• www.XMLpatterns.org

• www.mobileworkspace.com/xmlstds

• www.dublincore.org

• www.ZVON.org

(29)

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

(30)

Sabin

Sabin--CorneliuCorneliu BuragaBuraga

Mulţumiri pentru atenţia acordată!

Întrebări?

Referințe

DOCUMENTE SIMILARE

Este suficient, de exemplu, ca atunci când vorbeşte despre un fenomen anume, cum este cel pe care-l reprezintă astăzi lumea semnelor şi a comunicării, autorul în atenţie să

Dupã Sein und Zeit, Heidegger este mereu în situaþia de a fi „ultimul“ Heidegger, în sensul cã opera sa se aflã deja în „dincolo“-ul propriei creaþii – împlinind-o,

Diverse aspecte avute în vedere de Web-ul semantic pot fi aplicații pe scară largă. (e.g., în cadrul cloud computing, în contextul big data) căutare, regăsire, reutilizare

3. Personalul didactic titularizat în instituŃia de învăŃământ superior unde are funcŃia de bază este luat în considerare la evaluare pentru o singură normă

 Se foloseşte pentru a modela situaţiile între care un obiect este format din mai multe componente...  OMG Unified Modeling LanguageTM (OMG UML), Infrastructure, Version 2.2,

 În cazul în care calculatorul nu “va vede” Arduino-ul, se poate ca o masură de siguranţă să fi intrat în acţiune (de fapt este o “siguranţă” automatizată – ce

Când este creat un nou element sau când este deschis un document, acest template este folosit pentru a crea cele trei elemente în următoarea ordine: documentul, fereastra cadru

În acest mod, în momentul când utilizatorul intră în aplicație se verifică dacă acesta are un meci care se află în desfășurare, iar dacă se află atunci acesta este