Yazılım mimarisi yazılım müh.

Post on 15-Dec-2014

517 views 4 download

description

yazılım müh.

Transcript of Yazılım mimarisi yazılım müh.

Yazılım Mimarisi

Bir yazılımın veya bilgisayar sisteminin yazılım mimarisi demek sistemi oluşturan yazılım

bileşenleri ve görünür dış özellikler ile bunlar arasındaki ilişkiler demektir. (Viki)

Belirlenen teknik ve operasyonel ihtiyacın

giderilmesi için, performans, güvenlik ve yönetim vb. gibi genel kalite özelliklerini de karşılayacak

şekilde yapısal bir çözüm tasarlama işlemidir.

Yazılım Problemi Çözülürken

Çözülecek problem nedir ?Problem çözülürken ne kullanılacak ?Çözüm nasıl gerçekleştirilecek ?Çözüm nasıl oluşturulacak?Problem oluşturulup çözülürken hatalar nasıl ortaya çıkarılacak ?Kullanıcı tarafından istenilen değişiklikler, düzeltmeler ve adaptasyon süreçleri nasıl desteklenecek?

ÖrnekBir müşteri size içinde ibadet edilecek bir yer yap derse ;

-Yapılacak “şey”in kapalı bir mekan olması gerektiğini (fiziksel ortam).-Hangi dine ait bir ibadeti kastettiğini (ruhsal ortam).- Kaç şiddetine bir depreme dayanabileceği (dayanıklılık).- İçinde kaç kişi barındırabileceği (kapasite),- Kapısının yapısı (güvenlik).- Vs. gibi özelliklerinin hepsinin temel atılmadan önce bilinmesi gerekir.

“Mimarı getirin bana”

Yazılım mimarisi yapı ve davranışların yanı sıra ;-kullanılabilirlik -fonksiyonalite-performans -esnekllik -yeniden kullanım -anlaşılırlık -ekonomik ve teknolojik kısıtlar gibi özellikleri de yansıtır.

Tüm bu özellikleri ile “Yazılım Mimarisi” sistemin anayasasıdır.Tüm yazılım geliştirme

sürecinin merkezinde durur ve her türlü faliyete kılavuzluk eder.

Yazılım mimarisi pek çok sebepten dolayı önemlidir

• Sistemin karmaşıklığını yönetmek ve bütünlüğünü korumak için , kontrol edilebilir bir yapı sunar.

• Yeniden kullanımı arttıran kullanışlı bir yapı sunar

• Proje yönetimi için temel teşkil eder.

Yazılım Süreçleri

Gereksinim Belirtimleri (Requirements Specifications) Tasarım (Design) Kodlama (Coding) Test (Test - Validation)İşletim ve Bakım (Operation and Maintenance) Proje YönetimiKalite Yönetimi Düzenleşim (Konfigürasyon)/Değişim Yönetimi

Yazılım Geliştirme Modelleri (Tasarım)

• Gelişigüzel Geliştirme• Şelale (Waterfall) Modeli• Helezonik (Spiral) Model• Arttırımsal (Incremental) Geliştirme

Modeli• Döngüsel Model• Çevik Yazılım Geliştirme Metodları

Şelale ModeliŞelale modelinde yazılım, aşamalar en az birer kez

tekrarlanarak geliştirilir. Çok iyi tanımlanmış ve üretimi az zaman gerektiren projeler için uygun bir model

olmakla birlikte günümüzde kullanımı gittikçe azalmaktadır.

Helezonik (Spiral) Model

• Planlama, risk yönetimi, üretim ve kullanıcı değerlendirmeleri olarak 4 e ayrılır.

• Helezonik model, risk analizi ve prototip üretme üzerine kurulmuştur. Her döngü öncesi, içinde bulunulan fazın risk analizi yapılır ve o faz için planlanmış olan prototip geliştirilir.

• En önemli getirisi, her döngünün başında risk analizi yapılması nedeniyle zaman ve maliyet bileşenlerinin kolay tahmin edilebilmesidir.

Artırımsal model• Artırımsal model, yazılımın küçük parçalara

ayrılarak döngüsel olarak geliştirilmesi fikrine dayanır.

• Projenin ilerde değişikliğe Uğraması halinde bile büyük birmaliyete neden olmadan bu değişikliklerin yapılabilir olmasıdır.

V Modeli• Basit ve kullanımı kolay• Test aktiviteleri (planlama, dizayn gibi) kodlamadan önce başlar.

Bu daha sonra zaman kazanmamızı sağlar.Bundan dolayı projelerde başarı oranı waterfall(şelale) modeline oranla daha yüksektir.

• Hatalar iş gereksinimleri oluşmaya başladığından itibaren yakalanır.

Döngüsel Model• Döngüsel yazılım geliştirme modeli artırımsal

model çok benzerlik taşır.• Farkı ;

Artırımsal modelde, her döngüde tasarım, kodlama, test ve entegrasyon süreçleri bulunurken döngüsel modelde planlamadan başlayarak tüm proje süreçleri kapsanır.

Çevik Yazılım Geliştirme

Metodları(Agile)• Sürekli değişim,• Takım içerisindeki iletişimin üst düzeyde

olması,• Hızlı ve sürekli yazılım teslimatı,• Test odaklı yazılım geliştirimi,• Basitlik ve uyumlu planlama

Kodlama & Test• Bu aşamada yazılım kodlama, birim test, revizyon

ve yeniden test faaliyetleri gerçekleştirilir. Yazılım geliştirme esnasında kulladığımız yaklaşımlardan biri de sürekli entegrasyondur.

• Kod üzerinde yapılan her değişikliğin ardından, tüm sistemin çalışır durumda olduğunu kontrol etmek.

• Test yapılırken tüm senaryoların denenmesi gerekir.

• DENEME TESTLERİ• Önemli işlevlerin yerine getirilip getirilmediğini

anlayabilmek.• Birimin tüm isterleri karşıladığını denemek.• Yanlış girdiler alması halinde hataya dayanıklılığını

denemek.

• KABUL TESTLERİ• Yazılım ürününün tamamının istendiği gibi doğru çalıştığını

üretim yerinde sonra da kullanım yerinde testler yapılır.• Sistemin kullanıcısının amaçladığı şekilde kullanımı için

yeterli olduğunu göstermek.

İşletim ve Bakım• Sisteme periyodik bakımlar yapılmalı.• Hangi onarımların ne şekilde yapılması gerektiği

kullanıcıya teslim edilen sistem ile ilgili belgelerde belirtilmelidir.

• Gelişen teknolojiye ayak uydurmalı (İyileştirme).• Kullanım sırasında ortaya çıkan yazılım

kusurlarının giderilmesi,işlevsel hatalarının düzeltilmesi,sisteme yeni özellikler kazandırılması ya da var olanların değiştirilmesi.

Proje Yönetimi

• Görevlendirme• Proje planının yürütülmesi• Projenin öngörülen hedefe başarıyla ulaşması.• Zaman Yönetimi• Maliyet Yönetimi• Risk Yönetimi

Kalite Yönetimi

• Kaliteyi, yazılım geliştirme aşamaları boyunca yazılım ürününe yerleştirmek zorundayız.

• Standartlara uyumlu,• Amaçlanan kullanıma uygun,• Gereksinimleri karşılayan,• Belirlenen bütçe sınırları içinde gerçekleştirilmiş,• Bakımı sağlanabililen bir yazılım yapılmalıdır.

Sorular...

Hangisi yazılım geliştirme modeli değildir ?

• A- Şelale Modeli • B- Döngüsel Model• C- V Modeli• D-Spiral Model• E- Merdiven Modeli

• E- Merdiven Modeli

Spiral Modelde her döngünün

başında risk analizi yapılması

nedeniyle

zaman ve maliyet bileşenlerinin kolay

tahmin edilebilir.DOĞRU-YANLIŞ ?

• DOĞRU

Gereksinimleri Belirlerken yapılan

hataların maliyeti diğer süreçlere göre

daha fazladır.

DOĞRU-YANLIŞ ?

• Yanlış

Projeye göre yazılım geliştirme

modeli seçilir.

DOĞRU-YANLIŞ ?

• DOĞRU

Aşağıdakilerden hangisi yazılım

geliştirme süreçlerinden biri

değildir ?• A- Test• B-Kodlama• C-Gereksinimleri Belirleme• D-Bakım & Onarım• E-Yazılım Geliştirme Modelini Şeçme

• E- Çünkü yazılım geliştirme modeli gereksinimleri belirleme adımında belirlenir.

• Sorular ?