Yazılım Mühendisliği ym hakkında Neden Üzülmeliyiz?
Yüklə
463 b.
tarix
30.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ümesi
dir (bilgisayar programları),
programlara bilgiyi yeterli derecede idare etmeyi (manipulate) mümkün kılan
veri yapılar
dı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.
Kataloq:
mcelik
->
bz313
bz313 -> İhtiyaçları Anlama
bz313 -> Risk Analizi
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ə
Dərs
Dərslik
Guide
Kompozisiya
Mühazirə
Qaydalar
Referat
Report
Request
Review
Təhsil proqramı