-

MIS Eğitimi-Yazılım Mühendisliği ve İşletmelerde Yazılım Geliştirme Yaklaşımları-Proje Yönetimi

MIS eğitimizin son haftasında çok beğendiğim eğitimlerden biri olan  Yrd.Doç.Dr.Gülfem Işıklar Alptekin’in “Yazılım Mühendisliği ve İşletmelerde Yazılım Geliştirme Yaklaşımları” konulu sunumu ile ilgili aklımda yer edinenleri aktarmak isterim.

Yazılım geliştirme süreçleri üzerine konuştuk.En çok kullanılan yazılım geliştirme süreci modelleri:

  • Çağlayan/Şelale(Watefall Model)
  • Evrimsel Geliştirme(Evolutionary/Iterative/Agile Development)
  • Bileşen Esaslı Geliştirme(Component-based Software Engineering)
  • Kitle Kaynak(Crowdsourcing)

Waterfall Model

Yazılımı kesin çizgiler ile aşamalara bölen bir modeldir.

Waterfall model yazılımı;

  • İhtiyaç analizi
  • Sistem ve yazılım tasarımı
  • Uygulama ve birim testleri
  • Entegrasyon ve testleri
  • Bakım

diye ayırır.

Her aşamadan sonra dökümanı yazılmalıdır.Bu model daha çok ihtiyaçların çok iyi bilindiği ve değişiklik yapılmasının pek beklenmediği durumlar için uygundur.Bu yüzden ihtiyaçların çok iyi belirlenmesi önemlidir,çünkü bu modelde geçmişe yönelik bir çalışma yapılmaz.Savunma sanayi projelerinde ya da kamu projelerinde bu model daha çok tercih edilir.

Waterfall modelinde yapılan yazılımdaki hatalar test aşamasında ortaya çıkar,bu sırada zaman bayağı ilerlemiştir, başa dönüp düzeltme yapmak çok maliyetlidir,aynı şekilde eğer isterlerde yanlışlık varsa ortaya istenenden farklı çok değişik bir yazılım çıkmış olabilir :) Bu modelde süreç ilerlerken değişiklik yapmanın zor olması ve bir aşama bitmeden diğer aşamanın başlayamaması dezavantaj olarak söylenebilir.

Evrimsel Geliştirme(Evolutionary Development)

Bu model daha çok küçük ve orta büyüklükteki etkileşimli projelerde veya büyük sistemlerin bazı bölümlerinde tercih edilir.Bu modelde bir uygulama yazıp kullanıcıdan gelen yoruma göre uygulama iyileştirilip tekrar kullanıcıya sorulur, süreç sürekli böyle devam eder.Yazılım tamamlanana kadar ortaya birçok versiyon çıkar.Sürecin müşteri onayı ve kontrolünde gerçekleşmesi avantajdır, fakat genel bir plan olmadığı için sürecin ileri evreleri öngörülemez.Genelde bu model ile geliştirilen sistemlerin ana yapısı sağlam değildir.Waterfall modelin aksine burada düzenli bir dökümantasyon yoktur,dökümantasyon yerine çalışan bir uygulama oluşur.Proje yöneticileri gelişmeyi yönetmek için düzenli rapor görmek isterler, bu da onları sıkıntıya sokabiliyor.

Bileşen Esaslı Geliştirme(Component-Based Software Development)

Bu modelde daha önceden yazılmış bileşenler sistematik bir biçimde diğer projelerde de kullanılır.Bu süreçteki adımlar aşağıdaki gibidir:

  • Bileşen analizi
  • İhtiyaçların düzenlenmesi
  • Tekrar kullanılan bileşenlerle sistem tasarımı
  • Geliştirme ve enterasyon

Bu model daha fazla kullanılmaya başlanıyor.

Kitle Kaynak(Crowdsourcing)

Bu model aslında çok yerde geçmiyor,hocamızın kendi derlemelerinden anlattığı bir modeldir.Bu modelde topluluğa yazılım geliştirtmek gibi bir yol izleniyor.Hocamız bu modeli çok iyi örnekleyen Topcoder ismindeki bir topluluktan bahsetti .Şirketler Topcoder’a yazılım ihtiyaçlarını iletiyor,onlar da bunun analizini yapıp tasklara bölüyorlar,daha sonra her bir task için yarışma yapıp ödül belirliyorlar.Siteye kayıtlı olan yazılımcılar bu task içi yazılım üretiyor ve gönderiyorlar, en iyi yazılım seçiliyor ve yazılımcıya ödül veriliyor,diğer yazılımcılara da puan veriliyor.Böylece işin maliyetini çok düşürmüş oluyorlar, hem de ortaya kaliteli yazılım çıkmış oluyor.Ben de bu topluluğu ve yöntemi  ilk defa duydum ama maliyetler düşük olduğu için şirketler de bu yöntemi tercih ediyormuş ve yazılımclar için de freelance çalışma olanağı doğmuş oluyor. Topcoder’ın yaptıkları çok daha kapsamlı aslında ama ben en genel hali ile bahsettim.

Çevik Yaklaşımlar ve Scrum 

Scrum ile ilgili internette sayısız kaynak bulabilirsiniz amacım Scrum’ı baştan sona anlatmak değil de,hiç fikri olmayan birinin baktığında fikir edinmesini sağlayacak nitelikte açıklamalar olacaktır.

Scrum metodunda iş parçalara bölünüyor,o parçaların her biri ekipler tarafından yapılıyor,her bir iterasyonda ortaya bir ürün çıkıyor,bu ürün müşteriye gösteriliyor sonra başka kısmına geçiliyor.

Bu çalışma boyunca Product Owner da süreçlere dahil edilir,buradaki Product Owner müşteriyi temsil eden kişidir.Scrum metodolojisinde iş bölümlerinin her birine sprint deniyor,sprintler genelde 1-4 hafta olabiliyor.Her bir sprintde çalışacak ekip üyeleri belirlenir ve her bir sprintde bir Scrum Master olur.Scrum Master süreci yöneten kişidir ve günlük Scrum toplantılarına öncülük eder.Sprintin ilk toplantısında; yapılacak işler görev dağılımları ve süreler belirlenir. Sprint süresi uzatılmaz, yetişmeyen işler diğer sprinte aktarılır.Scrum’ı diğer  metotlardan ayıran özelliklerden biri olarak; ekip elemanları birden fazla rolde yer alabilirler veya her sprinde farklı işler yapıyor olabilirler.Bu arda her sprintdeki elemanlar farklı olabiliyor.Günlük toplantılar olduğunu söyledim, bu günlük toplantılar genelde 10-15 dakika olabiliyor,sabah işe başlamadan ekip üyeleri toplanıp o gün neler yapacaklarını,problemleri varsa dile getirebilecekleri minik toplantı yapıyorlar,bu toplantıları scrum master yönetir.Bizim ofiste de her sabah bir tahta önünde ellerinde çay kahve minik notları tahtaya yapıştırıp konuşanları falan görüyorum.Onların da scrum uyguladıklarını düşünüyorum :) biraz özeniyorum açıkçası,scrum uygulayan bir ekiple çalışmak isterdim.

Scrum metodu Amerikan futboluna benzetilebilir,herkes itiş kakış bir araya geliyor ve takım oyunu oynuyor.Waterfall ise bir bayrak yarışı gibidir,aşamalıdır, bir aşama biter diğeri başlar.

Scrum uygulayan bilindik firmalar arasında Yahoo,Bbc,Siemens,Ikea,Microsoft,Nokia,IBM…sayılabilir.

Bir de Scrum-But olarak adlandırlan metod varmış,bunda Scrum kısmi olarak uygulanıyor,bir şeyler eksik kalıyor.

Bu eğitimde aynı zamanda UML(Unified Modeling Language),LIS(Legacy Information Systems),yazılım test süreçleri,test çeşitleri üzerine konuştuk.MIS eğitimi boyunca en faydalı bulduğum oturumlardan bir tanesi oldu.Hocamıza çok teşekkürler.

Geçtiğimiz hafta eğitimimiz son buldu,genel olarak faydalı bir eğitim olduğunu söyleyebilirim.Olayların dışına çıkıp büyük çerçeveyi görmemi sağladı.Çalıştığım sektör ile ilgili daha fazla bilgi sahibi oldum,süreçleri öğrendim.Eğitim Kordinatörü Temel Öncan Hocamıza ilgisinden dolayı teşekkürler.Eğitim ile ilgili sertifika sınavına da girdim, sınavı geçmişim :)Böylece eğitimde mutlu son oldu :)