Saya seorang pengembang Java, tetapi saya diminta untuk belajar tentang penerapan Six Sigma dengan tujuan meningkatkan keuntungan organisasi kami. Saya telah membaca bahwa Six Sigma dapat diterapkan di semua lingkungan, tetapi saya tertarik pada nuansa penerapannya pada pengembangan perangkat lunak.
Konsep Six Sigma mana yang dapat diterapkan pada lingkungan pengembangan perangkat lunak dan bagaimana cara menerapkannya secara efektif?
Pemahaman saya adalah bahwa Six Sigma berfokus pada:
- mengidentifikasi dan menghilangkan akar penyebab cacat
- meminimalkan variabilitas dalam menerapkan proses manufaktur atau bisnis
Tampaknya bagi saya bahwa konsep-konsep ini dapat diterapkan pada pengembangan perangkat lunak, tetapi dapatkah itu diterapkan secara efektif ke Siklus Hidup Pengembangan Perangkat Lunak (SDLC)?
quality
process-improvement
Dinesh Kumar
sumber
sumber
Jawaban:
Aktivitas Six Sigma dasar ditangkap oleh akronim DMAIC , yang merupakan singkatan: Define, Measure, Analyze, Improve, Control . Anda menerapkan ini pada proses yang ingin Anda tingkatkan: tentukan prosesnya, ukur itu, gunakan pengukuran untuk membentuk hipotesis tentang penyebab masalah apa pun, terapkan perbaikan, dan pastikan bahwa proses itu tetap "dalam kendali" secara statistik.
Karena ini berkaitan dengan perangkat lunak, prosesnya adalah siklus pengembangan perangkat lunak Anda (SDLC) atau sebagian darinya. Anda mungkin tidak akan mencoba menerapkan prinsip Six Sigma ke seluruh SDLC (atau setidaknya, tidak pada awalnya). Alih-alih, Anda akan mencari bidang yang menurut Anda memiliki masalah (mis., Tingkat cacat kami terlalu tinggi; terlalu banyak regresi; jadwal kami terlalu sering tergelincir; terlalu banyak kesalahpahaman antara pengembang dan pelanggan; dll.). Katakanlah untuk saat ini bahwa masalahnya adalah terlalu banyak bug yang diproduksi (atau setidaknya dilaporkan) setiap minggu. Jadi, Anda akan menentukan proses pengembangan perangkat lunak / bug. Kemudian Anda akan mulai mengumpulkan metrik seperti jumlah baris kode yang ditulis setiap hari, frekuensi perubahan persyaratan, jumlah jam yang dihabiskan setiap insinyur dalam rapat,
Selanjutnya, Anda melihat data dan mencoba melihat pola. Mungkin Anda memperhatikan bahwa tim teknik A mencapai setiap tenggat waktu yang diberikan, dan seringkali menyelesaikan tugas lebih awal! Pada awalnya, tim B tampaknya tidak terlalu peduli pada bola - mereka kehilangan tenggat waktu mereka setidaknya satu atau dua hari setengah, dan kadang-kadang terlambat seminggu atau lebih. Manajemen melihat tim B sebagai sesuatu masalah dan ingin mengguncang segalanya. Namun, melihat lebih dekat pada data menunjukkan bahwa tingkat bug tim B jauh lebih rendah daripada tim A, dan terlebih lagi, tim B sering diminta untuk memperbaiki bug yang dikaitkan dengan tim A karena manajemen merasa bahwa tim A berharga untuk menghabiskan banyak uang. waktu pemeliharaan.
Jadi apa yang kamu lakukan? Dengan menggunakan data yang telah Anda kumpulkan dan analisis yang Anda lakukan, Anda menyarankan perubahan: tim A dan tim B masing-masing akan memperbaiki bug mereka sendiri. Dengan restu manajemen (dan melawan oposisi keras tim A) Anda menerapkan perubahan itu. Lalu Anda terus mengumpulkan metrik, dan Anda terus menganalisis data untuk melihat apakah perubahan Anda membuat perbedaan. Ulangi siklus pengukuran / analisis / implementasi ini sampai tingkat bug dianggap dapat diterima. Tapi Anda belum selesai. Bahkan, Anda tidak pernah selesai ... Anda harus terus mengukur tingkat bug dan memeriksa bahwa tingkat bug tetap dalam kisaran yang dapat diterima, yaitu secara statistik "dalam kendali".
Perhatikan bahwa tidak ada apa pun di sini yang khusus untuk pengembangan perangkat lunak selain spesifik dari proses yang Anda tingkatkan, jenis metrik yang Anda kumpulkan, dll. Aktivitas yang Anda gunakan untuk meningkatkan proses pengembangan perangkat lunak sama dengan yang Anda lakukan d digunakan untuk proses pembuatan widget, meskipun pengembangan perangkat lunak sangat berbeda dari pembuatan widget. Semua itu berarti bahwa Anda perlu menerapkan akal sehat dalam jenis tujuan yang Anda tetapkan untuk proses Anda.
sumber
Seperti yang disebutkan oleh @Peter
Saya dapat memberi Anda sebuah skenario sederhana, saya bekerja untuk perusahaan dirgantara. Ada tim yang merancang sirkuit untuk pesawat terbang. Mereka menghadapi banyak kesulitan dalam merancang sirkuit untuk pesawat terbang kompleks. Karena itu, mereka kehilangan tenggat waktu, meskipun mereka memiliki desainer yang berpengalaman. Saya menganalisis pekerjaan mereka dan memperhatikan bahwa mereka mengembangkan sirkuit dari awal setiap saat. Jadi saya merancang perangkat lunak yang akan melacak sirkuit mereka yang sebelumnya dirancang dan setiap kali mereka memiliki pesawat baru mereka akan menggunakan perangkat lunak saya dan memilih pesawat yang dirancang sebelumnya yang memiliki sirkuit yang sama dan menggunakannya dengan sedikit modifikasi. Karena sirkuit tersebut sebelumnya dirancang dan diuji pada pesawat yang sebenarnya, mereka sekarang dapat lebih fokus pada sirkuit baru.
Ini hanya sebuah skenario di mana saya mengikuti proses SIX Sigma untuk mengumpulkan semua data tentang kesalahan mereka dan menganalisis apa alasannya. Kemudian tingkatkan dengan perangkat lunak saya.
sumber
Menerapkan six sigma dalam pengembangan perangkat lunak disebut perangkat lunak six sigma. Six Sigma pada dasarnya dikembangkan untuk pembuatan, dalam proses pembuatannya membantu perusahaan untuk meningkatkan pengiriman, kualitas produk dengan biaya rendah. Padahal hal yang sama dapat diterapkan pada pengembangan perangkat lunak juga.
Menerapkan six sigma dalam pengembangan perangkat lunak menciptakan peningkatan berkelanjutan dalam pengembangan perangkat lunak. Menerapkan six sigma dalam pengembangan perangkat lunak menghasilkan integrasi dan pengujian perangkat lunak yang cepat, membantu menciptakan perangkat lunak bebas bug dan membantu manajemen program yang lebih efisien.
Namun, perangkat lunak enam sigma menjadi konsep baru yang Anda butuhkan pelatihan dari orang yang tepat. Program pelatihan enam sigma yang efisien dapat membantu Anda di sini. Untuk pelatihan six sigma online tentang lingkungan pengembangan perangkat lunak, saya sarankan http://www.6sigma.us /. Saya menyarankan mereka berdasarkan rekomendasi yang saya terima dari perusahaan lain.
sumber