Mikado Metodu
Çevik (Agile) yazılım geliştirme yaklaşımlarını kullanmaya ve bu yaklaşımlarla geliştirmeye başladığınız zaman eninde sonunda karşınızda bir duvar gibi büyüyen "Refactoring" ile karşı karşıya kalacaksınızdır. İşte bu konuda araştırmalar yaparken karşıma Mikado kitabı çıktı.Mikado kitabının ön sözünde aşağıdaki yazı vardı. Belki de kitaba bakmamı bu ön söz sağlamıştır demek pekte yalan olmaz.
Çevik (Agile) yazılım geliştirme yaklaşımlarını kullanmaya ve bu yaklaşımlarla geliştirmeye başladığınız zaman eninde sonunda karşınızda bir duvar gibi büyüyen “Refactoring” ile karşı karşıya kalacaksınızdır. İşte bu konuda araştırmalar yaparken karşıma Mikado kitabı çıktı. Mikado kitabının ön sözünde aşağıdaki yazı vardı. Belki de kitaba bakmamı bu ön söz sağlamıştır demek pekte yalan olmaz.
“Mikado Metodu; yönetilebilir parçalardaki kaçınılmaz karmaşıklıkların üstesinden gelmenizi sağlar. Tom Poppendieck”
Karmaşık ve eski sistemler ile uğraşıyorsanız veya can kurtarıcı olarak bir firmaya yazılımcı olarak başladıysanız. Büyük olasılıkla karşınızda karma karışık spagettiye dönmüş bir sistem olacaktır. Mikado ismi aslında bir oyundan gelmektedir ve alınmak istenen çubuk dışında başka çubuklara dokunmadan ve hareket ettirmeden olabildiğince çok çubuk toplamak üzerine kurulu bir oyundur. Asya toplumuna ait olmakla birlikte şuan ki ismi Japoncadır.
Bir sistem büyük ve karmaşık hale geldiğinde yeni işlevlerin eklenmesi, yeni yasal gereksinimleri veya yeni bir iş modeli elde etmek için sistemde iyileştirmeler yapmanız gerekebilir. Hatta bazen sistemi daha anlaşılır ve stabil yapmak içinde bu tür işler yapabiliriz. Küçük değişiklikleri gerçekleştirirken bunları aklımızda tutarak yapabiliriz. Fakat büyük değişiklikler işin içine girince bağımlılıklar veya kod deniziyle karşı karşıya kalmışız demektir. İşte tamda burada Mikado Metodu iş değer odaklı iyileştirmeleri görselleştirmenize, planlamanıza ve gerçekleştirmenize yardımcı olabilir.
Mikado Metodu
- Kod tabanına kararlılık
- İletişim ve işbirliğini arttırır
- Hafif ve hedefe odaklılık gibi faydalar sağlar
Mikado Metodu 4 temelden oluşur. Hedef belirlemek, deneyler yapmak, görselleştirmek ve geri almak . Bu kavramlar yöntemin özünü oluşturur. Aslına bakarsak bu kavramlar yeni şeyler değil ama hepsi birlikte kullanılınca baz kodumuzu bozmayan mikado tekniğini oluştururlar.
Hedef Belirlemek
Hedefi belirlemek için sistemin gelecekte nasıl olmasını istediğinizi düşünebilirsiniz. Örnek vermek gerekir ise bir projeye atandınız ve sizden bir değişiklik veya sistemde düzenleme yapılmasını istendi. Bu değişiklik ile sorumlulukların ayrıştırılması (Separation of Concerns) gerektiğini fark ediyorsunuz. Yani sistemi sorumluluklarına göre sınıflara ayırmanız gerekiyor. Artık bir başlangıç noktamız var. Yolumuza devam edelim.
Deneyler Yapmak
Deney, bilimsel yönteme göre yapılan bir kuramın testidir. Mikado açısından bakılacak olursa sistemin hangi bölümlerinin bozulduğunu görebilmek için kodu değiştirmek için yapılan denemeler olarak bakabiliriz. Ben bu işlemler yapılırken git veya benzeri kaynak kod repolarının bu iş için daha uygun olduğunu düşünüyorum. Denemeler sonunda çıkan hatalar bize aslında değişim için neler gerekli olduğunu da gösterecektir.
Görselleştirme
Bu kısımda yapacağımız değişikleri gösteceğimiz bir harita olarak düşünebiliriz. Atacağımız adımları çıkarmamız ve denemelere göre güncellememizdir.
Geri Alma
Yazılım ile uğraşıyorsak kopyala yapıştırdan sonraki en güzel özellik geri alma işlemidir. Keşke gerçek hayatta da olsa diyebileceğimiz bir özelliktir.
Diyelim ki, yeniden yapılandırmaya başladık ve sistemde ilk değişikliklerimizi yaptık.Sonrada sistemi çalışmaz bir halde kaydettik. Mikado Tekniği mutlaka çalışan bir örnekle devam etmemizi ister. Yani sistemi bu şekilde bırakamayız. Burada ki çalışmaz halde bırakmaktan kastımız. Kodumuzu derleyemiyoruz veya yazdığımız testleri çalıştıramıyoruz olarak kabul edebilirsiniz. Yani kod derleniyor ama testlerden geçemiyor ise bu sistemi kararlı haline geri almalıyız yani Geri Alma işlemini yapmalıyız. bu külfet gibi görünse de sistemi veya baz kodunuzu asla bu durumda bırakmamalıyız. Çünkü bu ileride daha büyük sorunlara yol açabilir. Sonuç olarak sistemin durumu artık güvenli bir ilerlemeye izin vermediğinden kendimizi kötü duruma düşürürüz. Bilinen son iyi duruma geri dönme zamanıdır. Son değişiklikleri geri almalıyız.
Mikado Metodu ne zaman kullanılır
Başarılı bir yazılım geliştiricisi olmak istiyorsak, var olan bir sistemin istenen yeni bir şekle ve olması gereken haline nasıl dönüştürüleceğini öğrenmemiz gereklidir. Bir çoğumuz yeniden yapılandırma veya artık değişiklik yapmadan bir kodları düzeltilmesi gerekliği gibi durumlarda kalırız. Şu bir gerçek ki proje büyüdükçe yapılanları aklımızda tutamaz hale geliriz. Daha da vahimi hiç bilmediğimiz bir deryada da olabiliriz. Bu durumlar ister istemez bizi ve çalıştığımız paydaşları da sinirli hale getirir. Çünkü iyileştirmeler ilerlemeyi de durdurmaktadır. İşte Mikado tekniği bu durumlar için geliştirilmiştir yani mimariyi küçük adımlarla değiştirmeye yardımcı olur ve aynı zamanda yeni özelliklerin geliştirilmesi ve sürekli olarak sunulmasına izin verir.
Kaynaklar
methodsandtools.com
The Mikado Method Kitabı