Pentingnya Perencanaan Dalam Pembangunan Perangkat Lunak

Kadang-kadang, saya dan juga teman-teman saya (yang berasal dari program studi computer science atau teknik informatika) suka mengeluh tentang sulitnya memahami teori-teori konseptual yang diajarkan dalam mata kuliah rekayasa perangkat lunak (software engineering), atau interaksi manusia komputer (human computer interaction). Sebenarnya untuk apa sih ada mata kuliah seperti ini?

Saya pribadi juga sempat bertanya-tanya, karena semua yang diajarkan di dalam dua mata kuliah contoh yang saya tulis di atas memang semuanya sulit, karena bersifat hafalan dan sangat konseptual. Terkadang membingungkan juga, karena ada perspektif-perspektif tertentu yang ternyata harus dianut ketika mengembangkan suatu perangkat lunak.

Dalam pengembangan perangkat lunak sendiri ada konsep seperti waterfall atau agile yang ternyata punya kecenderungan-kecenderungan tertentu. Ya, dalam pikiran jangka pendek, saya masih menganggapnya belum terlalu penting, tetapi mungkin nanti untuk dunia kerja.

Dan kemudian kesalahan pemikiran saya pun terbuktikan.

Hari Kamis lalu, saya dan teman-teman saya di Teknik Informatika Universitas Paramadina angkatan 2010 melaksanakan ujian akhir semester untuk mata kuliah web programming. Tugas kami adalah menciptakan satu website dengan menggunakan  framework untuk pengembangan web. Framework yang kami gunakan adalah CakePHP. Website yang dibangun, harus memiliki sistem otentikasi dan otorisasi.

Saya bersama rekan-rekan saya kemudian memutuskan untuk membangun sebuah website yang bisa digunakan untuk portfolio untuk fotografer. Jadi rencananya adalah sebagai berikut.

Situs ini adalah situs untuk menampilkan foto-foto, dengan mekanisme dasar yang mirip situs flickr. Tambahannya situs ini nanti bisa digunakan untuk menampilkan portfolio dari fotografer yang mendaftar di situs ini, jadi harapannya agar punya fungsi mirip situs LinkedIn.

Bersama teman-teman Teknik Informatika Universitas Paramadina

Pengembangan aplikasi pun dimulai. Sekitar dua minggu, tim (saya dan rekan-rekan) kemudian membangun website ini. Kami hanya beranggotakan 4 orang, dan saya bertanggung jawab penuh di pengembangan core aplikasinya yang membutuhkan coding suntuk.

Saat menggunakan framework CakePHP, hal pertama yang harus dilakukan adalah membuat database. CakePHP punya fitur khusus yang bernama bake yang memudahkan programmer ketika ingin membuat kerangka dasar untuk website-nya. Dengan bake, maka programmer pada tahap awal tidak perlu melakukan coding langsung, cukup menggunakan tampilan interaktif berbasiskan console, dan CakePHP punya kecerdasan sendiri untuk memilihkan common preferences yang biasa dipakai dalam pengembangan website.

Singkat cerita, saya sudah melakukan bake untuk database-nya. Oh iya, perlu diketahui bahwa walaupun kami sudah tahu ingin membuat apa, memetakan database sama sekali bukan hal mudah! Saya memetakannya dalam bentuk ERD (entity relationship diagram), sambil coret-coret dan kemudian baru membuat database-nya. Saya menggunakan MySQL dan dibantu PHPMyAdmin untuk DBMS-nya.

Saya berpikir pertama, jika nanti di tengah jalan saya ingin melakukan perubahan, tentu semuanya akan mudah saja.

Ternyata, sama sekali tidak.

Jadi, ketika ingin menambahkan fitur baru, terkadang kita harus menambahkan field baru di tabel yang ada di database yang kita gunakan. Dan jika itu terjadi, itu berarti saya harus melakukan bake ulang untuk database-nya, dan tentu harus berpikir kembali untuk menyesuaikan perubahan pertama saya.

Saat awal-awal, aplikasinya belum terlalu kompleks, tetapi saat deadline hanya tinggal 3 hari, saya mulai frustasi. Alhamdulillah aplikasinya jadi tepat waktu, dan dipresentasikan, walaupun kalau menurut saya, ada beberapa kecacatan dari segi core-nya yang seharusnya bisa diantisipasi, kalau saja saya disiplin ketika membuat website-nya.

Jadi, ternyata di situlah pentingnya perencanaan pengembangan, dengan sistematika yang telah dipelajari di mata kuliah Rekayasa Perangkat Lunak.

Ketika kita membangun aplikasi, hal yang disebut konsep dan perencanaan harus sangat jelas di awal, sehingga, kita tidak akan melenceng ketika berada di tengah-tengah pengembangan, dan tidak merencanakan fitur-fitur dadakan ketika tengah-tengah memrogram. Semua fitur seharusnya sudah didefinisikan saat awal pengembangan aplikasi, sehingga saat pengembangan, developer hanya harus menyesuaikan saja dengan outline yang sudah disepakati di awal.

Project UAS ini kategorinya masih sangat sederhana, dan kerepotan yang saya rasakan itu sangat signifikan. Lah, nanti bagaimana kalau sudah jadi developer di perusahaan tertentu yang pastinya aplikasinya lebih kompleks?

Jadi, pada intinya, hal yang ingin saya sampaikan adalah, melakukan pemetaan konsep di awal itu sangat penting. Untungnya, para ahli IT sebelum kita sudah membuatkan panduan untuk kita saat ingin memetakan konsep dari perangkat lunak kita. Tentu adanya UML (Unified Modelling Language), ERD (Entity Relationship Diagram), DFD (Data Flow Diagram), Use-Case Diagram dan lainnya sebenarnya akan sangat memudahkan kita untuk mengembangkan suatu aplikasi secara cepat, terkonsep, dan mudah.

Jadi, apapun yang kita pelajari, tentu ada manfaatnya kan?😀

Semoga bermanfaat.

2 comments

  1. Setyabella Ika Putri · May 26, 2012

    hhi🙂
    kebiasaan ngeluh ini banyak banget keluar, apalagi pas jaman SMP-SMA,
    ngapain belajar aljabar? ngapain belajar hukum newton? ngapain belajar ini? ngapain belajar itu?
    -kalo belum nemu guna-nya, keluhan udah pasti keluar….
    #dasar.manusia😛

    • Imam Hidayat · May 26, 2012

      Haha, iya Bel. Tapi percayalah, semuanya itu nanti ada gunanya.😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s