xp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
xp etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

24.9.10

Extreme Programming

XP (EXTREME PROGRAMMİNG) ve YAZILIM GELİŞTİRMEDE GÜNCEL YAKLAŞIMLAR

Günümüzde özellikle ülkemizde bu yazılım konusunda en güncel yaklaşım extreme programming(xp) yaklaşımıdır.
XP, küçük veya orta ölçekli yazılım geliştirme grupları tarafından kullanılabilen, çok karmaşık olmayan, etkin, esnek, düşük-riskli ve öngörülebilir bir yazılım geliştirme yaklaşımıdır. Özellikle ürün gereksinimlerinde ve pazar koşullarında sık değişikliklerin meydana geldiği veya belirsizliklerin fazla olduğu yazılım projelerinde etkin olarak kullanılabilmektedir (Beck, 2000)
XP’nin 12 prensibi vardır. Bunlar:
1. Planlama: Projenin başında bir plan yapılır ve ihtiyaca göre şekillendirilir.
2. Küçük Sürümler (Small Releases): Hızlı feedback için hızlıca geliştirilen küçük sürümlerle çalışmak.
3. Metafor: Bütün geliştirme sürecinin basit bir senaryo ile modellenmesidir. Bu sayede geliştiriciler neyi ne için yaptıklarının farkında olurlar.
4. Basitlik: Sistem mümkün mertebe basit olmalıdır.
5. Test: Özellikle birim testlerle süreç boyunca çeşitli testler yapılır.
6. Yeniden Yapılandırma (Refactoring): Sistemin davranışını değiştirmeden yeniden yapılandırılması.
7. Eşli Programlama (Pair Programming): Kodlama esnasında bir makinede eş zamanlı iki kişinin çalışması.
8. Ortak Kod Sahipliği: Her yazılımcının sistemin her biriminde kodlama yapabilmesidir prensibi.
9. Sürekli Entegrasyon: Her iş parçası bittiğinde sistem entegrasyonu yapılır.
10. Haftada 45 Saat Çalışma: Bu prensip, haftada 45 saatten fazla çalışılmamasını ve üst üste iki haftadan fazla mesaiye kalınmamasını öngörmektedir.
11. Müşteri ile Beraber Çalışma: Müşteri beklentilerini daha iyi karşılamak adına müşteriyi de sürece dahil etme prensibi.
12. Kodlama Standartları: Kodlamanın standartlara uygun yapılması prensibi.
XP 80’lerin sonlarında ortaya atılmış, 96 senesinde olgunlaşmıştır. Günümüzde gelişimini sürdürmektedir.
2001 senesinde 17 uzman ortak bir manifesto ile çevik yazılım geliştirme yaklaşımı dünyaya duyurdu. Bu manifesto dünya çapında yankı uyandırdı. bu yaklaşım xp’yi de içeren bir üst yaklaşımdır. (Bkn. Kaynaklar-5) XP’yaklaşımındaki prensiplere benzer prensiplere sahip ancak ülkemizde xp kadar yaygın olmayan bazı yaklaşımlar ise aşağıda sıralanmıştı.

·         SCRUM
·          Crystal
·          Feature-Driven
·         BDD (Behaviour-Driven Development)






KAYNAKLAR



6-www.xprogramming.com


7-www.extremeprogramming.org




                                                                                                                              M.Ali      

22.9.10

Yazılım Mühendisliği Hakkında


1.      YAZILIM MÜHENDİSLİĞİ TANIMLARI

Yazılım mühendisliği, bilgisayar bilimi, yönetim bilimi, ekonomi ve bilişim bilim dallarından yararlanmakta ve sorun çözümünde mühendislik yöntemlerini kullanmaktadır.(Kalıpsız, 2004)
Türk Dil Kurumu Tanımı: Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümü.
Yazılım üretiminin, mühendislik yöntemleriyle yapılmasını öngören ve bu yönden yöntem, araç, teknik ve metodolojiler üreten bir disiplindir. (Sağıroğlu,2010)

2.      YAZILIM GELİŞTİRME TEKNİKLERİ

2.1.Yazılım Geliştirmede Klasik (Waterfall) Süreç
             Şelale modelinin en önemli aşaması analiz aşamasıdır. Bu aşama iyi olursa proje en kısa sürede bitirilebilir. Bu aşamada iyi analiz yapılamazsa tasarım yanlış olacaktır ve ilerleyen aşamalarda önceki aşamalara geçme mecburiyeti doğacaktır. İdeal proje hiçbir önceki aşamaya gidilmemiş projedir. Böylece maliyet artmadan kaynaklar optimum kullanılarak proje tamamlanmış olur.


2.2.Yazılım Geliştirmede Prototip Kullanımı
            Bu modelde yazılım tamamlanmadan prototipler oluşturulup kullanıcıya önceden gösterilmekte. Bu sayede kullanıcıdan projeye katkıda bulunacak feedback’ler alınabilmekte. Bu noktada yukarıda bahsettiğim şelale modelinden dah üstün bir model. Şelale modelinde müşteri son ürünü görüyordu, burada ise proje tamamlanmadan prototip üzerinde de müşteriye bir şeyler gösterildiğinden müşteri istekleri daha fazla ve düşük maliyetlerle karşılanabilmekte.

2.3.Artımlı Yazılım Geliştirme
   Bu modelde bir uygulama geliştirilir, süreç içerisinde bu geliştirilen uygulamaya gerekli eklemeler yapılır ve bu eklemelerle proje artırımsal olarak ilerler. Bitirme tezleri buna örnek gösterilebilir. Ya da bir hesap makinesi yaptınız, bu makine sadece toplama ve çıkarma yapabiliyor, siz buna sürekli yeni fonksiyonlar eklediniz ve bunu bilimsel bir hesap makinesi haline getirdiniz. İşte bu tarz bir geliştirme tekniği artımlı yazılım geliştirmedir.


2.4.Yazılım Geliştirmede Spiral Yöntem
Bu modelde yinelemeli bir yaklaşım vardır. Her yinelemede dört aşamadan geçilir. Bu aşamalar sırasıyla şekil-4’de de görüldüğü gibi analiz, dizayn, kodlama ve test aşamalarıdır. Projenin bir bölümü analiz edilir tasarlanır kodlanır ardından test edilir. Bu teste genellikle müşteri de katılır. Bu sayede bir hata oluşursa bu erken fark edilir ve müşteri hak ediş verirken daha şeffaf bir ortam sağlanır. Proje sonuçlanana kadar bu döngü devam eder.

2.5. Re-Use Modeli

            Bu modeli stajım sırasında görme fırsatım oldu. Özellikle büyük firmaların kullanabileceği bir yöntem. Daha önce kullanılmış kodların ihtiyaç duyulduğunda gerekli modifikasyonlarının yapılıp tekrar kullanılmasına dayanan bir yöntemdir. Stajda da Aselsan A.Ş.’de bu şekilde bir havuz var ve gerekli dökümantasyonla birlikte yapılan çalışmalar ileride tekrar kullanılabilir düşüncesiyle bu havuza atılıyor. Benim projem de aynı şekilde bu havuza ileride yapılacak bir ağ dinleme programında kullanılmak üzere havuza atıldı. Maliyetleri düşüren faydalı bir yöntem.

3.      YAZILIM GELİŞTİRMEDE KARŞILAŞILAN GERÇEK PROBLEMLER

Yazılım geliştirirken karşılaşılan problemlerin başında müşteri isteklerini tam olarak belirlenmesi gelmektedir.  Müşteri derdini tam anlatamazsa ya da analizci tam anlayamazsa ürün müşterini ihtiyacını karşılayamayacaktır.
Müşteri ile yaşanan başka bir problem ise müşterinin söylediklerini inkar etmesidir. Bu tarz durumların önüne geçebilmek için belgelendirme çok önem arz etmektedir.
Diğer bir problem tasarım hatasıdır. Yapılan analize uygun bir tasarım yapmak projenin sağlığı açısında hayati önem taşımaktadır. Örneğin bir veritabanında sık yapılan sorguların hızlı çalışması gerekmektedir ancak tasarım hatası yüzünden bunun teknik olarak mümkün olamayacağı bir durumla karşılaşılabilir.
Yanlış ya da eksik dökümantasyon da sık karşılaşılan problemlerdendir. Özellikle büyük projelerde bir projeyi aynı ekibin bitirmesi her zaman mümkün olmuyor, ekip elemanlarından biri birkaçı ya da tamamı değişebilir. Bu durumda dökümantasyondaki hatanın maliyeti büyük olur.
Yazılım bir ekip tarafından geliştiriliyorsa ekip çalışmasına yatkın ekip elemanlarından oluşmayan bir ekipte her zaman için problem yaşanır. Bu da yazılımın bitirilme süresini uzatacağından maliyetleri arttırır.

4.      ÜLKEMİZDEKİ YAZILIM MÜHENDİSLİĞİ

Ülkemizde yazılım mühendisliği çoktandır konuşulagelen ancak tam manasıyla yeni yeni kullanılmaya başlanan bir kavramdır. Bilgisayar mühendisliği okuyanlar bile bilgisayar mühendisliği kavramını tam kavrayamadıklarından kendilerine programcı olarak görmekteydiler. Ancak bu durum günümüzde büyük ölçüde değişmekte. Üniversitelerde bilgisayar mühendisliğinin yanında yazılım mühendisliği bölümleri kurulmaya başlandı. Yazılım mühendisliği ayrı bir bölüm olacak düzeye erişti. Öte yanda piyasaya bakacak olursak kurumsallaşmış köklü şirketlerde yazılım mühendisliği tam manasıyla yapılmakta. Bu büyük firma olmanın bir gereği haline geldi. Zaten öyle olmasaydı büyük projelerin gerçekleştirilmesi mümkün olmazdı. Diğer taraftan orta ve küçük yazılım firmalarında yazılım mühendisliği olgularına rastlamak zor. Bu firmalarda bu işin eğitimini almamış, birkaç kursta öğrendikleriyle bu işi yapmaya çalışsan insanlar maalesef yazılım mühendisliğinden uzaklar. Ancak üniversitelerden mezun olan ve yazılım mühendisliği kültürünü okuldan alan genç bilgisayar mühendislerini sayısı arttıkça ülkemizdeki yazılım mühendisliği kavramı da yaygınlaşacaktır.

KAYNAKLAR
1- 2004 Prof. Dr. Oya Kalıpsız YTÜ Ders Notları
2-2010 Prof.Dr. Şeref Sağıroğlu Gazi Ü. Ders Notları
3-DeGrace, Peter, and Stahl, Leslie Hulet, Wicked Problems, Righteous Solutions: A Catalogue of Modern Software Engineering Paradigms, 1990, pp. 116, 117, 127. Reprinted with permission of Prentice Hall, Englewood Cliffs, New Jersey.
4- Beck, K., Extreme Programming Explained: Embrace Change, Addison Wesley, 2000, ISBN: 0201616416.

                                                                                                         
                                                                                                              Mart 2010 - Mehmet Ali Demir
Related Posts Plugin for WordPress, Blogger...