Skip to main content

What Is An Agile Process? (Apa Itu Agile Process) Menurut Roger S. Pressman

Kebanyakan proyek perangkat lunak yang efisien dicirikan oleh penggunaan beberapa asumsi utama dalam mempertimbangkan proses perangkat lunak:

  1. Memprediksi persyaratan perangkat lunak mana yang akan tetap dan yang akan berubah serta bagaimana prioritas pelanggan akan berubah selama proyek berlangsung merupakan tugas yang sulit dan tidak dapat diprediksi sebelumnya.
  2. Pada banyak jenis perangkat lunak, desain dan konstruksi harus dilakukan secara terpadu untuk memastikan keberhasilan model desain ketika diimplementasikan. Sulit untuk memperkirakan jumlah desain yang diperlukan sebelum tahap konstruksi dilakukan untuk menguji model desain tersebut.
  3. Tidak memungkinkan untuk memprediksi secara pasti analisis, desain, konstruksi, dan pengujian dari sudut pandang perencanaan seperti yang diharapkan.

Dalam menghadapi ketiga asumsi tersebut, timbul pertanyaan yang krusial, yakni bagaimana cara mengelola ketidakpastian pada proses perangkat lunak. Seperti yang telah dicatat, kunci jawabannya terletak pada kemampuan proses untuk beradaptasi, terutama dalam menghadapi proyek yang berubah dengan cepat dan kondisi teknis yang berbeda-beda. Oleh karena itu, sebuah proses perangkat lunak yang efisien haruslah dapat beradaptasi.

Namun, terlalu banyak adaptasi tanpa kemajuan yang signifikan tidak akan menghasilkan hasil yang memuaskan. Oleh karena itu, proses perangkat lunak yang fleksibel harus beradaptasi secara bertahap. Untuk mencapai adaptasi yang lebih lanjut, tim yang tangkas membutuhkan umpan balik dari pelanggan untuk dapat membuat penyesuaian yang sesuai. Prototipe operasional atau bagian dari sistem operasional merupakan katalis yang efektif untuk mendapatkan umpan balik pelanggan. Oleh karena itu, strategi pengembangan inkremental harus diadopsi. Peningkatan perangkat lunak, baik itu prototipe yang dapat dieksekusi atau bagian dari sistem operasional, harus disampaikan dalam periode waktu yang singkat sehingga perubahan yang tidak dapat diprediksi dapat diakomodasi oleh adaptasi proses yang dilakukan. Pendekatan berulang ini memungkinkan pelanggan untuk secara teratur mengevaluasi peningkatan perangkat lunak, memberikan umpan balik yang dibutuhkan oleh tim perangkat lunak, dan memengaruhi penyesuaian proses yang dibuat untuk dapat mengakomodasi umpan balik tersebut.


1.1 Prinsip Agility

12 prinsip kelincahan telah didefinisikan oleh Agile Alliance sebagai panduan bagi mereka yang ingin mencapai kelincahan:

  1. Pengiriman perangkat lunak yang bermanfaat dan berkesinambungan menjadi prioritas utama kami dengan tujuan memuaskan pelanggan kami.
  2. Kami menerima perubahan persyaratan dalam pengembangan perangkat lunak, bahkan jika terjadi keterlambatan. Agile processes kami memanfaatkan perubahan tersebut sebagai keuntungan kompetitif bagi kepuasan pelanggan.
  3. Dalam proses pengiriman perangkat lunak, kami memprioritaskan pengiriman secara teratur dalam jangka waktu beberapa minggu hingga beberapa bulan, terutama pada skala waktu yang lebih singkat. Hal ini bertujuan untuk memastikan perangkat lunak yang kami kirimkan dapat berfungsi secara efektif.
  4. Selama proyek berlangsung, pelaku bisnis dan pengembang diharapkan untuk bekerja sama secara intensif setiap harinya.
  5. Dalam membangun sebuah proyek, perlu fokus pada individu yang memiliki motivasi tinggi. Pastikan memberikan lingkungan dan dukungan yang dibutuhkan oleh individu tersebut, dan percayakan mereka untuk menyelesaikan pekerjaan.
  6. Percakapan langsung secara tatap muka dianggap sebagai cara yang paling efektif dan efisien untuk berkomunikasi dengan anggota tim pengembangan dan juga di antara mereka.
  7. Satu indikator utama kemajuan adalah keberhasilan perangkat lunak dalam berfungsi dengan baik.
  8. Proses yang cepat dan efektif menjadi kunci dalam mendorong pembangunan yang berkelanjutan. Hal ini memerlukan kolaborasi yang erat antara sponsor, pengembang, dan pengguna untuk terus menjaga kecepatan dan momentum tanpa batas waktu.
  9. Dengan memfokuskan perhatian pada kualitas teknis yang unggul dan desain yang baik, maka akan meningkatkan kemampuan dalam melakukan tindakan dengan cepat dan tepat.
  10. Penting untuk menguasai kesederhanaan dalam menyelesaikan pekerjaan yang masih tertunda, karena hal tersebut merupakan suatu keterampilan untuk memaksimalkan produktivitas.
  11. Tim yang mampu mengatur dirinya sendiri akan menghasilkan arsitektur, persyaratan, dan desain yang terbaik. Hal tersebut merupakan faktor penting dalam pencapaian kesuksesan dalam suatu proyek.
  12. Tim secara rutin melakukan refleksi terhadap cara kerjanya agar menjadi lebih efektif, dan melakukan penyesuaian perilaku dan koordinasi dalam mencapai tujuan yang diinginkan.

Setiap model agile process memiliki penekanan yang berbeda pada 12 prinsip utama, dan beberapa model mungkin tidak mempertimbangkan secara signifikan satu atau beberapa prinsip tersebut. Namun, meskipun ada perbedaan tersebut, prinsip-prinsip tersebut tetap menjadi elemen utama yang mendasari agile spirit dalam setiap model proses yang dibahas dalam bab ini.


1.2 Politik Agile Development

Pendapat tentang keuntungan dan kegunaan pengembangan perangkat lunak yang gesit dibandingkan dengan proses rekayasa perangkat lunak yang konvensional sering menjadi topik perdebatan sengit. Menurut Jim Highsmith, kelompok pendukung metodologi tradisional cenderung lebih suka menghasilkan dokumen daripada menghasilkan sistem yang sesuai dengan kebutuhan bisnis. Sementara itu, kelompok pendukung pengembangan perangkat lunak yang gesit cenderung lebih terbuka terhadap inovasi dan fleksibilitas dalam mencapai tujuan bisnis. Highsmith juga mencatat bahwa kedua kelompok tersebut memiliki pandangan yang berbeda tentang praktik pengembangan perangkat lunak yang efektif, dan sering kali saling mengejek satu sama lain.

Seperti halnya dalam semua perdebatan seputar teknologi perangkat lunak, perdebatan tentang metodologi juga memiliki risiko untuk berubah menjadi pertikaian ideologi yang tidak rasional. Jika perdebatan tersebut menjadi konflik yang serius, maka kemungkinan besar pemikiran rasional akan hilang dan kepercayaan subjektif daripada fakta akan menjadi faktor yang menentukan dalam pengambilan keputusan.

Tidak ada yang menolak keinginan untuk menjadi lebih gesit dalam pengembangan perangkat lunak. Yang menjadi pertanyaan sebenarnya adalah: bagaimana cara terbaik untuk mencapainya? Selain itu, sama pentingnya adalah bagaimana membangun perangkat lunak yang memenuhi kebutuhan pelanggan saat ini, sambil juga menunjukkan karakteristik kualitas yang memungkinkannya untuk diperluas dan diskalakan untuk memenuhi kebutuhan pelanggan dalam jangka panjang?

Tidak ada jawaban pasti untuk kedua pertanyaan ini. Dalam dunia agile, banyak model proses yang diusulkan (lihat pembahasan berikutnya) dengan pendekatan yang berbeda-beda terhadap masalah kelincahan. Dalam setiap model, terdapat serangkaian "ide" yang mewakili perubahan signifikan dari rekayasa perangkat lunak konvensional. Meskipun demikian, banyak konsep agile sebenarnya hanya modifikasi dari konsep rekayasa perangkat lunak yang sudah ada. Oleh karena itu, dapat diambil manfaat dari kedua pendekatan dan tidak ada keuntungan dalam mengecilkan nilai keduanya.


1.3 Faktor Manusia

Para penggemar pengembangan perangkat lunak yang tangkas selalu menekankan pentingnya "faktor manusia". Seperti yang dikatakan oleh Cockburn dan Highsmith, "Pengembangan yang tangkas fokus pada talenta dan keterampilan individu, membentuk proses sesuai dengan orang dan tim tertentu." Pernyataan ini menekankan bahwa proses pengembangan perangkat lunak harus disesuaikan dengan kebutuhan individu dan tim, bukan sebaliknya.

Untuk dapat memperbaiki ciri-ciri proses yang diterapkan dalam pembangunan perangkat lunak, anggota tim harus memiliki beberapa sifat kunci dan juga karakteristik tim itu sendiri harus memenuhi persyaratan tertentu. Hal ini dikemukakan sebagai salah satu syarat penting dalam pengembangan perangkat lunak tangkas:

Competence. Dalam agile development dan rekayasa perangkat lunak pada umumnya, istilah "competence" meliputi bakat alami, keterampilan khusus yang terkait dengan perangkat lunak, dan pemahaman menyeluruh tentang proses yang diadopsi oleh tim untuk digunakan. Keterampilan dan pemahaman tentang proses ini dapat dan seharusnya diajarkan kepada semua anggota tim yang terlibat dalam pengembangan perangkat lunak yang gesit.

Common focus. Walaupun anggota tim pengembangan perangkat lunak tangkas mungkin memiliki peran dan keterampilan yang berbeda, namun semuanya harus memiliki fokus yang sama dalam mencapai satu tujuan, yaitu memberikan peningkatan pada perangkat lunak yang efektif untuk pelanggan sesuai dengan jangka waktu yang ditetapkan. Tim juga harus berfokus pada adaptasi yang berkelanjutan, baik yang kecil maupun besar, untuk memastikan bahwa proses yang diterapkan sesuai dengan kebutuhan tim.

Collaboration. Dalam rekayasa perangkat lunak, independen dari jenis proses yang digunakan, terdapat tiga hal yang harus dilakukan: menilai, menganalisis, dan menggunakan informasi yang diberikan kepada tim perangkat lunak; menciptakan informasi yang memudahkan semua pemangku kepentingan untuk memahami pekerjaan tim; serta membuat informasi, baik berupa perangkat lunak maupun basis data, yang dapat memberikan nilai bisnis bagi pelanggan. Untuk menyelesaikan tugas-tugas ini, kerjasama tim diperlukan - baik di antara anggota tim maupun dengan pemangku kepentingan lain.

Decision-making ability. Dalam setiap tim perangkat lunak yang handal, termasuk tim tangkas, diperlukan kebebasan untuk mengontrol jalannya proyek. Hal ini menunjukkan bahwa tim harus diberikan otonomi, yakni memiliki kekuasaan dalam pengambilan keputusan teknis dan proyek.

Fuzzy problem-solving ability. Manajer perangkat lunak perlu menyadari bahwa tim tangkas selalu dihadapkan pada ambiguitas dan perubahan yang konstan. Terkadang, tim harus menerima fakta bahwa masalah yang dihadapi hari ini mungkin berbeda dari masalah yang akan dihadapi besok. Namun, pengalaman dalam menyelesaikan masalah (bahkan jika hasilnya salah) dapat menjadi pembelajaran yang berharga bagi tim di masa depan.

Mutual trust and respect. Dalam bukunya, DeMarco dan Lister menggambarkan tim yang gesit sebagai tim yang terkocok (Bab 24). Dalam tim seperti ini, terdapat kepercayaan dan rasa hormat yang saling diperlihatkan sehingga terbentuk kekuatan yang lebih besar daripada total sumbangsih setiap anggota tim.

Self-organization. Dalam pengembangan agile, konsep self-organization memiliki tiga aspek penting: (1) tim agile harus mampu mengatur sendiri pekerjaan yang harus diselesaikan, (2) tim harus dapat mengatur proses untuk menyesuaikan dengan lingkungan lokalnya, dan (3) tim harus dapat mengatur jadwal kerja untuk mencapai pengiriman perangkat lunak yang terbaik. Keuntungan dari pengaturan mandiri ini bukan hanya dalam hal teknis, tetapi juga dalam meningkatkan kolaborasi dan moral tim. Artinya, tim bekerja sebagai manajemennya sendiri. Hal ini dibahas oleh Ken Schwaber dalam menulisnya bahwa “Tim menentukan berapa banyak pekerjaan yang dapat diselesaikan dalam iterasi dan berkomitmen untuk bekerja pada itu. Tidak ada yang dapat mendemotivasi tim lebih buruk daripada orang lain yang membuat komitmen untuk mereka, dan tidak ada yang dapat memotivasi tim lebih baik daripada menerima tanggung jawab untuk memenuhi komitmen yang mereka buat sendiri.”



Source: Pressman, Roger S. 2010. Software engineering : A Practitioner’s Approach (7th. Edition). New York: McGraw-Hill Higher Education. 

Comments

Popular posts from this blog

Proses Perangkat Lunak Menurut Roger S. Pressman

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 sel...

Personal And Team Process Models Menurut Roger S. Pressman

 Menurut penulis, sebuah proses perangkat lunak yang optimal adalah yang dapat disesuaikan dengan kebutuhan tim yang akan melaksanakan pekerjaan tersebut. Meskipun model proses perangkat lunak telah dibuat di tingkat perusahaan atau organisasi, namun untuk efektifitasnya hanya akan tercapai apabila dapat diadaptasi dengan signifikan untuk memenuhi kebutuhan tim proyek yang sebenarnya melaksanakan rekayasa perangkat lunak. Sebaiknya, proses yang dibuat haruslah yang paling cocok dengan kebutuhan tim dan organisasi secara menyeluruh. Atau, tim itu sendiri dapat membuat proses sesuai dengan kebutuhan individu mereka, namun tetap memenuhi kebutuhan organisasi secara keseluruhan. Watts Humphrey berpendapat bahwa membangun "personal software process" maupun "team software process" dapat dilakukan, meskipun memerlukan usaha, pelatihan, dan koordinasi yang sungguh-sungguh. 1.1 Personal Software Process (PSP) Semua pengembang perangkat lunak menggunakan suatu proses, meskipu...

Other Agile Process Models (Model Process Agile Lainnya) Menurut Roger S. Pressman

 Sejarah pengembangan perangkat lunak telah dicatat dengan banyak deskripsi dan metodologi proses yang telah usang, alat-alat, dan teknologi, serta notasi pemodelan. Semua hal tersebut telah mencapai popularitasnya masing-masing sebelum akhirnya digantikan oleh yang baru dan lebih baik. Dalam upaya mencapai penerimaan di komunitas pengembangan perangkat lunak, berbagai agile process model telah diperkenalkan dan bersaing satu sama lain, mengikuti pola yang sama dengan gerakan sebelumnya. Sudah saya sampaikan pada bagian terakhir bahwa Extreme Programming (XP) merupakan agile process models yang paling sering digunakan. Meskipun demikian, terdapat banyak agile process models lain yang telah diusulkan dan diterapkan dalam berbagai industri. Beberapa model yang paling umum meliputi: Adaptive Software Development (ASD) Scrum Dynamic Systems Development Method (DSDM) Crystal Feature Drive Development (FDD) Lean Software Development (LSD) Agile Modeling (AM) Agile Unified Process (AUP) P...