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 ;
- Bakım-Yapılabilirlik (maintainability) : İhtiyaca göre güncellenebilmelidir
- Güvenirlik (dependability) : Yazılım sorunsuz çalışmalı, güvenilebilinmeli
- Etkinlik (efficiency) : Kaynakları israf etmeden, verimli kullanabilmeli
- 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,953