Yazlm Mhendislii Sistem ve Yazlm Nedir Bilgisayar Sistemleri
Yazılım Mühendisliği
Sistem ve Yazılım Nedir? Bilgisayar Sistemleri; donanım, yazılım ve kullanıcılardan oluşur. Yazılım sadece belirli bir işlemi yapan bir program değildir. Yazılım belirli bir mantık dahilinde insanlar tarafından oluşturulan program, veri ve belgeler topluluğudur.
Veri Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri dış ortamdan alınabileceği gibi, yazılım içerisinde de üretilebilir. Yazılımın temel amacı “veri”yi belirli algoritmalar kullanarak “bilgi”ye dönüştürmektir.
Program (kod) Yazılımın ana çıktısı sonuçta bir bilgisayar programıdır. Program işletime alındıktan sonra bakım çalışmaları sürekli olarak gündeme gelir. Bunun iki temel nedeni: hiç bir program bütünüyle her olasılık göz önüne alınarak test edilemez. işletmeler doğaları gereği dinamik bir yapıya sahiptir ve zaman içerisinde sürekli olarak yeni istek ve gereksinimler ortaya çıkabilmektedir.
Belge (dokümanlar) Yazılım üretimi bir mühendislik disiplini gerektirir. Mühendislik çalışmalarında izlenen yol ve kullanılan yaklaşımlar yazılım üretimi için de geçerlidir. Yazılım üretimi sırasında, bir çok aşamada (planlama, analiz, tasarım, gerçekleştirim, vb. ) yapılan ara üretimlere ait bilgiler belli bir düzende belgelenmelidirler.
Yazılım Mühendisliği • IEEE (The Institute of Electrical and Electronics Engineers) Tanımı (1993) “Yazılım Mühendisliği: Sistemli, düzenli, ölçülebilir bir yaklaşımın yazılım geliştirmede, yazılımın işlenilmesinde ve bakımında uygulanmasıdır. • Diğer bir deyişle mühendisliğin yazılıma uygulanmasıdır.
Yazılım Mühendisliği Yazılım mühendisliği bir yöntemler, teknikler ve araçlar kümesi olarak değerlendirilebilir. Yazılım mühendisliğinin hedefi; yazılım üretimindeki karmaşıklıkları gidermektir. Geçmişte kullanılan iş akış şemaları gibi yöntemler günümüzde yetersiz kalmaktadır. Ayrıca, yazılım üretimi işi tek kişinin başarabileceği boyuttan çıkmış ve bir takım işi biçimine dönüşmüştür.
Yazılım Mühendisi Yazılımın daha çok mantıksal boyutuyla ilgilenir ve işi insanlarla ilişkiyi gerektirir. Temel hedefi; üretimin en az maliyet ve en yüksek nitelikte yapılmasını sağlamaktır. Programcı değildir. Ancak programcının tüm yeteneklerine sahiptir. Sistem analisti de değildir. Farkı; analist sadece sistemin analiz aşaması ile ilgilenirken, yazılım mühendisi tüm aşamaların içindedir.
Yazılımda Kalite Üretim Süreci Boyunca ara ürünlere ilişkin kalite standartlarının geliştirilmesi ve geliştirme işlemlerinin bu standartlara uygunluğunun denetlenmesidir. Yazılım kalite sağlama etkinlikleriyle; Yazılım maliyetleri düşürülür, Yazılım üretiminin yönetimi kolaylaşır, Belgeleme ve standart sorunları giderilir.
Yazılım Geliştirme Yaşam Döngüsü ve Modeller Herhangi bir yazılımın, üretim aşaması ve kullanım aşaması birlikte olmak üzere geçirdiği tüm aşamalar olarak tanımlanır. Yazılım işlevleri ve ihtiyaçlar sürekli değiştiği ve geliştiği için bir döngü biçiminde düşünülür. Yazılım yaşam döngüleri tek yönlü, doğrusal olarak düşünülmemelidir.
Yazılım Yaşam Döngüsü Temel Adımları Planlama Personel ve donanım gereksinimlerinin çıkarıldığı, fizibilite çalışmasının yapıldığı ve proje planının oluşturulduğu aşamadır. 2. Analiz Sistem gereksinimlerinin ve işlevlerinin ayrıntılı olarak çıkarıldığı aşama. Var olan işler incelenir, temel sorunlar ortaya çıkarılır. 3. Tasarım Belirlenen gereksinimlere yanıt verecek yazılım sisteminin temel yapısının oluşturulduğu aşamadır. mantıksal; önerilen sistemin yapısı anlatılır (akış şemaları) fiziksel; yazılımı içeren bileşenler ve bunların ayrıntıları (ekran tasarımları) 1.
Yazılım Yaşam Döngüsü Temel Adımları Gerçekleştirim Kodlama, test etme ve kurulum çalışmalarının yapıldığı aşamadır. 5. Bakım Hata giderme ve yeni eklentiler yapma aşaması (teslimden sonra). 4.
Gelişigüzel Model Herhangi bir kuraldan bağımsız, yalnızca geliştiren kişiye bağımlı hatta onun bile bir zaman sonra anlayamadığı ve değiştirme zorluğu yaşadığı modeldir. 60’lı yıllarda tek kişinin ürettiği programlar böyledir. Basit öğrenci projeleri böyledir.
Barok Modeli İnceleme Analiz Tasarım Kodlama Modül Testleri Altsistem Testleri Sistem Testi Belgeleme Kurulum Yaşam döngüsü temel adımlarının doğrusal bir şekilde geliştirildiği model. 70’li yıllarda kullanılan model. Belgelemeyi ayrı bir süreç olarak ele alır, ve yazılımın geliştirilmesi ve testinden hemen sonra yapılmasının öngörür. Halbuki, günümüzde belgeleme yapılan işin doğal bir ürünü olarak görülmektedir. Aşamalar arası geri dönüşlerin nasıl yapılacağı tanımlı değil. Gerçekleştirim aşamasına daha fazla ağırlık veren bir model olup, günümüzde kullanımı önerilmemektedir
Çağlayan Modeli Gereksinimlerin Tanımlanması Sistem ve Yazılım Tasarımı Kodlama ve Modül test etme Birleştirme ve Sistemi test etme Sistemin Bakım ve İdamesi
Çağlayan Modeli Yaşam döngüsü temel adımları baştan sona en az bir kez izlenerek gerçekleştirilir. 70’li yılların ortalarında yapısal programlama ile kullanılmaya başlanan bu modelin kullanımı günümüzde azalmıştır. Belgeleme üretimin doğal bir sürecidir. İyi tanımlı projeler ve üretimi az zaman gerektiren projeler için uygundur. Belirsizlik oranı düşükse ve az zaman alacağı öngörülüyorsa (küçük boyutlu kamu sistemleri, personel, bütçe vb. ) kullanımı önerilir.
V Süreç Modeli Gereksinimler Sistem KULLANICI MODELİ Sistem Tanımları MİMARİ MODEL Sistem Altsistem Bitmiş Sistem Sınanmış Altsistem Modül Sınanmış Modül GERÇEKLEŞTİRİM MODELİ
V Süreç Modeli Sol taraf üretim, sağ taraf sınama işlemleridir. V süreç modelinin temel çıktıları; Kullanıcı Modeli: Geliştirme sürecinin kullanıcı ile olan ilişkileri tanımlanmakta ve sistemin nasıl kabul edileceğine ilişkin sınama belirtimleri ve planları ortaya çıkarılmaktadır. Mimari Model: Sistem tasarımı ve oluşacak alt-sistem ile tüm sistemin sınama işlemlerine ilişkin işlevler. Gerçekleştirim Modeli: Yazılım modüllerinin kodlanması ve sınanmasına ilişkin fonksiyonlar.
V Süreç Modeli Belirsizliklerin az, iş tanımlarının belirgin olduğu BT projeleri için uygun bir modeldir. Model, kullanıcının projeye katkısını arttırmaktadır.
Helezonik (Spiral) Model Planlama Risk Analizi Amaca, Alternatiflere ve Sınırlamalara karar verme Risk Analizi Alternatifleri değerlendirme ve risk analizi Risk Analizi Öninceleme onay ekseni Analizi Geliştirme Planı Birleştirme ve Test Planı Bir sonraki fazın planlanması ve kullanıcı değerlendirmesi Kullanıcı Değerlendirme Prototip 2 Risk Proto. Analizi tip 1 Prototip 3 İşin Prototipi Simulasyon ve Modelleme İşin Genel Kavramı Yazılım Gereksinimi Ürün Detaylı Gereksinim onaylama Tasarımı Tasarım Kodlama Tasarımı test Etme ve onay Servis Modül Testi Birleştirme testi Geliştirme ve bir sonraki Kabul testi ürünü onaylama Üretim
Helezonik Model Risk Analizi Olgusu ön plana çıkmıştır. Her döngü bir fazı ifade eder. Doğrudan tanımlama, tasarım, . . . vs gibi bir faz yoktur. Yinelemeli artımsal bir yaklaşım vardır. Prototip yaklaşımı vardır.
Evrimsel Geliştirme Modeli Eşzamanlı Aktiviteler Genel Tanımlama İlk Sürüm Geliştirme Ara Sürümler Test Etme Son Sürüm
Evrimsel Geliştirme Modeli İlk tam ölçekli modeldir. Coğrafik olarak geniş alana yayılmış, çok birimli organizasyonlar için önerilmektedir (banka uygulamaları). Her aşamada üretilen ürünler, üretildikleri alan için tam işlevselliği içermektedirler. Pilot uygulama kullan, test et, güncelle diğer birimlere taşı. Modelin başarısı ilk evrimin başarısına bağımlıdır.
Örnek Çok birimli banka uygulamaları. Önce sistem geliştirilir ve Şube-1’e yüklenir. Daha sonra aksaklıklar giderilerek geliştirilen sistem Şube-2’ye yüklenir. Daha sonra geliştirilen sistem Şube-3’e, …. yüklenir. Belirli aralıklarla eski şubelerde de güncellemeler yapılır.
Artırımsal Geliştirme Modeli Üretilen her yazılım sürümü birbirini kapsayacak ve giderek artan sayıda işlev içerecek şekilde geliştirilir. Öğrencilerin bir dönem boyunca geliştirmeleri gereken bir programlama ödevinin 2 haftada bir gelişiminin izlenmesi (bitirme tezleri). Uzun zaman alabilecek ve sistemin eksik işlevlikle çalışabileceği türdeki projeler bu modele uygun olabilir. Bir taraftan kullanım, diğer taraftan üretim yapılır
Artırımsal Geliştirme Modeli Genel Gereksinim Belirlenmesi Gereksinimleri Artırımlara Bölme Sistem Artırılımının Yapılması Artırılımın Onaylanması Bitmemiş Sistem Mimarisini Tanımlama Artırılımın Birleştirilmesi Sistemin Onaylanması Son Sistem
Metodolojiler Metodoloji: Bir BT(Bilgisayar Teknoloji) projesi ya da yazılım yaşam döngüsü aşamaları boyunca kullanılacak ve birbirleriyle uyumlu yöntemler bütünü. Günümüzdeki metodolojiler genelde Çağlayan ya da Helezonik modeli temel almaktadır
Bir Metodolojide Bulunması Gereken Temel Bileşenler (Özellikler) Konfigürasyon yönetim modeli Ayrıntılandırılmış bir süreç modeli Maliyet yönetim modeli Ayrıntılı süreç tanımları Kalite yönetim modeli Risk yönetim modeli İyi tanımlı üretim yöntemleri Proje yönetim modeli Değişiklik yönetim modeli Süreçlerarası arayüz tanımları Kullanıcı arayüz ve ilişki modeli Ayrıntılı girdi tanımları Ayrıntılı çıktı tanımları Standartlar
Yazılım Testleri Testin en belirgin amacı, yazılımın uygunluğu ile ilgili karar vermektir. Yazılımı yayıma uygunluğu, standartlara uygunluğu, kabul şartnamesine uygunluğu gibi konular test aktiviteleri ile belirlenir.
Yazılımın Doğrulanması ve Geçerlenmesi Doğrulama Doğru ürünü mü üretiyoruz? ▪ ürünü kullanacak kişilerin isteklerinin karşılanıp karşılanmadığı Geçerleme Ürünü doğru olarak mı üretiyoruz? ▪ ürünün içsel niteliğine ilişkin izleme ve denetim etkinliklerinden oluşur. Doğrulama ve Geçerleme işlemleri temel olarak çeşitli düzeylerde sınama, gözden geçirme, denetim ve hata giderme süreçlerinden oluşur.
Yazılım Testleri Sınama Yöntemleri hedef açısından şu şekilde gruplandırılır. Birim sınama Alt sistem sınama Sistem sınaması Kabul sınaması
Yazılım Testleri Birim sınama Modül sınama Alt Sistem sınama Teslim alma sınaması Bileşen sınama Bütünleştirme sınaması Kesin Kabul Testi
Yazılım Testleri Birim Sınama: Bağlı oldukları diğer sistem unsurlarından tümüyle soyutlanmış olarak , birimlerin doğru çalışıp çalışmadıklarının belirlenmesi amacıyla yapılır. Alt Sistem Sınama: Alt-sistemler modüllerin bütünleştirilmeleri ile ortaya çıkarlar. Yine bağımsız olarak sınamaları yapılmalıdır. Bu aşamada en çok hata ara yüzlerde bulunmaktadır.
Yazılım Testleri Sistem Sınaması: Üst düzeyde, bileşenlerin sistem ile olan etkileşiminde çıkacak hatalar aranmaktadır. Ayrıca, belirtilen ihtiyaçların doğru yorumlanıp yorumlanmadıkları da sınanmalıdır.
Yazılım Testleri Kabul Sınaması: Çalıştırılmadan önce sistemin son sınamasıdır. Artık, yapay veriler yerine gerçek veriler kullanılır. Alfa Sınamada; ▪ sistemin geliştirildiği yerde kullanıcıların gelerek katkıda bulunması sistemi test etmesi amaçlanmaktadır. Beta Sınamasında; ▪ kullanıcı, geliştirilen sistemi kendi yerleşkesinde, bir gözetmen esliğinde yapar.
Yazılım Testleri Yazılım testleri sistem bilgisine göre de iki şekilde test edilir. Bir yazılım uzmanı sistemini bu iki testten geçirmelidir. Kara kutu testi (Black-Box Testing): Sistemin tümüne yönelik işlevlerin doğru yürütüldüğünün testidir. Sistem şartnamesinin gerekleri incelenir. Beyaz kutu testi (White-Box Testing): İç işlemlerin belirtimlere uygun olarak yürütüldüğünün bileşenler tabanında sınanmasıdır.
Yazılım Ekiplerinin Yapısı Yazılım geliştirme faaliyeti, bir veya birkaç ekip tarafından yürütülmektedir. Bir ekibin yapısı; projenin ve üretilecek yazılımın özelliklerine, ekibi oluşturan üyelerin karakterlerine ve yeteneklerine uygun olarak kurulmalıdır. Genel olarak ekip yapısı: demokratik, şef, hiyerarşik biçimlerde olabilmektedir
Yazılım Ekiplerinin Yapısı – Demokratik Sistem Bütün üyeler eşit olup, aynı yetkiye sahiptirler. Yazılım geliştirme amaçlarının ve yöntemlerinin saptanması, gerekli kararların alınması anlaşma yoluyla sağlanmaktadır. Ekip başkanlığı, sıra ile ve dönemsel olarak yürütülmektedir.
Yazılım Ekiplerinin Yapısı – Sistemi Şef Ürünün tasarımı, geliştirilmesi ve diğer teknik konularda kararlar şef tarafından alınmaktadır. Görev dağıtımını da şef yapmaktadır. 2 -5 kişiden oluşan üyeler de kodlama, hataları izleme ve düzeltme, belgeleri hazırlama, ürünü sınama vb. rutin işleri üstlenirler. Ekipte ayrıca bir arşivci ve şef yardımcısı bulunabilmektedir
Yazılım Ekiplerinin Yapısı – Sistemi Şef sisteminde kararlar bir kişi tarafından Şef alındığı için işler daha hızlı yürütülmektedir. Ancak kararların doğruluğu ve tutarlılığı, şefin yeteneğine bağlı olmaktadır.
Yazılım Ekiplerinin Yapısı – Hiyerarşik Sistem Bir proje yöneticisine bağlı birkaç ekip oluşturulmaktadır. Ekipte 2 -5 genç üye ve başlarında deneyimli bir şef bulunmaktadır. Proje yöneticisi; görevleri belirlemekte, çalışmaları izlemekte ve denetlemekte, sorun alanlarını bulmakta, iş yüklerini dengelemekte ve teknik çalışmalara katılmaktadır. Ekip şefleri, kendilerine ayrılan alt sistem veya modülün geliştirilmesinden sorumlu bulunmaktadır.
Yazılım Ekiplerinin Yapısı – Hiyerarşik Sistem Bu sistemde hiyerarşik olarak şeflik sistemi, yatay yönde de demokratik sistem uygulanmaktadır.
Yazılım Ekiplerinin Yapısı – Hiyerarşik Sistem Hiyerarşik sistem, yazılım ürünlerinin hiyerarşik yapıda alt programlara ayrılabilmesi halinde uygulanan bir yöntemdir. Böylece, her ekip bağımsız olarak bir alt program üzerinde çalışmaktadır. Bu sistemin sakıncası, teknik konularda çok başarılı fakat yönetim bakımından yeteneksiz kişilerin de şef ya da proje yöneticisi olabilmesidir.
- Slides: 43