Suatu proses adalah gabungan dari beberapa kegiatan, aksi, dan pekerjaan yang dikerjakan saat akan membuat beberapa produk. Setiap kegiatan memiliki tujuan yang luas (seperti komunikasi dengan pemangku kepentingan) dan diterapkan secara universal, tidak peduli pada domain aplikasi, ukuran proyek, kompleksitas usaha, atau tingkat ketelitian rekayasa perangkat lunak yang digunakan. Aksi (contohnya, desain arsitektur) mencakup rangkaian tugas yang menghasilkan produk utama (sebagai contoh, model desain arsitektural). Sebuah tugas berfokus pada tujuan yang kecil namun terdefinisi dengan baik (seperti melakukan pengujian unit) yang menghasilkan hasil yang konkret.
Dalam dunia rekayasa perangkat lunak, suatu proses tidaklah berarti resep yang kaku untuk membuat perangkat lunak. Sebaliknya, proses ini merupakan pendekatan yang dapat disesuaikan yang memungkinkan tim pengembang perangkat lunak untuk memilih dan mengeksekusi serangkaian tindakan dan tugas yang sesuai. Tujuannya adalah untuk selalu memberikan perangkat lunak tepat waktu dan dengan kualitas yang memadai untuk memenuhi harapan para sponsor pembuatnya dan pengguna akhir.
Suatu kerangka kerja proses membentuk dasar bagi seluruh proses rekayasa perangkat lunak yang lengkap, dengan mengidentifikasi sejumlah kecil aktivitas kerangka kerja yang berlaku untuk semua proyek perangkat lunak, tak peduli seberapa besar atau rumitnya proyek tersebut. Lebih lanjut, kerangka proses juga mencakup sekelompok kegiatan payung yang dapat diaplikasikan pada seluruh proses perangkat lunak. Kerangka kerja proses yang bersifat umum untuk rekayasa perangkat lunak terdiri dari lima kegiatan:
- Communication. Sebelum memulai pekerjaan teknis, sangatlah krusial untuk berinteraksi dan bekerja sama dengan klien (serta pemangku kepentingan lainnya) dengan tujuan memahami tujuan mereka dalam proyek dan mengumpulkan persyaratan yang membantu menentukan fitur dan fungsi perangkat lunak.
- Planning. Setiap perjalanan yang rumit dapat dijadikan lebih sederhana dengan adanya map. Proyek perangkat lunak juga merupakan perjalanan yang rumit, dan aktivitas perencanaan membantu membuat "map" yang dapat membimbing tim selama perjalanan. Map ini dikenal sebagai rencana proyek perangkat lunak, yang merinci pekerjaan rekayasa perangkat lunak melalui deskripsi tugas teknis yang akan dilakukan, potensi risiko yang mungkin terjadi, sumber daya yang dibutuhkan, produk kerja yang akan dihasilkan, serta jadwal kerja.
- Modeling. Entah Anda seorang penata taman, pembuat jembatan, insinyur penerbangan, tukang kayu, atau arsitek, pasti Anda sering berinteraksi dengan model setiap harinya. Anda membuat "sketch" dari objek tersebut agar bisa memahami secara keseluruhan seperti apa arsitekturnya, bagaimana bagian-bagian penyusunnya saling terkait, dan berbagai karakteristik lainnya. Jika perlu, Anda memperbaiki sketsa tersebut menjadi lebih detail dan rinci untuk memahami masalah dan cara penyelesaiannya. Demikian pula, seorang insinyur perangkat lunak melakukan hal yang sama dengan membuat model untuk lebih memahami persyaratan perangkat lunak dan desain yang dapat memenuhi persyaratan tersebut.
- Construction. Kegiatan ini melibatkan pembuatan kode secara manual atau otomatis dan melakukan pengujian yang diperlukan untuk menemukan kesalahan dalam kode tersebut.
- Deployment. Pelanggan menerima perangkat lunak sebagai keseluruhan atau bagian yang sudah selesai dan kemudian mengevaluasi produk tersebut serta memberikan umpan balik berdasarkan hasil evaluasi tersebut.
Kerangka umum ini terdiri dari lima kegiatan yang dapat digunakan dalam pengembangan program kecil dan sederhana, pembuatan aplikasi web besar, maupun rekayasa sistem berbasis komputer yang besar dan kompleks. Meskipun rincian proses perangkat lunak mungkin bervariasi dalam setiap kasus, aktivitas kerangka tetap sama.
Untuk sebagian besar proyek perangkat lunak, aktivitas kerangka kerja diterapkan secara iteratif saat proyek berlangsung. Ini berarti bahwa komunikasi, perencanaan, pemodelan, konstruksi, dan penerapan diulang beberapa kali melalui beberapa iterasi proyek. Setiap iterasi menghasilkan perbaikan perangkat lunak yang menyediakan bagian dari fitur dan fungsionalitas keseluruhan kepada pemangku kepentingan. Setiap peningkatan yang dihasilkan membuat perangkat lunak semakin lengkap.
Untuk mendukung kerangka kerja proses rekayasa perangkat lunak, ada sejumlah kegiatan payung yang dapat digunakan. Kegiatan payung ini diterapkan di semua proyek perangkat lunak dan membantu tim perangkat lunak mengontrol kemajuan, kualitas, perubahan, dan risiko. Beberapa kegiatan payung yang umum digunakan meliputi:
- Software project tracking and control. Kegiatan tersebut memungkinkan tim pengembang perangkat lunak untuk mengevaluasi kemajuan proyek terhadap rencana yang telah dibuat dan mengambil langkah-langkah yang diperlukan untuk mempertahankan jadwal proyek.
- Risk management. Melakukan penilaian terhadap potensi risiko yang dapat memengaruhi hasil dari proyek atau kualitas produk.
- Software quality assurance. Dalam konteks perangkat lunak, aktivitas ini melibatkan pengembangan dan penerapan proses dan standar yang bertujuan untuk memastikan kualitas produk yang dihasilkan. Tujuannya adalah untuk mengurangi kesalahan dan cacat pada perangkat lunak, sehingga menghasilkan produk yang memenuhi standar kualitas yang telah ditentukan.
- Technical reviews. Dalam aktivitas rekayasa perangkat lunak, dilakukan evaluasi terhadap produk kerja dengan tujuan untuk mengidentifikasi dan menghilangkan kesalahan sebelum dilanjutkan ke tahap selanjutnya.
- Measurement. Langkah-langkah proses, proyek, dan produk yang dibuat dan dikumpulkan membantu tim untuk memberikan perangkat lunak yang memenuhi kebutuhan pemangku kepentingan. Langkah-langkah tersebut dapat digunakan bersamaan dengan aktivitas kerangka dan payung lainnya.
- Software configuration management. Berurusan dengan dampak dari setiap perubahan pada semua aspek proses pengembangan perangkat lunak.
- Reusability management. Membuat kriteria untuk menentukan bagian-bagian dari produk kerja, termasuk komponen perangkat lunak, yang dapat dimanfaatkan kembali, dan menetapkan cara untuk mengakses dan menggunakan kembali komponen-komponen tersebut.
- Work product preparation and production. Proses ini melibatkan kegiatan yang diperlukan untuk menciptakan berbagai produk kerja seperti model, dokumen, log, formulir, dan daftar.
Setiap kegiatan yang disebutkan akan dibahas secara rinci kedepannya.
Sebelumnya, telah dijelaskan pada bagian ini bahwa proses rekayasa perangkat lunak bukanlah aturan yang baku yang harus diikuti dengan ketat oleh tim perangkat lunak. Sebaliknya, proses tersebut harus fleksibel dan mudah beradaptasi terhadap masalah, proyek, tim, dan budaya organisasi. Oleh karena itu, proses yang diterapkan pada satu proyek dapat sangat berbeda dari proses yang diterapkan pada proyek lain. Beberapa perbedaan yang mungkin terjadi antara proses-proses tersebut adalah:
- Pada intinya, hal ini berkaitan dengan hubungan antara aliran aktivitas, tindakan, dan tugas dalam suatu proses, serta bagaimana mereka saling tergantung satu sama lain.
- Seberapa lengkap definisi tindakan dan tugas dalam setiap aktivitas kerangka kerja.
- Berapa besar fokus pada identifikasi dan kebutuhan produk kerja dalam konteks kerangka kerja tersebut.
- Pelaksanaan kegiatan penjaminan mutu.
- Implementasi pelacakan proyek dan pengendalian aktivitas dalam proyek.
- Tingkat rinci dan akurasi keseluruhan proses yang dijelaskan.
- Bagaimana keterlibatan pelanggan dan pihak-pihak yang terkait dalam proyek diukur dan dijelaskan.
- Berapa besar kebebasan yang diberikan kepada tim pengembang dalam pengambilan keputusan dan pelaksanaan tugas.
- Berapa besar pengaturan organisasi dan peran tim yang dijelaskan.
Penulis akan memberikan tinjauan yang cukup rinci tentang proses perangkat lunak. Prescriptive process models memberikan penekanan pada definisi yang terperinci, identifikasi, dan implementasi aktivitas dan tugas dalam proses. Tujuannya adalah untuk meningkatkan kualitas sistem, membuat proyek lebih terkelola, memprediksi tanggal pengiriman dan biaya, serta memberikan panduan kepada tim insinyur perangkat lunak saat melakukan tugas yang diperlukan untuk membangun sistem. Namun, kadang-kadang tujuan tersebut tidak tercapai. Jika model preskriptif diterapkan secara dogmatis tanpa adaptasi, model tersebut dapat meningkatkan tingkat birokrasi yang terkait dengan pengembangan sistem berbasis komputer dan pada akhirnya dapat menimbulkan kesulitan bagi semua pemangku kepentingan.
Proses model Agile menekankan fleksibilitas proyek dan menerapkan serangkaian prinsip yang mengarah pada pendekatan yang lebih santai, namun masih dianggap efektif, untuk pengembangan perangkat lunak. Model ini dikenal sebagai "agile" karena menekankan pada kemampuan untuk beradaptasi dan bergerak dengan cepat. Model ini cocok untuk berbagai jenis proyek dan sangat berguna dalam pengembangan aplikasi web.
Source: Pressman, Roger S. 2010. Software engineering : A Practitioner’s Approach (7th. Edition). New York: McGraw-Hill Higher Education.
Comments
Post a Comment