www.fatihkabakci.com

Personal Website and Computer Science TUR EN

YAZILIM MUHENDISLIGI YONTEMLERI ILERI KONULAR

YAZILIM MUHENDISLIGI YONTEMLERI ILERI KONULAR
Last update: 6/25/2015 11:10:00 AM

Çözümleyen: Fatih KABAKCI

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

1.1) Programcının/yazılımcının yazdığı kodu gözden geçirmesi, test etmesi, biçimsel olarak incelemesi ve yazılımın yeniden kullanılması kusurdan kaçınmak için yaptığı aktiviteler arasındadır. Özellikle yazılımın yeniden kullanılması, kodu merkezileştireceğinden, bakımını kolaylaştırarak hataları kolayca farkedebilmeyi sağlayacaktır.

1.2) Kalite güvence aktivitelerinden sonra ve paralel olarak yapılan, kalite analizinde en fazla çaba harcanmaktadır.

1.3) Şayet kusurlu kod iki farklı ürünü kullanarak kullanıcı grubu içinde beklentileri karşılamayacak, tutarsız bir yaklaşım içine girerse, ki böyle olması muhtemeldir, iki üründe de arızaya kesinlikle neden olur. Örnek olarak aşağıdaki basit fonksiyonu inceleyelim.

public static double ikiyeBöl(double sayi)
   {
      double carpan = 1/2;
      sayi = sayi * carpan;
      return sayi;
   }

Yukarıdaki kod bir program modülü içerisinde kullanılmaktadır. İlk başta problem yokmuş gibi görünen bu kod içerisinde dikkat edilirse double carpan = 1/2; ifadesi aslında 0 döndürür. Çünkü Java derleyicisi varsayılan durumda 1 ve 2 sayılarının bir integer, tamsayı olduğunu kabul eder. Bu durumda bölme işlemi beklendiği gibi 0.5 değil, 0 çıkacaktır. Yukarıdaki bu hata(error) programcılar tarafından sıklıkla yapılır ve gözden kaçabilir. Böyle bir program kodu hangi üründe çalışırsa çalışsın bir arızaya(failure) sebep olacaktır. Yazılım içerisindeki bu kusurlu kodun(fault) doğru hali double carpan = 1.0/2; şeklindedir.

1.4) Bu bir programcı hatasıdır. Arıza(failure) denemez çünkü problem henüz kullanıcıya ulaşmamıştır. Programcının gözünden kaçan bu davranış bir error olarak ifade edilir. Bu hata(error) daha sonra yazılım içerisinde bir kusur(fault) olarak adlandırılır.

1.5) Mimari kalıplar, deneysel veriler, kusur oranları gibi bir takım çıktılar ile sağlanabilir. Başarının halen yeteri kadar sağlanamaması deneysel yazılım mühendisliğinin kullanılamamasından kaynaklanmaktadır.

1.6) Uzay mekiği uçuş kontrol yazılımında ortaya çıkan her bir problem için bir çok algoritma uygulanıp, her bir algoritmanın kararına göre çoğunluğu belirleyerek bir çözüm üretilebilir. N Versiyon Programlama Şeması(N-Version Programming Schema) ve Kurtarma Blok Şeması(Recovery Block Scheme) gibi tasarım yaklaşımları bu hususta kullanılabilir.

1.7) En önemlisi kullanıcı deneyimlerinin yansıtıldığı arıza(failure) kayıtlarıdır. Ayrıca bir takım yazılım metriklerinin kullanılması da güvenilirlik kestirimi için önemlidir.

1.8) Soruda atfedilen Çağlayan tipi yazılım geliştirme, orjinal adıyla Waterfall olarak bilinen yazılım geliştirme modelidir. Gereksinim analizi, projenin en başında tartışılan, amaçların, ihtiyaçların ortaya konduğu bir evredir. Dolayısıyla bu evre de yapılacak işlem inceleme kalite güvence aktivitesi olacaktır. Çünkü Waterfall yazılım geliştirme modelinde her adım(step) tekrar tekrar ele alınarak kontrol edilir. Eksik bir iş varsa yeniden ele alınıp süreçler uygulanır. Test, kusur kestirimi, kusur toleransı gibi güvence aktivitleri daha çok gereksinimin tamamlanmış, uygulama sırasında ortaya çıkan aktiviteler olarak bilinir.

Bölüm 2 - Yazılım Metrikleri

2.1), 1 + if + do-while + if = 4 çevrimsel karmaşıklık(cyclomatic complexity) değeri bulunur.

2.2), Bakım yapılabilirlik indeks(maintability index) değerinin hesaplanmasında MS Visual Studio yazılım aracı kullanılmıştır. Bunun için aşağıdaki ayarlamalar gösterilmektedir.

İlk olarak Visual Studio içerisinde MaintabilityIndex adlı boş bir proje(Empty Project) oluşturulmuştur.

MS Visual Studio Maintabilty Index Project

Proje içerisinde Source.cpp kaynak dosyası içerisine, soru 2.2 de belirtilen kaynak kod yerleştirildikten sonra, projenin build olabilmesi için aşağıdaki prototip tanımlamaların eklenmesi gerekir. Farklı bir yöntem ile yapan okuyucular çözüm sayfasına yazabilirler. Aşağıdaki tanımlamalar ile birlikte soru 2.2 de verilen fonksiyonu kaynak dosyanıza ekleyin.

#include <string.h>
#include <stdlib.h>

int const MAX_PAYLOAD_LENGTH = 1;
int my_address = 0;
int proc_pipes[10][10];
typedef int proc_addr;
struct message_s {
    int src_id;
    char *payload;
};

int main() {
    return 0;
}

size_t read(int fd, void *buf, size_t count) {
    return 1;
}


Visual Studio içerisinde Project->Properties->Configuration Properties->General tabı içerisinde Common Language Runtime Support parametresini Pure MSIL Common Language Runtime Support (/clr:pure) olarak değiştirin.

MS Visual Studio Common Language Runtime Support

Ayrıca Project->Properties->Configuration Properties->C/C++->Preprocessor tabı içerisinde Preprocessor Definitions parametresini edit(düzenle) diyerek _CRT_SECURE_NO_DEPRECATE ifadesini ekleyin. Bahsedilen bu iki ayarı projenizi sağlıklı bir şekilde build etmeniz için yapmak zorunda kalabilirsiniz.

MS Visual Studio _CRT_SECURE_NO_DEPRECATE

Proje build olduktan sonra yukarıdaki menuler arasındaki Analyze->Calculate Code Metrics For Solution sekmesine bastıktan sonra MS Visual Studio projenizin kod metriklerini ortaya çıkaracaktır. Soruda verilen kaynak kodun bakım yapılabilirlik indeksi(maintabilty index), gerekli prototip tanımlamaları ile birlikte MS Visual Studio tarafından 90 olarak hesaplanmıştır. Bu durumda ilgili kod yüksek derecede bakım yapılabilir bir kod bloğudur.

MS Visual Studio maintabilty index

2.3) İlgili sorudaki WMC metrik değeri kurucu metot + run() metodu dahilinde toplam 2 olarak hesaplanır.

2.4) İlk olarak metot içerisindeki dallanmalar ve tekrarlı kodlar kontrol edilmelidir. Metot içerisinde yapılan iş parçacıkları mantıksal olarak bölümlere ayrılabilir. Metot olabildiğinde parçalanır ve kısaltılmaya çalışır. Yeniden kullanılabilir kod parçacıkları ile yeniden design edilmelidir.

2.5) Bir proje de çalışan X bir geliştiricinin, 1 saatte Y satır kod yazması için aldığı Z miktar para bu metrik grubunda değerlendirilir.

2.6) Hayır. Türetilmiş metriklerin yeni bilgiler ortaya koyması çok zayıftır. Anlamlı değildir. Aksine yeni metrikler gürültü açığa çıkardığı için tavsiye edilmemektedir.

2.7) Hayır. Aritmetik toplanan argümanlar aynı türden ifade edilemediğinden toplama hatalı bir davranış olur.

2.8) Tasarım aşamasında kodlar henüz oluşturulamadığı için tasarım aşamasında hatalı, eksik bileşenlere geri dönüşler daha kolay sağlanır. Hata daha önceden kestirilebilir ve farkedilebilir. Kodlar oluşturulduktan sonra metriklerin açığa çıkmasıyla problemli görülen modüllerin tamiri zaman alır. Ancak tasarım aşamasında bu hızlı bir şekilde onarılabilir.

2.9) 4.000.000 satırlı kod 1 geliştirici için en az 4 ay sürede denetlenir. Böyle durumlarda kodun gözden geçirilmesi yerine yazılım metriklerine bırakılması mantıklıdır. Kodun yapısal veya nesne merkezli olma durumuna göre seçim kriterleri belirlenir. Bu seçim kriterleri hangi metrik yöntemlerinin kullanılacağını kapsar. Yazılımın karmaşıklığı her açıdan hesaplanmaya çalışılır. Öncelikle yapısal karmaşıklık metrikleri incelenir. Bu hesaplamalar önemli modüllerin belirli yazılım araçları dahilinde gerçekleştirilir. Bu yazılım araçları ile metrikler çıkartılır ve hızlıca yorumlanır.

2.10) Bu soruda bahsedilen BIRT projesinin kaynak kodları https://github.com/eclipse/birt github adresi üzerinden zip formatında indirilebilir. İndirilen dosya maven aracılığı ile build edildikten sonra bir IDE aracılığı ile import edilir. Proje import edildikten sonra kaynak kodlara kolaylıkla erişilebilir.

Öte yandan projenin kaynak kodlarının metrik değerlerini hesaplamak için bir yazılım aracına ihtiyaç vardır. Soru 2.2 de verilen C kodu için MS Visual Studio aracından yararlanılmıştı. Burada da yine bir IDE desteğinden yararlanılacaktır. Çünkü JHawk gibi bir takım metrik araçları lisanslama gerektirdiğinden uğraştırmaktadır. Bu soru içinde Eclipse IDE' sinin Metrics plugini kullanılacaktır. Bu plugin Eclipse->Help->Install New Software sekmesi üzerinden indirilebilir. İndirilecek plugin için Eclipse adres satırına http://metrics.sourceforge.net/update yazın. Daha sonra next ile devam ederek plugini kurun.

Eclipse Install New Software Metrics

Metrik aracı kurulduktan sonra indirdiğiniz kaynak dosyasını Eclipse de import edin. Projelerin aşağıdaki gibi yerleşmesi gerekir.

Eclipse BIRT Project

Daha sonra her bir proje için Properties->Metrics sekmesinden Enable Metrics kutusunu işaretleyin.

Eclipse Project Enable Metrics

Enable edilen her proje için otomatik olarak Metrik aracı çalıştırılır ve metrikler aşağıdaki gibi listelenir.

Eclipse Sample Mccabe Metrics

Örnek olarak extension-tutorial-1 proje modülünün çevrimsel karmaşıklık değeri(cyclomatic complexity) 14(Orta Riskli) olarak bulunmuştur. Projenin ilk 7 modülüne bakıldığında yüksek riskli olan projeler çoğunluktadır. Ancak hepsi tek tek denenmemiştir. Kalan kısımlar okuyuculara bırakılmıştır.

MODUL	Cyclomatic Complexity	Risk
extension-tutorial-1	14	Medium
extension-tutorial-2	14	Medium
org.eclipse.birt.axis.overlay	16	Medium
org.eclipse.birt.chart.device.extension	40	High
org.eclipse.birt.chart.device.svg	27	High
org.eclipse.birt.chart.device.swt	23	High
org.eclipse.birt.chart.engine.extension	143	Very High
org.eclipse.birt.chart.examples.core	23	High
org.eclipse.birt.chart.integration.wtp.ui	31	High
org.eclipse.birt.chart.reportitem.ui	55	Very High
org.eclipse.birt.chart.tests	36	High
org.eclipse.birt.chart.ui	29	High
org.eclipse.birt.chart.ui.extension	49	High
................................................................................

Bölüm 3 - Deneysel Yazılım Mühendisliği

3.1) Araştırmada verilerin nicelik değerlendirilmesi kantitatif yaklaşım olarak nitelendirilirken, nitelik değerlendirilmesi kalitatif yaklaşım olarak bilinir.

3.2) Sıfır hipotezde gözlemler ve bulgular tesadüfi olarak değerlendirilirken, alternatif hipotezde bunun tam tersi olarak gözlem ve bulgular kesin olarak değerlendirilir.

3.3) Tek Faktör İki İşlem, Tek Faktör Çok İşlem, İki Faktör, İki Faktörden Fazla. Örneğin sıralama algoritmaları(quick sort, merge sort, selection sort, insertion sort) arasında hız değerlendirmesi yaparken, eleman sayısı kavramı bir faktör ve sıralama algoritmaları ise işlem olarak adlandırılır. Bu deney tasarımı Tek Faktör Çok İşlem ile yapılır.

3.4) Soru 3.3 de verilen sıralama algoritmaları arasındaki hız değerlendirmesinde, bağımsız değişken eleman sayısı iken bağımlı değişken ise hızdır. Bağımsız değişkenler araştırma deneylerinde girdi olarak kullanılarak bağımlı değişkenleri oluşturur.

3.5) Deneyin amacı, kullanılacak nesneler, hangi perspektiften bakılarak deneyin yapılacağı, deneyde kimlerin çalışacağı ve deneyin neyin odağında yapılacağı gibi bilgiler sunmak gerekir.

3.6) Seçim anket yazılımı buna bir örnek olarak verilebilir. Türkiye de 7 adet seçim bölgesi olduğunu varsayalım. Bu 7 adet tabakayı oluşturur. Yazılım aracı, her bir tabakadan eşit sayıda aldığı örneklerden yola çıkararak en çok oyu alan partiyi tahmin edebilir.

3.7) Burada A ve B adında iki yöntem bulunmaktadır. Bu yöntemler işlem olarak adlandırılır. Faktör ise Test senaryolarıdır. Buradan çıkacak sonuçta test senaryolarının öncelik değeri hesaplanır. Bağımlı değişken test senaryosunun bulacağı hata sayısıdır. Bu durumda Tek Faktör İki işlem bulunur. t-Test, Mann-Whitney, işaret testi ve Wilcoxon yöntemleri kullanılabilir.

3.8) Mümkün değildir. Çünkü deney analiz aşamasındadır ve henüz tamamlanmamıştır. Göz kararı değerlendirilme yapılması sakıncalıdır. Bu kapsamda her bir veri kümesinden seçilen özneler iki yöntemde test edilir.

Tabloya göre istatistiksel bir anlam çıkarmak için mod, medyan, ortalama, varyans, standart sapma gibi metrikler çıkarılmalıdır. Ayrıca verinin dağılımını göstermek adına en azından bir histogram çizilmesinde fayda vardır. Aşağıdaki istatistiki sonuçlara bakılacak olursa, Y yönteminin varyans ve sapma değerleri daha azdır. Bu Y yönteminin daha tutarlı olduğunu gösterir. Ortalama değerlere bakıldığında ise iki yöntem arasında anlamlı bir fark yoktur. Bu durumda h0 kabul edilir h1 red durumu oluşur.

ModX: Yoktur
MedyanX: 91
OrtalamaX: 90.88
VaryansX: 35.86
Standart_SapmaX: 5.98

ModY: Yoktur
MedyanY: 88,5
OrtalamaY: 89.66
VaryansY: 22
Standart_SapmaY: 4.69

3.9) Öncelikle kitapta ismi geçen ancak içeriği belirtilmeyen test tekniklerinin ne olduğunu anlamakta fayda vardır. Öncelikle t-testi iki veri kümesine sahip grup arasında, ortalamalar arasındaki farkın anlamlı olup olmadığını araştırır. f-testi ya da diğer bir adıyla ANOVA(Varyans Analizi - Analysis of Variance) testi ise, iki den fazla veri kümesine sahip grubun ortalamaları arasındaki farkın anlamlı olmasını araştırır. Soruda verilen tabloya göre ANOVA analizi ortalama dosya büyüklüğü tek faktörü %95 güven aralığı ile Excel de hesaplanırsa aşağıdaki sonuç ortaya çıkar.
Excel Anova Analysis
Yukarıdaki değerlere bakıldığında F = 0.0388 ile F crit = 3.4028 değerleri arasında anlamlı bir fark olduğundan, H0 hipotezi red durumunda karar verilir. Yani deney sonucunda ortalama dosya büyüklüğü üç programlama dilinde aynı değildir.

Bölüm 4 - Kanıta Dayalı Yazılım Mühendisliği

4.1) Birincil çalışmalar, yeni bir yöntem, teknoloji ortaya çıkarılması veya mevcut bir teknoloji, yöntemle yapılan kıyaslamalar bütünüdür. İkincil çalışmalar, birincil çalışmayı referans alarak, sistematik eşleme veya sistematik inceleme yapılan çalışmalardır. Üçüncül çalışmalar ise, ikincil çalışmaları referans alınarak yapılan çalışmalar bütünüdür.

4.2) Sistematik eşleme, daha genel bir konuda literatürün tamamının taranması çalışmasıdır. Sistematik inceleme ise daha spesifik bir konuda yapılan elektronik veritabanlarının taranması çalışmasıdır.

4.3) Araştırılan bir konu için literatürde yayımlanmış kaynaklara bakılarak yayın sayılarının elde edilmesinde kabarcık çiziminden yararlanılabilir. Çizim konu - yayın sayısı kesişmesindeki kabarcıklardan oluşur.

4.4) Üçüncül çalışmalara içerme yapılacak daha güvenilir ve doğru yayınlar sağlamaktır.

4.5) Tüm çalışmalara ulaşabilmek için sistematik eşleme çalışması yapılmalıdır. Bu çalışmada ulaşılan tüm kaynakları ve çalışmaları sınıflandırabiliriz.

4.6) İçermeler, bu konuda yayımlanmış tüm makale, dergi, kitap çalışmalarından oluşabilir. Özetler ve zayıf materyaller dışarıda bırakılan kriterler olabilir.

4.7) Makaleyi Google üzerinden temin edebilirsiniz. Soruda belirtilen makale de symbolic regression tekniğinin, sistematik inceleme(systematic review) yapılarak 3 farklı alanda kullanıldığının saptandığı ifade edilmektedir. Bu makalede saptanmış 11 adet kalite değerlendirmesi(quality assessment) bulunmaktadır. Bunlar aşağıda verilmektedir.

A. Araştırma soruları açıkça ifade edilmiş midir ?
B. Çalışma ölçüleri cevaplanması gereken araştırma sorularına imkan vermekte midir ?
C. Üretilen popülasyon örnek olarak temsil edilebilir mi ?
D. Karşılaştırmalı bir grup var mı ?
E. Uygun bir veri toplama yönteminin tanımı var mı ?
F. Veri analizi yapmak için kullanılan bir yöntem var mı ?
G. İstatistiksel hipotez testi uygulanmış mıydı ?
H. Tüm çalışma soruları cevaplandırıldı mı ?
I. Bulgular açıkça ifade edilmiş midir ve araştırmanın amacıyla alakalı mıdır ?
J. Algoritmalar da verilen parametre ayarlamaları mevcut mu ?
K. Model oluşturma yöntemleri için kullanılan test kümelerinin bir tanımı var mı ?

Bu kalite değerlendirme sorularının cevapları, makalede tespit edilen 3 alanda farklı tarihlere ve çalışma gruplarına göre yer verilmiştir.

4.8) Soruda bahsi geçen makaleye Google üzerinden ulaşabilirsiniz. DARE(Database of Abstract of Reviews of Effects) kriteri, 4 temel kalite değerlendirme sorularına dayanır. Bu sorular aşağıda verilmektedir.

1. Araştırmada uygun içerme/çıkarma kriterleri mevcut mudur ?
2. Literatür incelemesi tüm ilişkili kaynakları kapsamakta mıdır ?
3. Araştırmacılar kalite/geçerlilik değerlendirmesi yapmış mıdır ?
4. Çalışmalarda ifade edilen temel veriler mevcut mudur ?

Yukarıdaki sorular evet (Y), kısmen (P), hayır veya bilinmez (N) şeklinde cevaplandırılarak kalite değerlendirme skoru çıkarılır. Y = 1, P = 0.5 ve N = 0 olacak şekilde yukarıdaki 4 soruya puan verilir. Örneğin bir araştırma çalışmasında; 1. soruya Y, 2. soruya N, 3. ve 4. sorulara da P olarak cevap verilmiş ise, DARE prosedürü gereği kalite değerlendirme skoru 1 + 0 + 0.5 + 0.5 = 2 olarak hesaplanır.

4.9) Toplamda 208 adet yayın tanımlanmış. Bunlardan 35 tanesi ile çalışılmış.

Bu çalışmalar konferanslarda, yayınlarda ve arama motorlarından bulunmuştur;

Konferanslar: ICSE, ICSM, SCAM, ISSTA, IEEE
Yayınlar: IEEE, DBLP
Arama motorları: ACM Digital Library, IEEExplore, ISI Web of Science

Bölüm 5 - Alana Özel Yazılım Mühendisliği

5.1) Ürün Yönetimi(Product Management), Alan İsterler Mühendisliği(Domain Requirements Engineering), Alan Tasarımı(Domain Design), Alan Gerçeklemesi(Domain Realization) ve Alan Testi(Domain Testing) süreçlerinden oluşur.

5.2) Analiz(analysis), tasarım(design), kodlama(coding) ve test(testing) olarak tüm süreçler dahildir.

5.3) Geleneksel Yazılım Mühendisliğinde bir problemin birden çok çözümü olabilir. Mimari Temelli Yazılım Mühendisliğinde problemin çözümü azaltılmaya çalışarak uygun çözümler aranır. Alana Özel Yazılım Mühendisliğinde ise problemi alana uygun çözümler ile eşleştirilir.

5.4) Farklılığı teknik perspektif oluşturur. Mühendislik ürün hatlarında, ürünler arasındaki benzerliklerin ve farklılıkların ürün geliştirmesinde dikkate alınması ile ilgilidir.

5.5) Bu soruda araştırma için Google üzerinden product line length, product line return of investment gibi anahtar kelimeler ile araştırma yapabilirsiniz. Sorunun çözümünde http://webuser.bus.umich.edu/whopp/reprints/Product%20Line%20Selection%20and%20Pricing%20with%20Modularity%20in%20Design.pdf ve http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.197.648&rep=rep1&type=pdf yayınlarından yararlanılmıştır. Bu makaleler içerisinde, a(production cost reduction) ile n*(number of products) arasındaki ilişki aşağıdaki grafiklerde belirtilmektedir.

İlk grafikte n*(ürün hattı uzunluğu - product line length) ile a(üretim maliyet azaltımı - production cost reduction) ilişkisi gösterilmektedir.



İkinci grafikte optimal ürün hattı uzunluğu ile a(üretim maliyet azaltımı - production cost reduction) ilişkisi gösterilmektedir.



Üçüncü grafikte optimal ürün hattı uzunluğu ile r(risk) ilişkisi gösterilmektedir.



Son grafikte ise sektördeki markaların kullandıkları ürün hattı uzunluğu ile mali bilgileri arasındaki ilişkileri gösterilmektedir.



Yukarıdaki tüm bu grafikler incelendiğinde ve yayınlar takip edildiğinde minimum ürün hattı uzunluğunun 2 olması durumunda kazanç getirdiği sonucuna ulaşılabilir. Genel olarak bu aralık ise 0 - 14 arasındadır.

5.6) Problemin çözümünde bir şablon olarak kullanılması ve özelliklerine göre ürün çatısının oluşturulmasında kullanılır. OSI mimari modeli buna bir örnek olarak verilebilir.

5.7) Şirketlerin amaçları doğrultusunda ortaya çıkarılan ürün ve özelliklerini ifade eder. Ürünün tasarımından uygulama ve doğrulamaya kadar tüm kapsamları içine alan bir alt süreçtir.

5.8) Bir Gereksinim Mühendisliği(Requirements Engineering) ortaya çıkmış oldu. Bu, ürün hattının(product line) tanımı ve bakımı ile ürün hattı içerisindeki farklı ürünlerin yönetimini kapsamaktadır. Böylelikle iki alt dal daha ortaya çıkmıştır. Alan Mühendisliği(Domain Engineering) ve Uygulama Mühendisliği(Application Engineering). Alan Mühendisliği ile soru 5.9 da ki alanların tanımı ve temel alt yapısı oluşturulurken, Uygulama Mühendisliği ile de bu alanların çözümü ile ilgili yöntemleri içerir.

5.9) Yazılım Mühendisliği Enstitüsü(SEI) tarafından hazırlanan http://www.sei.cmu.edu/library/assets/spl-essentials.pdf yayına ulaşabilirsiniz. Bu yayına göre; 16 adet uygulama alanı mevcuttur. Bu alanlar;

Cep Telefonları
Komut ve Kontrol Taşıma Sistemleri
Uygu İstasyon Sistemleri
Aviyonik Sistemler
Komut ve Durum Tespit Sistemleri
Çağrı Cihazları
Motor Kontrol Sistemleri
Yığın Bellek Cihazları
Faturalandırma Sistemleri
Web-Tabanlı Parakende Sistemleri
Yazıcılar
Tüketici ve Vergi Sistemleri
Tıbbi Cihazlar
Tarım ve Balıkçılık Yönetim Yazılımları

Önerilen kalıplar(pattern) ise;

Assembly Line
Cold Start
Curriculum
Each Asset
Essentials Coverage
Factory
In Motion
Monitor
Process
Product Builder
Product Parts
What to Build

5.10) Son kullanıcılar ile yazılım geliştiriciler arasındaki iletişimi sağlıklı tutabilmek adına geliştirilen bir çözüm olarak nitelik modelleri ortaya çıkmıştır. Bu model sözlü ve yazılı anlatım yerine şekilsel olarak ifade edilerek, geliştirilen ürün modeli müşteriye daha iyi anlatılır. Temel amaç ise geliştirilen ürünler arasındaki farklılıkları yaratan niteliklerin kolaylıkla görülebilmesidir. Nitelik modelleri genel olarak ağaç yapısında temsil edilir. Aşağıda kanat, motor ve malzeme niteliklerine göre bir nitelik modeli çıkarılmıştır. Ancak bu model barındığı bilgi itibariyle gerçeği yansıtmasa da, temsilde bir örnek olarak verilebilir.



Çizim modeline katkıda bulunmak isteyen okurlar yorumda bulunursa çözüme çok daha iyi katkı sağlar.

Bölüm 6 - Son Kullanıcı Yazılım Mühendisliği

6.1) Mashup araçları, görsel programlama, model tabanlı teknikler, servis birleştirme araçları ve iş akışları.

6.2) Web tabanlı uygulamalar, grafiksel programlar, hesaplamalı uygulamalar. Bu alanlarda kullanılan örnek araçlar wordpress, flash, excel, html, matlab gösterilebilir.

6.3) Kavramların bilinmemesi ve test işlemlerinin eksikliğinden kaynaklı güvenlik ve doğruluk sorunlarıdır.

6.4) İş amaçları doğrultusunda çoklu kaynaklardan gelen heterojen, dağıtık verilerin ve uygulamaların bütünüdür.

6.5) Mashup katmanında yer alır.

6.6) Yazılımın geliştirme evresinde son kullanıcıların yazılım mühendisleri ile birlikte çalışması bu kavramı açıklar. Son kullanıcılara yeterli araçlar sunularak yazılımın oluşturulmasına veya kendi uygulamasını yazmasına imkan verir. Bu bağlamda sunulabilir.

6.7) 1970 yılına kadar geçmişi olup, 1982 yılında kavramları ortaya çıkmıştır.

6.8) Gereksinim, belirtimler, yeniden kullanım, test ve doğrulama, hata ayıklama aktiviteleri. Yazılım geliştirme yaşam döngüsünde bulunan analiz, tasarım, kodlama ve test evrelerinin hemen hemen hepsi bu farklılığı oluşturmaktadır.

6.9) Programlama kısmı sadece kodlama aşamasına odaklanır. Geliştirme kısmı tüm süreçlere ele alarak uygulama yapar. Mühendislik yaklaşımı ise tüm bu süreçlerin kalitesine odaklanır.

6.10) Konuşmanın anlatıldığı video' a youtube üzerinden erişebilirsiniz. www.youtube.com/watch?v=MxpjGZinies
Bu konuşmada iki programlama yaklaşımı ele alınmıştır. Script diller ve demonstrasyon programlama. Script diller ile basitleştirilmiş olan spesifik dillerin kullanılmasına atıfta bulunurken, kullanıcı hareketlerinin kaydedildiği görsel programlama teknikleri demonstrasyon programlama altında açıklanmıştır.

Bölüm 7 - Yazılım Mimarileri ve Belgelendirilmesi

Bu bölümde aşağıdaki kaynaklardan faydalanabilirsiniz.

http://cs.gmu.edu/~rpettit/files/lectures/443L03.pdf
http://www.cse.chalmers.se/edu/year/2009/course/DAT135_Software_Architecture/lib/05_ComponentConnector.pdf
http://www.win.tue.nl/~aserebre/2IW80/2013-2014/A3%20-%20Arch%20Styles.pdf

7.1) Stiller daha genel bir çözüm sağlar. Kalıplar daha spesifik problemlerin çözümleri için kullanılır. Tasarım kalıpları ise OOP odaklı çözümlerdir. Stiller daha soyut, kalıplar daha somuttur. Örneğin katmanlı mimari birer stil iken, MVC mimari kalıp, Observer ise tasarım kalıbı olarak bilinir.

7.2) Yeni bir alınan karar ile önceden tanımlı mimarinin güncellenmediği durumda;
yeni karar mimariye aykırı ise bu mimaride erozyon, aksi halde sapma yaratır.

7.3) Ayrıştırma(decomposition), genelleştirme(generalization) ve katmanlı(layered) stiller kullanılır.

7.4) Projenin dizin yapısına göre bir model oluşturulur. Örneğin aşağıda açıklanan bir Maven proje yapısı gösterilmektedir. Burada amaç projeye katılan yeni bireylerin, projenin yapısını anlama konusunda, projeyi dizin olarak tanıtmaktır.



7.5) Mimari stiller bileşenleri(components) ve aralarındaki ilişkileri(connectors) tanımlar. Bileşen-ve-bağlantı(Component-and-Connector) görünüm tipinde kullanılan bu stiller de bu kavramlara yer verilir. Örneğin Pipe-and-Filter Style(Boru ve Filtre) stilinde, bileşenler olarak filtreler tanıtılırken, bağlantı olarak ise mantıksal borulardan bahsedilmektedir. Detayları bölümün başında verilen yararlı linklerden faydalanarak inceleyebilirsiniz.

7.6) Her iki kalıpla da tasarım ve problemin ihtiyaç çözümüne göre çalışılması gerekir. Problem çözümleri daha genel olarak makro düzeyde ele alınmalıdır ancak optimum çözüm mikro düzeyde ise o tercih edilmelidir.

Bölüm 8 - Güncel Yazılım Geliştirme Yaklaşımları

8.1) Özetle J2EE ve .Net platformları bu teknolojilerde öncüdür. CORBA, Java Beans teknolojileri örnek olarak verilebilir.

8.2) Advice, icra edilecek kodun kendisi, gövdesini tanımlar. Pointcut ise, bu kodun yazılım modülü içerisinde nerede kullanılacağını belirtir.

8.3) Servis tüketicisi(consumer) yani istemciler, servis kayıtçılarından(registry) hangi servisleri istediklerini bulmak için UDDI ile belirtirler. Servis sağlayıcıları(provider) servisleri WSDL ile tanımlar. Bu servisleri tanımlayarak kayıtçılara yayımlarlar.

8.4) Asıl sebep, platform bağımsız olmaları ve herkes tarafından tutulmuş olmalıdır. Diğer paradigmalar belirli bir platforma özelleşmiş teknolojiler barındırmaktadır.

8.5) Sıfırdan meta model üretme.

8.6) Bir alandaki kavramların ve ilişkilerin tanımlandığı yerdir. Fark bu kavramların tanımlamalarından ve ilişkilerinden gelir. Somut sentaksta bu kavramlar ve ilişkiler çoğunlukla görsel olarak temsil edilir ve uygulanır. Soyut sentaks bir sözlük gibi ifade edilebilir.

8.7) Asıl işin yanında yapılan işin güvenliği, güvenilirliği ve kalitesini arttırmak için yapılan alt yapı işlemleridir. Logging, security, performance gibi işlemler bunlara birer örnektir. Bu bağlamda AOP yaklaşımı uygulandığında, her bir aspect yazılımı tek bir modül altında tanımlanır ve yapılan esas işler etkilenmez.

8.8) AspectJ, Spring, JBoss AOP, AspectWerkz.

8.9)
- Proaktif olması
- Bağımsız, yani otonom olması
- Reaktif olması
- Adaptive olması
- Karar verebilir olması
- Hareketli olması
- Sosyal olması

Dr. Çağatay Çatal' ın hazırladığı bu güzide kitabın tüm soruları cevaplandırılmıştır. Umarım kitabı alan herkese faydalı olur.

Çözümler de eksiklik ya da hata olduğunu düşündüğünüz sorularda lütfen uyarıda bulunuz.

Başarılar

Fatih KABAKCI

There has been no comment yet

Name:


Question/Comment

   Please verify the image




The Topics in Computer Science

Search this site for





 

Software & Algorithms

icon

In mathematics and computer science, an algorithm is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

Programming Languages

icon

A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine. Java,C, C++,C#

Database

icon

A database is an organized collection of data. The data are typically organized to model aspects of reality in a way that supports processes requiring information.

Hardware

icon

Computer hardware is the collection of physical elements that constitutes a computer system. Computer hardware refers to the physical parts or components of a computer such as the monitor, memory, cpu.

Web Technologies

icon

Web development is a broad term for the work involved in developing a web site for the Internet or an intranet. Html,Css,JavaScript,ASP.Net,PHP are one of the most popular technologies. J2EE,Servlet, JSP,JSF, ASP

Mobile Technologies

icon

Mobile application development is the process by which application software is developed for low-power handheld devices, such as personal digital assistants, enterprise digital assistants or mobile phones. J2ME

Network

icon

A computer network or data network is a telecommunications network that allows computers to exchange data. In computer networks, networked computing devices pass data to each other along data connections.

Operating Systems

icon

An operating system is software that manages computer hardware and software resources and provides common services for computer programs. The OS is an essential component of the system software in a computer system. Linux,Windows

Computer Science

icon

Computer science is the scientific and practical approach to computation and its applications.A computer scientist specializes in the theory of computation and the design of computational systems.