Panduan Komprehensif Anda untuk Semua Hal Pengembangan Perangkat Lunak

Diterbitkan: 2020-08-13

Seberapa miripkah lantai produksi pabrik dan kantor pengembang perangkat lunak?

Bayangkan sebuah ruangan penuh programmer mengetik kode ke komputer mereka. Bagaimana jika Anda memperlakukan output mereka seperti widget rakitan dari jalur perakitan pabrik? Akankah hal-hal yang memaksimalkan produksi bekerja di sini juga? Atau apakah proses pengembangannya lebih seperti disiplin ilmu teknik lainnya?

Manajer proyek telah mencoba menyelesaikan ini sejak pengembangan perangkat lunak dimulai. Dari pertanyaan-pertanyaan ini, definisi siklus hidup pengembangan perangkat lunak telah muncul.

Apa itu pengembangan perangkat lunak?

Ini adalah proses membuat perangkat lunak dari awal. Sementara menulis kode adalah aktivitas inti, itu lebih dari itu.

Proses pengembangan mencakup ide dan desain sebelum menulis kode apa pun. Perencanaannya mudah diabaikan. Tidak terasa seperti pengembangan seperti menulis kode. Namun menjawab pertanyaan penting terlebih dahulu memperkuat produk jadi. Apakah proyek ini layak untuk dikejar? Jika demikian, apa cara terbaik untuk melakukannya? Fitur apa yang diperlukan dan fitur apa yang bagus untuk dimiliki? Jawabannya memberikan proyek kesempatan yang lebih baik untuk berhasil.

Meskipun langkah-langkahnya konstan, penerapannya bervariasi. Alasan mengapa pengembangan perangkat lunak adalah disiplin baru. Disiplin teknik sudah matang dengan sejarah ratusan tahun. Pengembangan perangkat lunak hanya kembali ke akhir 1940-an. Ini masih disiplin baru. Metode tangkas baru berusia 20 tahun. Namun itu salah satu hal yang paling berpengaruh terjadi dalam teori pembuatan perangkat lunak. Apapun, enam fase siklus hidup pengembangan perangkat lunak yang umum untuk semua sistem.

6 tahap siklus hidup pengembangan perangkat lunak (SDLC)

Tim pengembangan dapat menggunakan siklus hidup pengembangan perangkat lunak pada keseluruhan proyek atau satu fitur. Evolusi penggunaan SDLC adalah tentang mengurangi risiko dengan memperpendek panjang setiap langkah. Sebentar lagi, kita akan melihat lebih banyak metodologi yang berbeda. Pertama, mari kita periksa langkah-langkahnya sendiri.

Juga, perlu dicatat bahwa Anda akan melihat varian dalam hal jumlah langkah atau namanya. Terkadang langkah-langkah digabungkan, seperti pengembangan dan pengujian. Di lain waktu, Anda akan melihat satu langkah dibagi menjadi dua, seperti perencanaan menjadi perencanaan dan analisis. Dalam kasus kami, kami akan tetap menggunakan enam ini karena mereka dengan jelas mendefinisikan fase.

SDLC

1. Perencanaan

Tahap perencanaan merupakan tahap yang paling penting. Para pemangku kepentingan perlu mempertimbangkan segala sesuatu termasuk kelayakan proyek itu sendiri. Tidak apa-apa untuk membunuh seluruh proyek di sini. Organisasi yang sehat akan memberdayakan pemangku kepentingan untuk melakukannya jika diperlukan. Pemrogram akan memiliki lebih sedikit keterlibatan selama fase ini dalam pengaturan perusahaan. Pemilik produk, analis bisnis, dan pemangku kepentingan lainnya menyuarakan kebutuhan mereka dalam langkah ini.

2. Desain

Tahap perencanaan merupakan tahap yang paling penting. Para pemangku kepentingan perlu mempertimbangkan segala sesuatu termasuk kelayakan proyek itu sendiri. Tidak apa-apa untuk membunuh seluruh proyek di sini. Organisasi yang sehat akan memberdayakan pemangku kepentingan untuk melakukannya jika diperlukan. Pemrogram akan memiliki lebih sedikit keterlibatan selama fase ini dalam pengaturan perusahaan. Pemilik produk, analis bisnis, dan pemangku kepentingan lainnya menyuarakan kebutuhan mereka dalam langkah ini.

3. Pengembangan

Tahap desain juga mencakup desain pengalaman pengguna (UX). Jika aplikasi memiliki komponen yang menghadap pengguna, desain UX adalah suatu keharusan. Ini termasuk penelitian pengguna dengan menonton orang-orang nyata berinteraksi dengan maket produk. Alasan mengapa ini terjadi pada fase desain alih-alih fase pengembangan adalah waktu. Sesi pengguna membutuhkan waktu. Seringkali lebih banyak diskusi bolak-balik dengan pemangku kepentingan bisnis terjadi juga dari data yang dikumpulkan.

4. Pengujian

Selanjutnya, tim pengembangan menguji kode tersebut. Penulis kode dan penguji harus orang yang berbeda. Bahkan lebih baik lagi adalah penguji jaminan kualitas non-pengembang. Pengembang cenderung memikirkan skenario jalur bahagia saja. Profesional pengujian QA yang berdedikasi cenderung lebih baik dalam memikirkan bagaimana mereka dapat merusak perangkat lunak. Mereka lebih cenderung menemukan bug sebelum diterapkan dengan cara ini. Hasilnya adalah perangkat lunak yang lebih stabil saat dirilis.

Pengujian otomatis vs. manual

Pengujian unit dan pengujian integrasi sering kali dilakukan secara otomatis. Seringkali platform DevOps menjalankan tes ini pada kode baru sebelum menggabungkannya ke cabang master.

Pengujian manual masih jauh dari usang. Tes otomatis melakukan hal yang sama berulang-ulang. Namun seseorang yang melakukan pengujian manual dapat menemukan bug secara tidak sengaja selama pengujian. Ini adalah variabilitas dalam pengujian manual yang menjadi kekuatannya.

Pengujian unit

Tes unit hanya memverifikasi metode, tidak lebih. Fungsi yang diuji adalah batasnya. Pengembang menulis tes unit, dan beberapa kerangka kerja SDLC mengamanatkannya. Pemrograman Ekstrim membutuhkan mereka. Ini juga mengatur pengembangan yang didorong oleh tes. Ini adalah latihan menulis unit test terlebih dahulu. Kemudian menulis kode program yang sebenarnya.

Tes integrasi

Tes integrasi memeriksa bagian atau fitur basis kode. Mereka biasanya otomatis dan dijalankan oleh platform DevOps. Apa yang mereka verifikasi mencakup lebih dari satu metode. Contohnya adalah memverifikasi bahwa panggilan API mempertahankan catatan baru dalam database. Bandingkan ini dengan pengujian unit yang memverifikasi metode API juga. Tes unit hanya akan dapat memverifikasi bahwa panggilan ke database harus terjadi. Uji integrasi dapat membuktikan bahwa data yang mengalir melalui aplikasi sesuai dengan yang diharapkan.

Pengujian sistem

Bentuk pengujian terakhir adalah pengujian sistem penuh. Untuk rekap, pengujian unit memverifikasi fungsi saja. Pengujian integrasi memverifikasi fitur. Tetapi pengujian sistem memperlakukan seluruh aplikasi sebagai satu kesatuan. Pengujian asap adalah bentuk pengujian sistem yang ringan. Di dalamnya, penguji berinteraksi dengan sistem sebagai pengguna alami dan memastikannya berperilaku seperti yang diharapkan. Dibandingkan dengan pengujian sistem end-to-end penuh, yang lebih ketat. Pengujian sistem lengkap memeriksa semua bagian sistem sebagai satu kesatuan. Selain itu, rangkaian pengujian integrasi dapat berfungsi sebagai pengujian sistem lengkap.

5. Penerapan

Fase penyebaran mendorong kode yang diuji ke dalam produksi. Mengotomatiskan penerapan membuatnya lebih andal. Selain itu, mempraktikkan penerapan produksi juga meningkatkan kemungkinan penerapan yang lancar. Tim pengembangan berlatih dengan lingkungan pengujian yang disebut lingkungan pementasan. Itu harus identik dengan produksi. Semakin mirip kedua lingkungan, semakin banyak nilai yang dimiliki penerapan praktik.

6. Pemeliharaan

Semuanya sampai saat ini di SDLC hanya akan menjadi sekitar seperempat dari total biaya kepemilikan. Biaya pengembangan awal perangkat lunak adalah 25% dari apa yang akan dibelanjakan bisnis. Tahap pemeliharaan akan membebani bisnis sekitar 75% dari total biaya kepemilikan. Pertahanan terhadap biaya perawatan yang membengkak lebih diperhatikan pada fase-fase sebelumnya. Ini berarti desain teknis yang lebih baik, pengembangan, dan pengujian yang lebih menyeluruh. Alternatifnya adalah utang teknis. Seperti utang nyata, itu menjadi lebih mahal dari waktu ke waktu.

5 metodologi pengembangan perangkat lunak utama

Meskipun langkah-langkah SDLC tidak berubah, implementasi dan urutan eksekusinya bervariasi. Mari kita lihat cara paling populer yang dilakukan organisasi dalam proses pengembangan perangkat lunak.

1. gesit

Apa yang membuat Agile unik adalah fokus pada orang. Metodologi Agile memfokuskan kembali perhatian industri. Sebelumnya, fokusnya adalah pada produk, perangkat lunak. Agile menantang itu dan fokus pada individu yang melakukan proses. Juga, sebelum Agile Manifesto, Extreme Programming (XP) dan Scrum tidak memiliki koneksi. Namun, setelah itu, praktisi mereka bersatu di bawah panji Agile.

Agile bukanlah framework itu sendiri. Ini adalah kerangka kerja untuk kerangka kerja. Pada intinya, ini tentang berfokus pada orang dan iterasi cepat. Persis seperti namanya, gesit. Dilakukan dengan baik ada fleksibilitas dalam mencapai hasil. Proses tidak pernah dilakukan dengan mengorbankan orang, yang memperoleh nilai dari mereka sebagai gantinya.

Penyewa utama Agile lainnya adalah pendekatan berulang. Idenya adalah untuk melakukan blok pekerjaan dalam waktu yang lebih singkat. Dengan begitu bisnis dapat beradaptasi dengan perubahan di pasar lebih cepat. Kemampuan untuk dengan cepat mengubah arah perkembangan inilah yang membuatnya gesit. Pada saat yang sama, tim pengembangan dapat belajar dari apa yang telah dilakukan di setiap iterasi dan meningkatkannya. Tim tangkas melakukan ini dalam pertemuan retrospektif setelah setiap iterasi.

2. Pemrograman ekstrim

Pemrograman ekstrim (sering disingkat XP) dimulai pada awal 1990-an. Martin Fowler adalah salah satu penandatangan asli Agile Manifesto. Dia berpikir bahwa Agile mendapatkan popularitasnya karena kerangka kerja XP. Selain itu, ia berpendapat bahwa ini adalah cara terbaik untuk mulai melakukan pengembangan perangkat lunak Agile.

XP mendapatkan namanya dari pendekatannya. Dibutuhkan praktik perangkat lunak umum yang baik dan membutuhkannya. Itulah yang membuatnya menjadi "ekstrim". XP membutuhkan hal-hal seperti tes unit, pemrograman pasangan, rilis lebih sering.

Apa yang membuat XP metode yang unik adalah:

  • Siklus iterasi pendek (umum hingga 2 minggu)
  • Keterbukaan untuk mengganti item kerja dalam iterasi saat ini (sesuatu yang tidak diizinkan oleh Scrum)
  • Penekanan pada pengujian otomatis dan pemrograman berpasangan

3. Ramping

Lean tidak Agile secara teknis, tetapi memiliki perasaan yang mirip dengan itu dalam praktiknya. Sekarang diterima sebagai bagian dari Agile oleh sebagian besar. Fokusnya berbeda dari Agile tradisional. Per manifesto Agile, "Individu dan interaksi atas proses dan alat." Lean lebih fokus pada perangkat lunak daripada pembuatnya.

Akarnya adalah prinsip manufaktur Lean dari Toyota. Berikut adalah tujuh bagian yang mendefinisikannya. Jika Anda terbiasa dengan manufaktur Lean, ini akan terdengar serupa. Mereka:

  1. Menghilangkan limbah
  2. Perkuat pembelajaran
  3. Putuskan selambat mungkin
  4. Kirim secepat mungkin
  5. Berdayakan tim
  6. Bangun integritas dalam
  7. Optimalkan keseluruhan

4. Scrum

Scrum adalah metode Agile yang paling populer. Menurut laporan State of Agile ke-14, 58% perusahaan perangkat lunak menggunakan Scrum. Jika Anda memasukkan hibrida Scum, persentasenya melonjak menjadi 84%. Yang menimbulkan pertanyaan, mengapa itu yang paling populer?

Jawabannya adalah Scrum adalah tentang menyelesaikan lebih banyak pekerjaan dalam waktu yang lebih singkat. Itu menarik bagi bisnis. Setiap iterasi di Scrum adalah "sprint". Nama itu memperkuat gagasan tentang kecepatan. Biasanya, sprint berlangsung selama 2 hingga 3 minggu. Setelah tim Scrum merencanakan sprint, tidak ada yang boleh mengubahnya. Pekerjaan baru harus menunggu sampai dimulainya sprint berikutnya. Ini membutuhkan disiplin dari para pemangku kepentingan bisnis. Dalam prakteknya, aturan Scrum ini sering dilanggar. Itulah mengapa tim sering melaporkan melakukan hibrida Scrum.

Karakteristik lain dari Scrum adalah Scrum Master. Ini adalah salah satu anggota tim yang dinominasikan untuk bertugas menjaga sprint tepat sasaran. Seringkali, Scrum Master adalah pengembang dari tim pengembang.

Varian paling umum dari Scrum adalah ScrumBan, yang merupakan gabungan dari Scrum dan Kanban. Kanban berakar pada proses manufaktur Toyota Jepang seperti Lean. Ini adalah sistem kerja tepat waktu.

Setiap item pekerjaan seperti iterasi tersendiri. Pengembang hanya mengerjakan satu hal pada satu waktu. Aturannya adalah satu item "sedang berlangsung" per pengembang. Batas pekerjaan dalam proses yang ketat ini menyoroti setiap kemacetan. Pengembang melacak item pekerjaan yang sedang berlangsung melalui papan Kanban. Sebagai catatan tambahan, dari situlah nama itu berasal. Dalam bahasa Jepang, Kanban berarti "papan".

5. Air Terjun

Metode air terjun adalah yang paling awal dari semua praktik pengembangan perangkat lunak. Ini mendahului Agile setidaknya beberapa dekade. Metode ini juga lebih tua dari namanya.

Ini adalah cara alami yang selalu dilakukan perusahaan. Ini adalah proses linier, dan Anda mulai dari awal. Pertama, pemangku kepentingan menyusun persyaratan. Mereka tidak melakukan ini untuk satu atau dua fitur. Tidak, pemangku kepentingan bisnis menjangkau seluruh proyek sekaligus. Setelah itu, pekerjaan dimulai. Pengembang melakukan semua pekerjaan tanpa iterasi sampai selesai.

Cara air terjun adalah yang paling mudah dipahami secara konseptual. Orang-orang melakukan satu hal pada satu waktu. Yang mengatakan, itu yang paling berisiko untuk kesuksesan bisnis. Jika ada sesuatu yang tidak sesuai target, pemangku kepentingan tidak dapat memperbaikinya sampai proyek selesai. Pasalnya, hal itu bahkan tidak akan diperhatikan sampai proyek selesai.

3 subtipe inti perangkat lunak

Perangkat lunak jadi adalah salah satu dari tiga jenis. Jenis-jenis ini adalah sistem, pemrograman, dan perangkat lunak aplikasi. Sebagai ilustrasi, inilah analogi pembuatan kue. Mixer atau spatula adalah perangkat lunak pemrograman. Ini memungkinkan Anda untuk membuat lebih banyak kue atau lebih banyak aplikasi perangkat lunak dalam analogi ini. Saat merakit kue, lapisan bawah adalah perangkat lunak sistem. Ini adalah yayasan. Tanpa itu, Anda tidak dapat memiliki kue berlapis. Lapisan atas kemudian akan menjadi perangkat lunak aplikasi. Itulah yang terlihat oleh sebagian besar pengamat biasa.

Perangkat lunak sistem

Sistem operasi komputer adalah perangkat lunak sistem. Ini penting untuk kegunaannya. Bayangkan sebuah komputer tanpa sistem operasi. Anda hanya dapat berinteraksi dengannya melalui bahasa mesin. Itu biner murni--hanya satu dan nol. Anda akan merasa tidak mungkin untuk bekerja dengan skala apa pun. Perangkat lunak sistem membuka kegunaan komputer.

Windows, macOS, dan Linux adalah contoh perangkat lunak sistem yang paling populer. Driver perangkat juga merupakan perangkat lunak sistem. Mereka memperluas fungsionalitas dasar sistem operasi. Perangkat pintar tanpa sistem operasi menggunakan firmware untuk mengaktifkan fungsinya. Ini juga merupakan perangkat lunak sistem.

Perangkat lunak pemrograman

Perangkat lunak pemrograman adalah bagian dari perangkat lunak aplikasi. Program apa pun yang digunakan pengembang untuk membuat program baru akan diklasifikasikan. Mulai dari editor teks sederhana hingga lingkungan pengembangan terintegrasi yang kompleks (IDE). Sebagian besar pengembang menyukai perangkat lunak pemrograman yang lebih kompleks. Program seperti Microsoft Visual Studio membantu mempercepat pengembangan.

perangkat lunak pemrograman

Aplikasi piranti lunak

Perangkat lunak aplikasi adalah jenis yang paling umum. Ini adalah perangkat lunak yang memungkinkan Anda melakukan sesuatu dengan komputer. Itu membuat komputer berguna. Contoh populer adalah program seperti Microsoft Word dan Excel.

Perangkat lunak cloud juga termasuk dalam kategori ini. Google Documents, Dropbox, dan bahkan Instagram adalah perangkat lunak aplikasi. Jika Anda pernah merasa bingung apakah sesuatu itu perangkat lunak aplikasi atau bukan, berikut adalah tes sederhananya. Apakah program memerlukan sesuatu yang lain untuk dijalankan? Windows atau Android tidak. Mereka adalah perangkat lunak sistem. PowerPoint, atau bahkan game seperti Call of Duty memang membutuhkan hal-hal lain agar berfungsi, yang berarti itu adalah perangkat lunak aplikasi. Tanpa driver perangkat dan sistem operasi, mereka tidak dapat dijalankan.

Kesimpulan

Metode pengembangan perangkat lunak masih matang. Namun terlepas dari metode yang digunakan, langkah-langkahnya tetap sama. Tim yang gesit dapat mengulanginya lebih cepat, dan praktisi Waterfall perlahan berpindah dari satu ke yang berikutnya. Namun, untuk membangun perangkat lunak yang lebih baik, Anda harus memperkuat proses untuk setiap langkah. Mereka membangun satu sama lain. Siklus hidup pengembangan perangkat lunak bukanlah apa-apa tanpa salah satu langkahnya. Bagian-bagian membuat keseluruhan.

Pikirkan tentang apa yang akan terjadi jika Anda meninggalkan langkah apa pun. Tanpa merencanakan apa yang Anda buat? Tanpa desain, proses pembangunan akan menjadi serampangan. Meninggalkan langkah pengembangan tidak mungkin. Kurangnya pengujian memastikan produk tidak akan berfungsi seperti yang diharapkan. Jika tidak ada penerapan, tidak ada yang akan memiliki akses untuk menggunakan produk. Aplikasi yang tidak dirawat akan menjadi tidak digunakan. Setiap langkah sangat penting untuk keberhasilan produk perangkat lunak.