Agile Modelleme – Çevik Modelleme

Agile Modelleme – Çevik Modelleme

Bu makalemizde Agile(Çevik) Modellemenin ne olduğuna, ne tür ilkelere sahip ve bu ilkelerin neler olduğuna değineceğiz. 2000 li yılların başında hızla artan bir şekilde Amerika ve Avrupa? daki yazılım şirketleri ve yazılım üreten ekipler tarafından başarıyla uygulanmaya başlanan metodoloji ülkemizdeyse söylenene göre % 60 oranla kullanılıyor. Oysa uzun zamandır yazılım dünyasının içinde olan biri olarak söyleyebilirim ki bu yöntembilimin herhangi bir uygulamasını kullanan bir şirket ne yazık ki göremedim. Bunun en büyük nedeni ise yazılım şirketleri sahiplerinin genelde yazılımcı olmaması ve tam anlamıyla söylemek gerekirse yazılımdan anlamamasından kaynaklanmaktadır. Parası olanın patron olduğu ülkemizde yazılım camiasını bu konuda kısır döngüye sokmuştur. Bu yazı dizisindeki amacım ise Agilea uzak ülkem yazılım insanlarına bir parçada olsa Agile(Çevik) modellemenin ne olduğunu anlatabilmek.

Agile Modelleme(AM), yazılım tabanlı sistemlerin dokümantasyonu ve modellemesi için uygulama tabanlı bir yöntemdir. Agile Modellemenin amacı; geleneksel modelleme yöntemlerinden daha esnek bir tavır içinde, yazılım geliştirme projeleri üzerinde uygulanabilecek değerler, ilkeler ve uygulamalarda birleşmektir. Agile Modelleme diğer agile metodolojileri için tamamlayıcıdır, modelleme ve dokümantasyonun nasıl yapılması gerektiğini tanımlar. AM iki farklı türde ilkelere sahiptir.

  •  Çekirdek İlkeler
  •  Tamamlayıcı İlkeler

Çekirdek İlkeler

  •      Basitlik
  •      Değişimi Benimsemek
  •      İleriyi Düşünmek
  •      Artımlı Değişiklik
  •      Proje Destekçilerinin Yatırım Getirisini En Yükseğe Çıkarmak
  •      Amacı Olan Bir Model
  •      Çoklu Model
  •      Kaliteli İş
  •      Hızlı Geribildirim
  •      En Önemli Amaç: Çalışan Yazılım
  •      Hafif Ağırlıklar ile Seyahat

 

Basitlik: Geliştirme süresince en basit çözümün en iyi çözüm olduğunu düşününüz. Projenizi fazladan karmaşıklaştırmayınız ya da bugün ihtiyacınız olmayan özellikleri modellerinize eklemeyiniz. Projenizi bugün ki ihtiyaçlarınız temelinde modelleyiniz ve ileride ihtiyaçlarınız değiştiğinde ya da arttığında modelinizi tekrar elden geçiriniz. Projenizin temellerini mümkün olduğunca basit tutunuz.

 

Değişimi Benimsemek: İhtiyaçlar zamanla değişir. İnsanların ihtiyaç anlayışları zamanla değişir. Proje destekçileri projenizin ilerleyişini değiştirebilirler, takımınıza yeni kişiler katılabilir, var olan takım üyeleriniz ayrılabilirler. Proje destekçileri görüşlerini değiştirebilirler, proje destekçilerinin amaçlarının ve başarı kriterlerinin potansiyel değişimi emeğiniz hakkındaki düşüncelerini de etkiler. Proje geliştirme çevresi sizin ilerleme çabalarınızı değiştirir; sonuç olarak yazılım geliştirmeye olan yaklaşımınız bu gerçeği yansıtmalıdır ve değişime ayak uydurmalıdır.

 

İleriyi Düşünmek: Takımınız son kullanıcılarınıza çalışan bir sistem geliştirmiş olsa bile projeniz yinede başarısız olarak düşünülebilir. Proje destekçilerinizin ihtiyaçlarını gidermenin bir bölümü projenin zamanla genişletilebilecek kadar güçlü olmasını sağlamaktır. Yazılım geliştirme oyununu oynarken ikincil amacınız gelecek devrenin oyununu oynamaktır. Belki de gerçekleşecek çabanız yazılım projenizin sonraki büyük sürümünü çıkarmaktır ya da basit operasyonlar ve geliştirmekte olduğunuz sürümün desteğidir. Bu maddeyi etkili kılmak için sadece kaliteli yazılım geliştirmek yetmez aynı zamanda yeterli dokümantasyon ve destek elementleri oluşturmalısınız ki böylece bir sonraki oyunu oynayan kişiler etkili olabilsinler. Düşünmeniz gereken etkenlerden biri de var olan takım üyeleriniz ve gelecekteki çabanızın ya da amacınızın takım için uygun olup olmadığıdır. Kısacası sisteminiz üzerinde çalışırken geleceği de düşünmelisiniz.

 

Artımlı Değişiklik: Modelinizi ilk denemeniz de doğru şekilde yapmak zorunda değilsiniz, aslında deneseniz bile başarılı olmanız pekte olası değildir. Ayrıca modelinizdeki her ince detayı yakalamak zorunda değilsiniz sadece bulunduğunuz zaman içinde yeteri derecede iyi yapmalısınız. Başlangıçta kapsamlı bir model oluşturma beyhude çabası yerine ufak bir model oluşturabilirsiniz. Belki de üst düzey bir model ve zamanla bu modeli evrimleştirirsiniz ya da basit olarak bu modeli bırakıp artımlı bir şekilde yeni model oluşturabilirsiniz.

 

Proje Destekçilerinin Yatırım Getirisini En Yükseğe Çıkarmak:  Proje destekçileriniz, ihtiyaçlarını karşılayacak bir yazılıma sahip olmak için zaman, para, tesis gibi kaynak yatırımında bulunurlar. Proje destekçileri yatırımlarının takımınız tarafından ziyan edilmesini değil, yatırımında bulundukları bu kaynakların mümkün olan en iyi şekilde kullanılmasını hak ederler. Ayrıca proje destekçileriniz bu kaynakların nasıl kullanılacağı ya da kullanılmayacağı üzerine son söz hakkına sahiptir. Eğer bu sizin yatırımınız olsaydı, nasıl kullanıldığını bilmek isterdiniz, değil mi?

 

Amacı Olan Bir Model: Yazılım geliştiricilerin çoğu, modeller, kodlar veya dokümanların yeterince detaylandırılmadığından ya da fazlasıyla detaylandırıldığından ve aynı şekilde bu modellerin, kodların ve dokümanların yeterince doğru olduğundan endişelenirler. Yazılım geliştiricilerin yapmadığı şey, oluşturdukları bu modellere, kodlara ve dokümanlara dışarıdan bakmak ve kendilerine bu modelleri, kodları ve dokümanları ne için ve kim için oluşturduklarını sormamaktır. Modellemeyle ilgili olan, belki de yazılım geliştiricilerin anlaması gereken şey, daha iyi görünümü olan bir yazılım, belki de uzman yazılım geliştirici ile iletişime geçip projeye olan yaklaşımını düzeltmek, belki de projenizi kullanacak, bakımını sağlayacak ve zamanla evrimleştirecek ya da geliştirecek kişiler için sisteminizi anlatan bir doküman hazırlamaktır. Eğer projeyi ne için ve kim için geliştirdiğinizi ifade edemiyorsanız o zaman neden bu zahmete katlanıyor ve proje geliştiriyorsunuz? Model geliştirmek için ilk adımınız geçerli bir amaç ve bunu kullanacak kişileri belirlemek olmalıdır sonrasında bu amaç ve bu kişiler temelinde ta ki yeterince doğru ve yeterince detaylandırana kadar projeyi geliştirmektir. Model amacına ulaştığında şimdilik onunla işiniz biter ve yeni bir şeye odaklanmalısınızdır; Örneğin, biraz kodlamayla bu modelin çalıştığını göstermek. Aynı zamanda bu prensip var olan bir model üzerinde yapılan değişiklikte de uygulanır.

 

Çoklu Model: Yazılımı geliştirirken birçok model kullanmaya ihtiyacınız olur çünkü her model yazılımın bir yönünü ifade eder. Modern bir iş uygulaması geliştirmek için potansiyel olarak hangi modellere ihtiyaç duyulur? Modern bir yazılımın karmaşıklığı düşünülürse, mantıksal modelleme araçlarında etkili olabilmek için geniş çeşitlilikte bir tekniğe sahip olmaya ihtiyaç duyulur. Önemli nokta şudur ki; herhangi bir sistem için bu modellerin hepsini geliştirmeye gerek yoktur fakat geliştirdiğiniz bu yazılım doğasına birebir bağımlı kalmak için en azından modellerin alt kümelerine ihtiyacınız olacaktır. Farklı sistemler farklı kümeler. Evde yapılan her iş gibi alet çantasındaki her bir aleti kullanmanıza gerek yoktur, zamanla işlerin çeşitliliği bir noktada her bir aleti kullanmanızı gerektirecektir. Tıpkı bazı aletleri diğerlerinden daha fazla kullanmanız gibi, bazı modelleri diğerlerinden daha fazla kullanacaksınız.

 

Kaliteli İş: Yarım yamalak yapılmış işlerden kimse hoşlanmaz. Bu işi yapan insanlar yaptıklarından hoşlanmazlar, çünkü yaptıklarıyla gurur duyamazlar. Bu işi gözden geçirmek, düzeltmek için gelen insanlar hoşlanmazlar çünkü anlamak ve güncelleştirmek zordur. Son kullanıcılar bu işten hoşlanmayacaklardır çünkü muhtemelen onların beklentilerine ve ihtiyaçlarına cevap vermeyecektir. Bu nedenle yapılan işler KALİTELİ olmalıdır.

 

Hızlı Geribildirim: Bir eylem ve bu eyleme yapılan geri dönüş arasındaki zaman kritik derecede önemlidir. Bir model üzerinde diğer insanlarla çalışırken, özellikle paylaşımlı bir modelleme teknolojisi üzerinde çalışırken (örneğin, beyaz tahta, CRC kartları ya da temel modelleme elementi olan yapışkan notlar) fikirleriniz hakkında neredeyse anında bir geri bildirim elde edersiniz. Müşteriniz ile yakın yakına çalışmak, ihtiyaçları anlamak, o ihtiyaçları analiz etmek ya da ihtiyaçlarını karşılayacak kullanıcı ara yüzleri geliştirmek hızlı geri bildirim için birçok fırsat sağlar.

 

Çalışan Yazılım En Önemli Amacımız: Yazılım geliştirmenin amacı yüksek kaliteli, çalışan ve projeyi destekleyenlerin ihtiyaçlarını karşılayan bir yazılım üretmektir. Birincil amaç konuyla ilgisi olmayan doküman hazırlamak, konuyla ilgisi olmayan yönetim araçları ya da modeller değildir. Bu amaca direk olarak katkıda bulunmayan her eylem her öğe sorgulanmalı ve kaçınılmalıdır.

 

Hafif Ağırlıklar ile Seyahat: Oluşturduğunuz ve saklamaya karar verdiğiniz her aracın, öğenin zaman içinde bakımının yapılması gerekecektir. Eğer 7 modeli saklamaya karar verirseniz her ne zaman bir değişiklik gerçekleşirse(yenilemeye, güncellemeye ihtiyaç duyulursa, takımdan yeni bir yaklaşım, fikir alınırsa, yeni bir teknolojinin adapte edilmesi gerekirse) bu değişikliğin etkisini 7 modelin tamamında düşünmeniz gerekecektir ve buna göre hareket etmeniz gerekecektir. Eğer 3 modelle devam etmeye karar verirseniz bu değişikliği yaparken açıkça daha az iş yapmanız gerekecektir ve sizi daha çok agile(çevik) yapacaktır. Çünkü daha hafif yüklerle hareket ediyorsunuz. Benzer olarak modelleriniz daha karmaşık ve detaylandırılmışsa yapılacak her değişikliği başarmak daha zor olacaktır(tek bir modelin yükü daha fazla olacaktır ve bu bakım sırasında daha büyük bir problem olacaktır.).

 

Tamamlayıcı İlkeler

  •      İçerik Sunumdan Önemlidir
  •      Açık ve Dürüst İletişim

 

İçerik Sunumdan Önemlidir: Her model sunumunun yapılabileceği birkaç yola sahiptir. Örneğin; kullanıcı ara yüz tanımları kâğıt üzerine ya da beyaz tahtaya çizilebilir, geleneksel prototip oluşturma araçları yada programlama dili kullanılabilir, resmi doküman hem görsel sunum hem de metin olarak kullanıcı ara yüz tanımlamasını içerir. Modelin dokümante edilmesine gerek olmadığı ilginç bir ifadedir. Hatta karmaşık diagram setleri bile bu dokümanın içinde olmayabilir bunun yerine diğer dokümanların içinde bulunabilir genellikle kaynak kodla ilgili dokümanlar içinde ama asla resmi doküman içinde bulunmaz. Önemli nokta doküman oluşturma ve dokumanı iyileştirme maliyetleri olmadan modellemenin faydalarından yararlanmaktır.

 

 

Açık ve Dürüst İletişim: İnsanların özgür olmaya ihtiyaçları vardır, öneriler sunabilmek için özgür olduklarını hissetmelidirler. Bu öneriler birkaç farklı şekilde karşımıza çıkabilir, belki birinin tasarımla ilgili yeni bir yaklaşımı vardır, birinin gereksinimler ile ilgili yeni bir düşüncesi olabilir ya da bu kötü bir haber olabilir. Örneğin deadlineın gerisinde kalmak ya da en basiti yapılmakta olan işin durumu. Açık ve dürüst iletişim insanların daha iyi karar vermelerini sağlar çünkü bilginin kalitesi insanların doğruluk ve dürüstlüğüne dayanır.

 

Kaynak : agilemodeling.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir