BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ 7 – Yazılım Mühendisliği ve Metodolojiler

BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ 7 - Yazılım Mühendisliği ve Metodolojiler

Bilgisayar Sistemleri; donanım, yazılım ve kullanıcılardan oluşur. Yazılım sadece belirli bir işlemi yapan bir program değildir. Yazılım belirli bir mantık dahilinde insanlar tarafından oluşturulan program, veri ve belgeler topluluğudur.
Veri: Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri dış ortamdan alınabileceği gibi, yazılım içerisinde de üretilebilir. Yazılımın temel amacı “veri”yi belirli algoritmalar kullanarak “bilgi”ye dönüştürmektir.
Program (kod): Yazılımın ana çıktısı sonuçta bir bilgisayar programıdır. Program işletime alındıktan sonra bakım çalışmaları sürekli olarak gündeme gelir.Bunun iki temel nedeni:

  •  hiç bir program bütünüyle her olasılık göz önüne alınarak test edilemez.
  •  işletmeler doğaları gereği dinamik bir yapıya sahiptir ve zaman içerisinde sürekli olarak yeni istek ve gereksinimler ortaya çıkabilmektedir.

Belge (dokümanlar): Yazılım üretimi bir mühendislik disiplini gerektirir. Mühendislik çalışmalarında izlenen yol ve kullanılan yaklaşımlar yazılım üretimi için de geçerlidir. Yazılım üretimi sırasında, bir çok aşamada (planlama, analiz, tasarım, gerçekleştirim, vb.) yapılan ara üretimlere ait bilgiler belli bir düzende belgelenmelidirler.
Yazılım mühendisliği bir yöntemler, teknikler ve araçlar kümesi olarak değerlendirilebilir. Yazılım mühendisliğinin hedefi; yazılım üretimindeki karmaşıklıkları gidermektir. Geçmişte kullanılan iş akış şemaları gibi yöntemler günümüzde yetersiz kalmaktadır. Ayrıca, yazılım üretimi işi tek kişinin başarabileceği boyuttan çıkmış ve bir takım işi biçimine dönüşmüştür. Yazılımın daha çok mantıksal boyutuyla ilgilenir ve işi insanlarla ilişkiyi gerektirir. Temel hedefi; üretimin en az maliyet ve en yüksek nitelikte yapılmasını sağlamaktır. Programcı değildir. Ancak programcının tüm yeteneklerine sahiptir. Sistem analisti de değildir. Farkı; analist sadece sistemin analiz aşaması ile ilgilenirken, yazılım mühendisi tüm aşamaların içindedir.

Yazılım Geliştirme Yaşam Döngüsü ve Modeller

Herhangi bir yazılımın, üretim aşaması ve kullanım aşaması birlikte olmak üzere geçirdiği tüm aşamalar olarak tanımlanır. Yazılım işlevleri ve ihtiyaçlar sürekli değiştiği ve geliştiği için bir döngü biçiminde düşünülür. Yazılım yaşam döngüleri tek yönlü, doğrusal olarak düşünülmemelidir.
Planlama: Personel ve donanım gereksinimlerinin çıkarıldığı, fizibilite çalışmasının yapıldığı ve proje planının oluşturulduğu aşamadır.
Analiz: Sistem gereksinimlerinin ve işlevlerinin ayrıntılı olarak çıkarıldığı aşama. Var olan işler incelenir, temel sorunlar ortaya çıkarılır.
Tasarım: Belirlenen gereksinimlere yanıt verecek yazılım sisteminin temel yapısının oluşturulduğu aşamadır.

  • mantıksal; önerilen sistemin yapısı anlatılır (akış şemaları) 
  • fiziksel; yazılımı içeren bileşenler ve bunların ayrıntıları (ekran tasarımları) 

Gerçekleştirim: Kodlama, test etme ve kurulum çalışmalarının yapıldığı aşamadır.
Bakım: Hata giderme ve yeni eklentiler yapma aşaması (teslimden sonra).

Gelişigüzel Model

Herhangi bir kuraldan bağımsız, yalnızca geliştiren kişiye bağımlı hatta onun bile bir zaman sonra anlayamadığı ve değiştirme zorluğu yaşadığı modeldir. 60’lı yıllarda tek kişinin ürettiği programlar böyledir. Basit öğrenci projeleri böyledir.
Barok Modeli
  • İnceleme
  • Analiz
  • Tasarım
  • Kodlama
  • Modül Testleri
  • Altsistem Testleri
  • Sistem Testi
  • Belgeleme
  •  Kurulum
Yaşam döngüsü temel adımlarının doğrusal bir şekilde geliştirildiği model. 70’li yıllarda kullanılan model. Belgelemeyi ayrı bir süreç olarak ele alır, ve yazılımın geliştirilmesi ve testinden hemen sonra yapılmasının öngörür. Halbuki, günümüzde belgeleme yapılan işin doğal bir ürünü olarak görülmektedir. Aşamalar arası geri dönüşlerin nasıl yapılacağı tanımlı değil. Gerçekleştirim aşamasına daha fazla ağırlık veren bir model olup, günümüzde kullanımı önerilmemektedir

Çağlayan Modeli

Yaşam döngüsü temel adımları baştan sona en az bir kez izlenerek gerçekleştirilir. 70’li yılların ortalarında yapısal programlama ile kullanılmaya başlanan bu modelin kullanımı günümüzde azalmıştır. Belgeleme üretimin doğal bir sürecidir. İyi tanımlı projeler ve üretimi az zaman gerektiren projeler için uygundur. Belirsizlik oranı düşükse ve az zaman alacağı öngörülüyorsa (küçük boyutlu kamu sistemleri, personel, bütçe vb.) kullanımı önerilir.
Gerçek yaşamdaki projelerin çok azı yineleme gerektirmez. Yazılımın kullanıcıya ulaşma zamanı oldukça uzundur. İhtiyaçların tamamını tanımlamak zordur, çoğunlukla sonradan ortaya çıkar. Bu nedenle yanlışların düzeltilme ya da eksikleri giderilme maliyetleri oldukça yüksektir. Yazılım üretim ekipleri bir an önce program yazma, çalıştırma ve sonucu görme eğiliminde olduklarından, bu model ile yapılan üretimlerde ekip mutsuzlaşmakta ve kod yazma dışında kalan   (ve iş yükünün %80’ini içeren) kesime önem vermemektedirler. Üst düzey yönetimlerin ürünü görme süresinin uzun oluşu, projenin bitmeyeceği ve sürekli gider merkezi haline geldiği düşüncesini yaygınlaştırmaktadır.

V Süreç Modeli

Sol taraf üretim, sağ taraf sınama işlemleridir. V süreç modelinin temel çıktıları;
Kullanıcı Modeli: Geliştirme sürecinin kullanıcı ile olan ilişkileri tanımlanmakta ve sistemin nasıl kabul edileceğine ilişkin sınama belirtimleri ve planları ortaya çıkarılmaktadır.
Mimari Model: Sistem tasarımı ve oluşacak alt-sistem ile tüm sistemin sınama işlemlerine ilişkin işlevler.
Gerçekleştirim Modeli: Yazılım modüllerinin kodlanması ve sınanmasına ilişkin fonksiyonlar.
Belirsizliklerin az, iş tanımlarının belirgin olduğu BT projeleri için uygun bir modeldir.
Model, kullanıcının projeye katkısını arttırmaktadır.
BT projesinin iki aşamalı olarak ihale edilmesi için oldukça uygundur:
İlk ihalede kullanıcı modeli hedeflenerek, iş analizi ve kabul sınamalarının tanımları yapılmakta,
İkinci ihalede ise ilkinde elde edilmiş olan kullanıcı modeli tasarlanıp, gerçekleştirilmektedir.

Helezonik Model

Risk Analizi Olgusu ön plana çıkmıştır. Her döngü bir fazı ifade eder. Doğrudan tanımlama, tasarım,… vs gibi bir faz yoktur. Yinelemeli artımsal bir yaklaşım vardır. Prototip yaklaşımı vardır.
  • Planlama: Üretilecek ara ürün için planlama, amaç belirleme, bir önceki adımda üretilen ara ürün ile bütünleştirme
  • Risk Analizi: Risk seçeneklerinin araştırılması ve risklerin belirlenmesi
  • Üretim: Ara ürünün üretilmesi
  • Kullanıcı Değerlendirmesi: Ara ürün ile ilgili olarak kullanıcı tarafından yapılan sınama ve değerlendirmeler
Helezonik modelin avantajları

Üretim süreci boyunca ara ürün üretme ve üretilen ara ürünün kullanıcı tarafından sınanması temeline dayanır. Yazılımı kullanacak personelin sürece erken katılması ileride oluşabilecek istenmeyen durumları engeller. Gerek proje sahibi, gerekse yüklenici tarafındaki yöneticiler, çalışan yazılımlarla proje boyunca karşılaştıkları için daha kolay izleme ve hak ediş planlaması yapılır. Yazılımın kodlanması ve sınanması daha erken başlar.

Evrimsel Geliştirme Modeli

İlk tam ölçekli modeldir. Coğrafik olarak geniş alana yayılmış, çok birimli organizasyonlar için önerilmektedir (banka uygulamaları). Her aşamada üretilen ürünler, üretildikleri alan için tam işlevselliği içermektedirler. Pilot uygulama kullan, test et, güncelle diğer birimlere taşı. Modelin başarısı ilk evrimin başarısına bağımlıdır. Üretilen her yazılım sürümü birbirini kapsayacak ve giderek artan sayıda işlev içerecek şekilde geliştirilir. Öğrencilerin bir dönem boyunca geliştirmeleri gereken bir programlama ödevinin 2 haftada bir gelişiminin izlenmesi (bitirme tezleri). Uzun zaman alabilecek ve sistemin eksik işlevlikle çalışabileceği türdeki projeler bu modele uygun olabilir. Bir taraftan kullanım, diğer taraftan üretim yapılır.

Araştırma Tabanlı Model

Yap-at prototipi olarak ta bilinir. Araştırma ortamları bütünüyle belirsizlik üzerine çalışan ortamlardır. Yapılan işlerden edinilecek sonuçlar belirgin değildir. Geliştirilen yazılımlar genellikle sınırlı sayıda kullanılır ve kullanım bittikten sonra işe yaramaz hale gelir ve atılır. Model-zaman-fiyat kestirimi olmadığı için sabit fiyat sözleşmelerinde uygun değildir.

Bir Metodolojide Bulunması Gereken Temel Bileşenler (Özellikler)
  • Konfigürasyon yönetim modeli
  • Maliyet yönetim modeli
  • Kalite yönetim modeli
  • Risk yönetim modeli
  • Proje yönetim modeli
  • Değişiklik yönetim modeli
  • Kullanıcı arayüz ve ilişki modeli
  • Standartlar
  • Ayrıntılandırılmış bir süreç modeli
  • Ayrıntılı süreç tanımları
  • İyi tanımlı üretim yöntemleri
  • Süreçlerarası arayüz tanımları
  • Ayrıntılı girdi tanımları
  • Ayrıntılı çıktı tanımları
Metodoloji bileşenleri ile ilgili olarak bağımsız kuruluşlar (IEEE, ISO, vs.) ve kişiler tarafından geliştirilmiş çeşitli standartlar ve rehberler mevcuttur. Kullanılan süreç modelleri ve belirtim yöntemleri zaman içinde değiştiği için standart ve rehberler de sürekli güncellenmektedir. Bir kuruluşun kendi metodolojisini geliştirmesi oldukça kapsamlı, zaman alıcı ve uzmanlık gerektiren bir faaliyet olup, istatistikler yaklaşık 50 kişi/ay’lık bir iş gücü gerektirdiğini göstermektedir.
Yazılımın Doğrulanması ve Geçerlenmesi
Geliştirilecek bilgi sistemi yazılımın doğrulanması ve geçerlenmesi işlemi üretim süreci boyunca süren etkinliklerden oluşur. Bu etkinlikler;
  • Her bir etkinlik sonunda alınan çıktıların tamam, doğru, açık ve tutarlı olduğunun doğrulanması.
  • Her etkinlikte ürünün teknik yeterliliğinin değerlendirilmesi ve uygun çözüm elde edilene kadar aktivitelerin tekrarlanması.
  • Geliştirilen belirtimlerin önceki belirtimlerle karşılaştırılması.
  • Yazılım ürünlerinin tüm uygulanabilir gereklerinin sağlandığının gerçeklenmesi için sınamaların hazırlanıp yürütülmesi.

Yazılım Testleri

Sınama Yöntemleri hedef açısından şu şekilde gruplandırılır.
  • Birim sınama
  • Alt sistem sınama
  • Sistem sınaması
  • Kabul sınaması
  • Alfa-Beta sınaması
  1. Birim Sınama: Bağlı oldukları diğer sistem unsurlarından tümüyle soyutlanmış olarak , birimlerin doğru çalışıp çalışmadıklarının belirlenmesi amacıyla yapılır.
  2. Alt Sistem Sınama: Alt-sistemler modüllerin bütünleştirilmeleri ile ortaya çıkarlar. Yine bağımsız olarak sınamaları yapılmalıdır. Bu aşamada en çok hata ara yüzlerde bulunmaktadır.
  3. Sistem Sınaması: Üst düzeyde, bileşenlerin sistem ile olan etkilesiminde çıkacak hatalar aranmaktadır. Ayrıca, belirtilen ihtiyaçların doğru yorumlanıp yorumlanmadıkları da sınanmalıdır.
  4. Kabul Sınaması: Çalıştırılmadan önce sistemin son sınamasıdır. Artık, yapay veriler yerine gerçek veriler kullanılır.
  5. Alfa Sınamada; sistemin geliştirildiği yerde kullanıcıların gelerek katkıda bulunması sistemi test etmesi amaçlanmaktadır.
  6. Beta Sınamasında; kullanıcı, geliştirilen sistemi kendi yerleşkesinde, bir gözetmen esliğinde yapar. Yazılım testleri sistem bilgisine göre de iki şekilde test edilir. Bir yazılım uzmanı sistemini bu iki testten geçirmelidir.
  • Kara kutu testi (Black-Box Testing): Sistemin tümüne yönelik işlevlerin doğru yürütüldüğünün testidir. Sistem şartnamesinin gerekleri incelenir.
  • Beyaz kutu testi (White-Box Testing): İç işlemlerin belirtimlere uygun olarak yürütüldüğünün bileşenler tabanında sınanmasıdır.
Share

Bir yanıt yazın

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