Yazılım Mühendisliği ym hakkında Neden Üzülmeliyiz?



Yüklə 463 b.
tarix30.04.2018
ölçüsü463 b.
#49559
növüYazı


Yazılım Mühendisliği


YM Hakkında Neden Üzülmeliyiz?

  • Bazı YM hataları http://www.wired.com/software/coolapps/news/2005/11/69355

    • Toyota araç ikaz lambalarının sebepsiz çalışması gibi raporlarından dolayı 160000 hibrit aracını geri çağırmıştır.
    • 1985-1987 -- Therac-25 tıbbi hızlandırıcı. Radyasyon terabi ayğıtı yanlış çalışmadan dolayı 5 kişinin ölümüne sebep vermiştir.
    • 1988-1996 -- Kerberos Random Number Generator. Kerberos random sayı üretecinde seed numarasının uygun kullanılmamasından dolayı geliştirilen şifrelerin kırılabileceği anlaşıldı.
    • 2000 yılı problemi
    • Diğer bir sürü hata…


Neden Zor?

  • Çok fazla sayıda “parça olması. Mekanik bir aygıtta olması gerekenden çok fazla

    • Bulaşık makinesi - 128 parça
    • Araba - 14,000 parça
    • Uzay gemisi - 2.5 milyon parça
    • Red Hat Linux 7.1 - 30 milyon satır kaynak kodu
    • Mac Office - 30 milyon satır kaynak kodu
      • 70 programcı ile= 428,000 satır_kod / programcı
    • Normal boyuttaki programlar için durum nedir?
      • Ortalama bir programcı kod yazımı/ gün= 100
      • 5 gün/hafta * 52 hafta/yıl = 26,000 satır_kod / yıl
      • 15 programcı takımı = 390,000 satır_kod/ yıl


Neden zor? (devamı)

  • YM alanı yeni bir alan

    • ENIAC/ MARK-I - 1946
    • FORTRAN - 1957
  • Fakat büyük – 2004 yılı itibariyle Amerikada 760840 yazılım mühendisi çalışıyor. - http://en.wikipedia.org/wiki/Software_engineering

  • Yaptığımız herşey yeni. (Aynı evi 30 kez inşa etmiyoruz)

  • Tekrar üretilebilir sonuçlara ihtiyacımız var.

  • Daha fazla ölçüme ihtiyacımız var.



Neden projeler başarısız oluyor?

  • Neden projeler bu kadar sıklıkla başarısız oluyor?

  • Realistik olmayan ve iyi belirlenmemiş proje amaçları

  • Gereken kaynakların yanlış tahmini

  • Kötü tanımlanmış sistem gereksinimleri

  • Proje durumlarının yetersiz/eksik raporlanması

  • Yönetilemeyen riskler

  • Müşteriler, yazılımcılar ve kullanıcılar arasındaki iletişim zayıflığı

  • Eski teknolojinin kullanımı

  • Proje karmaşıklığının kontrol edimesindeki yetersizlik

  • Özensiz geliştirme uygulamaları

  • Zayıf proje yönetimi

  • Hissedar politikaları

  • Ticari baskı

  • http://www.spectrum.ieee.org/sep05/1685



Nasıl tamir ederiz?

  • Daha fazla tekrarlanabilir sonuçlara sahip olmamız gerekiyor.

    • Standart süreçler (proces) / güzel çıktılar verebilen prosedürleri üretmek
    • Tasarım örüntüleri
    • Nesneye dayalı programlama (tekrar kullanım)
  • Yazılım ve süreçlerin herikisinin daha fazla kontrolü/ölçülmesi

  • Geliştirmenin her aşamasında daha fazla test yapmak gerekiyor.

  • Yazılımları geliştirmek için kullanılan süreçlerin daha iyi anlanması ve dolayısı ile en iyi yazılımı en hızlı şekilde üretebiliriz.



Software Engineering: A Practitioner’s Approach Bölüm 1 Yazılım ve Yazılım Mühendisliği (Slides modified by Dan Fleck) copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited.



Yazılımın İki Görevi

  • Yazılım bir üründür

    • Hesaplama potansiyelini kullanır
    • Bilgiyi üretir, yönetir, toplar, modifiye eder, gösterir ve iletir.
  • Yazılım bir ürünü üretmek için kullanılan bir yazılımdır.

    • Doğrudan sistem fonksiyonelliği sağlar veya fonksiyonelliğini destekler
    • Diğer programları kontrol eder (örnek, bir işletim sistemi)
    • İletişimi etkiler (örnek, ağ yazılımları)
    • Diğer yazılımların geliştirilmesine yardım eder (e.g., yazılım araçları)


Yazılım nedir?

  • Yazılım;

  • çalıştırıldığı zaman istenilen özellikleri, fonksiyonları ve performansı sergileyen komutlar kümesidir (bilgisayar programları),

  • programlara bilgiyi yeterli derecede idare etmeyi (manipulate) mümkün kılan veri yapılardır,

  • programların kullanımını ve işletilmesini tanımlayan dökümentasyondur.



Yazılım nedir?

  • yazılım mühendislik ürünüdür

  • yazılım eskimez

  • yazılım karmaşıktır

  • çoğu yazılım özel-yapılmıştır (custom-built)



Eskime - Yıpranma



Yazılım Uygulamaları

  • sistem yazılımı – işletim sistemi, dosya yönetimi, ağ yönetimi, sürücüler …

  • uygulama yazılımı – veri işleme, iş fonksiyonları…

  • mühendislik/bilimsel yazılım – CAD, stres analizi, …

  • gömülü yazılım – mikrodalga fırın tuşları, araç kontrolü, cep telefonu yazılımları, …

  • ürün-hattı yazılımları – kelime işleme, …

  • Web uygulamaları) – günümüzdeki çoğu uygulama

  • Yapay Zeka yazılımları – Robotik, veri madenciliği, uzman sistemler



Yazılım—Yeni Kategoriler

  • Heryerde olabilen hesaplama (Ubiquitous computing)—kablosuz ağlar

  • Netsourcing— Web’in bir hesaplama motoru olarak kullanılması

  • Açık Kaynak (Open source) — kaynakların herkesin kullanımına açılması

    • Veri madenciliği
    • Grid hesaplama
    • Bilişsel makinalar
    • Nanoteknoloji için yazılımlar


Yazılımın değişimi

      • Yeni hesaplama ortam veya teknolojilerine adapte olabilmelidir.
      • Yeni ticari ihtiyaçlara göre güçlendirilmelidir.
      • Diğer modern sistem ve veritabanlarıyla birlikte çalışabilmesi için geliştirilmelidir.
      • Bir ağ ortamında kullanılabilmesi için yazılımın tekrar tasarımı yapılmalıdır.


Web Uygulamalarının Karakteristikleri - I

  • Ağ yoğunlukludur: Bir web uygulaması ağda bulunur ve farklı istemci gruplarının ihtiyaçlarına hizmet eder.

  • Uyumluluk (concurrency): Aynı anda çok fazla sayıda kullanıcı web uygulamasına erişebilir.

  • Aşırı (öngörülemeyen) yük: Web uygulaması kullanıcılarının sayısı günden güne çok farklılık gösterebilir.

  • Performans: Web uygulaması kullanıcısı çok beklememelidir. (müşteri kaybına yol açabilir)

  • Mümkün olabilirlik: Popüler web uygulamalarına kullanıcılar 24/7/365 erişim yapabilmeyi isterler.



Web Uygulamalarının Karakteristikleri - II

  • Veriye bağlıdır (data driven): Web uygulamalarının çoğunun esas fonksiyonu metin, grafik, ses ve video içeriğini kullanıcılara ulaştırmak için hipermedyanın kullanılmasıdır.

  • İçeriğe duyarlıdır: Bir web uygulamasının kalitesinin tespitinde içeriği büyük önem taşır.

  • Güvenlik:Bazı durumlarda web uygulamalarına erişen sayısını sınırlamak imkansız olabilir.

  • Estetik: Web uygulamalarının inkar edilemez ilgi çekme şeklidir.



Yazılım Efsaneleri

  • Seçilmiş efsaneler

    • Eğer hedeflenen programın gerisinde kalırsak, programı yakalamak için daha fazla programcı istihdam ederiz.
    • Program yazmak için amaçların ana hatlarının belirlenmesi yeterlidir – detaylar sonra dolabilir.
    • Proje ihtiyaçları değişir fakat yazılım esnek olduğu için bu değişiklikleri kolaylıkla yazılımı yansıtabiliriz.
    • Programı yazdığımızda ve çalışır hale getirdiğimizde işimiz biter.
    • Yazılım mühendisliği bizi gereksiz dökümentasyona yönlendirir ve dolayısı ile sürekli olarak bizi yavaşlatır.


Genel Bir Çatı (Bakış)

  • İletişim

    • Muşterilerle sıkı işbirliği ihtiyaçların belirlenmesi ve bilgi toplanması için gereklidir.
  • Planlama

    • İş için bir planlanın oluşturulması. Takip edilecek teknik görevler, riskler, gereken kaynaklar, üreticilecek ürünler, ve plan.
  • Modelleme

    • Belirlenen ihtiyaçlara uygun olan tasarımın ve bu ihtiyaçların daha iyi anlaşılmasını sağlayacak modellerin müşteri ve programcı tarafından oluşturulmasıdır.
  • Yapılış

    • Kod üretiminin ve koddaki hataların tespiti için testlerin yapılması
  • Kullanımı

    • Yazılım kullanacak müşteriye ürünün teslimi ve kritiklerin alınması.


Yazılım Mühendisliği

  • Gerçeklerden birkaçı;

    • yazılım geliştirilmeden önce problemin anlaşılması için toplu bir çaba gösterilmelidir.
    • tasarım çok önemli bir aktivitedir.
  • Tanım

    • Yazılım mühendisliği gerçek makineler üzerinde etkili bir şekilde çalışan güvenilir yazılımları ekonomik olarak bulmak için sağlam mühendislik prensiplerinin kullanılması ve düzenlenmesidir.


Yazılım Mühendisliği

  • IEEE tanımı

    • Yazılım mühendisliği: 1) Yazılımın geliştirilmesi, yönetilmesi ve bakımı için sistematik, disiplinli, ölçülebilir yaklaşımların uygulamasıdır, 2) 1’de tanımlanan yaklaşımların çalışılmasıdır.



Yüklə 463 b.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2022
rəhbərliyinə müraciət

    Ana səhifə