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
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.
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
Kısacası, yaptım bitti yok, isteklere göre yazılımı değiştirmek gerekiyor.
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 ...
İ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.
“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]
... iyi yazılım şu 4 özelliği bulunduran yazılımdır ;
... 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 :)
kabacası ;
maliyetleridir
Müşteri özel projede, sonrasındaki Bakım Maliyeti ile maliyet 2 katına kadar çıkabilir.
Bakım maliyetini öngöremeyebilirsiniz.
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.
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...
(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.
Belirli bir hedef için gerçekleştirilen adımlar zinciridir. [IEEE]
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.
Analiz (Çözümleme) – Tasarım – Kodlama – Sınama – Bakım.
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?
Bir sonraki aşamaya geçmeden, önceki aşama neredeyse tümüyle tamamlanmış olmalıdır
Müşteriyi dinle – Ön ürün oluştur – Müşteri ön ürünü dener
Sistem, zaman içinde kazanılan anlayışa göre gelişir
Öğrenme amacıyla, sonradan atılabilecek prototipler (“throw-away
prototyping”) geliştirilir.