Apa yang dimaksud dengan pengembangan perangkat lunak (Software Development)?


Software development atau yang biasa disebut dengan pengembangan perangkat lunak merupakan serangkaian proses yang dilakukan untuk mengembangkan perangkat lunak. Pengembangan perangkat lunak membutuhkan kehati-hatian dalam merancang dan mengkesekusi dalam rangka memenuhi goal yang ingin dituju[1]. Serangkaian proses yang dimaksud di sini bukan hanya menulis kode program tapi juga mempersiapkan kebutuhan perangkat lunak, desain dari perangkat lunak, serta pengujian perangkat lunak. Bahkan dokumentasi juga termasuk dalam proses pengembangan perangkat lunak.
Dalam pengembangan perangkat lunak, terdapat berabgai macam pendekatan yang digunakan dalam mengembangkan sebuah perangkat lunak[2]. Pendekatan – pendekatan tersebut digunakan sesuai dengan kebutuhan dari masing – masing pengembang. Berikut adalah beberapa pendekatan yang ada dalam pengembbangan perangkat lunak :

Waterfall

Waterfall merupakan pendekatan yang paling sederhana dari berbagai pendekatan yang ada pada pengembangan perangkat lunak. Pada gambar di bawah, di jelaskan bahwa apabila suatu fase telah selesai (contoh : requirement gathering), barulah proses dapat berlanjut ke fase berikutnya (contoh : system analysis).

Pendekatan jenis ini mengasumsikan bahwa semuanya berjalan dengan lancar apabila suatu fase telah terselesaikan sehingga tidak perlu untuk kembali ke fase sebelumnya. Pendekatan ini cocok digunakan bila pengembang telah atau pernah mengembangkan perangkat lunak yang serupa sebelumnya dan sadar akan setiap permasalahan yang ada dalam pengembangannya.

Spiral

Pendekatan spiral merupakan pendekatan yang memungkinkan pengembangan secara incremental. Incremental yang dimaksud adalah pada setiap fasenya dapat dilalui lebih dari 1 kali dalam rangka pengembangan maupun perbaikan perangkat lunak yang dikembangkan. Berbeda dengan pendekatan waterfall yang setiap fasenya hanya dilalui sekali, pada pendekatan ini, fase – fase yang terdapat pada pendekatan ini bisa dilalui berkali -kali. Kekurangan dari pendekatan jenis ini adalah proses serta management nya yang komples serta tidak sesuai untuk diterapkan ke projek – projek kecil.

Prototipe

Pendekatan jenis ini merupakan pendekatan yang mengacu pada pembuatan prototipe perangkat lunak yang memiliki fungsionalitas terbatas[3]. Pendekatan ini memungkinkan untuk mendapat feedback dari coustomer dan membantu pengembang untuk memahami apa yang diinginkan oleh costumer secara jelas.

Agile

Pendekatan model ini mengharuskan tugas-tugas pengembangan di pisahkan ke dalam sebuah time boxes[4]. Pendekatan ini merupakan kombinasi dari iterative dan incremental proses model yang berfokus pada adaptability dan kepuasan costumer dengan waktu pengerjaan yang cepat.

Beberapa metode agile yang populer digunakan yaitu SCRUM, Extreme Programming, Rational Unified Process, dan lain sebagainya.

Setiap pendekatan – pendekatan yang ada pada pengembangan perangkat lunak, terdiri dari beberapa fase. Berikut adalah beberapa fase umumnya digunakan dalam proses pengembangan perangkat lunak :

Requirement analysis

Requirement analysis atau requirement engineering adalah proses untuk mengumpulkan data – data terkait kebutuhan costumer[5]. Salah satu faktor kunci yang diperlukan pada tahap ini adalah komunikasi. Untuk dapat menggali informasi (elisitasi) dari costumer diperlukan kemampuan komunikasi yang bagus. Selanjutnya setelah menggali informasi, maka informasi tersebut dianalisis dan diolah untuk dapat didaftarkan ke dalam spesifikasi kebutuhan. Pada spesifikasi kebutuhan terdapat 2 daftar jenis kebutuhan, yaitu kebutuhan fungsional dan non-fungsional. Kebutuhan fungsional menjelaskan mengani apa saja yang dapat dikerjakan oleh perangkat lunak yang dibuat. Sedangkan kebutuhan non-fungsional lebih menjelaskan mengenai kualitas dari perangkat lunak yang dibuat. Kebutuhan non-fungsional merupakan kebutuhan yang tidak secara tersirat di katakan oleh costumer, namun bila dimiliki maka akan menjadi nilai yang bagus di mata costumer. Selanjutnya, setelah dimasukan dalam sebuah list, kebutuhan – kebutuhan tersebut harus divalidasi dan di verivikasi. Terdapat beberapa teknik yang dapat digunakan untuk memvalidasi dan memverivikasi, diantaranya adalah SSR(Software Specification Review) dan Prototyping.

Perancangan Sistem

Design merupakan proses dimana pengembang menggambarkan arsitektur dari sistem yang ingin dibuat. Pada proses ini, lebih dibutuhkan kemampuan teknis pengembang dalam menggambarkan setiap proses yang terjadi dalam sistem yang dibuat. Untuk menggambar desain dari sistem yang ingin dibuat, digunakan UML diagram. UML diagram yang dgunakan tergantung dari pendekatan yang kita gunakan dalam mengembangkan perangkat lunak tersebut. Yang umum diketahui, ada 2 pendekatan yang ada yaitu berorientasi objek dan terstruktur. Pada pendekatan berorientasi objek diagram UML yang biasa digunakan adalah Use case diagram, use case scenario, sequence diagram, activity diagram, class diagram. Sedangkan pada pendekatan terstruktur, UML yang digunakan adalah Data Flow Diagram, State machine Diagram. Setiap hal yang ada pada tahap ini akan menjadi acuan bagi proses selanjutnya.

Implentation

Proses ini merupakan proses mengubah apa yang ada pada tahap perancangan sistem menjadi bentuk source code dalam membangun perangkat lunak yang ingin dibuat. Proses ini lebih berbicara kepada kemampuan teknis pengembang dalam pemrograman, bahasa pemrograman yang digunakan, algoritma yang digunakan maupun teknik – teknik yang digunakan. Semua ini tergantung dari pendekatan yang digunakan pada perancangan sistem, apakah menggunakan pendekatan terstruktur ataukah pendekatan berorientasi objek.

Testing

Pada tahap ini, perangkat lunak yang telah berhasil dibuat akan diuji. Ada 2 pengujian yang dapat digunakan, yaitu

Pengujian Black Box
Pengujian black box digunakan untuk menguji fungsi-fungsi khusus dari perangkat lunak yang dirancang. Pada teknik ini, kebenaran perangkat lunak yang diuji hanya dilihat berdasarkan keluaran yang dihasilkan dari data atau kondisi masukan yang diberikan untuk fungsi yang ada tanpa melihat bagaimana proses untuk mendapatkan keluaran tersebut. Dari keluaran yang dihasilkan, kemampuan program dalam memenuhi kebutuhan pemakai dapat diukur sekaligus dapat diiketahui kesalahan-kesalahannya. Beberapa jenis kesalahan yang dapat diidentifikasi:

  • Fungsi tidak benar atau hilang
  • Kesalahan antar muka
  • Kesalahan pada struktur data (pengaksesan basis data)
  • Kesalahan inisialisasi dan akhir program
  • Kesalahan performasi.

Pengujian White Box
Pengujian white box dilakukan untuk menjamin operasi-operasi internal sesuai dengan spesifikasi yang telah ditetapkan dengan menggunakan struktur kendali dari prosedur yang dirancang.Pelaksanaan pengujian white box:

  • Menjamim seluruh independent path dieksekusi paling sedikit satu kali.
  • Menjalani logical decision pada sisi dan false
  • Mengeksekusi pengulangan (looping) dalam batas-batas yang ditentukan
  • Menguji struktur data internal

Deployment
Deployment merupakan proses pe-release-an perangkat lunak yang telah dibuat. Dalam tahap ini terdapat beberapa proses lagi yaitu maintenance dan evolution. Maintenance merupakan proses memodifikasi perangkat lunak yang sudah di deploy dalam rangka memperbaiki software ke arah yang lebih baik. Biasanya maintenance dilakukan bila didapati bug ataupun error pada perangkat lunak yang dibuat. Selanjutnya adalah evolution. Evolution merupakan merubah sebagian atau bahkan semua sistem yang ada pada perangkat lunak yang telah dibuat dalam rangka menjadikan perngkat lunak menjadi lebih baik. Yang diubah pada evolution biasanya berupa, system environtment, maupun user target

Referensi :