Lean Software Development


 Lean Software Development

rekayasa perangkat lunak

Lean adalah pendekatan sistematis untuk mengidentifikasi dan menghilangkan limbah melalui perbaikan secara terus-menerus, selalu meminta masukan kepada pelanggan dalam tujuan untuk mengejar kesempurnaan.

Lean Software Development adalah sebuah strategi yang dilakukan untuk mengurangi cacat dan menghemat waktu pengerjaan serta selalu memberikan nilai bisnis kedalam produk secara bertahap.

Lean Software merupakan hasil adopsi dari Lean Manufacturing, prinsip Lean IT, Praktik Software Development Domain serta merupakan hasil adaptasi dari Toyota Production System[1]

Lean software development bersumber dari sebuah buku, yang ditulis oleh Mary Poppendieck dan Tom Poppendieck[2]. Buku ini menyajikan beberapa prinsip tradisional Lean dalam bentuk yang telah dimodifikasi. Serta 22 set alat untuk membandingkan penerapannya dengan Agile Software[3]. Keterlibatan Poppendieck’s di dalam komunitas Agile Software Development, termasuk sebagai pembicara di beberapa konferensi Agile, yang menghasilkan konsep-konsep lebih luas untuk komunitas Agile

Prinsip- prinsip Lean


Prinsip Lean Development diringkas menjadi 7 prinsip, yang sangat mirip dengan prinsip Lean Manufacturing yaitu[4] :

  1. Eliminate waste (Meminmalisir Limbah)
  2. Amplify learning (Memperkuat pembelajaran)
  3. Decide as late as possible (Menentukan selambat mungkin)
  4. Deliver as fast as possible (Menyampaikan secepat mungkin)
  5. Empower the team (Memberi wewenang kepada tim)
  6. Build integrity in (Membangun integritas)
  7. See the whole (Melihat secara menyeluruh)

1. Eliminate waste (Mengurangi Limbah)

Filosofi Lean memandang bahwa segala sesuatu yang tidak menambah nilai kepada pelanggan, merupakan limbah. Limbah yang dimaksud termasuk[5] :

  • Partially done work (Penundaan pekerjaan)
  • Extra processes (Proses yang berlebihan)
  • Extra features (Fitur yang berlebihan)
  • Task switching (Beralih tugas)
  • Waiting (Menunggu)
  • Motion (Gerakan)
  • Defects (Cacat)
  • Management activities (Manajemen kegiatan)

Apabila terdapat penundaan pekerjaan hal ini dapat dikatakan sebagai limbah. Ketika seseorang sedang melakukan coding, namun pada akhirnya ditinggalkan selama proses pembangunannya, hal ini juga dikatakan sebagai limbah. Proses penambahan seperti penambahan dokumen serta fitur yang tidak sering digunakan oleh pelanggan, juga merupakan limbah. Orang yang beralih tugas, juga merupakan limbah. Menunggu kegiatan lain, tim, maupun menunggu proses juga merupakan limbah. Gerakan yang dibutuhkan untuk menyelesaikan pekerjaan juga dapat dikatakan limbah. Cacat atau kualitas yang lebih rendah merupakan limbah. Manajerial kepala yang tidak menghasilkan nilai riil juga merupakan limbah.

2. Amplify learning (Memperkuat pembelajaran)

Pengembangan perangkat lunak adalah proses belajar yang berkesinambungan berdasarkan iterasi saat menulis kode. Software desain adalah proses pemecahan masalah yang melibatkan para pengembang, menulis kode serta apa yang telah mereka pelajari. Nilai Software diukur dalam kebugaran untuk digunakan dan tidak dalam kesesuaian dengan persyaratan.

3. Decide as late as possible (Menentukan selambat mungkin)

Sebagai pengembangan perangkat lunak, seringkali kita dikaitkan dengan beberapa ketidakpastian, hasil yang lebih baik harus dicapai dengan pendekatan berbasis pilihan. Semakin kompleks sebuah sistem, semakin besar kapasitas untuk perubahan yang harus dibangun ke dalamnya, sehingga memungkinkan pengadaan penundaan komitmen yang penting dan krusial, yang menyebabkan keterlambatan dalam menentukan segala sesuatunya.

4. Deliver as fast as possible (Menyampaikan secepat mungkin)

Di era evolusi teknologi yang cepat ini, bukan yang terbesar yang bertahan, tapi yang tercepat. Semakin cepat produk akhir disampaikan tanpa cacat utama, umpan balik akan cepat dapat diterima, dan dimasukkan ke dalam iterasi berikutnya. Kecepatan menjamin pemenuhan kebutuhan pelanggan sekarang dan bukan apa yang mereka diperlukan kemarin.

5. Empower the team (Memberi wewenang kepada tim)

Eksekusi terkemuka terletak dalam mendapatkan rincian yang tepat, dan tidak ada yang mengerti rincian lebih baik daripada orang-orang yang benar-benar melakukan pekerjaan[5]. Melibatkan pengembang dalam rincian dari keputusan teknis merupakan hal yang penting untuk mencapai keunggulan. Orang-orang di garis depan menggabungkan pengetahuan tentang rincian menit dengan kekuatan banyak pikiran. Ketika dilengkapi dengan keahlian yang diperlukan dan dipandu oleh seorang pemimpin, mereka akan membuat keputusan teknis yang lebih baik dan keputusan proses yang lebih baik. Karena keputusan dibuat di akhir dan di eksekusi dengan cepat, ini merupakan hal yang tidak mungkin bagi pemerintah pusat untuk mengatur kegiatan pekerja. Dengan demikian, praktek Lean menggunakan teknik Empower team untuk jadwal kerja dan mengandung mekanisme signaling lokal, sehingga pekerja dapat membiarkan satu sama lain tahu apa yang perlu dilakukan. Dalam pengembangan perangkat lunak Lean, mekanisme Empower team adalah perjanjian untuk memberikan versi software bekerja semakin halus secara berkala. signaling lokal terlihat melalui grafik, rapat harian, sering integrasi, dan pengujian yang komprehensif.

6. Build integrity in (Membangun integritas)

Sebuah sistem dianggap memiliki integritas ketika pengguna berpikir, “Ya! Itu adalah apa yang saya inginkan.”[6] pangsa pasar adalah ukuran kasar integritas untuk produk, karena mengukur persepsi pelanggan dari waktu ke waktu.

Integritas konseptual berarti konsep sentral sistem bekerja sama dengan halus, kesatuan yang utuh, dan itu merupakan faktor penting dalam menciptakan integritas.

Software membutuhkan tambahan tingkat integritas yang harus mempertahankan kegunaannya dari waktu ke waktu. Software biasanya diharapkan berkembang anggun karena menyesuaikan masa depan. Software dengan integritas, memiliki arsitektur yang koheren, skor tinggi pada kegunaan dan kesesuaian dalam tujuan, dipertahankan, beradaptasi, dan extensible. Penelitian telah menunjukkan bahwa integritas berasal dari kepemimpinan yang bijaksana, keahlian yang relevan, komunikasi yang efektif, dan disiplin yang sehat.

7. See the whole (Melihat secara menyeluruh)

Integritas dalam sistem yang kompleks memerlukan keahlian yang mendalam di banyak daerah yang beragam[6].

Salah satu masalah yang paling keras dengan pengembangan produk adalah bahwa para ahli di bidang apa pun (mis, database atau GUI) memiliki kecenderungan untuk memaksimalkan kinerja di bagian produk yang mewakili spesialisasi mereka sendiri, daripada berfokus pada kinerja sistem secara keseluruhan. Cukup sering, kepentingan umum diabaikan apabila orang yang lebih mengutamakan kepentingan mereka sendiri.

 Referensi

[1] Yasuhiro Monden (1998), Sistem Produksi Toyota, Pendekatan Terpadu untuk Just-In-Time, edisi ketiga, Norcross, GA: Teknik & Manajemen Press, ISBN 0-412-83930-X .
[2] Mary Poppendieck; Tom Poppendieck (2003). Ramping Software Development: Sebuah Toolkit Agile . Addison-Wesley profesional. ISBN 978-0-321-15078-3 .
[3] Mary Poppendieck: “Peran kepemimpinan dalam pengembangan perangkat lunak” https://www.youtube.com/watch?v=ypEMdjslEOI
[4] Mary Poppendieck; Tom Poppendieck (2003). Ramping Software Development: Sebuah Toolkit Agile . Addison-Wesley profesional. pp. 13-15. ISBN
[5] Mary Poppendieck; Tom Poppendieck (2003). Ramping Software Development: Sebuah Toolkit Agile . Addison-Wesley profesional. pp. 19-22. ISBN 978-0-321-15078-3 .
[6] http://200.17.137.109:8081/novobsi/Members/teresa/optativa-fabrica-de-sw-organizacoes-ageis/artigos/Addison%20Wesley%20-%20Lean%20Software%20Development%20-%20An%20Agile%20Toolkit.pdf