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
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.
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.