design)1980li ve 1990lıyıllar Birleştirilmiş Modelleme Dili (Unified Modeling Language-(UML) yazılım geliştirme araçlarının temelidir.

Benzer belgeler
Yazılım Mühendisliğine Giriş 2018 GÜZ

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler.

Yazılım Süreçleri Software Processes

SİSTEM ANALİZİ VE TASARIMI

Bölüm 2 Yazılım Süreçleri. Ders 1

Akış. Atik Yazılım Geliştirme Tanımı ve Kavramlar Tarihi Metotları Dünyada Atik Yazılım Geliştirme Örnekleri Sonuç BİL 588 2

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

1.Yazılım Geliştirme Metotları 1

9.DERS Yazılım Geliştirme Modelleri

Öğretim planındaki AKTS Ulusal Kredi

Varlık davranış modeli: Bu aşama her entity ye etki eden durumların tanımlandığı, modellendiği ve dokümante edildiği süreçtir.

Yazılım Mühendisliği 1

MESLEKİ TERMİNOLOJİ I 1. HAFTA YAZILIM MÜH. TEMEL KAVRAMLAR

Yazılım Mühendisliği Bölüm - 2 Yazılım Geliştirme Yaşam Döngüsü. Cengiz GÖK

Fırat Üniversitesi Teknoloji Fakültesi Yazılım Mühendisliği. YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ-Hafta 2

BMH-405 YAZILIM MÜHENDİSLİĞİ

YAZILIM MODELLEME VE TASARIM

BMH-405 YAZILIM MÜHENDİSLİĞİ

Hizmet Odaklı Mimariye Dayanan İş Süreçleri Yönetimi Sistemi

Sistem ve Yazılım Nedir?

YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER

Hızlı Uygulama Geliştirme (Rapid Application Development - Rad Model)

YZM 2108 Yazılım Mimarisi ve Tasarımı

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) Varlık İlişki Modeli

NESNEYE YÖNELİK PROGRAMLAMA Unified Modelling Language (UML) Bütünleşik Modelleme Dili

BÖLÜM 1 YAZILIM TASARIMINA GİRİŞ YZM211 YAZILIM TASARIMI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

X. Çözüm Ortaklığı Platformu

Scrum1.0 & Scrum2.0 & Scrum3.0

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC)

SOFTWARE ENGINEERING Ders İzlence Formu. Kodu:CSE400 Dersin Adı: SOFTWARE ENGINEERING Toplam Saat

BMH-405 YAZILIM MÜHENDİSLİĞİ

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

Nesneye Dayalı Analiz ve Tasarım (SE 321) Ders Detayları

4. ÜRÜN GELİSTİRME İŞLEMİ

Yazılım Nedir? Yazılım Mühendisi. Yazılım Mühendisliği. ACM/IEEE Etik Kodu. Etik Kural için Önsöz BIL 304 YAZILIM MÜHENDİSLİĞİ

Eylül 2007 de v1.0 ı yayınlanan SysML sayesinde endüstri mühendislerinin de ihtiyacı karşılanmış oldu.

YAZILIM MÜHENDİSLİĞİ TEKNOLOJİ FAKÜLTESİ / BİLGİSAYAR MÜHENDİSLİĞİ

Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

Pardus Yazılım Testleri ve Hata Takip Sistemi

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) Varlık Bağıntı Modeli

Yaz.Müh.Ders Notları #6 1

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

SENTEZ TABANLI YAZILIM MİMARİSİ TASARIM YAKLAŞIMININ ESSENCE ÇERÇEVESİYLE MODELLENMESİ

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

T. C. KAMU İHALE KURUMU

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yazılım Mühendisliği II (BIL 306)

YZM211 YAZILIM TASARIMI

CMMI. CMMI ve Çevik Yöntemler. Orhan KALAYCI Haziran Yazılım Süreç Kalitesi ve Yönetim Danışmanlığı.

Y I L D I Z T E K N I K Ü N İ V E R S İ T E S İ MÜHENDİSLİĞİ

1.1 Metodolojiyi Gerçeklemek Üzere Geliştirilen Altyapı

BLG Sistem Analizi ve Tasarımı. Öğr. Grv. Aybike ŞİMŞEK

TÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)

BMH-405 YAZILIM MÜHENDİSLİĞİ

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Project Management Emin OCAK

aselsan Açık Pozisyonlar Bilgi Teknolojileri (BT) Denetçisi İç Denetçi

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veri Modelleri

TOPLAM KALİTE YÖNETİMİ

Chapter 15. Getting the Gameplay Working. T. Kıvanç Bayraktaroğlu

MONTE CARLO BENZETİMİ

Dersin Yürütülmesi Hakkında

Sistem Analizi ve Planlama

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e

UNICASE.... kapsamlı bir CASE* aracı. *

PROJE YÖNETİMİ MODEL VE ÇERÇEVELERİ ENF304 IT PROJE YÖNETİMİ ÖĞR. GÖR. MUSTAFA ÇETİNKAYA

BIM Building Information Modeling Teknolojilerine Bakış. Tarcan Kiper Şubat 2012

T.C. DOKUZ EYLÜL ÜNİVERSİTESİ FEN FAKÜLTESİ BİLGİSAYAR BİLİMLERİ BÖLÜMÜ. BİL4007 Bitirme Projesi Uygulama Planı

Getting the Gameplay Working

YAZILIM MÜHENDİSLİĞİNİN TEMELLERİ 9.Hafta. Bakım

SiSTEM ANALiZi ve TASARIMI

BENZERSİZ SORUNLARA BENZERSİZ ÇÖZÜMLER

Yazılım Geliştirme Modeli ve Mimariler. Bilgisayar Programcılığı Ön Lisans Programı YAZILIM MİMARİLERİ. Öğr. Gör. Yüksel KARAMAN

YAŞAR ÜNİVERSİTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ

YAZILIM MÜHENDİSLİĞİ-1

İŞ ZEKASI (BI * ) Veriniz geleceğe ışık tutsun İşinizi geleceğe göre planlayın

Teknoloji Geliştirmede Bütünleştirici Yaklaşımlar

Yazılım Örüntüleri (SE 461) Ders Detayları

IT Dönüşüm Projesi Başlangıç/Kick-off Toplantısı

Giriş: Temel Adımlar YAZILIM GELİŞTİRME YAŞAM DÖNGÜSÜ. Belirtim Yöntemleri. Belirtim Yöntemleri

Dersin Yürütülmesi Hakkında

Model Güdümlü Geliştirme ile Gömülü Kaynakların Yönetimi

SOFTWARE ENGINEERING PRACTICE Ders İzlence Formu. Kodu: CSE401 Dersin Adı: SOFTWARE ENGINEERING PRACTICE Toplam Saat

Laboratuvar Akreditasyonu

Resimli Taslaklar Kağıt üzerinde ön model (prototip)- Maketler Storyboards Paper Prototypes- Mockups

Scrum Çevik Süreçlerinin Ar-Ge Yazılım Projelerinde Kullanımı

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Java Temel Özellikleri

Mühendislik ve Bilgisayar Bilimleri Fakültesi Yazýlým Mühendisliði

KALİTE YÖNETİM SİSTEMİ (ISO 9001:2015)

BİÇİMSEL YÖNTEMLER (FORMAL METHODS) Betül AKTAŞ Suna AKMELEZ

SİSTEM MÜHENDİSLİĞİ TASARIMIN SENTEZLENMESİ II

Bilgisayarda Programlama. Temel Kavramlar

TS EN ISO 14001: 2005 AC: Haziran 2010

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

CMMI ve Çevik Yöntemler

YAZILIM MİMARİLERİ DERSİ BİLGİSAYAR PROGRAMCILIĞI

Bilindiği üzere Bilgi Güvenliği Yönetim Sistemi, bilgi ve bilgi varlıklarının

Bilgi Sistemleri Tasarımı (SE 503) Ders Detayları

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Transkript:

Dört Temel Yazılım Geliştirme Metodolojisi I)Yapısal Analiz ve Tasarım 1960lıyılların sonu 1970liyıllar Fonksiyonel ayrıştırma (functional decomposition) ve veri akış analizi (dataflow analysis) yazılım geliştirme araçlarının temelini oluşturur (modeling tools). II) Nesneye Yönelik Analiz ve Tasarım (Object-oriented analysis and design)1980li ve 1990lıyıllar Birleştirilmiş Modelleme Dili (Unified Modeling Language-(UML) yazılım geliştirme araçlarının temelidir. III)Çevik Yazılım Geliştirme (AgileSoftwareDevelopment) 1990lıyılların sonu ve 2000liyıllar Yazılım endüstrisinde yazılım ürünü geliştirilirken lightweight yaklaşım Alana özel yazılım geliştirme (Aspect-Oriented Software Development )2000liyıllar Diğer yazılım geliştirme metotları terkedilmemiştir; sadece çalışılan alanla ilgili olan metotlar kullanılır.

Her Yazılım Projesinde Hazırlanması Gereken Dokümanlar Gereksinimler Dokümanı (Requirements Document) Yazılım Projesinin Planlanması Dokümanı (Software Project Planning) Yazılım Tasarımı Dokümanları (Software Design Document) Testin Planlanması ve Test Raporları (Test Planning and Test Report) Final kodu Yazılım ürününe ait kullanım kılavuzları (Software Manuals.)

Sıralı Yazılım Geliştirme (Sequential Development) Şelale Yöntemi ( Waterfall Model) Fizibilite Çalışması Gereksinimler Sistem Tasarımı Program Tasarımı Requirements Design Implementation Implementasyon (kodlama) Test Kabul & Sürüm Operasyon& Bakım

Şelale Modelinin Avantajları Kavramsal olarak basittir Problemi her biri bağımsız olarak çözümlenecek farklı aşamalara böler Yazılım probleminin çözümünde genel bir yaklaşımdır Yönetimi kolaydır Herhangi bir aşama tamamlandığında, bu aşamaya ait yapılacakların tümü (work products) gerçekleştirilmiştir. Her bir geliştirme aşamasında kalite kontrolü yapılabilir. Her bir geliştirme adımında maliyetin kontrolü yapılabilir.

Şelale Modelinin Olumsuzlukları Sadece önceden hazırlanmış olan (mevcut olan) dokümanlara bakarak ürünün ayrıntılı çözümüne geçilebilir. Çünkü yazılım ürününe ait tüm gereksinimler tasarım aşamasından önce belirlenmiştir. Bu da gereksinimlerin başlangıçta tam olarak belirlenemediği istemler için problem doğurur. Başlangıç aşamasında tüm betimlemeler yapılması mümkün olmayabilir. Kısaca gereksinimler değişmez olmalıdır (frozen requirements)

Şelale Modelinin Olumsuzlukları Tüm donanım ve teknolojilerin projenin başlangıç aşamasında belirlenmesi gerekir. Çok büyük ve pahalı projeler için problemin çözümünün ilk aşamalarında donanım ve ilgili tüm teknolojilerin belirlenmesi problemin çözüm aşamasının sonlarına gelindiğinde problemler yaratabilir. Ürünün müşteriye teslimi tüm aşamalar tamamlandıktan sonra gerçekleşecektir.

Şelale Modelinin Olumsuzlukları Bu model «big bang» yaklaşımını uygular. Müşteriye ürün ya tamamlanmış olarak teslim edilir ya da hiçbir şey teslim edilemez. Kullanıcı proje sonlanıncaya kadar ürün le ilgili hiçbir bilgiye sahip değildir. Projenin yarısında parasal sorun yaşanırsa, tamamlanmış hiçbir yazılım ürünü olmayacaktır Sonuç olarak bu yöntem doküman odaklıdır. Her aşamanın sonunda dokümantasyonu olmasını gerektirir.

Şelale Yöntemi Hangi problemlere Daha uygundur? Gereksinimleri iyi tanımlanmış (well-defined) olduğu projeler için daha uygundur. Gereksinimlerin kolaylıkla belirlenebildiği ve teknolojik kararların çok kolay alınabildiği projeler için çok uygundur. Ürün geliştirme takımı problem alanında deneyimli ise, gereksinimler açık olarak belirlenmiş ise en uygun geliştirme yöntemi olarak alınabilir.

Iteratif Yenileme (IterativeRefinement) Değerlendirme (Evaluation) Gereksinimler İmplementasyon Tasarım

Artırımsal Geliştirme (Incremental Development ) (Sprints) Ürün geliştirme takımı yazılımın tüm yaşam döngüsü boyunca (analiz-tasarım-implementasyon-kod) her bir artırım için (sprint) çalışır Her bir «sprint» belli bir zaman diliminde tamamlanmalıdır (örneğin 4 hafta). Bir «sprint» büyüklüğü yazılım takımının büyüklüğüne başlıdır. 5-10 kişi olabilir). Sprint 1 Sprint 2 Sprint 3 Accept Sprint 1 Accept Sprint 2 Accept Sprint 3

Proseslerin Sıralanışı Tam olarak sıralı bir model mümkün değildir. Örnekler: Fizibilite çalışması önerilen bütçeyi belirleyemez ve gereksinimlerle ilgili bir ön çalışma olmadan ve geçici bir tasarım olmadan proje ile ilgili zaman çizelgesi oluşturamaz Ayrıntılı tasarım ile implementasyondaki açıklar gereksinimler betimlemelerindeki belirsizliklerden oluşur. Gereksinimler ve mevcut teknoloji zamanla değişebilir. Bu nedenle planlama iterasyona uygun olarak hazırlanmalıdır.

Değiştirilmiş Şelale Yöntemi (Modified Waterfall Model) Fizibilite Çalışması Gereksinimler Sistem Tasarımı Geri beslemeli şelale yöntemi daha iyidir. Program Tasarımı Implementasyon (kodlama) Test Kabul&Sürüm Operasyon & Bakım

Iteratif Prosesler Gereksinimler ve Risk Gereksinimlerdeki hatalar düzeltilmesi en pahalı yanlışlardır. Gereksinimlerin sağlanıp sağlanmadığı operasyonel bir sistem gerçekleştirilene kadar, özel olarak kullanıcı arayüzleri ile anlaşılmaz. Hızlı bir şekilde çevrimiçi (online) bir sistemin oluşturulması ve bunun kullanıcılarla test edilmesi, gereksinimlerin anlaşılabilirliğini arttıracaktır. Örneğin, karmaşık bir uygulamada başlangıç sürümlerinin oluşturulması ( Start-up time of launching)

Çevrimiçi Sistemlerde Artırımsal Geliştirme Geliştirilen yazılım çevrimiçi olarak sürüldüğünde ürünü küçük artırımlarla bölerek geliştirmek ve ardışık hızlı sürümlerle geliştirmek mümkündür. Bu yaklaşım kullanılan uygun mimari ile sistemin sürekli olarak iyileştirilmesi için mükemmeldir. Gömülü sistemler (Embedded Systems) uygun değildir. «shrink wrapped», diğer bir kullanımı ile «off the shelf» yazılımlar için uygun değildir. Standart yazılım uygulamalarıdır. Satın alındığında kullanım koşulları kabul edilmiştir.

Karma Prosesler (Mixed Processes) Pratikte pek çok geniş kapsamlı projenin oluşturduğu proses spesifik bir geliştirme için uygundur. Örneğin: Herhangi bir sistem tek tek proses adımlarının gerçekleştirildiği sıralı bir prosesi iterasyon ile birlikte kullanabilir. Bu yönteme bazı uygulamalarda spiral geliştirme prosesi adı da verilmektedir. Kullanıcı arayüzlerinin kullanıcılar tarafından test edilmesi gerekir. Bu da temelde işlemlerin sıralı gerçekleştirildiği bir süreç olmasına rağmen tekrarlanan (iterative) bir geliştirmeyi zorlar. Örneğin aşama 1 de sistem yineleme (iteration) ile geliştirilebilir ve sıralı olarak geliştirilmiş aşama 2 için gereksinimler olarak kullanılır.

Karma Proses Örnekleri Tekrarlamalı Gelişme (Iterative Refinement) ve Şelale Modeli Bir grafik paketinin programlama ortamına ilave edilmesi Aşama 1 : Tekrarlama (Iterative refinement) Mevcut çalışma ortamı (örneğin C++)bir ön işlemci ve çalışma zamanı (run-time) destek paketi ile genişletilir. Kullanıcılarla test edilir. Kullanıcılar fonksiyondan memnun olana kadar yeri versiyonları yapılır. Kod her sefer atılır (Throw the code away). Aşama 2:Değiştirilmiş Şelale Yöntemi Gereksinimlerin biçimsel bir dizilişi için Aşama 1 in sonucu temel olarak kullanılır. Yeni derleyici yazılır ve çalışma zamanı sistem grafik elemanları ile birleştirilir. İhtiyaç oldukça gereksinimlerde küçük düzeltmeler yapılır.

Birleşik Prosesler Büyük yazılım geliştirme organizasyonlarının gereksinimleri için tasarladıkları kendilerine ait tasarımları mevcuttur. Örneğin: Amazon.com pek çok yazılım geliştirme aşamalarını dört haftada tamamlanacak şekilde böler. Lockheed Martin US hükümetinin yazılım sözleşmelerinin yönetimi için uyulması gereken prosesleri izler. SAP (iş yazılımı -business software) ticari müşterilerin işlerinde fonksiyonelliği gerçekleştirmelerini sağlar. Microsoft çok çeşitli aygıtların testine ve geriye (geçmişe yönelik) uyumluluğuna (backward compatibility) büyük önem verir.

Yazılım Süreçlerinde Modern İlerlemeler Yazılım geliştirme prosesleri süresince yapılan değişiklikler oldukça pahalıdır. Gereksinimler iyi anlaşılmamış ise veya değişmeye açık ise esnek bir yazılım geliştirme prosesinin seçimi uygundur (iteratif geliştirme, sprints, aşamalı implementasyon gibi ) Büyük yazılım sistemlerinde birbirleri ile çok fazla ilişkisi olan bileşenler vardır. Bu nedenle ürünün geliştirilmesi süresince tasarımda büyük değişiklikler yapılması tercih edilmez (Değiştirilmiş Şelale Yöntemi gibi Sıralı Proses) Geliştirilen yazılım ürünü için piyasa şartları iyi anlaşılmış değil ise, arttırılmış (incremental) prosesin kullanılması uygundur.böylece yazılımın operasyonel olarak müşterilerin önüne mümkün olduğu kadar hızlı olarak çıkması sağlanmış olur.

Yazılım Prosesleri ile İlgili Tamamlanmış projelerin temel proses adımları olacaktır. Fakat geliştirme prosesi her zaman kısmi gelişmeye açıktır. Herhangi bir prosesi seçmek nedeni ile risk taşınır. Fakat bu riskler aşağıdakiler göz önüne alınırsa azaltılabilir: Anahtar bileşenler için prototipleme yapılması Sık sık sürüm yapılması (büyük projeleri parçalayarak) Müşteriler ve kullanıcılar ile projenin başından itibaren ve sık sık test yapılması Belli, aşikar olan (visible) yazılım prosesinin izlenmesi Yeniden kullanılabilir bileşenler oluşturulması

Iteratif Süreç Modeli Değerlendirme Gereksinimler İlk sunum İkinci sunum Üçüncü sunum Implementasyon Tasarım

Prototipleme Süreç Modeli Gereksinimler değişime daha fazla açıktır. Yine de her aşamada değiştirilmesi mümkün değildir. Prototiplememodeli tümüyle bilinmeyen gereksinmeler için çözüm için projenin başlangıcında seçilmiş olabilir.

Prototipleme Süreç Modeli Proje karmaşık bir yapıda, oldukça geniş kapsamlı ise, mevcut bir sistem yoksa ya da mevcut bir sistem olup ta işlemleri ile ilgili hiçbir bilgi yoksa prototipleme ile yazılım geliştirme yöntemi uygun bir seçim olabilir. Gereksinimler açık olarak ifade edilememiş ise, belirlenen gereksinimlerin implementasyonunugerçekleştirecek bir algoritma geliştirilir. Prototiplememodeli gereksinimlerin riskini azaltır. Böylece gereksinimlerin belirtimi (specification) durumunda da risk azalacaktır. Sonuç olarak: Prototipleme Süreç Modeli gereksinimler aşamasının yer değiştirdiği küçük bir şelale yöntemidir