YAZILIM MÜHENDİSLİĞİ Dersleri

Faruk CAN

28.05.2015

Lütfen web sitemi ziyaret etmeyi unutmayın.

Konular arasında ilerlemek için sağa,

Bir konu hakkında ayrıntı için aşağı,

doğru ilerlemeniz gerekir

Belge Sürümü : 1.00

Son Güncelleme: 28/05

 

YAZILIM NEDİR?

 Bilgisayar programları ile bunlarla ilişkili yapılandırma ve belgelerin
bütünüdür.

yazılımın gelişimi

1940'lar yazılım elle yazılan basit kodlardı, 50lerde üretkenliği ve kaliteyi arttırmak için birleştirici, yorumlarıyıcı ve derleyiciler geliştirildi.

1968 yılında ilk kez "Yazılım Mühendisliği kavramı tartışıldı.

 

60larda ilk defa büyük yazılım projeleri çıktı. (1000 kişilik) ve ana-bilgisayar ve ticari yazılımlar üretildi.

70lerde UNIX için yazılım kütüphaneleri geliştirildi ve mini-bilgisayar ve küçük işler için yazılımlar üretilmeye başladı

80lerde kişisel bilgisayar ve iş istisyonlarının çıkması sebebiyle ticari yazılımlar yapıldı

90larda avuç içi bilgisayarlar çıktı ve Web teknolojileri için yazılımlar yapıldı, fakat teknolojik gelişmeler yazılım fiyatlarını düşürdü

2000lerde globalleşme sebebiyle yazılımlara olan talep arttı. Bütünleşik geliştirme ortamları geliştirildi.

YAZILIM KRİZİ

Yazılım ürünlerine artan talepler, karşılanamamaya başladı ve bu yetersizlik dünyada Yazılım Krizi olarak adlandırıldı

insanlar çok şey ister, onun isteklerle başaçıkabilmeniz gerekiyor

YAZILIM KRİZİNİN ETKİLERİ

Kısacası, yaptım bitti yok, isteklere göre yazılımı değiştirmek gerekiyor.

BÜYÜKLÜK / BAŞARI İLİŞKİSİ

Proje büyüdükçe başarı azalmaktadır.

Başarısız olmamak için bu yazılım mühendisliği bilimini iyi öğrenin ...

Yazılım Mühendisliği Nedir?

İhtiyaç

Yazılım Mühendisi

Yazılım

Yazılım Mühendisliği; yazılım ürününün geliştirilmesi, işletilmesi ve bakımı
için uygulanan; sistematik, disiplinli ve ölçülebilir yaklaşımdır.
[IEEE, 1990]

 HATIRLATMA : Konuda ilerlemek için aşağıya doğru ilerleyin

Tekrarlanabilir başarılar için mühendislik yaklaşımı şarttır.

Mühendislik, herhangi bir bilim alanındaki bilgi birikimini sistematik olarak
pratiğe geçirmeyi hedefler; bilimi ve matematiği kullanır.

  • Yönetim parametreleri: İşlev, maliyet, zaman
  • Kalite parametreleri: Dayanıklılık, bakım kolaylığı, güvenlik, kullanım kolaylığı, vb.

 “The practical application of scientific knowledge in the design and
construction of computer programs and the associated documentation
to develop, operate and maintain them.”
[Boehm, 1976]

“... the technological and managerial discipline concerned with
systematic production and maintenance of software products that are
developed and modified on time and within cost estimates”
[Fairley, 1985]

“... kısacası disiplin, dökümantasyon,öntasarım ve planlama önemlidir. ”

[Faruk CAN,2015]

YAZILIM MÜHENDİĞİNİN KAPSAMI

  • Yazılımın gereksinimlerinin analizi
  • Yazılımın tasarımı
  • Yazılım Gerçekleme / Programlama
  • Yazılım Testi
  • Yazılımın Bakımı (Sonrasıda geliştirme)
  • Yazılımın mühendisliği yönetim
  • Yazılım ayarlamaları yönetimi
  • Yazılım Mühendisliği Süreçleri
  • Yazlım Mühendisliği Araç ve Yöntemleri
  • Yazılım Kalitesi / Performansı

İyİ Yazılım NEDİR ? ...

... iyi yazılım şu 4 özelliği bulunduran yazılımdır ;

  1. Bakım-Yapılabilirlik (maintainability) : İhtiyaca göre güncellenebilmelidir
  2. Güvenirlik (dependability) : Yazılım sorunsuz çalışmalı, güvenilebilinmeli
  3. Etkinlik (efficiency) : Kaynakları israf etmeden, verimli kullanabilmeli
  4. Kabul-Edilebilirlik (acceptability) : Kullanıcılar tarafından kabul görmeli, beklentiyi karşılamalı

Bilgisayar Bilimleri ve Yazılım Mühendisliği Arasındaki İlişki Nedir?

... Kısacası, bilgisayar bilimci, teori ve yöntemlerle ilgilenir.Konu nasıl yapıldığından çok, yapılabilirliğidir.

Yazılımcı en pratik ve verimli şekilde nasıl yapacağıyla ilgilenir.

Yani bilgisayar bilimci konuşur, yazılım mühendisi yapar :)

Yazılım Mühendisliğinde
Maliyetlerin Dağılımı Nedir?

kabacası ;

  • %60 Geliştirme
  • %40 Test

maliyetleridir

Müşteri özel projede, sonrasındaki Bakım Maliyeti ile maliyet 2 katına kadar çıkabilir.

Bakım maliyetini öngöremeyebilirsiniz.

Yazılım Mühendisliğinde HEDEFLER

HETEROJENLİK ;

Yazılımım farklı ortamlarda ve değişen şartlarda çalışabilmesidir.

Mesela; Akıllı telefonların çıkmasıyla, uygulamalarım android platform içinde yapılmaya başlaması gibi.

 

TESLİM :

Proje zamanında bitirilip verilmelidir.

 

GÜVEN :

Yazılımın güvenilebilceğini kullanıcılara göstermek, kanıtlamaktır.

 

YAZILIM MÜHENDİSLİĞİ ETİĞİ

GİZLİLİK

Uygulamanın kullanıcıların bilgileri gizlemek , başkalarına vermemek ve kendi amaçları için kullanmamaktır.

ÖRN: Google gibi bunu devasa gizlilik anlaşması ile kullanıcıya kabul ettirmek...

REKABET

Etkin olmadığınız bir alandaki işi kapmaya çalışmamaktır. İşi bilenlere bırakın, başarısız olup itibarınızı düşürmeyin.

ÖZLÜK HAKLARI

Patent, lisans ve mülkiyetleri dikkat etmektir.

ÖRN:Bütün hakları saklı olan teknoloji ve bilgiyi kullanmak

AMAÇ-İÇİ KULLANIM

Bir yazılımı amacı dışındaki işler için kullanımı; müşteri bilgisayarının kaynaklarını kendi üzerine çekmemektir. Veya yazılım gizli bir truva atı veya virüs olmaması gibi...

YAZILIM SÜREÇ MODELLERİ

(METODOLOJİ)

Yazılım geliştirme süreçlerini, aşamaları ve yöntemleri içinde bulunan yöntem bütünlerini inceleyen bilime Metodoloji diyeceğiz.

 

İnsanoğlu yazılım geliştirmenin karmaşıklığına karşı koyabilmek için belli yöntemleri birleştirip bir süreç içinde sistematik planlar oluşturmuştur, günümüzde çeşitli metodolojiler mevcuttur.

 Süreç nedir?

 Belirli bir hedef için gerçekleştirilen adımlar zinciridir. [IEEE]

 Yazılım süreci nedir?

Yazılımı ve ilişkili ürünlerini geliştirmek ve idame ettirmek için kullanılan
etkinlikler, yöntemler, pratikler ve dönüşümlerdir. [SEI]

Yazılım geliştirme ve idame amacı güden etkinlikler setidir.

Geleneksel Yazılım METODOLOJİLERİ

  • Waterfall/Şelale Modeli
  • Prototip/Evrimsel/Ön ürün metodolojisi
  • Kademeli/Arttırımsal/Yinelemeli metodoloji
  • Sarmal/Spiral metodoloji

WATERFALL MODELİ

Analiz (Çözümleme) – Tasarım – Kodlama – Sınama – Bakım.

Aşamalar

Gereksinim Tanımlama: Gerçekleştirilecek sistemin gereksinimlerinin belirlenmesi
işidir.

 Müşteri ne istiyor? Ürün ne yapacak, ne işlevsellik gösterecek?

 Tasarım: Gereksinimleri belirlenmiş bir sistemin yapısal ve detay tasarımını
oluşturma işidir

 Ürün, müşterinin beklediği işlevselliği nasıl sağlayacak?

 Gerçekleştirme ve Birim Test :  Tasarımı yapılmış bir yazılım sisteminin kodlanarak gerçekleştirilmesi işidir.

Yazılım ürünü, tasarımı gerçekleştirecek şekilde kodlandı mı?

Tümleştirme ve Test: Gerçekleştirilmiş sistemin beklenen işlevselliği gösterip
göstermediğini sınama işlemidir.

 Ürün, müşterinin beklediği işlevselliği sağlıyor mu?

 İşletme ve Bakım: Müşteriye teslim edilmiş ürünü, değişen ihtiyaçlara ve ek
müşteri taleplerine göre güncelleme işidir.

Ürün müşteri tarafından memnuniyetle kullanılabiliyor mu?

waterfallİN ZORLUKLARI

 Bir sonraki aşamaya geçmeden, önceki aşama neredeyse tümüyle tamamlanmış olmalıdır

  • Bu isteklerin projeye yansıtılmasını zorlaştırır. İsterler önceden kesin belirlenmelidir
  • Bu sebeple geniş kapsamlı projelerde tercih edilir.
  • Uzun sürer.
  •  

PROTOTİP METODOLOJİSİ

Müşteriyi dinle – Ön ürün oluştur – Müşteri ön ürünü dener

ADımları

Sistem, zaman içinde kazanılan anlayışa göre gelişir

  • Amaç, müşteriyle birlikte çalışarak taslak bir sistem gereksinimleri tanımından çalışan bir sisteme ulaşmaktır.
  • En iyi bilinen gereksinimlerle başlanır ve müşteri tarafından talep edildikçe yeni özellikler eklenir.

 

 Öğrenme amacıyla, sonradan atılabilecek prototipler (“throw-away
prototyping”) geliştirilir.

  • Amaç, sistem gereksinimlerini anlamaktır.
  •  En az bilinen gereksinimlerle başlanır ve gerçek ihtiyaç anlaşılmaya çalışılır.

ZORLUKLARI

  •  Geliştirme süreci izlenebilir değildir. Her seferinde eklemelerle çalışan sistem, müşteriyle gözden geçirilir.
  • Zaman içinde kazanılan anlayışa göre geliştirilen sistemler, sıklıkla
    kötü tasarlanır. Ön ürün mükemmel değildir. Maliyet ve zaman sebebiyle eksik ürün kullanıma alınabilmektedir.
  •  Küçük- ve orta-ölçekli, etkileşimli (“interactive”) sistemler için
    uygulanabilir.Daha büyük ölçekli sistemlerin belirli bir bölümü için uygulanabilir.
  •  İdamesi nispeten kısa sürecek sistemler için uygulanması önerilir.

KADEMELİ METODOLOJİ

Yazılım Mühendisliği

By Faruk CAN

Yazılım Mühendisliği

Yazılım Mühendiği hakkında çok faydalı ve gerekli bilgiler içeren slayt dersimdir

  • 1,487