Anda di halaman 1dari 55

SERVICE ORIENTED ARCHITECTURES

PART 2: MODELLING DATA


MODELLING DATA

Mapping Class Diagram to DTD

Hierarki Mapping

Net Like Mapping

JSON
MOTIVASI

 Bagaimana mengirimkan :Bill dari Online Shop ke Shopping Agent?


 Export :Bill
 Transformasi dan transmit :Bill
 Import :Bill

 Teknologi (W3C WS)


 XML – OO data binding (export/import)
 XSLT untuk transformasi
 SOAP untuk transmisi
REQUIREMENT UNTUK MAPPING

 Skema (schema): membuat skema DTD yg memungkinkan


validasi terhadap data masuk
 Validity: data yg di export harus valid berdasarkan skema
(DTD)
 Kebenaran (correctness): skema (DTD) harus ekuivalen,
memungkinkan data yg sama untuk direpresentasikan
sebagai bagian PIM
 Pelacakan (traceability): relasi antar PIM dan skema (DTD)
harus terdokumentasi, keputusan harus diberikan alasan
MAPPING SKEMA DAN TRANSFORMASI DATA

 Untuk setiap skema S (class diagram, DTD, ...)


 I(S) menunjukkan himpunan semua instans dari skema S
 Contoh: object diagram nya, XML instans, DB State

 Untuk skema T lainnya, sebuah skema mapping m: S→T menggambarkan transformasi data
 m:I(S) → I(T) dari semua instans S menjadi instans T
 Contoh: object diagram menjadi XML instans
DATA CAPACITY

 Skema mapping m: S→T


 Extends data capacity, jika tidak ada informasi yg hilang pada transformasi data m:
I(S)→T
 Reflect data capacity, jika semua instans yg mungkin dari target skema T
mempunya instans yg berkorespondensi pada sumber S
 Preserve data capacity, jika extends dan reflect
DTD DARI CLASS DIAGRAM

 Memilih kelas yg relevan, asosiasi, dan sebagainya., dimana setiap instans harus di export atau import sesuai dengan kebutuhan
fungsional (functional requirement)
 Parameter dan return value dari operasi akan dipertukarkan
 Memasukkan attribut, kelas dan asosiasi yang diperlukan sesuai dengan pemahaman terdapat domain permasalahn

 Membuat XML specific class diagram, menggunakan style yang sesuai untuk preserve data dan memenuhi kebutuhan non fungsional
(non functional requirements)
 Hierarki: menggunakan komposisi untuk menunjuk struktur tree
 Net-like: menentukan referensi sebagai asosiasi terarah

 Hasilkan DTD, preserve (minimal extend) data capacity


 Mapping UML attribute → XML attribute

 Mapping UML attribute → XML element

 Test DTD, dengan menerjemahkan contoh objek diagram ke instans XML


DTD DARI CLASS DIAGRAM: PILIH KELAS

placeOrder(sid:String, p:Product): Bill


Q: Data apa saja yg perlu dipertukarkan
untuk mengembalikan Bill?
A: Satu objek Bill dengan relasi ke
BankAccount, Clients, dan Products
DTD DARI CLASS DIAGRAM: XML SPECIFIC CLASS DIAGRAM

 Menggunakan komposisi untuk


menjelaskan struktur tree
 Memetakan ke sub element XML
DTD DARI CLASS DIAGRAM: XML SPECIFIC CLASS DIAGRAM

 Menggunakan referensi sebagai asosiasi


terarah
 Memetakan ke pasangan id/idref XML
DTD DARI CLASS DIAGRAM: XML SPECIFIC CLASS DIAGRAM

 Menggunakan komposisi untuk menjelaskan


struktur tree
 Memetakan ke element XML
 Menggunakan referensi sebagai asosiasi
terarah
 Memetakan ke pasangan id/idref XML
MAPPING: CLASS DIAGRAM → DTD

 Aturan umum:
 Class → element
 Assosiaction (n-to-n) → element

 2 variasi mapping (orthogonal):


 Attribute → attribute, hierarki
 Attribute → element, hierarki
 Attribute → attribute, net-like
 Attribute → element, net-like

 Struktur hierarki atau net-like ditentukan oleh DTD-specific model


PERTANYAAN

 Bagaimana mengetahui “bagian yg relevan dari PIM” untuk di preserve?


 Apa yg dimaksud functional requirement dan non functional requirement?
 Bagaimana sebuah operation signature memberitahu data apa untuk dimasukkan?
 Apakah selalu mungkin untuk preserve data capacity ketika mapping
PSM to PIM? Jika tidak, jelaskan!
 Apa yg paling banyak dan paling sedikit tuntutan dari ketiga requirement:
untuk data preserving, extending atau reflecting?
LATIHAN

Jika memungkinkan, buatlah domain specific class diagram dari DTD specific
diagram sehingga data capacity dapat:
 Preserved
 Extended, but not preserved
 Reflected, but not extended

Asumsikan pada kasus ini, bahwa semua kelas, asosiasi, attribute relevant
MODELLING DATA

Mapping Class Diagram to DTD

Hierarki Mapping

Net Like Mapping

JSON
DOKUMEN XML YANG WELL FORMED

 Dokumen XML yang well formed:


 Memiliki root elemen
 Semua XML elemen harus mempunyai closing tag
 XML tags bersifat case sensitive
 XML elemen harus nested dengan baik
 Value pada attribute XML harus dikutip dengan lambang quote “”
DOKUMEN XML YANG VALID
https://codebeautify.org/xmlvalidator

 Dokumen XML yg well formed TIDAK BERARTI valid Tool untuk


mengecek dokumen
 Dokumen XML yg valid: XML

 Dokumen XML yg valid HARUS well formed


 Dokumen XML sesuai dengan document type definition.
 Ada dua jenis document type definition yang bisa digunakan dengan
XML:
 DTD – document type definition original
 XML Schema – sebuah alternatif DTD berbasis XML
ATTRIBUTE → ATTRIBUTE, HIERARKI

<!ELEMENT Bill(Client,
Product,
BankAccount)>
<!ATTLIST Bill
status CDATA #REQUIRED
total CDATA #REQUIRED>
ATTRIBUTE → ATTRIBUTE, HIERARKI

<!ELEMENT Client EMPTY>


<!ATTLIST Client
name CDATA #REQUIRED>
ATTRIBUTE → ATTRIBUTE, HIERARKI

<!ELEMENT Product EMPTY>


<!ATTLIST Product
price CDATA #REQUIRED
descr CDATA #REQUIRED
>
ATTRIBUTE → ATTRIBUTE, HIERARKI

<!ELEMENT BankAccount EMPTY>


<!ATTLIST BankAccount
accNo CDATA #REQUIRED
code CDATA #REQUIRED>
KESIMPULAN DTD: ATTRIBUTE → ATTRIBUTE, HIERARKI
<?xml version ="1.0" encoding = "UTF-8"?>
<!DOCTYPE Bill [
<!ELEMENT Bill (Client, Product*, BankAccount)>
<!ATTLIST Bill
status CDATA #REQUIRED
total CDATA #REQUIRED>
<!ELEMENT Client EMPTY>
<!ATTLIST Client
name CDATA #REQUIRED>
<!ELEMENT Product EMPTY>
<!ATTLIST Product
price CDATA #REQUIRED
descr CDATA #REQUIRED>
<!ELEMENT BankAccount EMPTY>
<!ATTLIST BankAccount
accNo CDATA #REQUIRED
code CDATA #REQUIRED> ]>
OBJEK DIAGRAM → XML INSTANCE: ATTR → ATTR, HIERARKI

<?xml version="1.0" encoding="UTF-8"?>


<Bill status="closed" total="150">
<Client name=“Max"/>
<Product price="50“ descr = “Winnetou”/>
<Product price="100“ descr=“H.Potter”/>
<BankAccount accNo="0815" code="1234"/>
</Bill>
MAPPING: CLASS DIAGRAM → DTD

 Aturan umum:
 Class → element
 Assosiaction (n-to-n) → element

 2 variasi mapping (orthogonal):


 Attribute → attribute, hierarki 
 Attribute → element, hierarki
 Attribute → attribute, net-like
 Attribute → element, net-like

 Struktur hierarki atau net-like ditentukan oleh DTD-specific model


ATTRIBUTE → ELEMENT, HIERARKI

<!ELEMENT Bill(
Client,
Product*, Prefix tipe element
BankAccount, untuk menghindari
konflik nama
Bill.total,
Bill.status ) >
<!ELEMENT Bill.total(#PCDATA)>
<!ELEMENT Bill.status (#PCDATA)>
ATTRIBUTE → ELEMENT, HIERARKI

<!ELEMENT Client(
Client.name ) >
<!ELEMENT Client.name(#PCDATA)>
ATTRIBUTE → ELEMENT, HIERARKI

<!ELEMENT Product(
Product.price,
Product.descr ) >
<!ELEMENT Product.price (#PCDATA)>
<!ELEMENT Product.descr (#PCDATA)>
ATTRIBUTE → ELEMENT, HIERARKI

<!ELEMENT BankAccount(
BankAccount.accNo,
BankAccount.code ) >
<!ELEMENT BankAccount.accNo (#PCDATA)>
<!ELEMENT BankAccount.code (#PCDATA)>
KESIMPULAN DTD: ATTR → ELEMENT, HIERARKI
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Bill [
<!ELEMENT Bill (Client, Product*, BankAccount, Bill.total,
Bill.status)>
<!ELEMENT Client (Client.name)>
<!ELEMENT Product (Product.price, Product.descr)>
<!ELEMENT BankAccount (BankAccount.accNo, BankAccount.code)>
<!ELEMENT Bill.total (#PCDATA)>
<!ELEMENT Bill.status (#PCDATA)>
<!ELEMENT Client.name (#PCDATA)>
<!ELEMENT Product.price (#PCDATA)>
<!ELEMENT Product.descr (#PCDATA)>
<!ELEMENT BankAccount.accNo (#PCDATA)>
<!ELEMENT BankAccount.code (#PCDATA)> ]>
OBJEK DIAGRAM → XML INSTANCE: ATTR → ELE, HIERARKI
<?xml version="1.0" encoding="UTF-8"?>
<Bill>
<Client>
<Client.name>Max</Client.name>
</Client>
<Product>
<Product.price>50</Product.price>
<Product.descr>Winnetou</Product.descr>
</Product>
<Product>
<Product.price>100</Product.price>
<Product.descr>H. Potter</Product.descr>
</Product>
<BankAccount>
<BankAccount.accNo>4711</BankAccount.accNo>
<BankAccount.code>0815</BankAccount.code>
</BankAccount>
<Bill.status>closed</Bill.status>
<Bill.total>150</Bill.total>
</Bill>
MAPPING: CLASS DIAGRAM → DTD

 Aturan umum:
 Class → element
 Assosiaction (n-to-n) → element

 2 variasi mapping (orthogonal):


 Attribute → attribute, hierarki 
 Attribute → element, hierarki 
 Attribute → attribute, net-like
 Attribute → element, net-like

 Struktur hierarki atau net-like ditentukan oleh DTD-specific model


PEMBAHASAN

 Attribute → Attribute
 Dokumen XML yang lebih ringkas
 “footprint” yg lebih kecil, efisien dalam memroses dan transmisi
 Lebih mudah dibaca
 Attribute → Element
 Maaping yg seragam dari kelas dan attribute
 DTD (relatif) lebih stabil ketika class diagram di extend
MODELLING DATA

Mapping Class Diagram to DTD

Hierarki Mapping

Net Like Mapping

JSON
CLASS DIAGRAM → DTD: ATTRIBUTE → ATTRIBUTE, NETLIKE
Skenario baru: Kirim semua Bill dalam satu minggu ke arsip

<!ELEMENT root (Bill*, Client*,


Product*, BankAccount*)>
<!ELEMENT Bill EMPTY>
<!ATTLIST Bill pays IDREF #REQUIRED
contains IDREFS #IMPLIED
to IDREF #REQUIRED
status CDATA #REQUIRED
total CDATA #REQUIRED>
CLASS DIAGRAM → DTD: ATTRIBUTE → ATTRIBUTE, NETLIKE

<!ELEMENT Client EMPTY>


<!ATTLIST Client id ID #IMPLIED
name CDATA #REQUIRED>
<!ELEMENT Product EMPTY>
<!ATTLIST Product id ID #IMPLIED
price CDATA #REQUIRED
descr CDATA #REQUIRED>
<!ELEMENT BankAccount EMPTY>
<!ATTLIST BankAccount id ID #IMPLIED
accNo CDATA #REQUIRED
code CDATA #REQUIRED>
OBJECT DIAGRAM → XML INSTANCE: ATTR → ATTR, NETLIKE

<root>
<Bill pays="c1"
to="a1"
contains="p1 p1"
status="closed"
total="100" />
<Client id="c1" name="Max" />
<Product id="p1"
price="50"
descr="Winnetou" />
<BankAccount id="a1"
accNo=“4711"
code=“1234" />
</root>
MAPPING: CLASS DIAGRAM → DTD

 Aturan umum:
 Class → element
 Assosiaction (n-to-n) → element

 2 variasi mapping (orthogonal):


 Attribute → attribute, hierarki 
 Attribute → element, hierarki 
 Attribute → attribute, net-like 
 Attribute → element, net-like

 Struktur hierarki atau net-like ditentukan oleh DTD-specific model


CLASS DIAGRAM → DTD: ATTRIBUTE → ELEMENT, NETLIKE

<!ELEMENT root (Bill*,


Client*,
Product*,
BankAccount*)>
<!ELEMENT Bill (Bill.status,
Bill.total)>
<!ELEMENT Bill.status (#PCDATA) >
<!ELEMENT Bill.total (#PCDATA) >
<!ATTLIST Bill pays IDREF #REQUIRED
contains IDREFS #IMPLIED
to IDREF #REQUIRED >
CLASS DIAGRAM → DTD: ATTRIBUTE → ELEMENT, NETLIKE

<!ELEMENT Client (Client.name)>


<!ELEMENT Client.name (#PCDATA)>
<!ATTLIST Client id ID #IMPLIED>
<!ELEMENT Product (Product.price,
Product.descr)>
<!ELEMENT Product.price (#PCDATA)>
<!ELEMENT Product.descr (#PCDATA)>
<!ATTLIST Product id ID #IMPLIED>
<!ELEMENT BankAccount (BankAccount.accNo,
BankAccount.code)>
<!ATTLIST BankAccount id ID #IMPLIED >
OBJECT DIAGRAM → XML INSTANCE: ATTR → ELE, NETLIKE
<Bill pays="c1" to="a1"
contains="p1 p1" >
<Bill.status>closed</Bill.status>
<Bill.total>100</Bill.total>
</Bill>
<Client id="c1">
<Client.name>Max</Client.name>
</Client>
<Product id="p1">
<Product.price>50</Product.price>
<Product.descr>Winnetou</Product.descr>
</Product>
<BankAccount id="a1">
<BankAccount.accNo>1234</BankAccount.accNo>
<BankAccount.code>4711</BankAccount.code>
</BankAccount>
MAPPING: CLASS DIAGRAM → DTD

 Aturan umum:
 Class → element
 Assosiaction (n-to-n) → element

 2 variasi mapping (orthogonal):


 Attribute → attribute, hierarki 
 Attribute → element, hierarki 
 Attribute → attribute, net-like 
 Attribute → element, net-like 

 Struktur hierarki atau net-like ditentukan oleh DTD-specific model


PEMBAHASAN

 Hierarki
 Bentuk struktur tree jelas
 Navigasi dan proses yg sederhana
 Lebih mudah dibaca

 Netlike
 Struktur relasi
 Sedikit redundancy
 Mapping ke relational data model lebih sederhana
MODELLING DATA

Mapping Class Diagram to DTD

Hierarki Mapping

Net Like Mapping

JSON
MOTIVASI

 Bagaimana mengirimkan :Bill dari Online Shop ke


Shopping Agent?
 Export :Bill
 Transformasi dan transmit :Bill
 Import :Bill
 Teknologi (JSON-REST)
 JSON untuk export dan import
 HTTP untuk transmisi
JSON IS ...

JSON IS NOT ...
 Format pertukaran data ringan (light

 Terlalu rumit / kompleks
weight) berbasis text  Format dokument
 Sepenuhnya indenpen dari bahasa  Bahasa markup
 Berdasarkan subset dari Bahasa  Bahasa pemrograman
Pemrograman JavaScript
 Mudah untuk dimengerti, manipulasi
dan di-generate
CONTOH: XML VS JSON
<employees>
<employee>
<firstName>John</firstName> {"employees":[
<lastName>Doe</lastName> {"firstName":"John",
</employee> "lastName":"Doe"},
<employee> {"firstName":"Anna",
<firstName>Anna</firstName>
"lastName":"Smith"},
<lastName>Smith</lastName>
{"firstName":"Peter",
</employee>
"lastName":"Jones"}
<employee>
<firstName>Peter</firstName> ]}
JSON Tutorial:
<lastName>Jones</lastName>
https://www.w3schools.com/js/js_json_intro.asp
</employee>
</employees>
SEPERTI XML
 TIDAK SEPERTI XML 

 Format plain text  “Lightweight” ringan dan lebih cepat

 “Self describing” (dapat dibaca oleh  JSON menggunakan object bertipe


manusia)  Syntax yg lebih sedikit
 Hierarki (value dapat mengandung list  Properti dapat dengan segera dibaca oleh
object atau value) code JavaScript
KEUNGGULAN JSON KELEMAHAN JSON

 Kurangnya namespace
 Syntax yg sederhana
 XML document bisa memilih dan
 Mudah dibuat dan manipulasi mencampur elemen yg didefinisikan dengan
 Dapat di parse JavaScript dengan eval() menggunakan schema lain dengan
menggunakan namespace supaya tidak
 Didukung hampir semua framework ambigu
JavaScript  Validasi tidak diturunkan (inherit)
 Didukung sebagian besar technology  XML mempunya DTD dan XSD untuk
backend memvalidasi instance
 JSON schema baru dikembangkan untuk
mengatasi masalah ini, pelajari
https://json-schema.org/
SYNTAX OBJECT PADA JSON

 Himpunan tak berurut dari pasangan name:value yg ditutup dengan { ... }


 Setiap nama diikuti dengan : (colon / titik dua)
 Pasangan name:value dipisahkan oleh , (koma)

{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
SYNTAX ARRAY PADA JSON

 Himpunan berurut dari value yang ditutup dengan [ ... ]


 Value dipisahkan dengan , (koma)

{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
TIPE DATA PADA JSON

 String {
 Deretan dari 0 atau lebih character unicode ...
 Ditutup dengan “double quote”
 Backslash escapement "employee_id": 1236937,
"hire_date": "1/1/2013",
 Number
"fixed-term": false,
 Integers Temukan "location": "Leicester,
 Rational 3.14 kesalahan pada
UK",
JSON ini
 Floating point 2.99e8 "qualification": [PhD,
 Boolean MSc, BSc]
 true or false }
RESOURCE

 JSON tutorial : https://www.tutorialspoint.com/json/index.htm


 JSON.org : http://www.json.org
 JSON Schema : http://www.json-schema.org
LATIHAN

 Buatlah representasi JSON dari object diagram disamping


 Dengan menggunakan schema discovery service pada url
di bawah ini hasilkan sebuah class diagram dari code
JSON-mu. Bandingkan dengan class diagram
originalnya.

http://som-research.uoc.edu/tools/jsonDiscoverer/#/simple
MODELLING DATA

Mapping Class Diagram to DTD

Hierarki Mapping

Net Like Mapping

JSON
THANK YOU
WENDDARKKNIGHT@GMAIL.CO
M
WENDY,S.KOM.,M.SC.

Anda mungkin juga menyukai