Tuesday, November 12, 2013

Software Development Life Cycle

Dunia komputer, khususnya bidang pengembangan software (software development), dalam beberapa aspek atau bagiannya memiliki kemiripan istilah dengan dunia nyata atau dunia kehidupan kita sehari-hari. Dalam beberapa hal, istilah-istilah yang digunakan pada bidang komputer memiliki kesamaan dengan istilah yang biasa digunakan sehari-hari. Salah satu contoh istilah tersebut adalah daur hidup (life cycle). Software komputer, seperti halnya makhluk hidup secara umum, juga memiliki daur hidup (life cycle) yang biasa disebut sebagai software development life cycle (daur hidup pengembangan software). Artikel ini akan coba membahas secara ringkas, padat, dan jelas mengenai software development life cycle. Semoga bahasan yang terdapat pada artikel ini dapat bermanfaat.
Menurut Wikipedia, software development life cyle (SDLC) atau yang dapat disebut pula sebagai software development process (SDP) merupakan suatu struktur yang ditekankan atau difokuskan pada pengembangan suatu produk software. Sementara itu, ada pula yang mendefinisikan software development life cycle sebagai serangkaian langkah atau tahapan yang menyediakan suatu model bagi pengembangan dan pengelolaan daur hidup suatu software maupun bagian dari software. Beberapa istilah lain yang dapat dianggap mirip dengan SDLC adalah software life cycle dan software process. SDLC juga sering dianggap sebagai bagian dari systems development life cycle. Terdapat beberapa model yang umum digunakan terkait dengan pengembangan software, dimana masing-masing model tersebut mendeskripsikan berbagai kumpulan pendekatan berbeda terhadap setiap tugas atau aktivitas yang dilakukan dalam setiap tahapan proses. Perbedaan pendekatan tersebut dipengaruhi oleh perbedaan industri maupun organisasi yang menjalankan proses pengembangan software. ISO/IEC 12207 adalah standar internasional untuk software life-cycle process yang ditujukan sebagai suatu standar yang mendefinisikan semua upaya (pemilihan metode, penerapan, dan pengawasan terhadap daur hidup software) yang diperlukan untuk pengembangan dan pemeliharaan software.
Selama beberapa dekade sebelumnya, terdapat suatu tujuan jangka panjang terkait dengan pengembangan software, yaitu untuk menemukan proses-proses yang dapat diprediksi serta diulangi (dilakukan kembali) yang pada akhirnya diharapkan dapat meningkatkan produktivitas dan kualitas dari pengembangan software serta software itu sendiri. Sejumlah pihak mencoba untuk mensistematisasikan atau memformulasikan aturan-aturan terkait dengan penulisan software yang sebelumnya dianggap tak teratur. Sementara itu, sejumlah pihak lain mencoba menerapkan teknik-teknik manajemen proyek terhadap penulisan software. Pihak-pihak tersebut mempercayai bahwa tanpa adanya manajemen proyek yang efektif, proyek-proyek software dapat saja terlambat dikirimkan ke pihak customer maupun memungkinkan terjadinya over budget untuk proyek tersebut. Guna mendukung peningkatan manajemen proses proyek software, suatu organisasi dapat membentuk suatu Software Engineering Process Group (SEPG) yang dapat menjadi elemen penting dalam upaya meningkatkan kualitas proses-proses pengembangan software. SEPG terdiri dari para praktisi dengan berbagai macam keahlian, dimana kelompok tersebut menjadi pusat dari upaya kolaboratif dari setiap individu dalam organisasi yang terlibat secara langsung dalam upaya manajemen peningkatan proses rekayasa software.
Aktivitas Pengembangan Software
Setelah definisi mengenai software development life cycle, standar internasional untuk software development life cycle, dan juga mengenai organisasi pengembangan software dibahas pada sejumlah paragraf di atas, maka pada bagian ini akan dibahas aktivitas-aktivitas yang terdapat dalam seluruh proses pengembangan software.
Aktivitas paling awal dari pengembangan software adalah planning (perencanaan). Planning ditujukan untuk merumuskan tujuan secara umum dari aktivitas pengembangan software maupun secara spesifik untuk setiap tahapan proses pengembangan software, dimana tujuan akhir dari aktivitas ini adalah untuk menemukan hal-hal atau komponen-komponen yang menjadi bagian dari proyek pengembangan software. Suatu aktivitas penting dalam pengembangan software adalah melakukan perolehan kebutuhan atau analisa kebutuhan. Pada umumnya, para pelanggan memiliki gagasan abstrak mengenai hasil akhir yang diharapkannya, namum mereka tidak benar-benar mengetahui fitur-fitur atau proses-proses apa saja yang perlu ada di dalam software agar dapat benar-benar memperoleh hasil akhir yang mereka inginkan. Pada keadaan inilah, seorang pengembang software yang terlatih dan berpengalaman bertanggung jawab untuk membantu mengenali kebutuhan-kebutuhan yang masih ambigu, belum lengkap, maupun yang saling bertentangan. Segera setelah seluruh kebutuhan umum telah berhasil digali dari pelanggan, berikutnya perlu ditetapkan suatu ruang lingkup pengembangan software dengan jelas.
Tiga tahapan atau aktivitas berikutnya dalam rangkaian aktivitas pengembangan software adalah implementation (implementasi), testing (pengujian), dan documenting (pendokumentasian). Aktivitas implementasi adalah aktivitas dimana para pengembang software mulai menuliskan kode-kode program berdasarkan pada hasil analisa kebutuhan yang telah dilakukan. Aktivitas software testing (pengujian software) merupakan aktivitas penting dan terpadu pada proses pengembangan software. Aktivitas ini berfungsi untuk memastikan bahwa seluruh penyimpangan atau kesalahan yang mungkin ada pada software dapat dengan segera diketahui pada setiap proses pengembangannya. Aktivitas documenting (pendokumentasian) ditujukan untuk mendokumentasikan seluruh detail rancangan internal dari suatu software dengan tujuan untuk memudahkan ketika melakukan perubahan (perbaikan atau penambahan fitur) maupun perawatan (maintenance) suatu software di masa depan. Aktivitas pendokumentasian biasa dilakukan pada setiap tahapan pengembangan. Penulisan dokumentasi juga dapat meliputi penulisan API (Application Programming Interface), baik internal maupun eksternal API. Banyaknya dokumentasi yang dibuat tergantung pada jenis proses rekayasa software yang digunakan oleh tim pengembang software.
Dua tahapan terakhir pada proses pengembangan software adalah deployment (installment atau pemasangan) dan maintenance (perawatan). Tahapan deployment dijalankan segera setelah kode-kode program telah mengalami pengujian yang tepat, disetujui untuk dirilis, dan kemudian dipergunakan pada lingkungan kerja yang sesungguhnya. Deployment meliputi instalasi, kustomisasi, pengujian, maupun perpanjangan masa evaluasi software jika dianggap diperlukan. Dukungan dan pelatihan penggunaan software juga menjadi bagian dari tahapan deployment yang merupakan suatu proses penting untuk menyediakan dukungan agar pengguna dapat lebih mudah memahami cara menggunakan software dengan optimal. Tahapan maintenance software ditujukan untuk tetap dapat mencakup atau menjangkau setiap kesalahan pemrograman yang ditemukan maupun kebutuhan-kebutuhan baru yang diperlukan dalam software. Tahapan ini dapat memerlukan upaya dan waktu yang cukup besar, sebab setiap kebutuhan yang gagal dikenali sejak dari awal dapat mendorong perlunya perancangan ulang desain suatu software.
Demikianlah pembahasan ringkas mengenai software development life cycle. Semoga bahasan yang kami berikan ini dapat turut membantu setiap orang atau setiap pihak yang sedang ingin mempelajari mengenai pengembangan software.

No comments:

Post a Comment