Metodologi Baru

Original: https://martinfowler.com/articles/newMethodology.html

Dalam beberapa tahun terakhir sudah ada mekar dari gaya baru metodologi software – disebut metode sebagai tangkas. Atau ditandai sebagai penangkal birokrasi atau lisensi untuk hack mereka telah menimbulkan minat di seluruh lanskap software. Dalam esai ini saya mencari alasan untuk metode tangkas, fokus tidak begitu banyak berat badan mereka, tetapi pada alam adaptif dan orientasi orang-pertama mereka.

13 Desember 2005

Terjemahan:  Rusia  ·  Cina  ·  Italia  ·  Perancis  ·  Byelorusia ·  Denmark  ·  Rumania  ·  Portugis
Cari  artikel serupa  dengan ini dengan melihat tag ini:  populer  ·  lincah  ·  teori proses

Mungkin perubahan paling nyata untuk berpikir proses perangkat lunak dalam beberapa tahun terakhir telah munculnya kata ‘lincah’. Kita berbicara tentang metode perangkat lunak tangkas, bagaimana untuk memperkenalkan kelincahan menjadi tim pengembangan, atau bagaimana untuk melawan badai yang akan datang dari agilists bertekad untuk mengubah praktik mapan.

Gerakan baru ini tumbuh dari upaya berbagai orang yang berurusan dengan proses perangkat lunak pada 1990-an, menemukan mereka ingin, dan mencari pendekatan baru untuk proses perangkat lunak. Sebagian besar ide-ide yang tidak baru, memang banyak orang percaya bahwa banyak perangkat lunak yang sukses telah dibangun seperti itu untuk waktu yang lama. Ada, Namun, pandangan bahwa ide-ide ini telah tertahan dan tidak diperlakukan cukup serius, terutama oleh orang-orang yang tertarik dalam proses perangkat lunak.

Esai ini awalnya bagian dari gerakan ini. Saya awalnya diterbitkan pada bulan Juli 2000. Saya menulis itu, seperti kebanyakan esai saya, sebagai bagian dari mencoba memahami topik. Pada saat itu aku digunakan Extreme Programming selama beberapa tahun setelah saya cukup beruntung untuk bekerja dengan Kent Beck, Ron Jeffries, Don Wells, dan di atas semua sisa tim Chrysler C3 pada tahun 1996. Saya telah sejak memiliki percakapan dan membaca buku dari orang lain yang memiliki ide yang sama tentang proses perangkat lunak, tetapi tidak selalu ingin mengambil jalan yang sama seperti Extreme Programming. Jadi dalam esai saya ingin menjelajahi apa yang menjadi persamaan dan perbedaan antara metodologi ini.

Jika Anda tertarik keingintahuan bersejarah, Anda dapat membaca  versi asli dari artikel ini . Selain format perubahan teks tidak berubah.

Kesimpulan saya kemudian, yang saya masih percaya sekarang, adalah bahwa ada beberapa prinsip dasar yang bersatu metodologi ini, dan prinsip-prinsip ini adalah kontras terkenal dari asumsi metodologi yang ditetapkan.

Esai ini terus menjadi salah satu esai yang paling populer di website saya, yang berarti saya merasa agak diperintahkan untuk tetap up to date. Dalam bentuk aslinya esai kedua dieksplorasi perbedaan-perbedaan dalam prinsip dan disediakan survei metode tangkas seperti yang saya kemudian mengerti mereka. Terlalu banyak yang terjadi dengan metode tangkas sejak bagi saya untuk bersaing dengan bagian survei, meskipun saya memberikan beberapa link untuk melanjutkan eksplorasi Anda. Perbedaan prinsip masih tetap, dan diskusi ini saya terus.


Dari ada, untuk Monumental, untuk Agile

Kebanyakan pengembangan perangkat lunak adalah kegiatan kacau, sering ditandai dengan kalimat “kode dan memperbaiki”. Perangkat lunak ini ditulis tanpa banyak rencana yang mendasari, dan desain sistem dirakit dari banyak keputusan jangka pendek. Ini benar-benar bekerja dengan cukup baik karena sistem kecil, tapi karena sistem tumbuh menjadi semakin sulit untuk menambahkan fitur baru ke sistem. Selanjutnya bug menjadi semakin lazim dan semakin sulit untuk memperbaiki. Sebuah tanda khas sistem tersebut adalah tahap uji lama setelah sistem ini “fitur lengkap”. fase tes panjang seperti memainkan malapetaka dengan jadwal sebagai pengujian dan debugging adalah mustahil untuk jadwal.

Gerakan asli untuk mencoba mengubah ini memperkenalkan konsep metodologi. Metodologi ini memberlakukan proses disiplin pada pengembangan perangkat lunak dengan tujuan membuat pengembangan perangkat lunak lebih dapat diprediksi dan lebih efisien. Mereka melakukan ini dengan mengembangkan proses rinci dengan penekanan kuat pada perencanaan terinspirasi oleh disiplin ilmu teknik lainnya – itulah sebabnya saya ingin merujuk kepada mereka sebagai  metodologi rekayasa  (istilah lain yang digunakan secara luas untuk mereka adalah  metodologi rencana-driven ).

metodologi rekayasa telah sekitar untuk waktu yang lama. Mereka sudah tidak terlihat karena sangat sukses. Mereka bahkan kurang dicatat untuk menjadi populer. Kritik yang paling sering metodologi ini adalah bahwa mereka birokrasi. Ada begitu banyak hal yang harus dilakukan untuk mengikuti metodologi bahwa seluruh laju pembangunan melambat.

Metodologi tangkas  dikembangkan sebagai reaksi terhadap metodologi ini. Bagi banyak orang daya tarik ini metodologi tangkas adalah reaksi mereka terhadap birokrasi metodologi rekayasa. Metode baru mencoba kompromi yang berguna antara ada proses dan terlalu banyak proses, menyediakan proses hanya cukup untuk mendapatkan hasil yang wajar.

Hasil dari semua ini adalah bahwa metode tangkas memiliki beberapa perubahan signifikan dalam penekanan dari metode rekayasa. Perbedaan yang paling cepat adalah bahwa mereka kurang dokumen-berorientasi, biasanya menekankan jumlah yang lebih kecil dari dokumentasi untuk tugas yang diberikan. Dalam banyak hal mereka agak kode berorientasi: mengikuti rute yang mengatakan bahwa bagian penting dari dokumentasi kode sumber.

Namun saya tidak berpikir ini adalah titik kunci tentang metode tangkas. Kurangnya dokumentasi adalah gejala dari dua perbedaan jauh lebih dalam:

  • Metode tangkas yang adaptif ketimbang prediksi.  Metode rekayasa cenderung mencoba untuk merencanakan sebagian besar dari proses software secara detail untuk rentang waktu yang lama, ini bekerja dengan baik sampai hal-hal berubah. Jadi sifat mereka adalah untuk menolak perubahan. Metode tangkas, bagaimanapun, menyambut perubahan. Mereka mencoba untuk menjadi proses yang beradaptasi dan berkembang pada perubahan, bahkan sampai mengubah diri mereka sendiri.
  • Metode Agile adalah orang-orang yang berorientasi bukan berorientasi proses.  Tujuan dari metode rekayasa adalah untuk mendefinisikan sebuah proses yang akan bekerja dengan baik siapa pun yang kebetulan menggunakannya. Metode Agile menegaskan bahwa tidak ada proses akan pernah membuat keterampilan dari tim pengembangan, sehingga peran proses adalah untuk mendukung tim pengembangan dalam pekerjaan mereka.

Pada bagian berikut saya akan mengeksplorasi perbedaan ini secara lebih detail, sehingga Anda dapat memahami apa yang adaptif dan proses yang berpusat pada rakyat seperti, manfaat dan kelemahan, dan apakah itu sesuatu yang harus menggunakan: baik sebagai pengembang atau pelanggan perangkat lunak.

Prediktif terhadap Adaptif

Pemisahan Desain dan Konstruksi

Inspirasi biasa untuk metodologi adalah disiplin ilmu teknik seperti teknik sipil atau mekanis. disiplin ilmu seperti menempatkan banyak penekanan pada perencanaan sebelum Anda membangun. insinyur tersebut akan bekerja pada serangkaian gambar yang justru menunjukkan apa yang perlu dibangun dan bagaimana hal-hal ini perlu disatukan. Banyak keputusan desain, seperti bagaimana menghadapi beban pada jembatan, dibuat sebagai gambar-gambar yang dihasilkan. Gambar-gambar tersebut kemudian diserahkan kepada kelompok yang berbeda, sering perusahaan yang berbeda, yang akan dibangun. Ini diasumsikan bahwa proses konstruksi akan mengikuti gambar. Dalam prakteknya konstruktor akan mengalami beberapa masalah, tetapi ini biasanya kecil.

Karena gambar menentukan potongan dan bagaimana mereka harus disatukan, mereka bertindak sebagai dasar untuk rencana pembangunan rinci. Seperti rencana dapat mengetahui tugas-tugas yang perlu dilakukan dan dependensi apa yang ada di antara tugas-tugas ini. Hal ini memungkinkan untuk jadwal cukup diprediksi dan anggaran untuk konstruksi. Ia juga mengatakan secara rinci bagaimana melakukan pekerjaan konstruksi rakyat harus melakukan pekerjaan mereka. Hal ini memungkinkan pembangunan menjadi kurang terampil intelektual, meskipun mereka sering sangat terampil secara manual.

Jadi apa yang kita lihat di sini adalah dua kegiatan yang berbeda secara fundamental. Desain  yang sulit untuk memprediksi dan membutuhkan orang mahal dan kreatif, dan  konstruksi  yang lebih mudah untuk memprediksi. Setelah kita memiliki desain, kita dapat merencanakan pembangunan. Setelah kita memiliki rencana untuk konstruksi, kita kemudian dapat menangani konstruksi dalam cara yang jauh lebih mudah diprediksi. Dalam konstruksi teknik sipil jauh lebih besar di biaya dan waktu dari desain dan perencanaan.

Jadi pendekatan untuk metodologi rekayasa perangkat lunak terlihat seperti ini: kami ingin jadwal diprediksi yang dapat digunakan orang-orang dengan keterampilan yang lebih rendah. Untuk melakukan ini kita harus memisahkan desain dari konstruksi. Oleh karena itu kita perlu mencari cara untuk melakukan desain untuk perangkat lunak sehingga konstruksi bisa langsung sekali perencanaan dilakukan.

Jadi apa bentuk yang rencana ini mengambil? Bagi banyak orang, ini adalah peran dari desain notasi seperti  UML . Jika kita bisa membuat semua keputusan yang signifikan dengan menggunakan UML, kita dapat membangun rencana pembangunan dan kemudian menyerahkan desain ini off untuk coders sebagai kegiatan konstruksi.

Tapi di sini letak pertanyaan penting. Anda bisa mendapatkan desain yang mampu mengubah coding ke dalam kegiatan konstruksi diprediksi? Dan jika demikian, adalah biaya untuk melakukan hal ini cukup kecil untuk membuat pendekatan ini berharga?

Semua ini membawa beberapa pertanyaan dalam pikiran. Yang pertama adalah soal betapa sulitnya untuk mendapatkan desain UML-seperti menjadi negara yang dapat diserahkan kepada programmer. Masalah dengan desain UML-seperti adalah bahwa hal itu dapat terlihat sangat bagus di atas kertas, namun akan cacat serius ketika Anda benar-benar harus program hal. Model yang menggunakan insinyur sipil didasarkan pada bertahun-tahun praktek yang diabadikan dalam kode rekayasa. Selanjutnya isu-isu kunci, seperti cara pasukan bermain dalam desain, yang setuju untuk analisis matematika. Satu-satunya pemeriksaan yang bisa kita lakukan dari diagram UML-seperti peer review. Sementara ini membantu mengarah ke kesalahan dalam desain yang sering hanya ditemukan selama coding dan pengujian. Bahkan desainer terampil, seperti saya menganggap diri saya untuk menjadi, sering terkejut ketika kita mengubah desain seperti ke dalam perangkat lunak.

Masalah lain adalah bahwa biaya komparatif. Ketika Anda membangun jembatan, biaya usaha desain adalah sekitar 10% dari pekerjaan, dengan sisa menjadi konstruksi. Dalam perangkat lunak jumlah waktu yang dihabiskan di coding jauh, jauh lebih sedikit. McConnell menunjukkan bahwa untuk proyek besar, hanya 15% dari proyek ini adalah kode dan uji unit, pembalikan hampir sempurna dari rasio bangunan jembatan. Bahkan jika Anda benjol di semua pengujian sebagai bagian dari konstruksi, maka desain masih 50% dari pekerjaan. Hal ini menimbulkan pertanyaan penting tentang sifat desain perangkat lunak dibandingkan dengan perannya dalam cabang lain dari rekayasa.

Pertanyaan-pertanyaan yang dipimpin Jack Reeves untuk  menunjukkan bahwa sebenarnya kode sumber adalah dokumen desain dan tahap konstruksi sebenarnya penggunaan compiler dan linker. Memang apa pun yang dapat Anda memperlakukan sebagai konstruksi dapat dan harus otomatis.

Pemikiran ini menyebabkan beberapa kesimpulan penting:

  • Dalam perangkat lunak: konstruksi sangat murah untuk bebas
  • Dalam perangkat lunak semua upaya desain, dan dengan demikian membutuhkan orang-orang kreatif dan berbakat
  • Proses kreatif tidak mudah direncanakan, dan prediktabilitas mungkin menjadi target yang mustahil.
  • Kami harus sangat waspada terhadap metafora teknik tradisional untuk membangun perangkat lunak. Ini semacam berbeda dari aktivitas dan membutuhkan proses yang berbeda

Ketidakpastian Persyaratan

Ada menahan diri Aku pernah mendengar pada setiap proyek masalah saya sudah mengalami. Para pengembang datang kepada saya dan mengatakan “masalah dengan proyek ini adalah bahwa persyaratan selalu berubah”. Hal yang saya menemukan mengejutkan tentang situasi ini adalah bahwa siapa pun terkejut dengan hal itu. Di gedung perubahan kebutuhan bisnis perangkat lunak adalah norma, pertanyaannya adalah apa yang kita lakukan tentang hal itu.

Salah satu rute adalah untuk mengobati perubahan kebutuhan sebagai hasil rekayasa persyaratan miskin. Ide di balik rekayasa persyaratan adalah untuk mendapatkan gambaran sepenuhnya dipahami dari persyaratan sebelum Anda mulai membangun perangkat lunak, mendapatkan pelanggan sign-off untuk persyaratan ini, dan kemudian mendirikan prosedur yang membatasi persyaratan perubahan setelah tanda-off.

Satu masalah dengan ini adalah bahwa hanya mencoba untuk memahami pilihan untuk persyaratan sulit. Itu bahkan lebih keras karena pengembangan organisasi biasanya tidak memberikan informasi biaya pada persyaratan. Anda berakhir berada di situasi di mana Anda mungkin memiliki beberapa keinginan untuk atap matahari di mobil Anda, tetapi penjual tidak dapat memberitahu Anda jika itu menambah $ 10 untuk biaya mobil, atau $ 10.000. Tanpa banyak ide dari biaya, bagaimana Anda dapat mengetahui apakah Anda ingin membayar untuk sunroof itu?

Estimasi sulit karena berbagai alasan. Bagian dari itu adalah bahwa pengembangan perangkat lunak adalah kegiatan desain, dan dengan demikian sulit untuk merencanakan dan biaya. Bagian dari itu adalah bahwa bahan dasar terus berubah dengan cepat. Bagian dari itu adalah bahwa begitu banyak tergantung pada masing-masing orang yang terlibat, dan individu sulit untuk memprediksi dan mengukur.

alam tidak berwujud perangkat lunak juga memotong di. Ini sangat sulit untuk melihat apa nilai fitur perangkat lunak memiliki sampai Anda menggunakannya untuk nyata. Hanya ketika Anda menggunakan versi awal dari beberapa perangkat lunak yang Anda benar-benar mulai memahami fitur apa saja yang berharga dan bagian mana yang tidak.

Ini mengarah ke titik ironis bahwa orang-orang berharap bahwa persyaratan harus berubah. Setelah semua perangkat lunak seharusnya  lembut.  Jadi bukan hanya persyaratan berubah, mereka seharusnya berubah. Dibutuhkan banyak energi untuk mendapatkan pelanggan perangkat lunak untuk memperbaiki persyaratan. Ini bahkan lebih buruk jika mereka pernah mencoba-coba dalam pengembangan perangkat lunak sendiri, karena kemudian mereka “tahu” perangkat lunak yang mudah berubah.

Tetapi bahkan jika Anda bisa menyelesaikan semua itu dan benar-benar bisa mendapatkan set yang akurat dan stabil persyaratan Anda mungkin masih ditakdirkan. Dalam perekonomian saat ini pasukan bisnis mendasar mengubah nilai fitur perangkat lunak terlalu cepat. Apa yang mungkin menjadi baik set persyaratan sekarang, tidak baik set dalam waktu enam bulan. Bahkan jika pelanggan dapat memperbaiki persyaratan mereka, dunia bisnis tidak akan berhenti untuk mereka. Dan banyak perubahan di dunia bisnis benar-benar tak terduga: siapa pun yang mengatakan sebaliknya adalah baik berbohong, atau telah membuat miliar pada perdagangan pasar saham.

Segala sesuatu yang lain dalam pengembangan perangkat lunak tergantung pada kebutuhan. Jika Anda tidak bisa mendapatkan persyaratan stabil Anda tidak bisa mendapatkan rencana diprediksi.

Apakah Prediktabilitas Mustahil?

Secara umum, tidak ada. Ada beberapa perkembangan perangkat lunak di mana prediktabilitas adalah mungkin. Organisasi seperti kelompok perangkat lunak pesawat ruang angkasa NASA adalah contoh utama dari mana pengembangan perangkat lunak dapat diprediksi. Hal ini membutuhkan banyak upacara, banyak waktu, tim besar, dan persyaratan stabil. Ada proyek-proyek di luar sana yang ruang angkutan. Namun saya tidak berpikir banyak perangkat lunak bisnis cocok ke dalam kategori tersebut. Untuk ini, Anda membutuhkan berbagai jenis proses.

Salah satu bahaya besar adalah berpura-pura bahwa Anda dapat mengikuti proses diprediksi ketika Anda tidak bisa. Orang-orang yang bekerja pada metodologi yang tidak pandai mengidentifikasi kondisi batas: tempat di mana metodologi melewati dari yang tepat untuk yang tidak pantas. Kebanyakan methodologists ingin metodologi mereka untuk dapat digunakan oleh semua orang, sehingga mereka tidak mengerti atau mempublikasikan kondisi batas mereka. Hal ini menyebabkan orang yang menggunakan metodologi dalam situasi yang salah, seperti menggunakan metodologi diprediksi dalam situasi tak terduga.

Ada godaan kuat untuk melakukan itu. Prediktabilitas adalah properti yang sangat diinginkan. Namun jika Anda percaya Anda bisa diprediksi ketika Anda tidak bisa, itu mengarah ke situasi di mana orang membangun rencana awal, maka tidak benar menangani situasi di mana rencana tersebut berantakan. Anda melihat rencana dan realitas perlahan-lahan hanyut terpisah. Untuk waktu yang lama Anda bisa berpura-pura bahwa rencana tersebut masih berlaku. Tapi di beberapa titik arus menjadi terlalu banyak dan rencana berantakan. Biasanya musim gugur adalah menyakitkan.

Jadi jika Anda berada dalam situasi yang tidak dapat diprediksi Anda tidak dapat menggunakan metodologi prediksi. Itu pukulan keras. Ini berarti bahwa banyak model untuk proyek-proyek pengendalian, banyak model untuk hubungan pelanggan secara keseluruhan, hanya tidak benar lagi. Manfaat prediktabilitas yang begitu besar, sulit untuk membiarkan mereka pergi. Seperti begitu banyak masalah bagian tersulit hanya menyadari bahwa ada masalah.

Namun melepaskan prediktabilitas tidak berarti Anda harus kembali ke kekacauan tidak terkendali. Sebaliknya Anda perlu proses yang dapat memberikan Anda kontrol atas sebuah ketidakpastian. Itulah yang adaptivity adalah semua tentang.

Mengendalikan suatu Proses Tidak terduga – Iterasi

Jadi bagaimana kita mengontrol diri kita di dunia yang tak terduga? Bagian yang paling penting, dan masih sulit untuk mengetahui secara akurat di mana kita berada. Kita perlu mekanisme umpan balik yang jujur ​​yang akurat dapat memberitahu kita apa situasinya pada interval yang sering.

Kunci untuk umpan balik ini adalah pengembangan berulang. Ini  bukan ide baru . Pengembangan berulang telah sekitar untuk sementara waktu dengan banyak nama: inkremental, evolusi, dipentaskan, spiral … banyak nama. Kunci untuk pengembangan berulang adalah sering memproduksi versi kerja dari sistem akhir yang memiliki subset dari fitur yang diperlukan. Sistem ini bekerja pendek pada fungsi, tetapi harus sebaliknya setia dengan tuntutan sistem final. Mereka harus terintegrasi sepenuhnya dan dengan hati-hati diuji sebagai pengiriman akhir.

Titik ini adalah bahwa tidak ada yang seperti diuji, sistem yang terintegrasi untuk membawa dosis kuat realitas ke setiap proyek. Dokumen dapat menyembunyikan segala macam kekurangan. kode belum teruji dapat menyembunyikan banyak kekurangan. Tetapi ketika orang benar-benar duduk di depan sebuah sistem dan bekerja dengan itu, maka kelemahan menjadi benar-benar jelas: baik dari segi bug dan dalam hal persyaratan disalahpahami.

pengembangan berulang masuk akal dalam proses diprediksi juga. Tapi itu sangat penting dalam proses adaptif karena proses adaptif harus mampu menghadapi perubahan fitur yang diperlukan. Hal ini menyebabkan gaya perencanaan di mana rencana jangka panjang yang sangat cair, dan satu-satunya rencana yang stabil rencana jangka pendek yang dibuat untuk iterasi tunggal. pengembangan berulang memberikan dasar yang kuat dalam setiap iterasi yang Anda dapat mendasarkan rencana nanti sekitar Anda.

Sebuah pertanyaan kunci untuk ini adalah berapa lama iterasi harus. Orang yang berbeda memberikan jawaban yang berbeda. XP menyarankan iterasi dari satu atau dua minggu. Scrum menunjukkan panjang bulan. Kristal dapat meregang lebih jauh. Kecenderungan, bagaimanapun, adalah untuk membuat setiap iterasi sesingkat Anda dapat pergi dengan. Hal ini memberikan umpan balik yang lebih sering, sehingga Anda tahu di mana Anda lebih sering.

Adaptif Pelanggan

semacam ini proses adaptif memerlukan berbagai jenis hubungan dengan pelanggan daripada orang-orang yang sering dianggap, terutama ketika pembangunan yang dilakukan oleh perusahaan terpisah. Ketika Anda menyewa perusahaan terpisah untuk melakukan pengembangan perangkat lunak, kebanyakan pelanggan akan lebih memilih kontrak harga tetap. Memberitahu pengembang apa yang mereka inginkan, meminta tawaran, menerima tawaran, dan kemudian tanggung jawab berada pada organisasi pengembangan untuk membangun perangkat lunak.

Sebuah kontrak harga tetap memerlukan persyaratan yang stabil dan karenanya proses prediktif. proses adaptif dan persyaratan yang tidak stabil berarti Anda tidak bisa bekerja dengan gagasan biasa harga tetap. Mencoba menyesuaikan model harga tetap untuk proses adaptif berakhir dalam ledakan sangat menyakitkan. Bagian jahat dari ledakan ini adalah bahwa pelanggan terluka setiap bit sebanyak sebagai perusahaan pengembangan perangkat lunak. Setelah semua pelanggan tidak akan ingin beberapa software kecuali bisnis mereka membutuhkannya. Jika mereka tidak mendapatkannya bisnis mereka menderita. Jadi bahkan jika mereka membayar apa-apa pengembangan perusahaan, mereka masih kalah. Memang mereka kehilangan lebih dari mereka akan membayar untuk perangkat lunak (mengapa mereka akan membayar untuk perangkat lunak jika nilai bisnis dari perangkat lunak yang kurang?)

Jadi ada bahaya bagi kedua belah pihak menandatangani kontrak harga tradisional tetap dalam kondisi di mana proses prediksi tidak dapat digunakan. Ini berarti bahwa pelanggan harus bekerja secara berbeda.

Ini tidak berarti bahwa Anda tidak dapat memperbaiki anggaran untuk perangkat lunak muka. Apa itu berarti adalah bahwa Anda tidak dapat memperbaiki waktu, harga dan ruang lingkup. Pendekatan biasa tangkas adalah untuk memperbaiki waktu dan harga, dan untuk memungkinkan ruang lingkup untuk bervariasi secara terkendali.

Dalam proses adaptif pelanggan memiliki banyak kontrol halus-grained atas proses pengembangan perangkat lunak. Pada setiap iterasi mereka mendapatkan kedua untuk memeriksa kemajuan dan untuk mengubah arah dari pengembangan perangkat lunak. Hal ini menyebabkan hubungan lebih dekat dengan pengembang perangkat lunak, kemitraan bisnis sejati. Tingkat keterlibatan tidak untuk setiap organisasi pelanggan, atau untuk setiap pengembang perangkat lunak; tapi itu penting untuk membuat sebuah karya proses adaptif dengan baik.

Semua ini menghasilkan sejumlah keuntungan bagi pelanggan. Untuk memulai mereka mendapatkan pengembangan perangkat lunak jauh lebih responsif. Sebuah digunakan, meskipun minimal, sistem dapat masuk ke produksi awal. Pelanggan kemudian dapat mengubah kemampuan sesuai dengan perubahan dalam bisnis, dan juga dari belajar dari bagaimana sistem digunakan dalam kenyataan.

Sama pentingnya karena ini adalah visibilitas yang lebih besar ke keadaan sebenarnya dari proyek. Masalah dengan proses prediksi adalah bahwa kualitas proyek diukur dengan kesesuaian untuk merencanakan. Hal ini membuat sulit bagi orang untuk sinyal ketika realitas dan rencana menyimpang. Hasil umum adalah slip besar dalam jadwal akhir proyek. Dalam sebuah proyek tangkas ada pengerjaan ulang konstan rencana dengan setiap iterasi. Jika berita buruk adalah mengintai cenderung untuk datang lebih awal, ketika masih ada waktu untuk melakukan sesuatu tentang hal itu. Memang pengendalian risiko ini adalah keuntungan utama dari pembangunan berulang.

Metode Agile mengambil ini lebih lanjut dengan menjaga panjang iterasi kecil, tetapi juga dengan melihat variasi ini dengan cara yang berbeda. Mary Poppendieck menyimpulkan perbedaan dalam sudut pandang terbaik bagi saya dengan kalimat nya  “Perubahan terlambat dalam persyaratan adalah keunggulan kompetitif”. Saya pikir sebagian besar orang telah memperhatikan bahwa itu sangat sulit bagi orang-orang bisnis untuk benar-benar memahami apa yang mereka butuhkan dari perangkat lunak di awal. Seringkali kita melihat bahwa orang belajar selama proses elemen apa yang berharga dan mana yang tidak. Seringkali fitur yang paling berharga adalah sama sekali tidak jelas sampai pelanggan memiliki kesempatan untuk bermain dengan perangkat lunak. metode Agile berusaha untuk mengambil keuntungan dari ini, mendorong para pelaku bisnis untuk belajar tentang kebutuhan mereka sebagai sistem akan dibangun, dan untuk membangun sistem sedemikian rupa bahwa perubahan dapat dimasukkan cepat.

Untuk keynote saya di pertama XP / konferensi Agile (XP 2000) saya siap  Is Desain Mati:  esai yang mengeksplorasi peran desain dalam pemrograman ekstrim.

Semua ini memiliki bantalan yang penting apa yang merupakan proyek yang sukses. Sebuah proyek prediktif sering diukur dengan seberapa baik bertemu rencananya. Sebuah proyek yang tepat waktu dan on-biaya dianggap sukses. pengukuran ini adalah omong kosong untuk lingkungan tangkas. Untuk agilists pertanyaannya adalah nilai bisnis – melakukan perangkat lunak mendapatkan pelanggan yang lebih berharga bagi mereka daripada biaya dimasukkan ke dalamnya. Sebuah proyek prediktif yang baik akan berjalan sesuai rencana, proyek tangkas yang baik akan membangun sesuatu yang berbeda dan lebih baik daripada yang asli rencana melihat lebih dulu.

Puting Orang Pertama

Mengeksekusi proses adaptif tidak mudah. Secara khusus itu membutuhkan tim yang sangat efektif pengembang. Tim harus efektif baik dalam kualitas individu, dan dalam cara tim memadukan bersama-sama. Ada juga sinergi yang menarik: tidak hanya tidak adaptivity memerlukan tim yang kuat, pengembang yang paling baik lebih memilih proses adaptif.

Steker-kompatibel Pemrograman Satuan

Salah satu tujuan dari metodologi tradisional untuk mengembangkan proses di mana orang-orang yang terlibat adalah bagian diganti. Dengan proses seperti itu Anda dapat memperlakukan orang sebagai sumber yang tersedia dalam berbagai jenis. Anda memiliki seorang analis, beberapa coders, beberapa penguji, manajer. Individu-individu yang tidak begitu penting, hanya peran penting. Dengan cara itu jika Anda merencanakan suatu proyek tidak masalah yang analis dan yang penguji yang Anda dapatkan, hanya saja Anda tahu berapa banyak Anda memiliki begitu Anda tahu bagaimana jumlah sumber daya mempengaruhi rencana Anda.

Tapi ini menimbulkan pertanyaan kunci: adalah orang-orang yang terlibat dalam pengembangan perangkat lunak bagian diganti? Salah satu fitur kunci dari metode tangkas adalah bahwa mereka menolak asumsi ini.

Mungkin penolakan paling eksplisit dari orang sebagai sumber daya adalah Alistair Cockburn. Dalam makalahnya  Karakterisasi Orang Non-Linear, Orde-Pertama Komponen dalam Pengembangan Software , ia membuat titik bahwa proses diprediksi membutuhkan komponen yang berperilaku dengan cara yang dapat diprediksi. Namun orang tidak komponen diprediksi. Selanjutnya studi proyek perangkat lunak telah membuatnya menyimpulkan orang-orang adalah faktor yang paling penting dalam pengembangan perangkat lunak.

Dalam judul, [artikelnya] saya sebut orang sebagai “komponen”. Itu adalah bagaimana orang diperlakukan dalam literatur desain proses / metodologi. Kesalahan dalam pendekatan ini adalah bahwa “orang” yang sangat bervariasi dan non-linear, dengan keberhasilan dan kegagalan mode yang unik. Faktor-faktor tersebut adalah orde pertama, tidak faktor diabaikan. Kegagalan proses dan metodologi desainer untuk memperhitungkan mereka memberikan kontribusi untuk jenis lintasan proyek yang tidak direncanakan yang sering kita lihat.

– [Cockburn non-linear]

Kita bertanya-tanya jika tidak sifat pengembangan perangkat lunak bekerja melawan kami di sini. Ketika kita sedang pemrograman komputer, kami mengontrol perangkat inheren diprediksi. Karena kita dalam bisnis ini karena kita baik di melakukan hal itu, kita idealnya cocok untuk mengacaukan ketika berhadapan dengan manusia.

Meskipun Cockburn adalah yang paling eksplisit pada orang-sentris pandangannya dari pengembangan perangkat lunak, pengertian orang pertama adalah tema umum dengan banyak pemikir dalam perangkat lunak. Masalahnya, terlalu sering, adalah bahwa metodologi telah menentang gagasan orang sebagai faktor orde pertama dalam keberhasilan proyek.

Hal ini menciptakan efek umpan balik positif yang kuat. Jika Anda mengharapkan semua pengembang Anda untuk menjadi unit pemrograman plug-kompatibel, Anda tidak mencoba untuk memperlakukan mereka sebagai individu. Hal ini akan menurunkan moral (dan produktivitas). Orang-orang baik mencari tempat yang lebih baik untuk menjadi, dan Anda berakhir dengan apa yang Anda inginkan: plug-kompatibel unit pemrograman.

Memutuskan bahwa orang-orang datang pertama adalah keputusan besar, salah satu yang membutuhkan banyak tekad untuk mendorong melalui. Gagasan orang sebagai sumber yang tertanam dalam pemikiran bisnis, akarnya akan kembali ke dampak dari  Frederick Taylor pendekatan Manajemen Ilmiah. Dalam menjalankan pabrik, pendekatan Taylor untuk ini mungkin masuk akal. Tapi untuk pekerjaan yang sangat kreatif dan profesional, yang saya percaya pengembangan perangkat lunak untuk menjadi, ini tidak berlaku. (Dan sebenarnya manufaktur modern juga bergerak menjauh dari model Taylor untuk.)

Programmer Profesional Bertanggung Jawab

Bagian penting dari gagasan Taylor untuk adalah bahwa melakukan pekerjaan orang-orang yang bukan orang yang bisa terbaik mencari cara terbaik untuk melakukan pekerjaan itu. Di pabrik ini mungkin benar karena beberapa alasan. Bagian dari ini adalah bahwa banyak pekerja pabrik tidak orang-orang yang paling cerdas atau kreatif, di bagian ini karena ada ketegangan antara manajemen dan pekerja dalam manajemen yang membuat lebih banyak uang ketika para pekerja membuat kurang.

sejarah semakin menunjukkan kepada kita bagaimana tidak benar ini adalah untuk pengembangan perangkat lunak. orang semakin cerah dan mampu tertarik untuk pengembangan perangkat lunak, tertarik oleh kedua kemewahan dan dengan imbalan berpotensi besar. (Kedua dari yang tergoda saya jauh dari rekayasa elektronik.) Meskipun penurunan dari awal 00 ini, masih ada banyak bakat dan kreativitas dalam pengembangan perangkat lunak.

(Mungkin ada efek generasi sini. Beberapa bukti anekdot membuat saya bertanya-tanya apakah orang lebih cerah telah berkelana ke rekayasa perangkat lunak dalam lima belas tahun terakhir atau lebih. Jika jadi ini akan menjadi alasan mengapa ada kultus seperti pemuda di bisnis komputer, seperti kebanyakan kultus perlu ada butir-butir kebenaran di dalamnya.)

Bila Anda ingin menyewa dan mempertahankan orang-orang yang baik, Anda harus mengakui bahwa mereka adalah profesional yang kompeten. Dengan demikian mereka adalah orang-orang terbaik untuk memutuskan bagaimana melakukan pekerjaan teknis mereka. The Taylor untuk pengertian dari departemen perencanaan terpisah yang memutuskan bagaimana melakukan hal-hal yang hanya bekerja jika perencana memahami bagaimana untuk melakukan pekerjaan lebih baik daripada mereka melakukannya. Jika Anda memiliki terang, orang termotivasi melakukan pekerjaan maka ini tidak berlaku.

Mengelola Proses Orang Berorientasi

Orientasi orang memanifestasikan dirinya dalam sejumlah cara yang berbeda dalam proses tangkas. Hal ini menyebabkan efek yang berbeda, tidak semua dari mereka konsisten.

Salah satu elemen kunci adalah bahwa menerima proses daripada pengenaan proses. Seringkali proses perangkat lunak yang dikenakan oleh tokoh-tokoh manajemen. Dengan demikian mereka sering menolak, terutama ketika tokoh-tokoh manajemen memiliki banyak waktu jauh dari pengembangan aktif. Menerima sebuah proses memerlukan komitmen, dan dengan demikian membutuhkan keterlibatan aktif dari semua tim.

Ini berakhir dengan hasil yang menarik bahwa hanya pengembang sendiri dapat memilih untuk mengikuti proses adaptif. Hal ini terutama berlaku untuk XP, yang membutuhkan banyak disiplin untuk mengeksekusi. Kristal menganggap dirinya sebagai pendekatan yang kurang disiplin yang sesuai untuk khalayak yang lebih luas.

Hal lain adalah bahwa pengembang harus mampu membuat  semua keputusan teknis. XP sampai ke jantung di mana ini dalam proses perencanaan itu menyatakan bahwa hanya pengembang dapat membuat perkiraan tentang berapa banyak waktu yang diperlukan untuk melakukan beberapa pekerjaan.

Kepemimpinan teknis tersebut adalah perubahan besar bagi banyak orang di posisi manajemen. Pendekatan seperti membutuhkan pembagian tanggung jawab di mana pengembang dan manajemen memiliki tempat yang sama dalam kepemimpinan proyek. Perhatikan bahwa saya mengatakan  yang sama . Manajemen masih memainkan peran, tetapi mengakui keahlian pengembang.

Alasan penting untuk ini adalah tingkat perubahan teknologi dalam industri kami. Setelah beberapa tahun pengetahuan teknis menjadi usang. hidup ini setengah dari keterampilan teknis tanpa paralel dalam industri lainnya. Bahkan orang-orang teknis harus mengakui bahwa memasuki manajemen berarti keterampilan teknis mereka akan layu dengan cepat. Ex-pengembang perlu mengakui bahwa keterampilan teknis mereka dengan cepat akan hilang dan mereka harus percaya dan bergantung pada pengembang saat ini.

Kesulitan Pengukuran

Jika Anda memiliki proses di mana orang-orang yang mengatakan bagaimana pekerjaan harus dilakukan berbeda dari orang-orang yang benar-benar melakukannya, para pemimpin perlu beberapa cara untuk mengukur seberapa efektif pelaku berada. Manajemen Ilmiah ada dorongan yang kuat untuk mengembangkan pendekatan objektif untuk mengukur output dari orang.

Hal ini sangat relevan dengan software karena sulitnya menerapkan pengukuran perangkat lunak. Meskipun upaya terbaik kita kita tidak dapat mengukur hal-hal yang paling sederhana tentang perangkat lunak, seperti produktivitas. Tanpa langkah-langkah yang baik untuk hal-hal ini, jenis kontrol eksternal hancur.

Memperkenalkan manajemen diukur tanpa langkah-langkah yang baik mengarah ke masalah sendiri. Robert Austin  membuat diskusi yang sangat baik dari ini. Dia menunjukkan bahwa ketika mengukur kinerja Anda harus mendapatkan  semua  faktor penting di bawah pengukuran. Apa pun yang hilang memiliki hasil yang tak terelakkan bahwa pelaku akan mengubah apa yang mereka lakukan untuk menghasilkan langkah-langkah terbaik, bahkan jika itu jelas mengurangi efektivitas sebenarnya dari apa yang mereka lakukan. Disfungsi pengukuran ini adalah tumit Achilles dari manajemen pengukuran berbasis.

Kesimpulan Austin adalah bahwa Anda harus memilih antara manajemen pengukuran berbasis dan manajemen delegatory (di mana pelaku memutuskan bagaimana untuk melakukan pekerjaan). manajemen-pengukuran berdasarkan yang paling cocok untuk pekerjaan sederhana berulang-ulang, dengan persyaratan pengetahuan yang rendah dan output mudah diukur – kebalikan dari pengembangan perangkat lunak.

Inti dari semua ini adalah bahwa metode tradisional telah dioperasikan di bawah asumsi bahwa manajemen berbasis pengukuran-adalah cara yang paling efisien mengelola. Komunitas tangkas mengakui bahwa karakteristik pengembangan perangkat lunak adalah seperti yang manajemen berbasis pengukuran mengarah ke tingkat yang sangat tinggi disfungsi pengukuran. Ini sebenarnya lebih efisien untuk menggunakan gaya delegatory manajemen, yang merupakan jenis pendekatan yang di pusat sudut pandang agilist.

Peran Kepemimpinan Bisnis

Tetapi orang-orang teknis tidak dapat melakukan seluruh proses sendiri. Mereka membutuhkan bimbingan pada kebutuhan bisnis. Hal ini menyebabkan aspek penting dari proses adaptif: mereka perlu kontak sangat dekat dengan keahlian bisnis.

Ini melampaui keterlibatan sebagian besar proyek dari peran bisnis. Agile tim tidak bisa eksis dengan komunikasi sesekali. Mereka membutuhkan akses berkelanjutan untuk keahlian bisnis. Selain akses ini bukanlah sesuatu yang ditangani pada tingkat manajemen, itu adalah sesuatu yang hadir untuk setiap pengembang. Sejak pengembang profesional yang mampu dalam disiplin mereka sendiri, mereka harus mampu bekerja sebagai sama dengan profesional lainnya dalam disiplin lain.

Sebagian besar dari ini, tentu saja, adalah karena sifat pembangunan adaptif. Karena seluruh premis pembangunan adaptif adalah bahwa hal berubah dengan cepat, Anda perlu kontak konstan menyarankan semua orang dari perubahan.

Tidak ada yang lebih frustasi untuk pengembang daripada melihat kerja keras mereka sia-sia. Jadi penting untuk memastikan bahwa ada yang baik keahlian bisnis kualitas yang baik tersedia untuk pengembang dan kualitas yang cukup bahwa pengembang dapat mempercayai mereka.

Yg menyelaraskan diri Proses

Sejauh ini saya sudah bicara tentang adaptivity dalam konteks proyek mengadaptasi perangkat lunak sering untuk memenuhi perubahan kebutuhan pelanggan. Namun ada sudut yang lain untuk adaptivity: bahwa proses perubahan dari waktu ke waktu. Sebuah proyek yang dimulai dengan menggunakan proses adaptif tidak akan memiliki proses yang sama setahun kemudian. Seiring waktu, tim akan menemukan apa yang bekerja untuk mereka, dan mengubah proses untuk menyesuaikan.

Bagian pertama dari diri adaptivity adalah ulasan rutin proses. Biasanya Anda lakukan ini dengan setiap iterasi. Pada akhir setiap iterasi, memiliki pertemuan singkat dan bertanya pada diri sendiri pertanyaan-pertanyaan berikut (diambil dari  Norm Kerth )

  • Apa yang kita lakukan dengan baik?
  • Apa yang telah kita pelajari?
  • Apa yang bisa kita lakukan lebih baik?
  • Apa yang membuat kami bingung?

Pertanyaan-pertanyaan ini akan membawa Anda ke ide untuk mengubah proses untuk iterasi berikutnya. Dengan cara ini sebuah proses yang dimulai dengan masalah dapat meningkatkan sebagai proyek berlangsung, beradaptasi lebih baik untuk tim yang menggunakannya.

Jika diri adaptivity terjadi dalam sebuah proyek, itu bahkan lebih ditandai di seluruh organisasi. Konsekuensi dari diri adaptivity adalah bahwa Anda tidak harus berharap untuk menemukan metodologi perusahaan tunggal. Sebaliknya setiap tim seharusnya tidak hanya memilih proses mereka sendiri, tetapi harus juga secara aktif selaras proses mereka saat mereka melanjutkan dengan proyek. Sementara kedua proses diterbitkan dan pengalaman proyek lain dapat bertindak sebagai inspirasi dan garis dasar, para pengembang tanggung jawab profesional adalah untuk beradaptasi proses untuk tugas di tangan.


Rasa dari Pengembangan Agile

Istilah ‘lincah’ mengacu pada filosofi pengembangan perangkat lunak. Di bawah payung luas ini duduk banyak pendekatan yang lebih spesifik seperti Extreme Programming, Scrum, Pembangunan Ramping, dll Masing-masing pendekatan yang lebih khusus memiliki sendiri ide-ide, masyarakat dan pemimpin. Setiap komunitas adalah kelompok yang berbeda sendiri tapi untuk benar disebut lincah itu harus mengikuti prinsip-prinsip luas yang sama. Setiap komunitas juga meminjam dari ide-ide dan teknik dari satu sama lain. Banyak praktisi bergerak di antara komunitas yang berbeda menyebarkan ide-ide yang berbeda di sekitar – semua dalam semua itu adalah ekosistem yang rumit tapi bersemangat.

Sejauh ini saya sudah memberikan saya mengambil gambaran keseluruhan dari definisi saya tangkas. Sekarang saya ingin memperkenalkan beberapa komunitas tangkas yang berbeda. Aku hanya bisa memberikan gambaran singkat di sini, tapi saya termasuk referensi sehingga Anda dapat menggali lebih lanjut jika Anda suka.

Karena aku akan mulai memberikan lebih referensi, ini adalah titik yang baik untuk menunjukkan beberapa sumber untuk informasi umum tentang metode tangkas. Web-pusat adalah  Agile Alliance  non-profit yang dibentuk untuk mendorong dan pengembangan penelitian perangkat lunak tangkas. Untuk buku saya sarankan ikhtisar oleh  Alistair Cockburn  dan  Jim Highsmith . Craig Larman ini  buku  tentang pengembangan tangkas mengandung sejarah yang sangat berguna pembangunan berulang. Untuk lebih dari pandangan saya tentang metode tangkas melihat bagian yang sesuai dari saya  artikel  dan  blog .

Daftar berikut ini tidak lengkap. Hal ini mencerminkan pilihan pribadi rasa tangkas yang memiliki paling tertarik dan mempengaruhi saya selama dekade terakhir atau lebih.

Manifesto Agile

Istilah ‘lincah’ mendapat dibajak untuk kegiatan ini pada awal tahun 2001 ketika sekelompok orang yang telah banyak terlibat dalam pekerjaan ini berkumpul untuk bertukar ide dan datang dengan  Manifesto untuk Agile Software Development .

Sebelum workshop ini sejumlah kelompok yang berbeda telah mengembangkan ide-ide yang sama tentang pengembangan perangkat lunak. Kebanyakan, tetapi tidak berarti semua, dari karya ini telah keluar dari komunitas perangkat lunak Object-Oriented yang telah lama menganjurkan pendekatan pengembangan berulang. Esai ini awalnya ditulis pada tahun 2000 untuk mencoba untuk menarik bersama-sama berbagai benang. Pada saat itu tidak ada nama umum untuk pendekatan ini, tetapi moniker ‘ringan’ telah berkembang di sekitar mereka. Banyak orang yang terlibat tidak merasa ini adalah istilah baik karena tidak akurat menyampaikan esensi dari apa pendekatan ini sekitar.

Ada beberapa berbicara tentang isu-isu yang lebih luas dalam pendekatan ini pada tahun 2000 di sebuah lokakarya yang diselenggarakan oleh Kent Beck di Oregon. Meskipun workshop ini difokuskan pada Extreme Programming (masyarakat yang pada saat itu telah mendapatkan perhatian yang besar) beberapa XPers non menghadiri. Salah satu diskusi yang muncul adalah apakah itu lebih baik untuk XP menjadi sebuah gerakan yang luas atau beton. Kent disukai masyarakat kohesif lebih terfokus.

Lokakarya ini diselenggarakan, jika saya ingat benar, terutama oleh Jim Highsmith dan Bob Martin. Mereka menghubungi orang-orang yang mereka merasa aktif di masyarakat dengan ide-ide yang sama dan mendapat tujuh belas dari mereka bersama-sama untuk lokakarya Snowbird. Ide awal hanya untuk bersama-sama dan membangun pemahaman yang lebih baik dari pendekatan satu sama lain. Robert Martin sangat ingin mendapatkan beberapa pernyataan, sebuah manifesto yang dapat digunakan untuk menggalang industri balik jenis-jenis teknik. Kami juga memutuskan kami ingin memilih nama untuk bertindak sebagai nama payung untuk berbagai pendekatan.

Selama workshop kami memutuskan untuk menggunakan ‘lincah’ sebagai nama payung, dan datang dengan nilai-nilai bagian dari manifesto. Bagian prinsip dimulai pada lokakarya tetapi sebagian besar dikembangkan di wiki setelah itu.

Upaya ini jelas menghantam saraf, saya pikir kami semua sangat terkejut dengan tingkat perhatian dan apresiasi manifesto punya. Meskipun manifesto yang hampir tidak definisi ketat gesit, itu memberikan pernyataan fokus yang membantu berkonsentrasi ide-ide. Tak lama setelah kami selesai manifesto Jim Highsmith dan saya menulis sebuah  artikel untuk SD Magazine  yang disediakan beberapa komentar untuk manifesto.

Belakangan tahun itu, sebagian besar tujuh belas yang menulis manifesto kembali bersama lagi, dengan beberapa orang lain, di OOPSLA 2001. Ada saran yang penulis manifesto harus dimulai beberapa on-akan gerakan lincah, tetapi penulis setuju bahwa mereka hanya orang-orang yang kebetulan muncul untuk lokakarya itu dan menghasilkan manifesto itu. Tidak ada cara bahwa kelompok yang bisa mengklaim kepemimpinan masyarakat tangkas seluruh. Kami telah membantu meluncurkan kapal dan harus membiarkannya pergi untuk siapa pun yang ingin berlayar dalam dirinya untuk melakukannya. Jadi itu adalah akhir dari tujuh belas penulis manifesto sebagai badan terorganisir.

Salah satu langkah berikutnya yang tidak mengikuti, dengan keterlibatan aktif dari banyak penulis, adalah pembentukan  aliansi tangkas . Kelompok ini adalah kelompok non-profit dimaksudkan untuk mempromosikan dan penelitian metode tangkas. Di antara hal-hal lain mensponsori konferensi tahunan di AS.

XP (Pemrograman Ekstrim)

Selama popularitas awal metode tangkas di akhir 1990-an, Extreme Programming adalah salah satu yang mendapat bagian terbesar dari perhatian. Dalam banyak hal masih tidak.

Akar XP terletak pada masyarakat Smalltalk, dan khususnya kerjasama erat dari Kent Beck dan Ward Cunningham pada akhir 1980-an. Keduanya halus praktek mereka pada berbagai proyek selama awal 90-an, memperluas ide-ide mereka dari pendekatan pengembangan perangkat lunak yang baik adaptif dan berorientasi pada orang.

Kent terus mengembangkan ide-idenya selama keterlibatan konsultasi, khususnya proyek Chrysler C3 , yang sejak itu menjadi dikenal sebagai proyek penciptaan pemrograman ekstrim. Dia mulai menggunakan istilah ‘pemrograman ekstrim’ sekitar tahun 1997. (C3 juga ditandai kontak awal dengan Extreme Programming dan awal persahabatan saya dengan Kent.)

Selama kata akhir 1990-an dari Extreme Programming menyebar, awalnya melalui deskripsi pada newsgroup dan wiki Ward Cunningham, di mana Kent dan Ron Jeffries (seorang rekan di C3) menghabiskan banyak waktu menjelaskan dan memperdebatkan berbagai ide. Akhirnya sejumlah buku yang diterbitkan menjelang akhir 90-an dan mulai dari 00 yang pergi ke beberapa detail menjelaskan berbagai aspek pendekatan. Sebagian besar buku-buku ini mengambil Kent Beck buku putih sebagai dasar mereka. Kent menghasilkan edisi kedua dari buku putih tahun 2004 yang signifikan re-artikulasi pendekatan.

XP dimulai dengan lima nilai (Komunikasi, Feedback, Kesederhanaan, Keberanian, dan Respect). Kemudian menguraikan ini ke dalam empat belas prinsip dan lagi menjadi dua puluh empat praktik. Idenya adalah bahwa praktek adalah hal-hal konkret bahwa sebuah tim dapat melakukan sehari-hari, sedangkan nilai adalah pengetahuan dasar dan pemahaman yang mendukung pendekatan. Nilai tanpa praktek sulit untuk berlaku dan dapat diterapkan dalam banyak cara yang sulit untuk mengetahui di mana untuk memulai. Praktek tanpa nilai-nilai kegiatan hafalan tanpa tujuan. Kedua nilai-nilai dan praktik-praktik yang diperlukan, tapi ada kesenjangan besar antara mereka – prinsip-prinsip membantu menjembatani kesenjangan. Banyak praktek XP sudah tua, dicoba dan diuji teknik, namun sering dilupakan oleh banyak orang, termasuk proses yang paling direncanakan. Serta membangkitkan teknik ini,

Salah satu yang paling mencolok, serta awalnya menarik bagi saya, adalah penekanan kuat pada pengujian. Sementara semua proses menyebutkan pengujian, kebanyakan melakukannya dengan penekanan yang cukup rendah. Namun XP menempatkan pengujian di dasar pembangunan, dengan setiap programmer menulis tes karena mereka menulis kode produksi mereka. Tes-tes tersebut diintegrasikan ke dalam integrasi dan membangun proses yang berkesinambungan yang menghasilkan platform yang sangat stabil untuk pembangunan masa depan. Pendekatan XP di sini, sering digambarkan di bawah judul  Test Driven Development  (TDD) telah berpengaruh bahkan di tempat-tempat yang belum mengadopsi banyak hal lain dari XP.

Ada banyak publikasi tentang pemrograman ekstrim. Salah satu bidang kebingungan, bagaimanapun, adalah pergeseran antara edisi pertama dan kedua dari buku putih. Saya katakan di atas bahwa edisi kedua adalah ‘re-artikulasi’ pemrograman ekstrim, dalam pendekatan ini masih sama tetapi digambarkan dalam gaya yang berbeda. Edisi pertama (dengan empat nilai, dua belas praktek dan beberapa prinsip penting tapi kebanyakan-diabaikan) memiliki pengaruh besar pada industri perangkat lunak dan paling deskripsi dari pemrograman ekstrim ditulis berdasarkan deskripsi edisi pertama. Perlu diingat bahwa saat Anda membaca materi pada XP, terutama jika hal ini disiapkan sebelum 2005. Memang sebagian besar deskripsi web umum XP didasarkan pada edisi pertama.

Tempat awal alami untuk menemukan lebih banyak adalah  edisi kedua dari buku putih . Buku ini menjelaskan latar belakang dan praktek XP dalam waktu singkat (160 halaman) paket. Kent Beck diedit serangkaian multi-berwarna buku tentang pemrograman ekstrim sekitar pergantian abad, jika dipaksa untuk memilih satu untuk menyarankan aku akan pergi untuk  satu ungu , ingat bahwa seperti kebanyakan materi itu didasarkan pada edisi pertama.

Ada banyak bahan di web tentang XP tetapi sebagian besar didasarkan pada edisi pertama. Salah satu dari beberapa deskripsi saya tahu yang memperhitungkan edisi kedua adalah sebuah makalah tentang  The New XP  (PDF) oleh Michele Marchesi yang menjadi tuan rumah konferensi XP original di Sardinia. Untuk diskusi tentang XP ada  daftar yahoo mailing .

Keterlibatan saya di hari-hari awal dan persahabatan dalam komunitas XP berarti bahwa saya memiliki keakraban yang berbeda, kesukaan dan bias terhadap XP. Saya pikir pengaruhnya berutang untuk menikah prinsip-prinsip pembangunan tangkas dengan satu set yang solid teknik untuk benar-benar membawa mereka keluar. Banyak tulisan-tulisan awal tangkas diabaikan yang terakhir, memunculkan pertanyaan tentang apakah ide-ide lincah benar-benar mungkin. XP menyediakan alat dengan mana harapan kelincahan dapat direalisasikan.

Banyak orang

Scrum juga dikembangkan di 80-an dan 90-an terutama dengan lingkaran pembangunan OO sebagai metodologi pengembangan yang sangat berulang. Ini paling terkenal pengembang yang Ken Schwaber, Jeff Sutherland, dan Mike Beedle.

Scrum berkonsentrasi pada aspek manajemen pengembangan perangkat lunak, membagi pengembangan ke tiga puluh hari iterasi (disebut ‘sprint’) dan menerapkan monitoring dan kontrol lebih dekat dengan pertemuan scrum sehari-hari. Ini menempatkan jauh lebih sedikit penekanan pada praktek-praktek rekayasa dan banyak orang menggabungkan pendekatan manajemen proyek dengan praktek-praktek rekayasa pemrograman ekstrim ini. (Praktek manajemen XP tidak benar-benar sangat berbeda.)

Ken Schwaber adalah salah satu pendukung paling aktif dari Scrum, nya  situs  adalah tempat yang baik untuk mulai mencari informasi lebih lanjut dan nya  buku  ini mungkin yang terbaik pertama.

Kristal

Alistair Cockburn telah lama menjadi salah satu suara utama dalam masyarakat tangkas. Ia mengembangkan keluarga Kristal metode pengembangan perangkat lunak sebagai kelompok pendekatan yang disesuaikan dengan tim ukuran yang berbeda. Kristal dipandang sebagai sebuah keluarga karena Alistair percaya bahwa pendekatan yang berbeda diperlukan sebagai tim bervariasi dalam ukuran dan kekritisan perubahan kesalahan.

Meskipun variasi mereka semua pendekatan kristal berbagi fitur-fitur umum. Semua metode kristal memiliki tiga prioritas: keselamatan (di hasil proyek), efisiensi, kelayakhunian (pengembang bisa hidup dengan kristal). Mereka juga berbagi sifat umum, yang paling penting tiga adalah: Sering Pengiriman, Perbaikan reflektif, dan Tutup Komunikasi.

Prioritas kelayakhunian adalah bagian penting dari kristal pikiran-set. quest Alistair ini (seperti yang saya lihat) adalah mencari apa yang paling sedikit proses yang dapat Anda lakukan dan masih berhasil dengan asumsi yang mendasari disiplin rendah yang tidak bisa dihindari dengan manusia. Akibatnya Alistair melihat Crystal sebagai membutuhkan disiplin kurang dari pemrograman ekstrim, perdagangan dari efisiensi kurang untuk kelayakhunian yang lebih besar dan mengurangi kemungkinan kegagalan.

Meskipun garis Crystal, tidak ada penjelasan yang komprehensif dari segala manifestasinya. Yang paling baik dijelaskan adalah  Crystal Clear , yang memiliki deskripsi buku modern. Ada juga  wiki  untuk bahan lanjut dan diskusi dari Crystal.

Pengujian Didorong konteks

Dari awal sudah pengembang perangkat lunak yang telah mendorong masyarakat tangkas. Namun banyak orang lain yang terlibat dalam pengembangan perangkat lunak dan dipengaruhi oleh gerakan baru ini. Salah satu kelompok yang jelas adalah penguji, yang sering hidup di dunia yang sangat banyak dikandung oleh pemikiran terjun. Dengan pedoman umum yang menyatakan bahwa peran pengujian adalah untuk memastikan kesesuaian perangkat lunak dengan spesifikasi muka ditulis, peran penguji dalam dunia tangkas jauh dari jelas.

Ternyata, beberapa orang di komunitas pengujian telah mempertanyakan banyak pemikiran pengujian utama untuk cukup lama. Hal ini telah menyebabkan kelompok yang dikenal sebagai pengujian konteks-driven. Deskripsi terbaik dari ini adalah buku  Pelajaran dalam Pengujian Perangkat Lunak . Komunitas ini juga sangat aktif di web, lihatlah situs yang diselenggarakan oleh  Brian Marick (salah satu penulis dari manifesto tangkas),  Brett Pettichord ,  James Bach , dan  Cem Kaner .

Pengembangan melereng

Saya ingat beberapa tahun yang lalu memberikan ceramah tentang metode tangkas pada konferensi Pengembangan Software dan berbicara dengan seorang wanita bersemangat tentang persamaan antara ide-ide lincah dan gerakan ramping di bidang manufaktur. Mary Poppendieck (dan suami Tom) telah pergi untuk menjadi pendukung aktif dari masyarakat lincah, khususnya melihat tumpang tindih dan inspirasi antara produksi ramping dan pengembangan perangkat lunak.

Gerakan ramping dalam pembuatan dipelopori oleh Taiichi Ohno di Toyota dan sering dikenal sebagai Toyota Production System. produksi ramping adalah inspirasi bagi banyak agilists awal – Poppendiecks yang paling penting untuk menjelaskan bagaimana ide-ide ini berinteraksi. Secara umum saya sangat waspada terhadap jenis-jenis penalaran dengan analogi, memang pemisahan rekayasa antara desain dan konstruksi membawa kita ke dalam kekacauan ini di tempat pertama. Namun analogi dapat menyebabkan ide-ide yang baik dan saya pikir ide-ide ramping telah memperkenalkan banyak ide dan alat yang berguna ke dalam gerakan lincah.

The Poppendiecks’  buku  dan  situs  adalah titik awal yang jelas untuk informasi lebih lanjut.

Proses Bersatu

Proses lain yang terkenal telah keluar dari komunitas berorientasi objek adalah Proses Bersatu (kadang-kadang hanya disebut sebagai Proses Bersatu). Ide asli adalah bahwa seperti bahasa pemodelan UML bersatu UP bisa menyatukan proses perangkat lunak. Sejak RUP muncul sekitar waktu yang sama sebagai metode tangkas, ada banyak diskusi tentang apakah kedua yang kompatibel.

RUP adalah koleksi yang sangat besar praktek dan benar-benar proses kerangka daripada proses. Daripada memberikan proses tunggal untuk pengembangan perangkat lunak berusaha untuk memberikan seperangkat praktek bagi tim untuk memilih dari untuk proyek individu. Akibatnya langkah pertama tim menggunakan RUP harus mendefinisikan proses masing-masing, atau sebagai RUP menyebutnya, sebuah kasus pembangunan .

Aspek umum kunci dari RUP adalah bahwa itu adalah Use Case Driven (pembangunan didorong melalui fitur dapat dilihat pengguna), berulang, dan arsitektur sentris (ada prioritas untuk membangun arsitektur sebuah awal yang akan berlangsung proyek melalui).

Pengalaman saya dengan RUP adalah bahwa masalah adalah variabilitas yang tak terbatas. Saya telah melihat deskripsi dari penggunaan RUP yang berkisar dari air terjun yang kaku dengan ‘iterasi analisis’ membayangkan tangkas sempurna. Ini tersadar bahwa keinginan orang untuk memasarkan RUP sebagai proses tunggal menyebabkan hasil di mana orang dapat melakukan apa saja dan menyebutnya RUP – menghasilkan RUP menjadi frase berarti.

Meskipun semua ini ada beberapa orang yang sangat kuat di masyarakat RUP yang sangat banyak selaras dengan pemikiran tangkas. Saya sudah terkesan dalam semua pertemuan saya dengan Phillippe Kruchten dan nya  buku  adalah titik awal terbaik untuk RUP. Craig Larman juga telah mengembangkan deskripsi bekerja dengan RUP dengan gaya lincah dalam populernya  buku pengantar  pada desain OO.


Jika Anda pergi tangkas?

Menggunakan metode tangkas bukan untuk semua orang. Ada beberapa hal yang perlu diingat jika Anda memutuskan untuk mengikuti jalan ini. Namun saya pasti percaya bahwa metodologi ini banyak berlaku dan harus digunakan oleh lebih banyak orang daripada saat ini menganggap mereka.

Dalam lingkungan saat ini, metodologi yang paling umum adalah kode dan memperbaiki. Menerapkan lebih disiplin daripada kekacauan hampir pasti akan membantu, dan pendekatan tangkas memiliki keuntungan bahwa itu adalah jauh lebih sedikit dari langkah daripada menggunakan metode kelas berat. Di sini ringan dari metode tangkas adalah keuntungan. proses sederhana lebih mungkin untuk diikuti ketika Anda digunakan untuk ada proses sama sekali.

Untuk seseorang yang baru untuk metode tangkas, pertanyaannya adalah di mana untuk memulai. Seperti halnya teknologi baru atau proses, Anda perlu membuat evaluasi Anda sendiri itu. Hal ini memungkinkan Anda untuk melihat bagaimana hal itu cocok dengan lingkungan Anda. Sebagai hasil banyak saran saya di sini berikut bahwa saya telah diberikan untuk pendekatan baru lainnya, membawa kembali kenangan ketika saya pertama kali berbicara tentang teknik Berorientasi Objek.

Langkah pertama adalah untuk menemukan proyek yang cocok untuk mencoba metode tangkas dengan. Sejak metode tangkas begitu mendasar orang-berorientasi, itu penting bahwa Anda mulai dengan sebuah tim yang ingin mencoba dan bekerja dengan cara yang tangkas. Bukan hanya adalah tim enggan lebih sulit untuk bekerja dengan, memaksakan metode tangkas pada orang-orang enggan secara fundamental bertentangan dengan seluruh gagasan pengembangan tangkas.

Ini berharga untuk juga memiliki pelanggan (mereka yang membutuhkan perangkat lunak) yang ingin bekerja dalam jenis cara kolaboratif. Jika pelanggan tidak berkolaborasi, maka Anda tidak akan melihat keuntungan penuh dari proses adaptif. Memiliki mengatakan bahwa kami telah menemukan pada beberapa kesempatan bahwa kita telah bekerja dengan pelanggan yang tidak ingin berkolaborasi, tapi berubah pikiran mereka selama beberapa bulan pertama karena mereka mulai memahami pendekatan tangkas.

Banyak orang mengklaim bahwa metode tangkas tidak dapat digunakan pada proyek-proyek besar. Kami (ThoughtWorks) telah sukses baik dengan proyek-proyek tangkas dengan sekitar 100 orang dan beberapa benua. Meskipun ini saya akan sarankan memilih sesuatu yang lebih kecil untuk memulai dengan. proyek-proyek besar secara inheren lebih sulit, jadi lebih baik untuk mulai belajar pada sebuah proyek dari ukuran yang lebih mudah dikelola.

Beberapa orang menyarankan memilih sebuah proyek dengan dampak bisnis kecil untuk memulai dengan, cara itu jika ada yang tidak beres maka ada sedikit kerusakan. Namun proyek penting sering membuat tes yang buruk karena tak ada yang peduli banyak tentang hasilnya. Saya lebih suka menyarankan orang-orang untuk mengambil sebuah proyek yang sedikit lebih penting daripada Anda merasa nyaman dengan.

Mungkin hal yang paling penting yang dapat Anda lakukan adalah menemukan seseorang yang lebih berpengalaman dalam metode tangkas untuk membantu Anda belajar. Setiap kali ada yang melakukan sesuatu yang baru mereka pasti melakukan kesalahan. Cari seseorang yang telah membuat banyak kesalahan sehingga Anda dapat menghindari membuat mereka sendiri. Sekali lagi ini adalah sesuatu yang benar untuk setiap teknologi baru atau teknik, mentor yang baik adalah layak berat emas. Tentu saja nasihat ini adalah diri melayani sejak ThoughtWorks dan banyak dari teman-teman saya di industri jangan pendampingan pada metode tangkas. Itu tidak mengubah fakta bahwa saya sangat percaya pada pentingnya menemukan mentor yang baik.

Dan sekali Anda telah menemukan mentor yang baik, ikuti saran mereka. Ini sangat mudah untuk menebak kedua banyak dari ini dan saya telah belajar dari pengalaman bahwa banyak teknik dapat benar-benar dipahami sampai Anda telah membuat upaya yang wajar untuk mencobanya. Salah satu contoh terbaik yang saya dengar adalah klien kami yang memutuskan untuk percobaan pemrograman ekstrim selama beberapa bulan. Selama periode itu mereka membuat jelas bahwa mereka akan melakukan apa pun mentor mengatakan – bahkan jika mereka pikir itu ide yang buruk. Pada akhir periode percobaan mereka akan berhenti dan memutuskan apakah mereka ingin melanjutkan dengan salah satu ide atau kembali ke cara sebelumnya bekerja. (Dalam kasus Anda bertanya-tanya mereka memutuskan untuk melanjutkan dengan XP.)

Salah satu pertanyaan terbuka tentang metode tangkas adalah di mana kondisi batas berbohong. Salah satu masalah dengan teknik baru adalah bahwa Anda tidak benar-benar menyadari di mana kondisi batas sampai Anda menyeberang mereka dan gagal. metode Agile masih terlalu muda untuk melihat aksi yang cukup untuk mendapatkan rasa di mana batas-batas yang. Hal ini lebih diperparah oleh kenyataan bahwa hal itu begitu sulit untuk memutuskan apa keberhasilan dan kegagalan berarti dalam pengembangan perangkat lunak, serta terlalu banyak faktor yang berbeda-beda untuk dengan mudah dijabarkan sumber masalah.

Jadi mana yang harus Anda tidak menggunakan metode tangkas? Saya pikir itu terutama datang ke orang-orang. Jika orang-orang yang terlibat tidak tertarik dalam jenis kolaborasi intens yang lincah kerja membutuhkan, maka itu akan menjadi perjuangan besar untuk mendapatkan mereka untuk bekerja dengan itu. Secara khusus saya berpikir bahwa ini berarti Anda tidak harus mencoba untuk memaksakan tangkas kerja pada tim yang tidak ingin mencobanya.

Ada sudah banyak pengalaman dengan metode tangkas selama sepuluh tahun terakhir. Pada ThoughtWorks kita selalu menggunakan pendekatan lincah jika klien kami bersedia, yang sebagian besar waktu mereka. Saya (dan kami) terus menjadi penggemar besar dari cara kerja.

Revisi Signifikan

13 Desember 2005:  overhaul Umum kertas. Berubah daftar metodologi survei dari rasa tangkas.

April 2003:  Revisi beberapa bagian. Ditambahkan bagian tentang kesulitan pengukuran dan konteks didorong pengujian.

Juni 2002:  referensi Diperbarui

November 2001:  Diperbarui beberapa referensi baru-baru ini

Maret 2001:  Diperbarui untuk mencerminkan penampilan Agile Alliance

November 2000:  Diperbarui bagian pada ASD dan menambahkan bagian pada DSDM dan RUP

Desember 2000:  versi singkat yang diterbitkan dalam  Pengembangan Software  majalah dengan judul “Masukan Proses Anda pada Diet”

Juli 2000:  Asli Publikasi pada martinfowler.com

Leave a Reply