1 / 39

Bölüm 1

Bölüm 1. Yazılım Mühendisliği. Yazılım Mühendisliği. Ortaya çıkan yazılım ürünlerinin karmaşıklığını ve boyutunu yönetmek için uygun araçlar kullanarak, zaman ve maliyet sınırları içerisinde geliştirilmiş bilgisayar programlarının tasarım, üretim ve bakımıyla ilgilenen disiplindir.

odessa
Download Presentation

Bölüm 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bölüm 1 Yazılım Mühendisliği

  2. Yazılım Mühendisliği • Ortaya çıkan yazılım ürünlerinin karmaşıklığını ve boyutunu yönetmek için uygun araçlar kullanarak, zaman ve maliyet sınırları içerisinde geliştirilmiş bilgisayar programlarının tasarım, üretim ve bakımıyla ilgilenen disiplindir.

  3. Yazılım Hayat Süreci • Problem analizi • İhtiyaçların tespit edilmesi • Yazılım şartnameleri • Alt ve üst düzey tasarım • Tasarımı uygulama

  4. Yazılım Hayat Süreci • Test etme ve Doğrulama • Teslim(Delivery) • İşlem(Operation) • Bakım(Maintenance)

  5. ProgramcıAlet kutuları • Donanım—Bilgisayar ve çevr birimleri • Yazılım—İşletim sistemleri, editörler,derleyiciler, yorumlayıcılar, hata ayıklayıcı sistemler, test verisi üreteçleri, vs.

  6. ProgramcıAlet kutuları • Fikirler(Ideaware) • Algoritmalar • Veri Yapıları • Programlama yöntemleri • Tasarım yardımcıları • CRC kartları • UML(Unified Modeling Language) • Senaryolar(Scenarios)

  7. ProgramcıAlet kutuları • Yazılım Kavramları • Bilgi gizleme(Information hiding) • Veri kapsülleme(Data encapsulating) • Soyutlama(Abstraction)

  8. Kaliteli Yazılımın Amaçları • Çalışır • Fazla zaman ve güç harcamadan düzeltilebilir • Tekrar kullanılabilir. • Zamanında ve bütçe sınırları içerisinde tamamlanabilir.

  9. Tavsiye edilen program şartnameleri • İhtiyaçların işlenmesi • Örnek girdilerle beklenen çıktılar • Varsayımlar • Terimlerin tanımları • Bir test planı

  10. Detaylı Program Şartnamesi • Programın nasıl yaptığını değil, neyapması gerektiğini söyler • Program hakkında yazılı bir belgedir.

  11. Soyutlama • Bir sistemin gözlemcisine göre gerekli olan detayları içeren daha karmaşık bir sistemin modelidir. • Programlar bir soyutlamadır

  12. Soyutlama

  13. Bilgi Gizleme • Sistemin geriye kalan kısmından modülün detaylarını, bu detaylara erişimi kontrol altında tutarak saklama eylemidir. • Bir programcı bir defada bir modülle ilgilenebilir • Her bir modülün tek bir gayesi veya kimliği bulunmalıdır

  14. Görsel Yardımcılar—CRC kartları

  15. Nesneye Yönelik Programlama(NYP) Kısa Özeti • Üç ilişkili yapı: sınıf, nesne ve • Nesneler bir NYP sistemindeki çalışma zamanı elemanlarıdır • Bir sınıf nesnelerinin yapısını tanımlar. • Sınıflar kalıtımla tanımlanmış bir “is-a”hiyerarşisi içinde organize edilmiştir.

  16. Date Class • Programs\C01P14.jpg program için tıklayınız

  17. Date class için UML class diyagramı

  18. Genişletilmiş(Extended) UML class diyagramıDatenesnelerini göstermektedir • Date myDate = new Date (6, 24, 1951); • Date yourDate = new date (10, 11, 1953); • Date ourDate = new Date (6, 15, 1985);

  19. Kalıtım(Inheritance) • Programcıya mevcut bir sınıfın daha özelleştirilmiş bir sınıfını oluşturma imkanı verir. • Yeni sınıfa mevcut sınıfın alt sınıfı(subclass) denir. Mevcutsınıf ise yeni sınıfın üst sınıfı(superclass) olur

  20. IncDate

  21. Date ve IncDate Kullanımı

  22. Kalıtımı gösteren EUML Class Diyagramı

  23. NYP Tasarımı • Sınıfları belirleyin • Sınıfları bir kalıtım hiyeraşisinde düzenleyin • Önceden yazılmış sınıfları bulun

  24. Sınıfları Belirleme • Fikirler için beyin fırtınası yapın • Problemdeki nesneleri belirleyin • Genelde nesneler isimler, işlemler de fiillerdir. • Sınıfları filtreleyin • Nesnelerin bir işi gerçekleştirebilmek için birbirleriyle etkileştikleri bazı senaryoları göz önüne alın • CRC kartları bu senaryoları düşünmemizde faydalı olur

  25. Özet: Sınıfları Belirleme Yaklaşımları • Ana sınıflarla başlayıp daha sonra tasarıma ince ayar yapın • Önemli tasarım kararlarını ve sınıf içerisinde değişmesi muhtemel ihtiyaçları gizleyin • Bir grup programcıyla beyin fırtınası yapın • Her bir sınıfın tek bir sorumluluğu yerine getirmek üzere tasarlandığından emin olun.

  26. Özet(Devam) • Sınıfları düzenlemek ve tasarımdaki boşlukları belirlemek için CRC kartlarından faydalanın • Kullanıcı senaryolarının üzerinden geçin • Problem tanımındaki isim ve fiilere dikkat edin

  27. Program doğrulama bir yazılım ürününün şartnamesine hangi ölçüde uyduğunu belirleme işlemidir

  28. Doğrulama(Verification)Geçerli Olma(Validation) Program doğrulama, “İşi doğru yapıyor muyuz?” Programın geçerli olması, “Doğru işi yapıyor muyuz?” B.W. Boehm, Software Engineering Economics, 1981.

  29. Hata Tipleri • Şartname • Tasarım • Kodlama • Girdi

  30. Farkedilme Zamanına göre Hata Maliyetleri

  31. Hataları Kontrol Etme Sağlamlık(robustness): Programın bir hata sonrası düzgün bir şekilde çalışmayı sürdürmesi veya verilen şartlar dahilinde çalışabilmesi Önşartlar(Preconditions):Hedef şartların garantilenebilmesi için bir işleme veya metoda girişte doğru olması gereken varsayımlar Hedef şartlar(Postconditions)Statements that describe what results are to be expected at the exit of an operation or method, assuming that the preconditions are true.

  32. Test Tipleri Birim testi(Unit test):Bir sınıf veya metodu kendi başına test etme Kara kutu testi(Black-box testing): Bir program veya metodu kodu kara kutu gibi kabul ederek muhtemel girdi değerlerine göre test etme Beyaz kutu testi(Clear (white) box testing):Bir program veya metodu kodun bütün dallanmalarını veya yollarını kapsayacak şekilde test etme

  33. Test Planları • Bir program veya modül için planlanan test etme olaylarını, bunların amaçlarını, girdilerini, beklenen çıktılarını ve başarı için gerekli şartlarını gösteren belgedir. • Program testinin etkin olabilmesi için mutlaka planlanması gerekir • Tek bir satırlık kod yazarken bile test etme planı yapmaya başlamak gerekir

  34. Testing Java Data Structures

  35. Life-Cycle Verification Activities

  36. Life-Cycle Verification Activities

More Related