• Sonuç bulunamadı

BÖLÜM 1: YAZILIM GELİŞTİRME SÜREÇLERİ, MODELLERİ ve PROJE

1.2. Yazılım Geliştirme Süreçleri

1.2.1. Proje Kabulü ve İlk Planlama

Planlama; her işletme için elzem olduğu gibi yazılım geliştiren firmalar için de elzemdir. Hatta çok daha gereklidir. Çünkü yazılım firmalarının üretim kaynakları ve ürünleri soyuttur. Takip edilmeye daha çok muhtaçtır. Planlama, yönetimin fonksiyonlarından ilki olarak kabul edilmiştir. Çünkü bir iş yapılmadan evvel o işin nasıl, ne miktarda, nerde, ne zaman, ne kalitede yapılacağının belirlenmesi gerekir ki ondan sonra diğer yapılacaklar belirlenebilsin. Planlama geleceğe dair yapılan çalışmalardır. Hem olması istenen hem de beklenti ve kestirimlere göre kararlar verilir. Daima gerçekleşenler ile beklentilerin güncellenerek ileriye doğru tekrar oluşturulması (dinamik planlama) ile en etkin kararlar alınabilir. Etkin kararlar verimli bir yönetim demektir.

Planlama; her ne kadar işin en başında yapılsa da zaman ilerledikçe içerden (hatalı üretim, zaman kaybı, vs.) veya dışardan (müşteri isteklerinin değişmesi, vs.) kaynaklı olarak değişimler söz konusu olacağından belirli aralıklarla tekrarlanmalıdır.

Yazılım firmalarında proje yönetimi için planlama işlemleri çok hayatidir. “Planlama,

proje hedeflerine ulaşmak ve müşteri ihtiyaçlarını karşılamak için izlenecek yöntemi, yapılacak işleri, kullanılacak kaynakları ve iş takvimlerini proje kısıtlarını da dikkate alarak belirlemektir. Planda kimin neyi, ne zaman, nasıl ve ne maliyetle yapacağı yer alır.” (Sarıdoğan, 2008)

Planlı, programlı, iyi belgelendirilmelerine rağmen bazı projeler beklenmeyen olay ve riskler yüzünden başarısız olabilir. Ancak plansız ve programsız başarılı olan neredeyse hiçbir proje mevcut değildir.

Yazılım projeleri, herhangi bir işlevi veya işlevler silsilesini yerine getirerek ihtiyaçları karşılayan ve sorunları çözmek için oluşturulurlar. Buna göre bir yazılım projesinin ele alınması için herhangi bir konuda ihtiyaca binaen bir talebin olması gerekmektedir.

25

Bunun akabinde de ihtiyacın detaylarının tanımlanması ve gerekli planlama işlemlerinin yapılması gerekmektedir. Bu tür proje başlangıçlarına “planlı istek” denir.

Diğer bir proje başlangıcı ise “plansız istek” olarak tanımlanan şekildir; ki talep edenin küçük istekleri devam eden bir başka proje içindir, ancak istekleri başka bir proje gerektirir. İsteklerin tanımlanmaması veya geç tanımlanmasından dolayı yazılım geliştirme süreçlerinin başlangıç aşamalarının gerçekleştirilmemiş olması proje maliyetini yükselten etki yaparak bir kaosa sebep olmaktadır.

Proje kabulü, bir yazılım geliştirme sürecinin ilk aşamasıdır. Müşteri isteklerinin dinlendiği ve yazılım ekibi ile müzakerelerin yapılarak genel anlamda anlaşmaların sağlandığı aşamadır. Buna uygun olarak proje başlangıçlarında müşteri isteklerini olabildiğince tanımlayıp kayıt altına almak gereklidir; ki planlama aşamasında rasyonel hesaplar yapılabilsin. “İyi bir gereksinim dokümanı şu özelliklere sahip olmalıdır:” (Atbaş, 2012: 20)

Doğru: Doğruluk önemlidir ancak güncel tutularak uzun süre doğru kalması gerekmektedir.

Tartışmasız: Bir gereksinim herkes tarafından aynı şekilde yorumlanmalıdır. Taraflar (müşteri ve yazılım ekibi) farklı anlamlar çıkartmamalıdır.

Tam: Yazılımın gerçekleşmesi için gerekli olan tüm konulara değinilmelidir.

Tutarlı: Gereksinim dokümanı içinde her maddenin diğer maddeler ile uyumlu olması gerekmektedir. Gerek mantık gerekse yazım biçimi olarak uyum olmalıdır.

Öncelik Sıralı: Gereksinimler gerçeklenme önceliklerine göre gruplandırılır ve sıralanırsa proje takvimi açısından çok değerli bir iş yapılmış olur. Önemli gereksinimler önce, daha az önemliler daha sonra gerçeklenir. Gereksinim dokümanında öncelik bilgisi de vermelidir.

Doğrulanabilir: Gereksinim olarak doğrulanması güç, muğlak ifadeler kullanılmamalıdır.

Değişikliğe uygun: Gereksinimler ve açıklamalar basit, ufak ve mümkün olduğunca birbirlerinden bağımsız olmalıdır. Ayrıca bir gereksinim birçok yerde

26

tekrarlanmamalıdır. Böylece gereksinim dokümanı değiştirilmek istendiğinde kolayca değiştirilebilmelidir.

İzlenebilir: Gerek sistem gereksinimlerine gerekse testlere olan ilgileri açıkça belirtilmelidir. Bir yazılım gereksiniminin hangi sistem gereksiniminden doğduğu bilinirse gerçekleme daha tutarlı ve hatasız yapılabilir. Öte yandan hangi testin bu gereksinimi test ettiği bir yerde yazılı olursa testler esnasında gözden kaçan yani test edilmemiş gereksinim kalmaz.

Gerçeklenebilir: Gereksinimlerin gerçekten Gerçeklenebilir olduğunun önceden düşünülmesi faydalıdır. Gereksinimler yazılırken bile bir ön tartışma yapılıp bu gereksinimlerin eldeki imkânlarla başarılıp başarılamayacağı düşünülmelidir.

Eğer test adımlarını yazmakta zorlanıyorsanız büyük ihtimalle kalitesiz gereksinimleriniz vardır. Ayrıca gereksinim dokümanının aşağıdaki konularda bilgi vermesi gerekmektedir: (Atbaş, 2012: 22)

İşlev: Yazılımın ne yapması isteniyor? Amacı nedir?

Kullanım senaryoları: Modern gereksinim dokümanları insan-makine arasındaki kullanım senaryolarını da içerir.

İş akışı: Hem modern hem de klasik gereksinim dokümanlarında akış

senaryoları, cihazların iletişim protokolleri, mesajlaşma akışına dair bilgiler yer alır.

Dış arayüzler: Yazılımın insanlarla olan ve diğer cihaz, sistem donanımı, diğer yazılımlarla olan arayüzü

Performans: Hız, düzgün çalışma oranı, cevap verme süresi

Yazılımın Özellikleri: Taşınabilirlik, doğruluk, bakımının yapılabilmesi, güvenlik vb. kriterler.

Gerçekleme üzerindeki kriter ve kısıtlamalar: Uygulanan standartlar, uygulama yazılım dilinin adı, veri tabanı politikası, kaynak sınırlamaları, işletim sistemi ortamı

İşe özel kurallar: Bu kısımda işin karakteristikleri, kendine has özellikleri anlatılır.

27

Diyagramlar: Gereksinim dokümanında sadece gereksinim maddeleri bulunmaz, ayrıca teknik detayları veya büyük resmi daha iyi anlamaya yarayan şemalar, şekiller, akış diyagramları da bulunmalıdır.

“Planlama işleminde genel olarak proje hedeflerine ulaşmak için, belirlenmiş süre ve

mali kısıtları dikkate alarak, izlenecek yöntem, yapılacaklar, kullanılacak kaynaklar ve süre takvimlerinin belirlenmesidir. İstekler ve ürün özellikleri ayrıntılara bölünerek yapılacak görevler ortaya çıkar. İhtiyaç duyulan kaynakları belirlemek, tedarik etmek ve görevlendirmek bunu takip eder.” (Nizam, 2014: 39)

Planlamanın hedeflediği alanlar ve buna bağlı yararlar aşağıda sıralanmıştır. (West, 2002: 9)

• Ürünün ortaya çıkacağı zaman ve aşamaları özet olarak tarif eder. • Proje hedeflerini net şekilde ortaya koyar.

• Ekip, yönetici ve diğer paydaşlar arasında bir iletişim köprüsü oluşturur. • Görevleri, görevler arası ilişkileri ve kaynak ihtiyacını gösterir.

• Proje yöneticisinin yapılanları kontrol edebilmesini sağlar. • Kaynaklara ne zaman ihtiyaç duyulacağını gösterir.

• Kontrol noktalarını ve yapısını tanımlar. • Projenin maliyeti hesaplanabilir.

Planlama aşamasında geçirilen zamanın maliyeti çok tartışmamalara sebep olmuştur ancak projenin ilerleyen aşamalarında gözden kaçan bir talep veya uyarlama işleminin proje maliyetine olan etkisi daha fazla olmaktadır. Bu sebeple planlama aşaması projenin başlangıcı olmasına rağmen asıl yönetsel kararların alındığı çok önemli bir aşamadır.