Software Development adalah salah satu tipe proyek IT yang berfokus
pada penciptaan atau pengembangan perangkat lunak. Software Development
dapat didetailkan lagi menjadi proses: 1) penciptaan software untuk
memenuhi kebutuhan manusia, 2) desain software, 3) pengembangan software
aplikasi perusahaan, atau 4) pengembangan platform (Wales, 2012).
Karena berfokus pada sesuatu yang tidak tampak (software), Software
development memiliki tingkat pengerjaan yang lebih sulit. Tidak heran
jika banyak Software development yang gagal dikarenakan proses
pengerjaan tidak sesuai dengan yang telah direncanakan. Salah satu
criteria tambahan untuk output Software Development adalah kemampuan
software untuk dapat dikembangkan lagi. Disinilah tingkat kesulitan yang
utama dimana pihak pencipta harus dapat mendokumentasikan dengan baik
setiap source code agar dapat dipahami oleh orang lain.
Secara garis besar Software Development terbagi menjadi beberapa tahapan, yaitu:
1. Planning
Merupakan tahap awal untuk memulai Software Development. Tujuan dari
tahap ini adalah menghasilkan: 1) proses kerja yang jelas antar setiap
anggota, 2) timeline, dan 3) anggaran dana. Pada tahap ini juga, ketua
proyek berkoordinasi dengan stakeholder untuk membuat kontrak kerja yang
jelas. Selain berisi tentang estimasi dana, kontrak kerja juga harus
memiliki batasan-batasan pengerjaan yang jelas. Hal ini dilakukan agar
tim proyek tidak terikat dengan tambahan-tambahan modul yang nanti
mungkin agar terjadi.
2. Requirement and Specification
Tahap ini dilakukan untuk menentukan fitur-fitur yang tepat serta
kebutuhan sistem untuk software yang akan dibuat. Tahap ini dapat
dilakukan dengan interview, observasi lapangan, dan studi pustaka.
3. Architecture and Design
Merupakan tahap untuk menentukan detail sistem yang akan dipakai.
Tahap ini bertujuan untuk menentukan desain keseluruhan dari software,
yang meliputi: konseptual database, sistem keamanan, dan interface.
4. Implementation and Testing
Tahap implementasi merupakan tahap pembuatan software dengan
berpedoman pada tahap-tahap sebelumnya. Sedangkan tahap Testing
merupakan serangkaian uji coba yang diberikan kepada software untuk
menentukan kapabilitasnya. Tsting dapat terbagi menjadi: 1) security
testing, 2) performance testing, 3) stress testing, 4) recovery testing.
5. Deployment and Maintenance
Kedua tahap terakhir ini adalah tahap dimana software telah mulai
digunakan oleh user. Terdapat 2 hal penting yag ada pada tahap ini,
antara lain: 1) training penggunaan software dan 2) pemantauan software.
Pemantauan dilakukan untuk mengecek apakah software telah stabil atau
belum. Kestabilan ini dapat dinilai dengann tidak adanya bug yang muncul
selama penggunaan.
Beberapa metode dibuat untuk menerapkan tahapan-tahapan di atas, di antaranya adalah:
- Waterfall. Tahap-tahap di atas dikerjakan secara berurutan
- Prototype. Telah terdapat prototype atau software sebelumnya untuk kemudian dikembangkan, sehingga tahap observasi tidak perlu dilakukan.
- Incremental. Waktu keseluruhan pengerjaan proyek
dibagi menjadi beberapa bagian yang lebih kecil, kemudian tahap-tahap di
atas dilakuka secara berurutan. Dengam metode ini, keseluruhan fitur
tidak langsung dikerjakan dalam satu fase melainkan terbagi menjadi
beberapa periode.
- Spiral. Hampir sama dengan metode incremental,
tetapi terdapat kemungkinan untuk dilakukan perbaikan, sehingga terjadi
perulangan dan bentuknya seperti spiral. Pengerjaan dengan metode ini
memakan waktu yang sangat singkat.
Secara garis besar, tantangan-tantangan yang ada dalam melaksanakan Software development adalah:
- Project Leader harus memiliki kemampuan interpersonal yang baik
karena menyangkut kelangsungan proyek. Dia adalah seseorang yang juga
mampu bernegosiasi degan baik, karena dialah yang akan berkoordinasi
dengan pihak stakeholder untuk membentuk sebuah kontrak kerja.
- Kebanyakan Software Development gagal karena tim tidak mampu
megestimasi dengan pasti detail-detail kebutuhan dari proyek. Untuk
itulah tahap perencanaan adalah tahap yang terpenting karena menyangkut
dana, timeline, dan lain-lain. Ketika ada salah satu proses yang
terlambat, proses yang lain akan terhambat dan akibatnya semua kebutuhan
akan membengkak, termasuk dana.
- Metode yang dipakai akan menentukan proses kerja dari setiap anggota
tim proyek. Untuk itu tim proyek harus dapat menentukan metode yang
tepat yang disesuaikan dengan kondisi. Jika menginginkan software dibuat
degan waktu yang cepat, gunakan tipe protype, tetapi jika menginginkan
software benar-benar bagus, gunakan tipe waterfall.
- Software adalah benda abstrak, sehingga kemampuan untuk memahami
bahasa komputer adalah mutlak bagi setiap anggota tim. Pemahaman ini
akan berguna untuk mengetahui sampai pada tahap mana software
dikerjakan, sehingga setiap anggota dapat melakukan pembenahan ketika
terdapat keterlambatan.
- Pengerjaan Software Development yang cenderung individualis
menghasruskan setiap anggotanya memiliki interaksi yang baik. Tidak
hanya dalam hal profesionalisme kerja, tetapi juga dalam hal
kekeluargaan. Salah satu hal yang sering dilupakan pada Software
development adalah sifat untuk saling memotivasi. Karena terdapat
kemungkinan akan terjadi kejenuhan bahkan keinginan untuk berhenti
karena tingkat kesulitan dari software yang dibuat.
Salah satu contoh dari Software Development adalah pembuata software
bernama Microsoft Project. Microsoft Project adalah salah satu software
yang memudahkan para pelaksana proyek mengerjakan pekerjaannya.
Microsoft Project memiliki fitur yang dapat digunakan untuk
merencanakan, menentukan sumber daya, memantau progress, mengorganisiri
budget, dan menganalisis beban pekerjaan. Ide ini datang dari salah satu
tim internal Microsoft, Alan M. Boyd karena melihat banyaknya jumlah
proyek software yang sedang dikerjakannya. Pada versi terakhirnya,
Microsoft Project memiliki kemampuan untuk mengitegrasikan keseluruhan
proyek dengan database. Hal ini akan membuat user mampu untuk
menampilkan dan mengupdate data melalui internet.
Kebanyakan proyek Microsoft diterapkan dengan menggunakan metode
Agile, begitu pula dengan penerapan proyek ini. Agile adalah metode yang
menggabungkan keseluruhan metode di atas. Keseluruhan waktu pengerjaan
proyek dibagi menjadi fase-fase yang lebih kecil. Kemudian pada setiap
fase dilakukan metode incremental dan spiral. Proyek yang menggunakan
metode ini dapat dikerjakan dengan cepat.
Penerapan metode ini kemudian disesuaikan dengan proses bisnis perusahaan, dimana tahapannya adalah:
- Mengidentifikasi peluang pasar. Ide yang telah
muncul diidentifikasi dengan kebutuhan pasar. Jika produk yang diusulkan
memiliki peluang untuk dapat bersaing di pasaran maka produk akan
dilanjutkan ke dalam tahap prososal.
- Menentukan kelangsungan hidup produk. Tim yang
telah terbentuk kemudian menentukan cara agar produk tetap dapat
bertahan di pasaran. Tim menentukan biaya total, beserta target harga
yang akan diberlakukan di pasar.
- Menentukan visi dari produk yang akan dihasilkan.
Tim harus memikirkan juga strategi-strategi agar produk yang ada
memiliki sifat yang dinamis dengan kebutuhan manusia. Dengan kata lain,
tim harus membuat produk yang memiliki kemampuan untuk berevolusi atau
dapat dikembangkan. Pada tahap ini, tim juga harus menentukan strategi
yang akan diterapkan pada produk pada awal launching-nya.
- Launching produk. Ketika produk telah jadi, produk
akan segera dilaunching denga publikasi besar-besaran. Microsoft
menyebutnya “Make lot of noise”.