Monday, April 21, 2008

Model Driven Euphoria

Beberapa hari terakhir ini, karena dapat tugas untuk merancang sebuah aplikasi, aku merambah dunia UML, belajar cara memakai tool ArgoUML, susah payah memasang AndroMDA, dan mendownload macam-macam freeware untuk menggambar diagram.
Konsep MDA, Model Driven Architecture, membuat model UML yg kita buat menjadi beberapa kali lebih bernilai daripada sekedar sketsa dan dokumentasi. Ada dua kategori atau generasi tool untuk MDA,
  1. Tool yang melakukan transformasi dari model yang dibuat, dan kemudian menghasilkan source code dari hasil transformasi. Jargonnya sih, Transformasi PIM (Platform Independent Model) menjadi PSM (Platform Specific Model), dan code generation. AndroMDA termasuk kategori ini.
  2. Tool yang mentransformasi model menjadi runtime data, yang langsung bisa dieksekusi oleh runtime engine tertentu. OpenMDX termasuk kategori ini.
Bagi yang pernah menggunakan Rational Rose atau PowerDesigner, tool generasi pertama mirip dengan yang sudah dilakukan tools tersebut (ArgoUML juga bisa melakukan hal ini). Umumnya di dalam model kita tentukan nama method-method yang dimiliki class-class yang kita buat, atribut nya, asosiasinya, dst. Kemudian Rose/PowerDesigner menghasilkan source code dalam bahasa yang kita pilih, namun tentu saja method-method tersebut belum terisi apa-apa dan 'tinggal' diisi oleh sang Developer. Namun tentunya tool generasi pertama bisa melakukan lebih dari itu.. ia bisa memetakan satu kelas yang kita buat menjadi beberapa kelas, dan menggenerate method-method untuk melakukan data access. Misalnya, AndroMDA, dengan cartridge (semacama plugin) Hibernatenya, akan menggenerate :
  • hbm.xml mapping, yang bisa dikustomisasi (misalnya apakah untuk tipe Date ingin kita simpan sebagai oracle DATE atau oracle TIMESTAMP)
  • kelas entitas,
  • kelas-kelas Data Access Object beserta method load,loadAll, update, delete, dan removenya, (katanya bahkan kita bisa menspesifikasikan method yg melakukan query dengan OCL ataupun Hibernate-QL)
Cartridge AndroMDA yg lain, bpm4struts, menjanjikan transformasi dari activity diagram menjadi kelas-kelas Struts Action class dan ActionForm, pembuatan struts-config.xml, dan bahwa kita tidak akan perlu lagi mengedit secara manual file struts-config.xml ataupun action classes / action forms.

Bagi mereka yang belum pernah berkutat di J2EE, ataupun berkutat di situ tapi tidak aware tentang Hibernate / Struts, mungkin penjelasan singkatnya sebagai berikut:
  • Hibernate adalah persistence framework yang membuat kita tidak pernah membuat query INSERT/DELETE/UPDATE/SELECT dengan tangan kita sendiri.. eh editor kita maksudnya
  • Struts merupakan framework yang menangani flow halaman di aplikasi web, bagaimana sebuah form mendapatkan data, membagi tanggung jawab kelas-kelas menjadi Model-View-dan Controller
Semua hasil yang dapat diberikan AndroMDA merupakan perkembangan yang menggembirakan. Sampai saya lihat statistik di ohloh (apa? decreasing year-over-year project activity?)
Ohloh ini merupakan situs yang cukup unik, ia membantu orang untuk menilai dan membandingkan project-project open source. Kita bisa lihat frekuensi aktivitas commit yg dilakukan tim pengembang, maupun perkiraan distribusi geografis dari pengguna maupun kontributor sebuah project open source.
Kembali ke MDA tadi, setelah melihat bahwa plugin AndroMDA sebagian besar berkutat di antara Spring-Hibernate-jBPM (yg mana saya rasa sedikit 'heavy'), saya mencari alternatif tool MDA yg open-source, dan ketemu dgn OpenMDX.


OpenMDX, mengklaim bahwa ia adalah tool MDA generasi kedua (atau kategori kedua, whatever). Di antara klaimnya ialah bahwa round trip time, waktu yg dibutuhkan dari saya mengubah model sampai aplikasinya sudah bisa ditest, adalah 1 menit. Angka ini tampaknya memang hanya bisa dicapai dengan teknologi yg lebih sophisticated dari code generation. Saya belum coba sih.. 69 MB downloadnya, dan sekarang proxy Telkom lagi lambat-lambatnya.

NB: gambar satu-satunya di blog ini saya dapat dari OpenMDX, tapi tampaknya tidak match dengan klaimnya (ada code-generation di sini). Tapi memang gambar itu didapat dari Quick Start untuk yg versi 1.x, dan sekarang sudah versi 2.0, dan tidak ada gambar yg bagus dari quick start versi 2.0..

No comments: