|
Tuesday, September 06, 2005 Some J2EE Development Best Practices Seorang teman meminta saya untuk menulis apa yang saya tahu tentang J2EE dan best practices-nya. Beberapa hal yang tertulis di sini mungkin sudah terlalu umum dan kurang mendalam. Di waktu yang lain (jika ada), saya akan mencoba memaparkannya secara lebih jelas. Sebelum membaca tulisan ini, ada baiknya untuk membaca terlebih dahulu No Best Practices.General development best practicesCommon OO development phases :
Masing-masing metodologi mempunyai kekurangan dan kelebihannya masing-masing. Jika kita tidak wajib secara ketat untuk menggunakan suatu metodologi tertentu, pilihlah bagian-bagian tertentu dari suatu metodologi yang dianggap paling menguntungkan (manfaat vs effort). Sebagai contoh, kita bisa mengambil pendekatan TDD (Test Driven Development) pada saat siklus coding, testing, redesign. Pada fase architectural design, developer akan dihadapkan pada permasalahan pemilihan teknologi. Banyak developer yang memilih teknologi berdasarkan popularitas atau tantangannya (misalnya Struts, EJB, Hibernate), bukan berdasarkan kebutuhannya. Pilihlah teknologi yang tepat untuk permasalahan yang ada. CV itu penting, tapi keberhasilan proyek (tepat waktu dan tepat budget) lebih penting lagi. Bahan pertimbangan pemilihan arsitektur :
Development artefact (use case diagrams, class diagrams, interaction diagrams, dll yang dihasilkan selama development) hanya akan berguna jika artefact tersebut dapat digunakan sebagai alat komunikasi antar developer dan sinkron dengan kode yang dibuat. Jika kita tidak dapat menjaga kesesuaian antara diagram dan kode kita, sebaiknya buang saja diagram-diagram tersebut, karena selain kita sudah punya artefact paling penting (yaitu kode), diagram-diagram tersebut hanya akan menjadi beban tambahan saja (tidak mempunyai nilai tambah). Rilislah software / protoptype (software dengan beberapa fitur yang sudah terimplementasi) secepat mungkin agar dapat sesegera mungkin mendapatkan feedback dari client. Semakin cepat feedback didapat, semakin cepat pula siklus code, test, dan redesign kita berputar. Salah satu faktor yang menyebabkan cepatnya pengembangan software secara open source adalah cepatnya open issues (feedback dan feature request) diberikan oleh pengguna dan kontributor. Design levelCommon practices :
Good architects keep the design simple, by removing everything until there is nothing left to remove. Make simple, but not simpler (Einstein). Technology driven vs problem driven : Beberapa developer J2EE pada saat perancangan terkadang terpaku pada teknologi yang akan dipakai. Sebagai contoh pada saat kita sudah memilih EJB sebagai teknologi yang akan kita pakai, kita akan cenderung menyesuaikan desain OO kita supaya menuruti best practice yang dianjurkan. Misalnya dengan mengacu Sun’s Core J2EE Patterns, kita akan merancang model kita sebagai Composite Entity (minimizing JDBC call and container’s efforts to persist/load EJB’s state) dan menyertakan juga Transfer / Value Object (minimizing remote method call traffic). Hasilnya adalah desain yang rumit dan tightly coupled dengan EJB. Jika pada sebelumnya requirement awal kita tidak membutuhkan aplikasi kita untuk terdistribusi, sekarang muncul requirement baru yang diakibatkan karena kita menggunakan EJB. Contoh kasus lain adalah pada saat mendesain persistent object. Jangan hanya karena kita menggunakan teknologi persistensi yang mewajibkan object kita mempunyai getter/setter, kita jadi menambahkan method-method tersebut pada object kita (yang sebenarnya pada requirement awal tidak dibutuhkan getter/setter method tersebut). Ilustrasinya diberikan sebagai berikut : Hasil analisis dari requirement :
Att1, Att2, dan Att3 adalah attribute yang mewakili state dari Account, sehingga ketiganya merupakan persistent attributes. Hasil analisis menyebutkan bahwa Att1 dan Att2 tidak dapat diubah (aturan 1) dan dibaca (aturan 2) dari manapun di luar Account, dan Att3 hanya bisa dibaca saja (aturan 3). Karena menggunakan suatu teknologi ORM yang mewajibkan kita menyediakan getter/setter untuk semua persistent attributes, kita harus menambahkan method-method berikut :
Karena terpaksa menuruti kontrak yang diwajibkan teknologi ORM yang kita gunakan, kita terpaksa harus melanggar 3 aturan yang sudah ditetapkan sebelumnya. (Catatan : kasus di atas hanya contoh saja. Beberapa ORM tools yang populer tidak memerlukan kita melengkapi seluruh persistent atttibutes dari kelas kita dengan getter/setter-nya. Tool-tool tersebut bisa membaca dan mengubah nilai attribute dengan cara lain, misalnya bytecode enhancement, dynamic proxy, AOP, cglib, dll) Jangan biarkan teknologi yang mengarahkan bagaimana kita merancang solusi kita. Code levelCommon practice :
Write “self documented” code dengan menggunakan nama class, attribute, dan method yang tepat (selain komentar dalam bentuk javadoc yang baik). Kode yang baik adalah kode yang benar logika (dapat menyelesaikan masalah), sintaks (lolos compile), dan semantiknya (readable and easy to maintain). Every programmer can write code that undestood by computer, but good programmer wrote code that understood by human. Thursday, September 01, 2005 Friend, fate, hope. Innalillahi Wa Inna Ilayhi Raaji'uun. monang_ok : jangan la congrats dulumonang_ok : lom 100% la Dy : hehe monang_ok : kalau mati pagi ni, tak kan jadi pergi hehe Dy : bila boleh congrats monang_ok : hehe tak perlu la monang_ok : nothing big Dy : hehe jgnlah ckp macam tu monang_ok : hehe, sorry Dy : so looking for american girl ke monang_ok : american girls like to be treated as a computer ke? monang_ok : hehe Dy : maybe monang_ok : hehe monang_ok : and how bout u? Dy : me? monang_ok : do u plan to going back to malaysia after got ur degree? Dy : stuck in ireland for 2-3 yrs monang_ok : plan untuk nanti la monang_ok : hehe, not now Dy : insyaallah monang_ok : oh great Dy : i want to serve to my country monang_ok : wow cool Dy : pray for my success monang_ok : eh monang_ok : i remember monang_ok : when i read a manga (comic) Dy : yup monang_ok : it says something about 'doctor without border' or somthin like that monang_ok : in europe monang_ok : is it for real? monang_ok : volunteering organization Dy : real Dy : y monang_ok : oh monang_ok : just curious monang_ok : cool monang_ok : haha monang_ok : don't be so cocky monang_ok : u even not been there yet hehe monang_ok : hehe Dy : ok monn i got to go, c ya next time ok See u later Dy. Allah's ideal ways may be different from ours. You haven't been a doctor yet. You haven't served your country yet. You haven't been Mrs. Ariff yet. But may be, it's His best for us. We might never meet in this real world, but sure it's great to have a good friend like her. Hope you'll be in the best place after Him. Al Fatihah. |
|
Cat Stevens said - If you want to sing out, sing out, and if you want to be free, be free, cause there's a million ways to be, you know that there are. - watashi likes... anime, games, Java, watching movies, operating illegal software and music downloads, playing the guitar, reading, football, cats dislikes... pineapples, snakes, Bush, Bill Gates, hypocrites valuable primates MartinFowler JamesGosling RickardOberg GradyBooch JasonHunter SteveJobs CedricBeust BruceTate HaniSulaiman DionAlmaer BruceEckel CarlosWhoever CameronPurdy GrahamGlass BillBurke GavinKing MarcFleury RichardStallman JamesStrachan ErikHatcher CraigMcClanahan MonsonHaefel GuidoVanRossum JimWaldo Joel Spolsky JackShirazi EricRaymond HeinzKabutz
archives 10/2004 other people
Mr. Good Indonesian donation provided by links behind the scene I like grey because it reminds me of the colour of my brain. My brain conjures up funny or useless thoughts to be ranted in this blog/journal.Let them speak This horrible page has been visited for times |
|
theWrittenOne
|
|
-Yet Another Useless Blog-
Random thought, Java, and anything |