Download - Yazılım Sistemleri
Yazılım Sistemleri
Yazılıma genel bakış
•Yazılım, yazılım mühendisi tarafından tasarlanır ve geliştirilir;
•Yazılım toplumdaki hemen-hemen her kişi tarafından kullanılmaktadır;
•Yazılım geliştiriciler diğer insanlara zarar vermeyecek güvenilirli yazılım geliştirmek için ahlaki yükümlülük taşımaktadırlar;
•Yazılım kullanıcılarını, yalnız yazılım ürünlerinin beklentileri hangi seviyede karşıladıkları değil, aynı zamanda onların çalışmalarını ne kadar kolaylaştıracağı da düşündürmektedir.
YASAD (Türkiye Yazılım Sanayicileri YASAD (Türkiye Yazılım Sanayicileri Derneği) raporu verileri (2006) Derneği) raporu verileri (2006)
• Dünya bilişim sektörü 2.3 trilyon Euro hacme sahip, yazılım sektörü Dünya bilişim sektörü 2.3 trilyon Euro hacme sahip, yazılım sektörü ise bunun yaklaşık yüzde 25’ini oluşturuyorise bunun yaklaşık yüzde 25’ini oluşturuyor
• ““2015'te en az 2 milyar dolarlık yazılım ihracatının gerçekleştirilmesi, 2015'te en az 2 milyar dolarlık yazılım ihracatının gerçekleştirilmesi, yerli yazılım şirketlerinin küresel markalar olmaları, 2023'te ise yerli yazılım şirketlerinin küresel markalar olmaları, 2023'te ise Türkiye'nin ihracatçı güçleri arasında ilk 5'e girmesi amaçlanıyorTürkiye'nin ihracatçı güçleri arasında ilk 5'e girmesi amaçlanıyor
• İGEME (ihracatı geliştirme ve etüt Merkezi) “yazılım sektörü” İGEME (ihracatı geliştirme ve etüt Merkezi) “yazılım sektörü” raporuna göre: raporuna göre:
• 2006 yılında Türk yazılım sektörünün ihracatı yüzde 20 oranında 2006 yılında Türk yazılım sektörünün ihracatı yüzde 20 oranında artarak 650 milyon dolara çıkacak.artarak 650 milyon dolara çıkacak.
YASAD (Türkiye Yazılım Sanayicileri YASAD (Türkiye Yazılım Sanayicileri Derneği) raporu verileri (2006) Derneği) raporu verileri (2006)
Dünyadaki yazılım harcaması 2007 yılında 740 milyar doları aşacak.Dünyada yazılım sektörünün önde gelen ülkeleri : ABD, Almanya, İngiltere,
Hindistan, İsrail, İrlanda ve İsveç. Türkiye, henüz bu ülkelerle yarışabilecek kapasitede değil, ancak hızla
yükselen ve gelişen bir sektöre sahip.
Türkiye’de yazılım sektörünün hacmi 2005 yılında 540 milyon dolara ulaştı.
Yazılım ihracatı yapılan ülkeler: ABD 2.2 milyon dolar, Almanya 2 milyon
dolar.
Yazılım ithalatına bakıldığında, ithalatta ABD ve AB ülkeleri başı çekiyor. Türkiye, 2005 yılında İngiltere’den 14.5 milyon dolar, Almanya’dan 13 milyon dolar ve ABD’den 11.8 milyon dolarlık ithalat yaptı.
Yazılım projeleri ile bağlı diğer istatistiklerYazılım projeleri ile bağlı diğer istatistikler
• Kullanıcıların fikirlerini değiştirmesi nedeniyle tamamlanamayan yazılım projeleri tüm yazılım projelerinin yarısını oluşturuyor;
• Yazılım projelerinin neredeyse ¼’i gereksinimlerin değişmesi, zaman ve kaynak yetersizliği veya başka nedenlerle teslim edilemiyor
• Yazılım projelerinin yaklaşık 1/4 ‘i başarıyla teslim ediliyor;• Bakım: Sistemin yaşam devri süresince Yazılım projesine
harcanan çabanın % 70 ve daha fazlası yazılımın bakımına ve iyileştirilmesine ayrılıyor
• Teslim: Büyük yazılım projesinin kavramsal tasarımdan son kullanıcıya teslimine dek (veya gerçek kullanıma dek) geliştirilme maliyeti toplam maliyetin % 20-30’u arasındadır.Diğer faaliyetler (belgeleme, eğitim, destek, ağ tasarımı ve s) %70-%80 civarındadır.
• Ticari yazılım geliştiriciler, yılda 12.000 kod satırı yazıyorlar (kaynak: Wikipedia)
Yazılımın nitelikleriYazılımın nitelikleri
• Yazılım geliştirilir veya tasarlanır; ama Yazılım geliştirilir veya tasarlanır; ama klasik anlamda imal edilemezklasik anlamda imal edilemez
• Yazılım aşınmazYazılım aşınmaz
• Pek çok yazılım özel oluşturulur; Pek çok yazılım özel oluşturulur; genelde varolan bileşenlerden genelde varolan bileşenlerden yığılamazyığılamaz
Donanımın Yetersizlik Eğrisi
YETERSİZLİK SEVİYESİ
zaman
Çocuk ölümü eskime
Yazılımın ideal “yetersizlik eğrisi”Yazılımın ideal “yetersizlik eğrisi”
YETERSİZLİK SEVİYESİ
zaman
Eskiyene dek devam ediyor
Yazılımın gerçek “yetersizlik eğrisi”Yazılımın gerçek “yetersizlik eğrisi”
• YETERSİZLİK SEVİYESİ
zaman
İdeal eğri
değişme
Gerçek eğri
Yazılım TürleriYazılım Türleri
• Sistem YazılımlarıSistem Yazılımları
• Gerçek zaman YazılımlarıGerçek zaman Yazılımları
• İş Yazılımlarıİş Yazılımları
• Mühendislik ve Bilimsel YazılımlarMühendislik ve Bilimsel Yazılımlar
• Gömülmüş YazılımlarGömülmüş Yazılımlar
• Kişisel Bilgisayarların YazılımlarıKişisel Bilgisayarların Yazılımları
• Ağ yazılımlarıAğ yazılımları
• Yapay Zeka YazılımlarıYapay Zeka Yazılımları
YAZILIM SÜRECİ VE YAZILIM SÜRECİ VE
SÜREÇ MODELLERİSÜREÇ MODELLERİ
Yazılım süreciYazılım süreci• Yazılım Sistemlerinin belirtilmesi, tasarlanması,
çalıştırılması ve denetimi için gereken faaliyetlerin uyumlu kümesi
• Faaliyetler: - Yazılım sisteminin tanımlanması ve çözümleme -
yazılımın işlevselliği ve işlemlere koyulmuş sınırlamalar tanımlanmalıdır– Tasarım (Geliştirme) –gereksinimleri sağlayan yazılım
üretilmelidir– Deneme –müşteri isteklerinin karşılandığına emin olmak için yazılım
doğrulanmalıdır
– Çalıştırma ve bakım– Yazılımın evrimi –müşterinin değişen isteklerinin sağlana
bilmesi için yazılım gelişe bilmelidir
• Yazılım süreci modeli sürecin basitleştirilmiş soyut tasviridir.O, her hangi özgü açıdan süreci ifade eder. Yazılımın geliştirilmesi için kullanılan genel modeller:
• Şelale modeli– Faaliyetlere bağımsız süreçler gibi bakılıyor
• Evrimsel geliştirme– Kullanıcı ve sistem gereksinimleri evrimsel
olarak karşılanmaktadır
Yazılım Geliştirme Modelleri
Şelale ModeliŞelale Modeli
Şelale Modelinin safhalarıŞelale Modelinin safhaları
• Gereksinimlerin çözümlenmesi ve tanımlanması
• Sistem ve yazılım tasarımı• Birim ve bütünleşme denemesi• Sistem ve teslimat denemesi• Çalıştırma ve bakım• Şelale modelinin yetersiz yönü, süreç
tamamlandıktan sonra değişikliklerin yapılmasının zorluğudur
Şelale Modelinin sorunlarıŞelale Modelinin sorunları
• Projenin farklı aşamalara esnek biçimde bölünmemesi; Bu, değişen müşteri gereksinimlerini yerine getirmekte zorluklar yaratır
• Bu nedenle, şelale modeli, gereksinimlerin yalnız çok iyi tanımlandığı takdirde uygun modeldir
Yazılım geliştirmenin gerçek süreci
Yazılım geliştirme süreci safhaları
Evrimsel GeliştirmeEvrimsel Geliştirme
• Temel düşünce: ilkin bir çalışma yapmak,bunu müşteri görüşüne sunmak, bu görüşleri de dikkate alarak sistemin son gereken halini alana dek sürümlerini geliştirmek
• Açınsama (Exploratory)Geliştirmesi – Müşteri ile birlikte çalışarak gereksinimlerin açınsaması; başlangıç
ana hatlarıyla verilmiş belirteçten son sisteme doğru evrimsel geliştirme yapılması. Sistemin anlaşıla bilir kısmı ile başlanılmalıdır. Müşterinin önerdiği yeni özellikleri ilave etmekle evrimleşmelidir.
• Prototip geliştirme– Hedef- müşteri gereksinimlerinin anlaşılması; sistem için en iyi
gereksinim tanımlanmasının geliştirilmesi; müşteri gereksinimlerinin zayıf anlaşılır kısımları üzeride denemelere odaklanıyor.
Evrimsel geliştirme yaklaşımları arasındaki farklar
• Açınsama yaklaşımında hedef çalışır sistemi son kullanıcıya teslim etmektir. Daha iyi anlaşılır ve yüksek öncelikli gereksinimlerle başlanılır. Zayıf öncelikli ve kesin anlaşılmayan kısımlar yalnız kullanıcı isteği ile çalıştırılır.
• Prototip yaklaşımında ise hedef sistem gereksinimlerinin geçerliliğini yoklamaktır. Zayıf anlaşılabilir gereksinimlerle başlamanın nedeni onları daha iyi anlamaktır. Çok iyi anlaşılan gereksinimler için prototipe gerek yoktur
Evrimsel geliştirme yaklaşımları arasındaki farklar
• Açınsama yaklaşımında hedef çalışır sistemi son kullanıcıya teslim etmektir. Daha iyi anlaşılır ve yüksek öncelikli gereksinimlerle başlanılır. Zayıf öncelikli ve kesin anlaşılmayan kısımlar yalnız kullanıcı isteği ile çalıştırılır.
• Prototip yaklaşımında ise hedef sistem gereksinimlerinin geçerliliğini yoklamaktır. Zayıf anlaşılabilir gereksinimlerle başlamanın nedeni onları daha iyi anlamaktır. Çok iyi anlaşılan gereksinimler için prototipe gerek yoktur
Evrimsel GeliştirmeEvrimsel Geliştirme
ValidationFinal
version
Development Intermediateversions
Specification Initialversion
Outlinedescription
Concurrentactivities
Sistemin ana hatlarının
tanımlanması
Paralel
işlemler
çözümleme
tasarım
deneme
İlk
sürüm
Aralık sürümler
Nihai sürüm
Evrimsel geliştirme-Prototip Evrimsel geliştirme-Prototip GeliştirmeGeliştirme
başlama başlama
Gereksinimlerin edinmesi ve arındırma
hızlı
tasarım
Prototip
oluşturma
Son kullanıcı değerlendirmesi
Yeni prototipin tanımlanması
Mühendis
ürünü
bitiş
• Sorunlar
– Geliştirme sürecini bütünlükle görmek mümkün olmaya bilir
– Sistemler çoğu zaman zayıf yapılanmış oluyorlar– Özel marifetler (örneğin, hızlı prototipler oluştura bilen
diller) gereke bilir• Uygulana bilirlik
– Küçük ve orta boyutlu etkileşimli sistemler için– Büyük sistemlerin kısımları için (örneğin, kullanıcı
arayüzü)– Kısa yaşam devirli sistemler için daha uygundur
Evrimsel Geliştirme (devamı)