Yazılım Geliştirme Yöntemleri

1.Yazılım Geliştirme Metotları1
1.1 Klasik Çevrim(Waterfall)
1.2 V Modeli
1.3 Prototipleme/Örnekleme
1.4 Spiral Model
1.5 Evrimsel Geliştirme
1.6 Evrimsel Prototipleme
1.7 Artımlı Geliştirme
1.8 Araştırmaya Dayalı Geliştirme
1.9 Gelişigüzel Geliştirme
1.10 Özneye Yönelik Geliştirme
1.11 Bileşen Tabanlı Geliştirme
1.12 Özelliğe Yönelik Programlama
1.13 Uç Programlama(Extreme Programming - XP)
1.14
1
Çevik Yazılım Geliştirme Yöntemi ………
Bu düzenleme Yazılım Mühendisliği Bölümü 4. sınıf öğrencisi Kerem Vatandaş tarafından yapılmıştır.
1.1 Klasik Çevrim(Waterfall)
Müşterinin tüm isterleri bir defada ve açıklayıcı tanımlayabilmesi
çoğu zaman mümkün değildir. Müşteri, ürünün tamamı bitinceye kadar
beklemek
durumundadır.
Waterfall
modelde
yazılımın
gelişimi
doğrusaldır. İyi tanımlı, isterleri kesinleşmiş, fazla zaman
olması beklenmeyen projeler için uygun bir yöntemdir.
1.2 V Modeli
İsterlerin iyi tanımlandığı, belirsizliklerin az olduğu
ve
aşamalar halinde ilerlenmesi erken projelerde V modeli iyi
sonuçlar verir. Sistem geçerleme sırasında karşılaşılan sorunu
gidermek
için
sistem
isterleri
çözümlemesinin
tekrarlanması
gerekir.
1.3
Prototipleme/Örnekleme
ve
müşteri
Bu
modelde
çabuk
tasarım,
prototip
geliştirme
değerlendirmesinden sonra prototip iyileştirilip referans ürün
ortaya konur. Müşteriye sunulan ön ürün ilk ürün olarak kabul
edilir ya da iptal edilip en baştan yapılabilir.
1.4 Spiral Model
Klasik çevrim
ve prototipleme yöntemlerinin iyi yönlerinin
birleştirilmesiyle oluşmuştur. Bu yöntemde önce gereksinimlerin
bir kısmı belirlenir ve ön ürün yapılır, daha sonra sistemin geri
kalan kısmı yapılır. Genel olarak, art arda tekrarlanan dört
aşamadan meydana gelir.
1.5 Evrimsel Geliştirme
Her
evrimde
geliştirilen
ürünler
uygulama
alanında
tam
işlevselliğine sahiptir. Modelin uygulamadaki başarısı ilk evrimde
ortaya çıkan ürüne bağlıdır.
1.6 Evrimsel Prototipleme
Evrimsel geliştirmeden biraz farklı olarak, her evrimde ortaya bir
prototip yani ön ürün çıkarılır. Ön ürünün uygulama alanında
denenmesinden sonra, kullanıcı girdileri alınarak bir başka ön
ürün oluşturulur ve denemeye sunulur. Bu şekilde geliştirmeye
devam edilerek ürün son haline getirilir ve sonra kullanıma
sunulur.
1.7 Artımlı Geliştirme
İsterlerinin
geliştirilmesi
göre çekirdek
sistemin temel
bazı işlevleri
tamamı
belirli
olan
bir
ürünün
sürümler
ilkesine dayanmaktadır. Önce en temel isterlere
yapıda olan ilk ürün geliştirilir. Bu ürün asıl
işlevlerini yerine getirebilecek durumdadır, anacak
eksiktir.
Her sürüm bir öncekinden daha fazla işlevselliğe sahiptir.
Tüm
isterleri
tanımlı
bir
yazılımın
dört
sürüm
halinde
gerçekleşmesi artımlı olarak gerçekleşmektedir. Bu model evrimsel
geliştirmeye benzemekle beraber en büyük farkı, sürümlerin tam
işlevsellik içermemesidir.
1.8 Araştırmaya Dayalı Geliştirme:
Araştırma projeleri genellikle tam belirsizlik ile başlar.
Belirli bir konuda deneyim kazanmak amacıyla geliştirme
yapılabilir. Araştırmaya dayalı olduğu için sonuçları hakkında
kesin bir şey söylenemez. Bu araştırmalar asıl sistem geliştirme
için kullanılacak alt yapıyı oluşturacaktır.
1.9 Gelişigüzel Geliştirme
Bazı projeler geliştirilirken herhangi bir model yada yöntem
dayandırılmadan gelişigüzel yapılır. Herhangi bir süreç izlemeden
ve belgelendirme yapılmadan yalnızca kodlama ile ürün geliştirilir.
Çalışan ürün elde etmek için benimsenmektedir ama yazılımda ne
destek vardır, ne de disiplin.
1.10 Özneye Yönelik Geliştirme
Tasarımın nesneye yönelik olarak yapılması durumunda, özellikle
büyük ölçekli yazılımlar için gerçekleştirilmesi gereken nesne
adedinin çok fazla olması karmaşıklığa yok açmaktadır. Bu nedenle,
nesneden daha yüksek bir soyutlama düzeyine(abstraction level)
gereksinim duyulmuştur. Bu düzeyde artık nesneler değil
özneler(subject) ile sistem tasarımı ve gerçekleştirimi
yapılmaktadır. Bu şekilde yapılan geliştirme işlemine özneye
yönelik programlama denilmektedir. Kullanım yerleri;
~> Ofis işlemleri için paket yazılım
~> Geniş alana dağıtılmış merkezler arasında ofis otomasyonu
~> Komuta ve kontrol sistemi gerçekleştirimi
1.11 Bileşen Tabanlı Geliştirme
Önceden
geliştirilmiş
uygun
bileşenlerle
sistem
oluşturmaya
bileşen tabanlı geliştirme(component-based development) demektedir.
Bileşen
tabanlı
geliştirme
soyutlama
arayüzler
aracılığıyla
yapılır. Nesneler mantıksal bir modele karşıklık gelen çalıştırma
anı varlıklarını ifade ederken, bileşenler büyük bir yazılımın
yapısal parçalarını ifade ederler. Bileşen tabanlı geliştirmenin
temelini oluşturan şey yeniden kullanımdır.
1.12 Özelliğe Yönelik Programlama
Bazı programlama problemlerine ilişkin tasarım kararlarının ne
yordamsal
ne
de
nesneye
yönelik
programlama
teknikleriyle
gerçekleştirilemeyeceği durumlar olabilir. Bu tasarım kararlarının
kodun dağıtılmasıyla karmaşık bir yapı ortaya çıkar.İşte bu
tasarım kararlarından oluşan
öğelere özellik adı verilerek
özelliğe yönelik programlama adıyla yeni bir teknik ortaya
atılmıştır.
1.13 Uç Programlama(Extreme Programming – XP)
Değişen müşteri istekleri, ürünün yaşam çevrimi sırasında mutlaka
karşılanır. XP ile yazılım projesi dört ilkeye bağlı olarak
geliştirilir;
~> İletişim
~> Basitlik
~> Geri Besleme
~> Cesaret
XP, geliştirme sırasında isterleri sürekli değişen problem
alanları içi Agile(Çevik) yazılım geliştirme yöntemidir. Nedenleri;
~> Agile ile hedeflenen asıl şey süreçleri etkin
hızlandırmak ve gerektiğinde bunları dokümantasyonudur.
kullanarak
~> Agile Proje Yönetimi dediğimizde bilmemiz gereken; değişime
açık olunması, takım içi iletişimin üst düzeyde olması, hızlı ve
sürekli ürün teslimi, test odaklı anlayış, basit ve gerçekçi bir
planlama olmalıdır.
1.14 Çevik Yazılım Geliştirme Yöntemleri
…………………………………..
………………………………..
……………………………….