SCRUM Geliştirme Süreci

Önsöz

Günümüzde Bilgi Teknolojileri, satış, insan kaynakları, pazarlama, operasyon, üretim gibi birçok organizasyonel fonksiyon Scrum’ı ya da içerisindeki pratikleri kullanmaya başladı. Bu nedenle Scrum’ın doğuşu anlamına gelen bu makalenin Türkçe’ye çevrilmesi gerektiğini ve insanların bu doğuşu okuyarak Scrum’ın nereden nereye geldiğini bilmeleri gerektiğini düşündüm. Karşınızda SCRUM Geliştirme Süreci! Bu makalede ilkel Scrum’da fazlar olduğunu, Scrum kara kutu bir süreç olarak değerlendirildiğini, tanımlı süreçlerle karşılaştırıldığında nasıl avantajlarının olduğunu, Scrum’ın yöntem olarak adlandırıldığını aynı zamanda bir çerçeve olduğunu, ilk defa hangi şirketlerde kullanıldığını, planlama fazının adımlarını, geliştirme fazını (Sprint), kapanış fazını, Scrum kontrollerini, teslimleri ve proje takımı hakkında bilgileri göreceksiniz. Bu çok uzun cümleden sonra makalenin çevirisinden bahsedeyim çeviri genelde kolaydı, zaman zaman Ken Schwaber’in zorlayan uzun cümleleri olmadı değil, bu nedenle benimde bazı cümlelerim uzun olabilir. Eğer daha iyi ifade edilebileceğini düşündüğünüz bir cümle varsa lütfen geri bildirim verin.

Bütün çevirilerimi okuyan ve değerli geri bildirimleriyle daha iyi bir iş çıkarmama yardım eden Ayşenur Yılmaz’a teşekkür ederim. 🙂

Kitabı indirebileceğiniz bağlantı: SCRUM-Geliştirme-Süreci.pdf (770 indirme)

SCRUM Geliştirme Süreci

Özet

Sistem geliştirme için söylenen ve kabul edilen felsefe geliştirme sürecinin planlanabilir, tahmin edilebilir ve başarıyla tamamlanabilir iyi anlaşılan bir yaklaşım olduğudur. Bunun pratikte doğru olmadığı kanıtlanmıştır. SCRUM, sistem geliştirme süreçlerinin öngörülemez, karışık süreçler olduğunu varsayar. SCRUM, sistem geliştirme sürecini bilinen, çalışabilir araçlar ve teknikleri, bir geliştirme takımının sistem geliştirmek için plan yapmasıyla birleştiren bir aktiviteler kümesi olarak tanımlar. Bu aktiviteler gevşek olduğu için süreci yönetmek için kontroller ve doğasında olan risk kullanılır. SCRUM yaygın olarak kullanılan iteratif/artımlı nesne yönelimli geliştirme döngüsünün artırımıdır.

Anahtar kelimeler: SCRUM, SEI, Yetkinlik-Olgunluk Modeli, Süreç, Deneysel

1. Giriş

Bu makalede bir yazılım geliştirme sürecinden, sistem geliştirme yaklaşımlarının büyük çoğunluğunu kontrollü kara kutu olarak ele alan SCRUM’dan bahsediyoruz. Bunu, bu yaklaşımın neden esnekliği artırdığını ve hem başlangıç hem de geliştirme devam ederken keşfedilen ihtiyaçlara cevap verebilen bir sistem oluşturduğunu göstermek için karmaşıklık teorisiyle1 ilişkilendiririz.

Sistem geliştirme sürecini iyileştirmek için sayısız yaklaşım denenmiştir. Her biri “önemli verimlilik iyileştirmeleri” olarak lanse edilmiştir. Dramatik iyileştirmeler üretme konusunda hepsi başarısız olmuştur.2 Grady Booch’un söylediği gibi; “Biz bu durumu genelde yazılım geliştirme krizi olarak adlandırdık fakat açıkçası bu kadar uzun süren bir illet normal olarak adlandırılmalıydı.”

Bu makaledeki endüstriyel süreç kontrol konseptleri, sistem geliştirme alanına uygulandı. Endüstriyel süreç kontrolü, süreçleri ya “teorik (tamamıyla tanımlı)” ya da “deneysel (kara kutu)” olarak tanımlar. Bir kara kutu sürece, tamamıyla tanımlı süreç olarak davranıldığında tahmin edilemeyen sonuçlar ortaya çıkar. Bunun daha ileri bir uygulaması Ek 1’de anlatılmıştır.

Sistem geliştirme süreçlerinin büyük çoğunluğu tamamıyla tanımlı değildir fakat sanki öyleymiş gibi davranılır. Kontrolsüz öngörülemezlik gerçekleşir. SCRUM yaklaşımı bu sistem geliştirme süreçlerine kontrollü kara kutu olarak davranır.

Yüksek performanslı küçük takımlar ile yeni ürün geliştirme için SCRUM yaklaşımının varyasyonları ilk önce Takeuchi ve Nonaka tarafından Fuji-Xerox, Canon, Honda, NEC, Epson, Brother, 3M, Xerox ve Hewlett-Packard’ta gözlenmiştir. Benzer bir yaklaşım Borland’ta yazılım geliştirmeye uygulanmış ve C++ ile geliştirilen projeler içinde şimdiye kadar dokümante edilmiş en yüksek üretkenliğe ulaştığı Coplien tarafından gözlenmiştir. Daha yakın zamanlarda SCRUM sürecine yakın bir yaklaşım Sutherland tarafından Smalltalk ile geliştirilen ve Schwaber tarafından Delphi ile geliştirilen projelerde uygulanmıştır.

SCRUM yaklaşımı lider yazılım geliştirme şirketleri tarafından başarıyla kullanıldı. Endüstri analistleri SCRUM’ın, diğer yazılım geliştirme organizasyonlarının da Nesne Yönelimli (Object Oriented) tekniklerin ve araçların beklenen faydalarını gerçekleyebilmeleri için uygun bir yaklaşım olabileceğine inanıyor.

2. Genel Bakış

Sistem geliştirmede yeni yaklaşımımız hem tanımlı hem de kara kutu süreç yönetimine dayanır. Biz bu yaklaşıma SCRUM diyoruz (bakınız Takeuchi ve Nonaka, 1986), bu adı rubgy’deki Scrum’dan alıyor – Scrumdown kararı verildiğinde forvetlerin kafa kafaya verdiği pozisyon.

Daha sonra da tartışacağımız gibi SCRUM, başlangıçta Pittman tarafından dokümante edilmiş daha sonra Booch tarafından genişletilmiş nesne yönelimli yazılım tesliminin döngüsel ve artımlı yaklaşımın iyileştirilmiş halidir. Graham tarafından belirlediği proje çalışanları için kullanılan rollerin aynısı kullanılabilir, fakat bu yaklaşım takım sürecini yeni bir yolla organize eder ve yönetir.

SCRUM, mevcut sistemin ya da üretim prototipinin yönetim, geliştirme ve bakım yöntemidir. SCRUM, var olan tasarımı ve kodu (ki sınıf kütüphanelerinin varlığı nedeniyle nesne yönelimli geliştirmede durum çoğu zaman budur) benimser. SCRUM tamamıyla yeni ya da eski sistemlerin geliştirme eforlarını daha sonraları ele alır.

Yazılım ürün teslimleri aşağıdaki değişkenler temel alınarak planlanır:

  • Müşteri ihtiyaçları – Mevcut sistemin nasıl bir iyileştirmeye ihtiyacı var.
  • Zaman baskısı – Rekabette avantaj elde etmek için teslim hangi zaman diliminde yapılmalıdır.
  • Rekabet – Rekabet ne üzerinedir ve en iyisini yapmak için ne gereklidir.
  • Kalite – Yukarıdaki değişkenler hesaba katıldığında ihtiyaç duyulan kalite nedir.
  • Vizyon – Sistem vizyonunu yerine getirmek için bu aşamada hangi değişikliklerin yapılması gereklidir.
  • Kaynak – Hangi çalışanlar ve yatırım ulaşılabilir. Bu değişkenler yazılım iyileştirme projesinin başlangıç planını şekillendirir. Ancak proje süresince bu değişkenler de değişir. Başarılı bir geliştirme yöntemi bu değişkenleri ve onların evrimsel doğasını hesaba katmalıdır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir