Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Yazilim Gelistirme Yöntemleri
1. 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 Çevik Yazılım Geliştirme Yöntemi ………
1
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.
2. 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.
3. 1.3 Prototipleme/Örnekleme
Bu modelde çabuk tasarım, prototip geliştirme ve müşteri
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.
4. 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.
5. 1.7 Artımlı Geliştirme
sterlerinin tamamı belirli olan bir ürünün sürümler
geliştirilmesi ilkesine dayanmaktadır. Önce en temel isterlere
göre çekirdek yapıda olan ilk ürün geliştirilir. Bu ürün asıl
sistemin temel işlevlerini yerine getirebilecek durumdadır, anacak
bazı işlevleri 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
6. 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;
7. ~> 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 kullanarak
hızlandırmak ve gerektiğinde bunları dokümantasyonudur.
~> 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
…………………………………..
………………………………..
……………………………….