Monday, April 21, 2008

Menilai project open source

Dengan adanya lusinan (puluhan?) framework open source, tidak mungkin kita memilih dengan cara mencobanya satu demi satu. Mungkin kita lihat yang mana yang populer di kalangan teman-teman kita atau mana yang sering disebut-sebut oleh artikel atau blog di internet.
Dengan adanya situs Ohloh (www.ohloh.net, yang sekilas saya sebut di posting sebelum ini), cara tadi menjadi kuno dan tidak terstruktur - di Ohloh kita bisa melakukan perbandingan antar project, menilai aktivitas kontributor tiap project, memperkirakan nilai project (berdasarkan jumlah baris - debatable indeed). Popularitas sebuah project dinilai dengan ukuran Stack - yaitu berapa orang user Ohloh yang memasukkan project tersebut ke technology stack-nya (dengan kata lain, aktif menggunakan hasil dari project tersebut). Ada juga penilaian ke individu yg terlibat dalam project2 (Kudos), yang didapatkan dari penilaian orang terhadapnya (sebetulnya ada banyak faktor dan cukup rumit). Ohloh juga menampilkan peta menunjukkan sebaran geografis.
Misalnya kita hendak mencari framework untuk php, kita bisa mencari dengan menggunakan tag, misalnya : "framework php". Dari hasil search, kita bisa melihat mana yang paling populer, atau bahkan bisa memilih tag berikutnya (dari suggestion yang muncul) untuk mempersempit hasil search.
Cuma, project summary, tag, dan informasi lain tampaknya harus diedit oleh editor manusia, dan kadang bisa menjadi tidak representatif kalau kebetulan belum ada orang yg mengisi dengan lengkap. Baru saja saya tambahkan summary untuk 'Struts 2' dan tag-tagnya, sehingga kalau kita cari dengan kriteria "framework java mvc" maka Struts 2 akan muncul bersama Wicket dan Tapestry. Ya, tampaknya ia memiliki semangat wiki, orang yang baru buat login pun bisa mengedit informasi mengenai suatu project.
Selamat membandingkan framework!

Goodbye Visio

Setelah mencoba berbagai tool open source, (dan menahan diri untuk tidak memasang Microsoft Visio 2003), kini saya cukup PD untuk membuat macam-macam diagram.
Anda perlu menggambar UML diagram, dan butuh model UML yang bisa dihubungkan dengan macam-macam code generation tool: gunakanlah ArgoUML
  • Kekurangannya: hanya bisa menggambar diagram UML, agak berat karena dibuat pakai Java
  • Kelebihannya: bisa export XMI dengan format UML 1.4
Anda perlu menggambar diagram dengan sangat cepat :
gunakanlah yEd Graph Editor.
  • memiliki macam-macam algoritma layouting untuk menata ulang gambar kita,
  • tiap node bisa diganti gambarnya (dengan isi dari file .PNG atau .SVG).
  • sangat intuitif dan mudah, response cepat (seakan-akan bukan dibuat pakai Java..)
  • Kekurangannya: hanya bisa menggambar diagram yang bisa dimodelkan sebagai graph (yaitu kumpulan Node dan Edge).
Anda perlu menggambar ilustrasi diagram yang lumayan cantik :
gunakanlah InkScape
  • program gambar sekelas Adobe Illustrator/FreeHand
  • mendukung SVG
  • dibuat dengan python - jadi responsenya lumayan cepat
  • Kekurangannya: mungkin its just me, tapi agak sulit digunakan
Anda perlu program gambar yang sesuai standar Telkom? (Ada gituh?)
Gunakan OpenOffice Draw.
  • kemampuan terbatas
  • keuntungannya: terpasang di semua laptop Telkom Seat Management II :))
Dan, sebagai pilihan terakhir, Gnome Dia .
  • konon dibuat mencoba menyamai Visio
  • memiliki pustaka dengan banyak shape - (tapi masih kurang, meskipun banyak)
  • tapi saya mendapatinya sulit digunakan
Pembaca mungkin mendapati bahwa banyak antara program-program di atas ber-versi di bawah 1.0, namun ini tidak menjadi kendala bagi kita untuk mengambil manfaat dari program-program tersebut.
Semua program adalah Open-Source, kecuali yEd, yang merupakan Freeware.
(bedanya? kalo cuma freeware ga ada source codenya..)

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..