Yazılım Geliştirme Yöntemleri

Muhammed Mastar tarafından 14 June 2010 tarihinde yazılmıştır.
Yorum Yok

KLASİK SÜREÇ

Klasik süreç (Waterfall Modeli), bilgisayar sistem mühendisliği olarak, ana sistemin analizinden başlayıp, yazılım gereksinim analizleri, tasarımı, kodlanması, kullanım ve bakımı aşamalarında bir süreç halinde gerçekleştirilmektedir. Her aşamada elde edilen sonuçların rapor halinde sunulması ve gerekirse geri besleme (feedback) yoluyla düzeltilmesi beklenmektedir.

Yazılımın geliştirilmesinde uygulanan klâsik süreç, eskiden beri yaygın olarak kullanılan bir yöntemdir. Ancak;

  • Projenin başlangıcında, müşteri gereksinimlerinin bütünü ile ortaya konmasındaki güçlükler ve eksikliklerin görülmesi,
  • Projenin çok uzun bir sürede tamamlanabilmesi ve müşterinin beklemeye zamanı olmaması,
  • Başta yapılabilen kaba hataların bazen ancak sınama ve hatta kullanma aşamasında ortaya çıkabilmesi,
  • Uygulamada bu modeldeki sıraya tam olarak uyulmaması, yinelemeler yapılması ve yeni sorunlar eklemek zorunda kalınması

yolunda bazı güçlüklerle karşılaşılmaktadır. Buna karşın yine de, rastgele ve gelişigüzel bir yazılım geliştirmeye kıyasla, çok tutarlı ve güvenli bir yöntem olarak sayılmaktadır.

MODEL OLUŞTURMA

Yazılım geliştirme klâsik sürecinde, önce müşteri yazılım konusundaki amaç ve hedeflerini, gereksinimlerini genel hatları ile bildirmektedir. Ancak, girdi-işlemler ve çıktı gereksinimlerini tanımlaması beklenememektedir. Yazılım mühendisi, bu bilgilere dayanarak mevcut yazılım algoritmalarının etkenliğini, işletim sisteminin uygunluğunu ya da insan-makine etkileşim biçimini yargılamak ve yeni öneriler getirmek durumundadır. Bu halde, klâsik geliştirme sürecinde söz konusu güçlükleri aşmak için, bir yazılım modeli (prototip) oluşturmak yoluna gidilmektedir.

Bu durumda yazılımın geliştirilmesi; müşterinin gereksinimlerini belirtmesi, bir tasarım taslağı hazırlanması, model oluşturma-gereksinimlerinin işlenmesi, yazılımın üretilmesi aşamalarında tamamlanmaktadır (şekil-1.5).

Her yazılım geliştirme yönteminde olduğu gibi, burada da yazılım mühendisi (sistem analisti) ile müşteri bir araya gelerek, yazılımın amaç ve hedeflerini belirlemekte, bu hedeflere ulaştıracak gereksinimleri saptamaktadır. Bu bilgilere dayanarak, yazılım mühendisi bir taslak tasarım hazırlamaktadır. Taslak tasarım, müşterinin (kullanıcının) kolayca anlayabileceği biçimde, örneğin girdi yaklaşımları ve çıktı formatları halinde düzenlenmekte ve birlikte üzerinde tartışılmaktadır. Taslak tasarım üzerinde çalışılarak, bir yazılım modeli oluşturulmaktadır. Model, yazılım mühendisi ve kullanıcı tarafından birlikte değerlendirilerek işlenmektedir. Böylece, geliştirilecek yazılımın gereksinimleri saptanmakta ve karşılanmaktadır. Bu çalışma, müşterinin bütün ihtiyaçlarının yerine getirilişine kadar yinelenerek sürdürülmektedir.

Model (Prototip) yardımıyla yazılım geliştirme yönteminde de;

  • Modelin kurulması ve üzerinde düzeltmeler yapılması müşteri ile birlikte ve onun önünde gerçekleştirildiği için yerli-yersiz müdahale etmesine ve yapılan işi küçük görmesine neden oluşu,
  • Yazılım mühendisinin modeli oluştururken basitlik ya da kolaylık nedeni ile kullandığı algoritmalardan ve işletim sistemi veya programlama dilinden daha sonra benimseyip vazgeçmemesi, bu uygunsuz öğe ve yöntemlerin de geliştirilen yazılım içerisinde kalma olasılığı

vb. sorunlar ileri sürülmektedir. Buna karşın, yazılım geliştirilmesinde modelden yararlanma, yine de etkili bir yöntem olarak görülmektedir. Böylece, müşteri gereksinimleri ve onayı daha kısa sürede sağlanmakta ve yazılım mühendisi kalite ve bakım konularına ağırlık verebilmektedir.

DÖRDÜNCÜ KUŞAK TEKNİKLERİ

Yazılım geliştirmede dördüncü kuşak tekniği (4GT) olarak, yazılım geliştirme araçları oluşturma yolu açılmıştır. Bu araçlar sayesinde, bazı yazılım özellikleri yüksek nitelikte geliştirilebilmektedir. Yazılım araçları (software tools); program yapıcı programlar olup, yazılım mühendisinin belirlediği spesifikasyonlara dayanarak, otomatik şekilde kaynak programı düzenleyebilmektedir. Ancak bunun için, yazılımın tanımlamasının da çok yüksek düzeyden bir dilde (4. kuşak dili) yapılması gerekmektedir. Bu nedenle, yazılım mühendisi özellikle yazılımı makine koduna dönüştürebilecek doğal dile yakın bir dilde ya da komutları yerine getirebilecek bir gösterim şeklinde hazırlamak durumundadır.

Yazılım geliştirme ortamını destekleyen yazılım araçları; veri tabanı sorgulaması için işlemsel olmayan (nonprocedural) diller, rapor üretici, veri yöntemi, ekran etkileşimi ve tanımı, kod üretici, yüksek düzeyde grafik oluşturucu, tablo düzenleyici olarak sayılmaktadır. Ancak, bu araçlar günümüzde sadece bazı özel alanlarda ve sınırlı olarak kullanılabilmektedir.

Dördüncü kuşak tekniğinin yazılım geliştirmede uygulanmasına da, “gereksinimlerin derlenmesi” ile başlanmaktadır (Şekil-1.6). Bu işlemi yine yazılım mühendisi ile kullanıcı birlikte gerçekleştirmektedirler. Dar kapsamlı yazılımlar için işlemsel olmayan dördüncü kuşak programlama dili kullanılarak, doğrudan “yazılımı gerçekleştirme” aşamasına geçilebilmektedir. Geniş kapsamlı yazılımlarda ise, önce bir “tasarım stratejisi” geliştirmek ve sonra 4. kuşak dil kullanılarak” yazılımı gerçekleştirme” aşamasına geçmek gerekmektedir. Aksi halde, müşteri tarafından kabul edilebilecek nitelikte bir yazılım üretilmemektedir.

Tasarım stratejisi geliştirildikten sonra, 4. kuşak bir programlama dili kullanılarak yazılım mühendisi tarafından betimlenen yazılım otomatik olarak kaynak program haline dönüştürülmektedir. Kuşkusuz, ilgili veri ile birlikte veri yapısı da 4. kuşak dilinde erişebilecek şekilde hazırlanmış olmalıdır. Dördüncü kuşak dilleri; sorgulama, program üretici, karar destekleme, model oluşturma, formal spesifikasyon dilleri olarak çeşitli işlevler için geliştirilmişlerdir.

Son basamak olarak, 4. kuşak dilinde geliştirilmiş olan yazılımın üretilmesidir. Bu aşamada yazılım mühendisi hazırlanmış olan yazılımı sınamakta, gerekli belgeleri düzenlemekte ve kılavuzları hazırlamaktadır.

Dördüncü kuşak teknikleri ile yazılım geliştirme yöntemi üzerine yaygın bir geliştirme sürdürülmektedir. Olumlu yönleri olarak; yazılım geliştirme süresini önemli ölçüde kısalttığı ve üretimi arttırdığı ileri sürülmektedir. Olumsuz yönleri de;

  • Mevcut 4. kuşak yazılım araçlarının kullanılmasının programlama dilleri kadar basit ve kolay olmadığı,
  • Bu araçlarla üretilen kaynak programların yeterli etkinlikte bulunmadığı,
  • 4. kuşak tekniği ile geliştirilen geniş kapsamlı yazılım sistemlerinin bakımında sorun çıktığı

konularını içermektedir.

RAD MODEL

RAD model (Rapid Application Development), klasik süreç (Waterfall) modelin geliştirme süresinin kısaltılmış ve hızlandırılmış şeklidir. Hızlı geliştirme, bileşen temelli yapılanma (Compoment-based construction) yaklaşımı ile gerçekleştirilir.

RAD, yeniden kullanılabilir program bileşenlerinin geliştirilmesini vurgular. Yeniden kullanılabilirlik (reusability) nesne (object) teknolojisinin gereğidir.

EVRİMSEL (EVOLUTIONARY) YAZILIM GELİŞTİRME SÜRECİ MODELLERİ

Bu modeller, iteratifdir. Yazılımların daha tamamlanmış versiyonlar şeklinde hazırlanmasını sağlarlar. Evrimsel modelleri,

  • Artımlı (Incremental) Model ve
  • Spiral Model

olarak inceleyebiliriz.

ARTIMLI (INCREMENTAL) MODEL

Prototip oluşturmanın iteratif yaklaşımıyla waterfall modelin elemanlarını birleştirir. Her artım,

  • Analiz
  • Tasarım
  • Kodlama
  • Test

adımlarında gerçekleştirilir.

Prototip oluşturmadan farkı her bir artımda üretilen ürün dağıtılır ve kullanıcılar tarafından değerlendirileceği bir platform sağlanır.

SPİRAL MODEL

Spiral Model, Boehm tarafından 1988′de geliştirilmiştir. Bu modelde de prototip oluşturmanın iteratif yapısı ve Waterfall’un kontrollü ve sistematik yapısı birleştirilmiştir. Bu modele göre yazılım, artımlı “release”ler dizisi olarak hızlı geliştirilir. İlk iterasyonlar prototiptir; daha sonrakiler ise dağıtımı yapılan versiyonlar şeklindedir.

Spiral model aşamaları:

  1. Müşteri İletişim – Geliştirici ve müşteri arasındaki etkin iletişimi sağlama.
  2. Planlama – Proje için zaman ve kaynak yöntem tanımı yapma
  3. Risk Analizi – Teknik ve yönetim risklerini belirleme
  4. Mühendislik – Uygulamanın tanımının yapılması (tasarım)
  5. Yapım ve Değişim (Construction & Release) – Gerçekleştirme test, kuruluş ve kullanıcı desteği (belgeleme ve eğitim)
  6. Müşteri Değerlendirme

şeklindedir.

  • FriendFeed'de Paylaş
  • Facebook'ta Paylaş
  • Twitter'da Paylaş
  • Bu Yazı Hakkında Birşeyler Demek İstermisiniz?





    Powered by WP Hashcash

    - Tüm Telif Hakları Yüce Türk Milleti'ne Aittir. -

    Valid CSS!

    şerit