Yazılım Mimarileri - Öğr. Gör. Emre ÇAM | Kişisel Web Sitesi

Transkript

Yazılım Mimarileri - Öğr. Gör. Emre ÇAM | Kişisel Web Sitesi
10.11.2015
Yazılım Mimarileri - BP1047
H1
1.Bilgisayar Nedir?
Yazılım Mimarileri

Makineler insanların günlük hayatını kolaylaştırmak için ya
da başka bir deyişle yapılan işleri daha hızlı yapabilmek
için tasarlanırlar.

Buradan hareketle bilgisayarlar, günlük yaşam içerisindeki
etkileşimleri (real world interaction) daha hızlı yapan ya
da hızlandıran makineler olarak tanımlanabilir.
Giriş
Öğr. Gör. Emre Çam
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1.Bilgisayar Nedir?
1.Bilgisayar Nedir?

En basit bilgisayar, bir işlemci ve bellekten oluşur.
Burada sözü geçen etkileşim, bir verinin alınıp, çeşitli
faaliyetlerin yapıldığı bir süreç sonrasında, bilgiye
dönüştürülmesi işlemidir.

Bellekler

ROM (Read Only Memory) ve

Veri, işlenmemiş ham varlıktır. Bir başka deyişle ne, nerede,
hangisi gibi sorularının cevaplarının alınmadığı şeylerdir.

RAM (Random Access Memory) olmak üzere iki türlüdür.

Bilgi ise işlenmiş veridir.

Süreç ise veriler üzerinde yapılan işlemlerin tamamıdır.

Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1
10.11.2015
Yazılım Mimarileri - BP1047
1.Bilgisayar Nedir?

ROM adından da anlaşılacağı üzere yalnızca okunabilir bir
bellektir. İçindeki bilgiler elektrik kesintisinde kaybolmaz.

RAM ise işlenen verilerin içinde yoğrulup bilgiye dönüştüğü
bir bellektir. Yani içindeki bilgiler değişmektedir.

Bir başka deyişle hem okunup hem de yazılabilir özelliği
vardır.

Ancak hem okunup hem de yazılabilen bu bilgiler elektrik
kesintisinde kaybolurlar.
1.Bilgisayar Nedir?

Günümüzde bilgisayarlar, basit bir bilgisayardan daha fazla
donanıma sahiptir.

Verilerin ve komutların girilebileceği klavyeye, seri ve
paralel porta, bilgilerin gösterildiği bir ekran ile manyetik
disklere sahiptirler.

Elektrik kesintileri veya bilgisayarın kapatılıp açılması gibi
durumlarda RAM bellekteki değişen bilgilerin geçici olarak
bir yerde saklanması gerekir.

İşte bu yer, RAM’den oldukça yavaş olan manyetik
disklerdir.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1.Bilgisayar Nedir?
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1.Bilgisayar Nedir?
1.
İşlemci bilgisayarın belli bir adresine yerleştirilen ROM
belleği okumaya başlar.
 Bir
kişisel bilgisayarın elektrik düğmesine
basıldığında, tamamen açılana kadar şu
işlemleri sırasıyla yapar:
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM

Bu adres bilgisayarlar için 0xFFFF0 (CS:IP FFFF:0000) adresidir.

Bu ROM bellekte BIOS (Basic Input Output System) denilen
yazılım vardır.

BIOS yazılımı bilgisayara takılı olan ekranı, klavyeyi, bellek
miktarını, manyetik diskleri tespit eder.

Burada verilen
açıklanacaktır.
adreslerin
neyi
ifade
ettiği
daha
sonra
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2
10.11.2015
Yazılım Mimarileri - BP1047
1.Bilgisayar Nedir?
1.Bilgisayar Nedir?
2.
BIOS, işletim sistemini belleğe yükleyecek
olan önyükleme (boot) programını, veriyi kalıcı
olarak saklayan ortamları belli bir sırada kontrol
ederek arar.
3.
Manyetik disklerde ve optik disklerde bilgiler halkalar haline
olup, bu halkaların (track) bir dilimine sektör (sector) adı verilir.

Bu sıraya önyükleme sırası (boot sequence) adı
verilir.

Önyükleme yapılacak ortamın ilk sektörünün son iki baytına
bakılarak, önyükleme programının varlığı tespit edilir.

Bu son iki bayt 0xAA55 ise, ilgili ortamın işletim sistemini
barındırdığı anlaşılır. Bu değere önyükleme imzası (boot
signature) adı verilir.

Bu sektör, önyükleme sektörü (boot sector) olarak adlandırılır.

Manyetik disklerde bu sektör, asıl önyükleme kaydı (master
boot record) olarak adlandırılır.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1.Bilgisayar Nedir?
4. BIOS tarafından,
adresine yükler.
önyükleme
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1.Bilgisayar Nedir?
sektörünü,
07C0:0000

Yüklenen bu program koduna önyükleme kodu (boot
code) adı verilir.

Manyetik disklerde MBR(master boot record), ilk önce
önyüklemesi olan etkin bölümü (partition) tespit eder ve
ilgili adrese bu bölümdeki kod yüklenir.
5.
Önyükleme kodu, işletim sistemini bilgisayara yükler ve
kullanıcı tarafından bilgisayar kullanabilir hale gelir.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
3
10.11.2015
Yazılım Mimarileri - BP1047
1.Bilgisayar Nedir?
1.Bilgisayar Nedir?
6.
Bilgisayar, işletim sistemi yüklendikten sonra,
kullanıcının verdiği komutları yerine getirmeye başlar.

7.
Yazılım, gerekli verileri kullanıcının belirttiği yerden
veya kendisinden alır.
Kullanıcının yapmak istediği işe uygun yazılımı diskten
belleğe yükleyerek çalıştırır.

İşleyerek ekrana ya da kullanıcının belirttiği yere ya da
diske kaydedilmesini sağlar.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
1.Bilgisayar Nedir?
8.
1.Bilgisayar Nedir?
Yazılımlar, veriyi aşağıdaki yerlerden okurlar:

Klavyeden (keyboard),

Manyetik veya optik disklerdeki dosyalardan,

Bir başka yazılımdan
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
9.
Yazılımlar, işlenen veriyi ya da bilgiyi aşağıdaki yerlere
yazarlar:
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM

Ekrana (screen),

Dosyaya (file),

Veritabanına (database),

Bir başka yazılıma.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
4
10.11.2015
Yazılım Mimarileri - BP1047
1.Bilgisayar Nedir?

2.Yazılım Nedir?

Etkileşimlerin, bilgisayar üzerinde çalışacak şekilde geliştirme
sürecinden
geçirilip,
benzetim
(simulation)
yapılması
ile
yazılım (software) elde edilir.

Kısaca yazılım, gerçek dünyanın bilgisayar üzerindeki benzetimidir.

Burada benzetim yapma işlemine programlama (programming) adı
verilir.
Yapılan bilgisayar tanımı ve bilgisayara işletim sisteminin yüklenmesiyle ilgili
konudan hareketle bir bilgisayar ile insanı yukarıdaki şekilde benzeştirebiliriz.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2.Yazılım Nedir?
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2.Yazılım Nedir?
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM

Günümüze kadar programlama iki farklı bakış açısı ile yapılmıştır.

Bir başka deyişle yazılımlar, etkileşimleri iki farklı bakış açısı ile
benzetim yaparlar.

Bunlar yordamlı programlama (Procedural Programming) ile nesneye
dayalı programlama (OOP-Object Oriented Programming) yöntemidir.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
5
10.11.2015
Yazılım Mimarileri - BP1047
2.Yazılım Nedir?
2.Yazılım Nedir?

Bir programlama dilinin sözdizimini (syntax)
geliştirmek için gerekli olup, yeterli değildir.
yazılım

Yazılım açısından bakacak olursak, kurumlar (enterprise) aşağıda verilen
bileşenlerden oluşur:

Programlama dilini iyi bilmek, kullanıcıların ihtiyaçlarını o an için,
mevcut programlama dili yetenekleriyle çözebilir.
1.
İş kuralları (business rules)
2.
İş varlıkları (business entity)
Ancak kullanıcılar yaşayan ve sürekli değişen organizasyonlar içinde
olduklarından, zamanla kullanıcı ihtiyaçları da değişecektir.
3.
Bilgi (information)
4.
Uygulamalar (application)
5.
Teknoloji (technology)

bilmek,
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2.Yazılım Nedir?

Bunun yanında iş sürelerinin yazılımlara aktarılması için iyi analiz
edilmesi gerekir.

Yukarıda verilen bileşenlerin detaylı incelenmesinden oluşan bu
analize iş analizi (business analysis) adı verilir.

İş analizleri, iş akış diyagramlarının (business flowchart) çıkarılmasıyla
yapılır.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2.Yazılım Nedir?
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM

Gereksinim analizi (requirement analysis) ise bu iş analizinde yazılımı
gerçekleştirilecek olan kısımların diğer kısımlardan ayrılması işlemidir.

Ya da bir başka deyişle yazılımı yapılamayacak kısımların iş
analizinden ayıklanmasıdır.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
6
10.11.2015
Yazılım Mimarileri - BP1047
2.Yazılım Nedir?
2.Yazılım Nedir?

Gereksinim analizinden sonra, yazılım yapılacak olan sistem, problem
kümelerine ayrılır ve bu kümelerdeki varlıklar belirlenir.

Sonuç olarak yazılımı, değişime açık ve kurumun ihtiyaçlarını
karşılayacak şekilde tasarlamak gerekir.

Bu varlıklar kümesi bileşenlerine PDC (Problem Domain Component)
adı verilir.

Bu noktada, bu değişimleri karşılayabilecek yazılımların nasıl
geliştirileceği büyük önem kazanmaktadır.

Çok kapsamlı yazılımlar yapılacak ise bu problem kümeleri için
sisteme ilişkin “use-case” adı verilen özet senaryolar hazırlanır.

Değişimlerden az etkilenen yazılımlar nesneye dayalı yazılım
paradigmasıyla geliştirilirler.

Bu özet senaryolar UML (Unified Modeling Language) diyagramları ile
gösterilirler.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2.Yazılım Nedir?

Örneğin veritabanına bağlanma, teorik olarak iki basit yöntemle yapılır.

Eğer bu yöntemleri biliyorsak, eğitime olan ihtiyaç daha az olacak ve yeni
teknolojinin bize sağladığı bileşenleri tanımak, yeni teknolojiye uyum için
yeterli olacaktır.

Böylece yazılımcıların kapsamlı bir eğitim alması gerekmeyecektir.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
2.Yazılım Nedir?

Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Bu kapsamda bakıldığında ise, teknolojiyi değil,
programlamanın teorisini iyi bilen yazılımcı sahibi olmak,
bütün kurumların hedefi olmalıdır.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
7
10.11.2015
Yazılım Mimarileri - BP1047
Ne Yapıyorlar

Microsoft Corporation (MSFT): PC Yazılımı

Oracle Corporation (ORCL): Veri tabanı, uygulama sunucuları

SAP ADR (SAP): İş yönetim yazılımları

Intuit, Inc.: Kişisel mali yazılımlar

Infosys Technologies Ltd. (INFY): Uluslararası yazılımlar

Computer Associates Int’l: Bütünleşik yazılım çözümleri

Wipro Ltd: İş yönetim yazılımları
Yazılım Geliştirme İstatistikleri

Tipik yazılım projesinin geliştirilmesi 1-2 yıl sürüyor ve en azından
500.000 kod satır içeriyor

Tüm projelerin yalnız %70-80’i başarıyla tamamlanıyor

Tüm geliştirme sürecinde her birey günde ortalama 10 satırdan az kod
yazıyor

Geliştirme süresince her 1000 kaynak kod satırında 50-60 hata bulunuyor
(satışa sunulmuş sistemde hata sayısı 4/1000’e düşüyor)
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Problemleri (Krizleri)

Tasarlanan zamanın gerisinde kalma

Bütçeyi aşma

Yazılım-Donanım Evrimi

Erken Yıllar 1950-1960ilk bilgisayarlar, makine dili, 3-4
şirket

Yazılımlar; kullanıcı ile birebir iletişimde bulunmayan,
işlerin toplu olarak verilip, yalnızca yazıcı çıktılarının
alındığı biçimde geliştirilmekte idi.

Ayrıca, yazılımlar bu günkü gibi ürün tarzında değil,
kuruluşa özel olarak geliştirilmekte idi.
Düşük Kalite

Güvenilir olmayan yazılım

Kullanıcı taleplerinin karşılanmasında yetersizlik

Sürekliliğinin sağlanmasındaki zorluk
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
8
10.11.2015
Yazılım Mimarileri - BP1047
İlk Bilgisayarlar
İlk Bilgisayarlar
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım-Donanım Evrimi
Yazılım-Donanım Evrimi


İkinci Dönem 1960-1975 Ana çatı, çok kullanıcılı
sistemler, Veri tabanı yönetimi

Çok kullanıcılı, gerçek zamanlı yazılımlar üretilmeye
başlandı.
bilgisayarlar


VTYS önce yapılandırılmış dosya sistemleri ile ortaya çıktı.

Yavaş yavaş ürün türü yazılımlar ortaya çıkmaya başladı.
Üçüncü Dönem 1975-1990 Süper bilgisayarlar, Kişisel
Açık sistem mimarisinin tanıtıldığı bu dönemde ürün bazlı
yazılımlar oldukça yaygınlaştı.

Kişisel bilgisayarlar yaygınlaşarak evlere girmeye başladı.

Ağ yapısının gelişmesi ve güçlenmesiyle, dağıtılmış yazılım
sistemleri geliştirilmeye başlandı.

Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yapay zeka teknolojisinin gelişmesiyle “akıllı uygulama
yazılımları” üretilmeye başlandı
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
9
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım-Donanım Evrimi

Programlama Dillerinin Seviyeleri
Dördüncü Dönem 1990 - Yapay Zeka, Gömülü Sistemler,
Paralel Sistemler,

“Yazılımda Kalite” olgusu önem kazanmış ve yazılım ile ilgili
standartlar olgunlaşmaya başlamıştır.

Makine Dili
10101110 10010001
4. Kuşak
Veri Yapısal
CICS, SQL
2. Kuşak
Assembler
8085, Z80, 68000, vs
5. Kuşak
Yapay Zeka
Ve Paralel Programlama
CSP, OCCAM
3.Kuşak
Üst Seviye Diller
Pascal
Coral66
Basic
Bildirimsel
LISP
Hope Prolog
Nesneye Yönelik Diller
Smalltalk, C++, Java
Uzman sistem yazılımları oldukça gelişmiş ve mikrobilgisayarlar üzerinde yaygınlaşmıştır.

1.Kuşak
Yazılım üretimi ve ürünlerinin değerlendirilmesi amacıyla
kurumlar oluşmaya başlamıştır.
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
Yazılım Mimarileri - Öğr. Gör. Emre ÇAM
10
10.11.2015
Yazılım Mimarileri - BP1047
1.Karmakarışık Programlama
Yazılım Mimarileri

Karmakarışık programlama
programlama tekniğidir.
Yazılım Programlama Teknikleri

Kod içinde birçok GOTO ifadesi bulunur.
Öğr. Gör. Emre ÇAM

GOTO
ifadelerinin
fazla
olması
karmaşıklığa
nedenle okunaklılık (readability) oldukça azdır.

Buna örnek olarak aşağıdaki BASIC programı verilebilir.
1.Karmakarışık Programlama
(spaghetti
programming)
ilk
yol
kullanılan
açar
bu
2.Yordamlı Programlama

Karmakarışık programlama kod örneğinde, “50 ile 200 arasındaki kod gerekli
ise 50 satırında neden GOTO kullandın?

Eğer gerekli değil ise neden bu kod yazıldı?” sorularının cevabı net olarak
verilememektedir.

1968 yılında Edsger W. Dijkstra tarafından GOTO ifadesi zararlı olarak
nitelendirilmiş ve getirdiği karmaşıklığı ortadan kaldıracak yeni bir çalışma
başlatılmıştır.
1
10.11.2015
Yazılım Mimarileri - BP1047
2.Yordamlı Programlama
3.Yapısal Programlama
2.Yordamlı Programlama

Yordamlı programlama (procedural programming) tekniğinde aynı işle ilgili
işlemlerin bir araya toplanmış olduğu altişlevler (subroutine) veya birden fazla
giriş noktası olan işlevler (coroutine) çağrılarak programlama yapılır.

Aşağıda verilen örnekte altişlevlere gidiş GOSUB kelimeleriyle, dönüş
ise RETURN kelimesiyle yapılır.

Bu
programlama
tekniğinde
okunabilirlik
kısmen
ancak GOTO ifadeleri hala kafa karıştırmaya devam etmektedir.
çözülmüştür
3.Yapısal Programlama


Yapısal programlama (structural programming) tekniği, okunabilirliği sağlamak
amacıyla GOTO kullanmamayı sağlamıştır.
Veri, işlemi yapan koddan ayrıldığından, yapısal programlama, veriye dayalı
(data oriented) programlama tekniği olarak da adlandırılır.

Program içinde veriler, belli yapılara göre saklanırlar.

Dijkstra önderliğinde GOTO ifadesinin yerini alacak birçok yapı geliştirilmiştir.


Ancak program, alt bölümlere ayrılmış olarak ve tek bir yapı halinde
yazılmaya devam edilmektedir.
Bu yapılar veri yapısı (data structure) yada küme(collections) olarak
adlandırılır.


Daha sonraları verileri tanımlayacak kısım ile bunu işleyen kısımları
birbirinden ayıracak yeni yaklaşımlar gelişmiştir.
Yetmişli yıllarda veri yapılarının (data structure) kullanıldığı üç farklı
yaklaşım Jean-Dominique Warnier, Michael A. Jackson ve Ken Orr tarafından
ortaya konulmuştur.
2
10.11.2015
Yazılım Mimarileri - BP1047
3.Yapısal Programlama
3.Yapısal Programlama
Veri yapıları;

XML Belgesi (XML Document),
1.

Değişken (Variable),

Nesne Grafiği (Object Graph),

Basit (simple) ise Dizi ve Liste,

Dizi (Array),

Veriseti (Dataset),

İlişkili (relational) ise Veriseti,

Liste (List),

Sözlük (Dictionary) gibi yapılardır.

Anahtar-değer (key-value) ise Sözlük,

Yığın (Stack),


Hiyerarşi ise ağaç veya XML Belgesi,

Kuyruk (Queue),

Ağ şeklinde ise Nesne Grafiği olarak veri yapısı belirlenir.

Ağaç (Tree),
Verinin
hangi
yapı
içine
konulacağını,
verinin
doğal
şekli (structure nature) ve veriye
erişim şekli (data access) belirler.
3.Yapısal Programlama
2.
Verinin Doğal Şekli:
3.Yapısal Programlama
Erişim Şekli:

Dizinler üzerinden erişilecekse Array List, String Collection,

Anahtarlar üzerinden erişilecekse Hash Table, Sorted List, List Dictionary,
String Dictionary

Ardışık olarak erişilecekse Linked List,

FIFO (First In First Out) veya LIFO (Last In First Out) olarak erişilecekse
Queue, Stack yapısı kullanılır.

İşlevler (function) bir veriyi işleyip sonucunu geri döndürürler.

Yordamlar (procedure) ise işlemin sonucunda bir değer geri döndürmezler.

İşlevler ve yordamlar parametreli yada parametresiz olabilir.
3
10.11.2015
Yazılım Mimarileri - BP1047
3.Yapısal Programlama
3.Yapısal Programlama
Burada;

1. Parametre (parameter), işlev ya da yordama giren değerleri tanımlayan
ifadelerdir. Aşağıda verilen faktöriyel örneğinde f, parametredir.

2. Argüman (argument) ise işlev ya da yordama giden değerlerin kendisidir
veya çağrıldıkları andaki değerlerdir. Aşağıda PASCAL dilinde verilen verilen
faktöriyel örneğinde 5 ile input ise argümandır.
3.Yapısal Programlama
3.Yapısal Programlama

Yapısal programlamada işlev veya yordamlar, mantıksal sıralardan (logical
sequence) oluşurlar. Mantıksal sıralar bir veya birden fazla:

Yapısal programlamada bir mantıksal yapı (logical structure) göz önüne
alınarak kodlama yapılır.

Ardışık işlem (sequential operation);

Yapısal programlamanın adını aldığı ve sözdizimi (syntax) daha kolay
anlaşılan bu yapıda:

İlk önce değişkenler tanımlanır (variable declaration).

Daha sonra programı yapılacak olan işi anlamlı parçalar halinde yapacak
yordamlar (procedure) ve işlevler (function) tanımlanır.

Son olarak, yapılacak işe bağlı olarak fonksiyonların belli sırada
çağırıldığı, ana işlev (main function) veya giriş noktası (entry point) kodlanır.


Tanımlamalar (declaration),

İfadeler (expression),

Giriş/çıkış işlemlerinden (input/output operation) oluşur.
Duruma göre seçim (conditional choice) belirten if, switch gibi deyimler,

do, while, for, foreach gibi deyimleri belirten ilişkisel döngü (relational loop)
veya

return, break, continue, catch gibi dallanmalardan (jump) oluşabilir.
4
10.11.2015
Yazılım Mimarileri - BP1047
3.Yapısal Programlama


Yapılan iş mantığına uygun olacak şekilde program, kodlanan ya da yazılan
satırları ifade eden fiziksel sıralar (physical sequence) ile icra edilen
(execute) satırları ifade eden mantıksak sıralardan (logical sequence) oluşur.
Bu çerçevede bakıldığında işlevler içinde temel olarak iki tip işlem yapılır;

Fiziksel sıra ile ardışık sıranın aynı olduğu ardışık işlemler (sequential
operation),

Fiziksel sıra ile ardışık sıranın farklı olduğu kontrol işlemleridir (control
operation).
4.Modüler Programlama

3.Yapısal Programlama
Modüler programlama (modular programming) tekniğinde, birbirleriyle ilgili
olduğu düşünülen ya da aynı çağrışım kümesi içinde olduğu düşünülen
fonksiyonlar bir araya toplanarak genellikle farklı bir dosya içinde tutulurlar.

Bu programlama tekniğinde okunabilirlik (readability) oldukça yüksek
olmasına rağmen fonksiyonların sayısının çok olması veya yazılan kodun çok
büyümesi durumunda bakım (maintenance) oldukça zor hale gelmektedir.
4.Modüler Programlama

Modüllere neden ayırmalıyız?

Bunu, iki problemi ele alarak açıklayalım.

Eğer birinci problemin karmaşıklığı ikincisinden büyük ise birincisi için
harcanan çaba, ikincisinden fazla olacaktır.

Bu problemleri birleştirdiğimizde ise harcanan çaba ayrı ayrı harcanılan
çabaların toplamından daha fazla olacaktır.

Bu durumda çözüm bölmek ve üstesinden gelmektir (Divide and Conquer).
5
10.11.2015
Yazılım Mimarileri - BP1047
4.Modüler Programlama
4.Modüler Programlama
4.Modüler Programlama

Yazılımlar, yönetilebilecek
(modularization).
küçük
parçalar
halinde

Ayırma tek bir dosya üzerinde olabileceği gibi her biri ayrı bir dosya içinde
bulunabilir.

Burada amaç, yukarıdaki sorunun
karmaşıklığı (complexity) azaltmaktır.

Modül, bir eylemin soyut (abstract) tarafıdır.

Modüllere ayırma bize soyutlama (abstraction), değişim yönetimi (change
management) ve yeniden kullanılabilirlik (reusing) sağlar.
cevabından
da
modüllere
anlaşılacağı
ayrılır
üzere
4.Modüler Programlama

Bu nedenle, bir yazılım, modüllere ayrılmak istendiğinde, performans
(performance) ile bakım (maintenance) arasında seçim yapmak gerekir.

1.
Performans istendiğinde daha az sayıda işlev olacak şekilde yazılım
tasarlanır.
Modüllere ayırma sonrasında;

Yöntemlerin çağrılması ile ilgili yük arttırılır (calling overhead),

İşlemci sürekli it-çek (push-pop) yapar,

Sürekli olarak veri saklanır ve okunur.


Bu durumda işlevlerin boyu uzayacak ve karmaşıklık artacaktır. Ayrıca bakım da
kolay olmayacaktır.
2.
Bakım istendiğinde ise, yazılım, işlev sayısı fazla olacak şekilde
tasarlanır.

Bu durumda işlevlerin boyu kısalacak ve okunabilirlik artacaktır. Ancak daha fazla
işlev çağrılacak ve performans kaybı yaşanacaktır.
6
10.11.2015
Yazılım Mimarileri - BP1047
4.Modüler Programlama
4.Modüler Programlama
Karmaşıklık derecesini ölçen yöntemler aşağıda sıralanmıştır:

1. 1976 yılında Thomas McCabe tarafından geliştirilen McCabe veya
Cyclomatic ölçümü,
Bu durumda şu sorular sorulabilir: “Yöntemleri neye göre daha küçük
parçalara ayırmalıyız?”

2.
1977 yılında Maurice Halstead tarafından geliştirilen Halstead ölçümü,

3.
Bowles ölçümü,

ya da “Ayırma faktörü nedir?”.

4.
Henry and Kafura ölçümü,

İşte burada karmaşıklık derecesi (complexity) devreye girer.

5.
Troy ve Zweben ölçümü ve

6.
Ligier ölçümü.

Modüllere ayırma işlemi sırasında işlevleri yada yöntemleri de bölmek gerekir.

4.Modüler Programlama

Bunlardan en çok kullanılanı birincisi olan Cyclomatic ölçümüdür.

Bu yöntem kısaca işlev yada yordam içinde alınan karar sayısını ölçer.

Cyclomatic karmaşıklık derecesi (CC) ölçümü aşağıdaki gibi yapılır:
4.Modüler Programlama

CC=Verilen Karar Sayısı+1

Burada fazla olan 1, geri kalan ifadeleri temsil etmektedir. Buna göre
karmaşıklık derecesi aşağıdaki şekilde hesaplanır:

1. Ardışık işlemlerin (sequential operation) ve dallanmaların (jump) hepsinin
karmaşıklık derecesi 1 olarak kabul edilir.

2.
Duruma göre seçim (conditional choice) her biri karmaşık derecesini 1
arttırır.

Yani if ifadelerinin her biri dereceyi 1 artırır.

Her bir case ifadesi dereceyi 1 artırır, defaut: ifadesi dereceyi artırmaz.
7
10.11.2015
Yazılım Mimarileri - BP1047
4.Modüler Programlama


3.
4.Modüler Programlama
İlişkili döngülerin (relational loop) her biri karmaşık derecesini 1 arttırır.

Yani for, foreach, do, while gibi ifadeler dereceyi 1 artırır.

Döngü, while(true) gibi duruma göre sonlanmıyorsa karmaşıklığı 0 kabul edilir.
4.
İstisna yakala da icra edilen kod içinde bir dallanma kararı içerdiğinden
her bir catch ifadesi de dereceyi 1 artırır.
4.Modüler Programlama
4.Modüler Programlama


Normal olarak 10’un üzerindeki ölçümlerde işlevin yada yordamın bölünmesi
gerekir.

Bölünmediği takdirde, tabloda verildiği üzere, hata düzeltme olasılığı da
artacakdır.

Cyclomatic karmaşıklık ölçümünde esas olarak karmaşıklık sınırı 10 olarak
kabul edilir.

Kodun bölünmesi daha çok maliyet ve çaba gerektiriyorsa bu sınır 20’ye kadar
artırılabilir.
Karmaşıklık derecesi ölçümünde bool ifadesinin de göz önüne alındığı duruma,
her bir bool ifadesinin de karmaşıklık derecesinin 1 artırdığı ölçüme, CC2
(Cyclomatic complexity with Booleans/Extended Cyclomatic Complexity) adı
verilir.
8
10.11.2015
Yazılım Mimarileri - BP1047
4.Modüler Programlama
4.Modüler Programlama

Modüllere ayırırken iki kavram ön plana çıkar.

Bunlar uyum (cohesion) ve bağlaşımdır (coupling).

1.

Case ifadelerinin her biri değil de sadece switch ifadesinin karmaşıklığı 1
artırdığı ölçüme ise CC3 (Cyclomatic complexity without Case/Modified
Cyclomatic Complexity) adı verilir.

Yani yukarıda verilen modüler programlama kod örneğinde dosya işlemleri
modülünde “ElektronikPostaGönder” gibi konu dışında bir işlev olmaması
gerekir.

CC, CC2 ve CC3 ölçümlerinden hangisinin kullanılacağına yazılımcı karar verir.
En çok kullanılanı CC ölçümüdür.

Yani modülleri yüksek uyum (high cohesion) içinde oluşturmalıyız.
4.Modüler Programlama
Uyum (cohesion), konu bütünlüğünü bozmadan modüller oluşturmaktır.
5.Olay Güdümlü Programlama

2.
Bağlaşım (coupling), birinde yapılan değişikliğin diğerlerinde en az
değişiklik gerektirecek şekilde modüllerin oluşturulmasıdır.

Şimdiye kadar işlenen programlama tekniklerinde program tarafından, tuşa
basılması veya farenin hereket ettirilmesi gibi, bir olayın olması beklenir.

Yani modül, biryerinde olacak değişiklikte çorap söküğü gibi diğer modülleri
en az etkilemecek şekilde zayıf bağlaşımla (loosely coupling) hazırlanmalıdır.

Olay güdümlü programlama (event driven programming) tekniğinde ise olay
gerçekleştiğinde ilgili işlev icra edilir.

Yani, fare hareketi ve tuşa basılması gibi olaylar karşısında, gerekli
fonksiyonun çağrılması sağlanarak programlama yapılır.
9
10.11.2015
Yazılım Mimarileri - BP1047
5.Olay Güdümlü Programlama
5.Olay Güdümlü Programlama


Bu programlama tekniğinde olayları dinleyen fonksiyonlar yazılır.

Beklenen olay numarası algılandığında, o olaya ilişkin alt işlev çağrılır.

Beklenen olay karşısında bir fonksiyonun icra edilmesine
yakalama (event capture) ya da sadece yakalama (capture) adı verilir.

Bu programlama tekniğine ilişkin bir Windows uygulamasının giriş işlevine
(main function) yönelik örnek kodlama aşağıda verilmiştir.
olay
Beklenmeyen bir olay kodu geldiğine ise hiçbir işlem yapılmaz.
5.Olay Güdümlü Programlama
6. Nesneye Dayalı Programlama

İlk önceleri olayların numaralandırılması işlemi programcı tarafından
yapıldığından, olay numaraları, yazılımdan yazılıma farklılık göstermiştir.

Nesneye dayalı programlama (OOP) tekniğinde, olayları gerçekleştiren
nesnelerdir.

Daha sonraları bu tutarsızlığı gidermek için numaralama işlemi, işletim sistemi
tarafından yapılarak bir standart sağlanmıştır.

Nesneler gerçek hayattaki varlıklara (insan, araç, personel gibi) tekabül eder.

Bir nesneye bir işi yapma iletisini (message) gönderen bir başka nesnedir.

Yani nesneler birbirlerine ileti göndererek (message-passing) haberleşirler ve
bu
mesajlar
karşısında
nesneler
davranış(behavior)
gösterir
veya yöntem (method) geliştirirler.

Ancak bu programlama tekniğinin de daha öncekilerde olduğu gibi değişime
karşı direnç gösteren bir yapısı vardır.

Ayrıca gerçek dünyada nesneler vardır ve bu nesneler etkileşim içindedir.
10
10.11.2015
Yazılım Mimarileri - BP1047
7. İlgiye Yönelik Programlama
7. İlgiye Yönelik Programlama


İlgiye Yönelik (AOP-Aspect Oriented Programming) programlama yöntemi,
aslında nesneye dayalı programlamanın genişletilmiş halidir.

Nesneye dayalı programlama tekniğinde, nesnenin asli görevleri dışındaki
işlerin de nesne tarafından yapıldığı, bir tanımlama ya da modelleme
yapılmaktadır.
1.
Kod Karmaşası (code tangling):
Nesneler, asli görevini yerine getirirken başka görevleri de yaparlar.
Asli görevi olmayan bu işlevleri yerine getirmesini sağlayan kodlar, kod
karmaşasına yol açarlar.

2.
Saçılma Meselesi (scatterred concern):
Nesneler, bir işi yapmak için diğer nesnelere de bazı işler yaptırırlar.

Bu da çeşitli problemlere yol açmaktadır.
Bu durumda işin tamamını ilgilendiren kod başka başka yerlere dağıtılır.

Bunlardan birkaçı şu şekildedir:
İşte bu durum, saçılma meselesi olarak adlandırılır.

3.
Kesişme Meselesi (cross-cutting concern):
Birbiriyle ilgisi (aspect) olmayan kodların birbirinden ayrılması için bu terim
kullanılır.
7. İlgiye Yönelik Programlama

Bu yeni yöntemde bize, nesnenin asli görevleri ile diğer görevleri birbirinden
ayıracak bir yapı sağlanmaktadır.

Bu programlama yöntemiyle, nesneye dayalı programlama ile birlikte gelen
problemleri bertaraf edecek bazı yenilikler getirilmiştir.

Bu nedenle Nesneye Dayalı Programlama
Programlamanın yapılamayacağı bilinmelidir.
bilinmeden
İlgiye
Dayalı
11
10.11.2015
Yazılım Mimarileri - BP1047
Programlama Paradigmaları
Yazılım Mimarileri
Programlama Paradigmaları

Programlama tekniklerine bakıldığında paradigma (paradigm)
olarak birçok farklı bakış açısı vardır.

Paradigma, bir alana ilişkin fikir, yaklaşım ve kavramların
oluşturduğu düşüncelere ait ortak anlayışlar ya da değerler
dizisidir.

Paradigmalar genel olarak iki başlık altında toplanabilir.
Öğr. Gör. Emre ÇAM
Programlama Paradigmaları
1.Yordamlı Programlama Paradigması

Birinci paradigma, yordamlı programlamadır.

Programlar, talimatlardan oluşan bir liste şeklinde yazılır.

İkincisi ise; nesneye dayalı programlamadır.

Bilgisayara ne yapacağı, adım adım (step-by-step) söylenir:

Bu bölümde bu iki farklı paradigmanın, yazılımı yapılacak olan sisteme bakış
açısı, üzerinde durulmaktadır.

“Dosyayı aç, Bir rakam oku, 4 ile çarp, ekranda göster, …”.

Bu adımlar gruplar halinde işlevlerin (function) içinde toplanır ve bu işlevler,
ana işlev (main function) içinde sırasıyla çağrılır.
1
10.11.2015
Yazılım Mimarileri - BP1047
1.Yordamlı Programlama Paradigması
1.Yordamlı Programlama Paradigması
1.Yordamlı Programlama Paradigması

Yordamlı programlamada bir işlem, sıralamada kendinden
önceki işlemin gerçekleşmesi sonrasında gerçekleştirilir.

Bir işlevin işi bitmeden diğer işlev işleme konulmaz.

Yazılımcılarda, modellenecek iş sürecinin yazılım karşılığının,
birbiriyle ilişkili yordamlar bütünü olacağı, anlayışı vardır.
2.Nesneye Dayalı Programlama Paradigması

Bu programlama paradigması
kullanılmamaktadır.
fazla

Bu yeni bakış açısında, benzetimi (simulation) yapılacak süreçteki
nesneler (object) tek tek tanımlanır.

Bunun sebebi, programlanan işte değişiklik olması halinde, tüm
işlevlerin ve hatta ana işlev (main function) içindeki işlev
sıralarının değiştirilmesi ihtiyacının ortaya çıkmasıdır.

Nesnelerin her birinin kendine özgü davranışları (behavior) veya bir
başka deyişle yöntemleri (method) vardır.


Bir başka deyişle değişimin yazılıma aktarılmasında (change
management) güçlük çekilir.
Programlama bu nesnelerin
göstermeleri ile yapılır.

Burada, nesnelerin birbirlerinden etkilenmesi iletilerle (message)
sağlanır.

Bu işleme ileti gönderme (message-passing) adı verilir.
son
zamanlarda
birbirlerinden
etkilenerek
davranış
2
10.11.2015
Yazılım Mimarileri - BP1047
2.Nesneye Dayalı Programlama Paradigması

Gerçek dünyadaki gibi, süreci gerçekleştiren nesneler, özellikleri
(attribute) ve davranışları (behavior) ile tanımlanır.

Bu nesneler birbirlerine çeşitli olaylar (event) karşısında ileti
göndererek davranış göstermesini isterler.

Nesneler davranışları yöntemlerle gösterir, yani nesneye dayalı
programlamada yöntem (method), yordamlı programladaki işlev
(function) veya yordamı (procedure) ifade eder.
2.Nesneye Dayalı Programlama Paradigması
2.Nesneye Dayalı Programlama Paradigması
2.Nesneye Dayalı Programlama Paradigması
Mesaj gönderme (message-passing) iki türlüdür:


1.
İleti (message): Bir nesneden bir nesneye gönderilir. Nesne
bunun karşısında bir davranış (behavior) gösterir.
2.


İleti gönderme ile yöntem çağırma (function calling) arasındaki
temel fark, ileti gönderilecek nesneye ait bir davranışın tanımlı
olmasıdır.

Yani yöntem, ancak bir nesne var olduğunda çağrılabilir.

Yordamlı paradigmadaki işlevlerde ise bu zorunluluk yoktur.
Uyarı (signal): Bir nesneden birçok nesneye gönderilir.
Yani bir nesne bir olayın olduğunu ortama yayar (publish) ve bu
çağrı karşısında nesneler tepki (handler) gösterirler.

Gerçek dünyada olduğu gibi her nesne her çağrıya tepki vermez.

Bu nedenle hangi çağrıya tepki verileceği önceden belirlenir.

Bu nedenle nesneler, tepki gösterecekleri çağrı mekanizmasına
önceden kayıt olurlar.
3
10.11.2015
Yazılım Mimarileri - BP1047
2.Nesneye Dayalı Programlama Paradigması
4
10.11.2015
Yazılım Mimarileri - BP1047
1.İlk Nesil Programlama Dilleri
Yazılım Mimarileri

John von Neumann tarafından geliştirilmiş iki önemli kavram, programlama
dillerinin gelişiminde önemli rol oynamıştır.
Programlama Dilleri

Birinci kavram, programların paylaşımı (Shared Program Technique) adını
taşır.

Bilgisayar donanımı basittir ve üzerinde çalışacak programların her seferinde
yeniden yazılması gerekmez.
Öğr. Gör. Emre ÇAM
1.İlk Nesil Programlama Dilleri
1.İlk Nesil Programlama Dilleri

İkinci kavram ise Kontrol Yapılarının Aktarımı (Conditional Control Transfer)
olarak adlandırır.

Von Neumann tarafından 1949 yılında “Short Code” adlı bir dil çalışması
yapılmıştır.

Bu kavramda bilgisayar, kronolojik olarak adımları yerine getirmez.

Bu çalışma elektronik devreler için yazılmış ilk programlama dili olarak bilinir.

Küçük bloklar (subroutine) ve kodlar üzerindeki sınıflamalar ile işlemleri
yapması gerektiğini savunur.

Bu dil programcıların yazdığı ifadeleri, bilgisayarın anladığı 1 ve 0’lara çevirir.

Bilgisayarın anladığı 1 ve 0’lardan oluşan ikili tabandaki sayılar arda arda
gelerek programları oluşturur.

Bu tür sayılardan oluşan makine dili programları ilk nesil programlar olarak
kabul edilir.

Bu kavram, aynı zamanda kodu tekrar ve tekrar yazmamak için “if” deyimi ve
“for” gibi kontrol yapılarının olması gerektiğini belirtir.
1
10.11.2015
Yazılım Mimarileri - BP1047
2.İkinci Nesil Programlama Dilleri
2.İkinci Nesil Programlama Dilleri

1.
Programa ilişkin kod, programcı tarafından yazılır ve bilgisayarda
çalışması
için
bilgisayarın
anlayacağı
sayılara
dönüştürülür.
Bu
işleme birleştirme (assembly) adı verilir.

2.
Sembolik dil belli bir işlemciye ve işlemcinin bulunduğu ortama
bağımlıdır.

1951 yılında Grace Hopper tarafından ilk derleyici olan A–0 yazılmıştır.

Derleyici (compiler) programlama dili ile yazılan ifadeleri bilgisayarın
anlayacağı 1 ve 0’lara çeviren bir programdır.

Derleyicinin ortaya çıkması, programcıların daha hızlı program yazmasını
sağlamıştır.

Bir sonraki aşama olarak bilgisayarın anladığı 1 ve 0’lardan
oluşan her bir sayıya sembolik isimler verilerek programlar
yazılmaya başlanmıştır.

Bu
sembolik
isimler
kullanılarak
hazırlanmış
programlar, sembolik derleyiciler (symbolic assembler)
tarafından
bilgisayarın
anlayacağı
sayılar
dizisine
dönüştürülürler.

Bu tip diller, ikinci nesil programlama dili olarak adlandırılıp, iki
özelliğe sahiptirler;
3.Üçüncü Nesil Programlama Dilleri

Üçüncü Nesil Programlama Dilleri, ikinci nesil dillerin daha
sadeleştirilmiş hali olan ve programın bir mantıksal yapıya kavuştuğu,
kullanılan donanımdan bağımsız olarak derlenebilen ancak işletim
sitemine bağımlı derlenip çalıştırılabilen dillerdir.

Üçüncü nesil diller, daha çok programcı dostudur.

Programcılara karmaşık veri tipleri ve kontrol yapılarını daha kolay
ifade etme yeteneği verir.
2
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
FORTRAN,1954

“Formula Translating System” kelimelerinden adını alan FORTRAN
1954’den itibaren geliştirilmeye başlanmıştır.

Matematiksel formülleri IBM 704 makine koduna çeviren bir grup
tarafından tasarlanmıştır.

İlk önce matematiksel ifadeleri makine koduna kolay çevirmek için
geliştirilmiş, daha sonraları ise derleyici olarak yeniden tasarlanmıştır.

1957’de ilk FORTRAN dili kullanım kılavuzu yayınlanmıştır.
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
FORTRAN,1954
FORTRAN,1954

Değişken tanımlamaları (variable),
deyimlerden (statement) oluşur.
Bu nedenle yüksek düzey (high level) dil olarak adlandırılır.

Aritmetik ifadeler ya da formülasyona izin verir

İfadelendirme yeteneği yüksek olan yordamlı programlama (procedural
programming) dilidir.

Durumlara(condition) ve tekrarlanan (repetitive) dallanmaları
(branching) sağlayacak kontrol yapılarına (control structure) sahiptir.

Bu özellikten dolayı bu ve bundan sonra geliştirilen diller üçüncü nesil diller
olarak adlandırılır.

Derleme öncesinde uzunluğu bilinen diziler tanımlamaya izin verir.

Dil içerisinde açıklama (remark/comment) yapılmasına izin verilen bir
yapı mevcuttur.

FORTRAN, Makine diline bağımlılıktan kurtulmuş bir dildir.

ifadeler
(expression)
ve
3
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
LISP,1958
LISP,1958




Fonksiyonlar temel program parçalarıdır.
Fonksiyonel ve etkileşimli bir dil olup, John McCarthy
tarafından IBM 704 için 1956-1958 arasında tasarlanmıştır.

Basit manada veri yapılarını (data structure) destekler.

Dinamik veri yapısını destekler.
Yapay zekâ araştırmalarına kolaylık sağlamak amacı ile de
geliştirilen
bu
dilin
kullanım
kılavuzu
1960’da
yayınlanmıştır.

Kullanılmayan hafızayı yönetebilmek (garbage collection) için çeşitli
araçlara sahiptir.

Rakamlara karşılık gelen sembolik ifadeler kullanmayı destekler
Fonksiyonları ifade etmek için matematiksel bir gösterim
sağlayan Lambda Calculus’dan esinlenilmiştir. “LISt
Processor” kelimelerinden adını almıştır.

Yineleme ve durumlara göre dallanmayı sağlayan ifadeler gibi kontrol
yapılarını destekler.

LISP, ifadelerinin etkileşimli olarak işlenmesini sağlayan “eval”
fonksiyonuna sahiptir.
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
ALGOL60,1958
ALGOL60,1958

Blok yapılar ve yerel değişken tanımlama özelliği bulunur.
Uluslararası bir takım tarafından geliştirilmiştir.

İç içe geçmiş program yapılarını destekler.

ALGOL58, ALGOL60, ALGOL68 gibi birçok uyarlaması
vardır.

Gelişigüzel (free format) program kodu yazma özelliği bulunur.


ALGOL60 bilgisayar bilimlerinin ve programlama dillerinin
gelişimini önemli ölçüde etkilemiş, Pascal ise bu işlevi
devam ettiren dillerden olmuştur.
Yeni değişken tiplerinin tanımlanmasına (explicit type) izin
verir.

Dinamik bellek ayırma (memory allocation) yöntemini destekler.

Fonksiyonlarda İsim ve değerler ile parametre kullanımına izin
verir.

4
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
COBOL,1960
COBOL,1960


Amerika Savunma Bakanlığı’nın veri işleme (data processing)
amacıyla ortak kullanılan bir programlama dili geliştirilmesi
isteği üzerine geliştirilmiştir.
CODASYL (Conference on Data Systems Languages) komitesi
tarafından 1960’da COBOL (COmmon Business-Oriented
Language) tamamlanmıştır.

FORTRAN gibi makine dilinden bağımsız bir yapıya sahiptir.

COBOL, Fortran, ALGOL58 ve İngilizce’nin sözdizimi yapısının
egemen olduğu bir dildir.

“record” veri yapısını desteklemektedir.

Dosya tanımlamaları ve işlemleri yapılabilmektedir.

Makineden bağımsız veri tanımlama ve program yapılmasına izin
verir.

Sözdizimi olarak İngilizce egemendir.

Programlama dilleri doğası gereği olmayacak fakat okunabilirliği
sağlamak amacıyla fazladan kelimelere sahiptir.

Program, kendiliğinden bir dokümantasyona sahip olmaktadır.
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
APL,1962
BASIC,1964

APL(A Programming Language), Ken Iverson tarafından 1957 ve
1962 yılları arasında geliştirilmiştir.

BASIC (Beginner’s All-purpose Symbolic Instructional Code) ilk defa
1964 de çalıştırılmıştır.

Fonksiyonel,
etkileşimli,
bilimsel
çalışmalara
yönelik
hazırlanmış, dizilerin öntanımlı (default) olduğu bir dildir.

Bilgisayar bilimleriyle ilgili olmayan kişilerin bilgisayar kullanımını
sağlamak amacı ile tasarlanmıştır.

Çok boyutlu diziler ile rakamsal verilerin çokça işlendiği
uygulamaların oluşturulmasına uygun bir dildir.

FORTRAN ve ALGOL dillerinden etkilenilmiştir.

Bu dilin temel amacı kullanıcı ara yüzünü basitleştirmektir. Bunun
için;
5
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
BASIC,1964
SIMULA,1965

Hız yerine basitlik ön plana çıkarılmıştır.

PUNC kartları üzerinde zaman harcama azaltılmıştır.

Integer ve Real gibi değişken tipleri tek bir tip olarak
tanımlanır.

Değişkenler, değerler, diziler ve formatlar otomatik olarak
öntanımlıdır.

Hata mesajları silinebilmektedir.

Öğrencilerin bilgisayar başında daha fazla zaman harcamalarını
sağlayacak bir yapı öngörülmüştür.

Uluslararası bir BASIC standardı bulunmamaktadır. ANSI
standardı asgari standarttır. Daha sonraları Microsoft firması
tarafından genişletilmiştir.

Simula dili, Ole-Johan Dahl ve Kristen Nygaard tarafından
1962 ile 1965 yılları arasında, Simula 67 dili ise 1967
yılında geliştirilmiştir.

Bu diller nesneye dayalı olarak geliştirilmiş ilk iki
programlama dilidir.

Nesne, sınıf, alt sınıflar, sanal yöntemler (virtual methods)
ve çöp kovası (garbage collection) bu dilin getirdiği önemli
yeniliklerdir.
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
PL/1,1965
PL/1,1965

Çok görevlilik (multitasking) özelliğine sahiptir.

FORTRAN’ın bazı
planlanmıştır.
ve


İlk olarak “FORTRAN Extension” olarak adlandırılmasına rağmen,
sonraları PL/1 (Programming Language 1) olarak adlandırılmıştır.
Programcı tarafından tanımlanan istisna yönetimi
(exception management) yöntemlerine izin verir.


Dil, tasarımında olan birçok yeniliklerinden
çevrelerde oldukça ilgi görmüştür.
Pointer ve listelerle
ilgili
tanımlamalarına izin verir.


Oldukça büyük ve karmaşıktır.
Birçok değişken saklama yöntemlerini (static, automatic,
controlled) barındırır.

Derleyicisi makinelerden ayrı olarak satılan ilk programlama dilidir.

İşletim sisteminden kaynaklanabilecek problemleri göz
önüne almamızı sağlayan yapılara izin verir.
yeteneklere
kavuşması
için
tasarlanmış
dolayı
akademik
yeni
değişken
tipi
6
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
PL/1,1965
C,1972

Adını Fransız filozof ve matemetikçi Blaise Pascal’dan almıştır.

Basit ve zariftir.

Akademik çevreler tarafından yaygın olarak kullanılmıştır.

“case” deyimi, kullanıcının tanımlayacağı yeni değişken
tiplerine yönelik yeni bakış açısı, “record” veri yapısı, “new” ve
“dispose” gibi dinamik bellek kullanımını sağlayan özel
komutları vardır.

Kenneth Thompson ve Dennis Ritchie tarafından Bell
Laboratuarlarında 1972 yılında tasarlanmıştır.

UNIX işletim sistemini daha taşınabilir (portable) yapmak
amacıyla çeşitli işlevlerini (routine) kodlamak için
tasarlanmıştır.

Bu nedenle
adlandırılır.
yüksek
düzey
(high
level)
dil
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
C,1972
SmallTalk,1980

Kolay anlaşılabilir bir sözdizimine sahip değildir.

Kodun okunması ve bakımı zordur.

String, Set, List gibi bileşik (composite) veri tiplerini işleyebilecek
dâhili (built-in) fonksiyonlara sahip değildir.

Bu özelliğinden dolayı bu dil için,
sağlayacak, birçok kütüphane yazılmıştır.

Güçlü değişken tiplerine, çalıştırma anı (run-time) değişken tipi
kontrolüne sahip değildir.

Yüksek düzey (high level) bir dil ile düşük düzey (low level) işlemleri
yapmamızı sağlayan bir yapıya sahiptir.

Bu özelliği ile daha sonraları oldukça güçlü bir dil haline gelmiştir.
daha
sonraları
avantaj
olarak

Bu dil nesneye dayalı programlamanın gerçek olarak
hayata geçirildiği dildir.

Bu dil, nesneye dayalı modellemenin yapıldığı, nesne
tiplerinin dinamik olarak belirlendiği,

Nesnelerin kendisine ait yapı (structure) ve davranışların
(behavior) başka nesneler tarafından bilinmesini sağlayan
yansıma (reflection) gibi özelliklere sahiptir.
7
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
SmallTalk,1980
SmallTalk,1980
Bir smalltalk nesneyi aşağıda verilen üç şeyi yapabilir:

Durumları (state) ve diğer nesnelere olaran raferansları
(reference) tutabilir.

Bir nesneden yada kendinden ileti (message) alabilir.

Bir iletiyi işlerken başka nesnelere veya kendine ileti
gönderebilir.

Phyton ve Ruby gibi birçok dil, smalltalk yaklaşımlarını C
diline benzer sözdizimlerine uygulamışlardır.

Perl 6 dili smalltalk dilinin nesne modeli üzerine kurulmuş
bir dildir.

Smalltalk dilinin modüler yapıda betik (script) olarak
kullanımını sağlayan S# (S Sharp) adında bir dil de
bulunmaktadır.

Smalltalk dili saf bir nesneye dayalı dildir.

Bu dilde bulunan tamsayı ve karakter gibi tüm ilkel tipler
de birer nesne olarak tanımlanmıştır.
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
ADA,1983
C++,1985

Amerika Savunma Bakanlığında yer alan bilgisayarlarda kullanılan
yüzlerce programlama dilinin yerini alması için hazırlatılmıştır.

Proje tamamlandıktan sonra Ada adını alan bu dil, nesneye dayalı,
yapısal, veri tanımlamayı zorunlu kılan (imperative), statik veri tipleri
üzerine kurulmuş pascal tabanlı bir dildir.

Geliştirilirken, program yazmayı kolaylaştırmak için okunabilirliğin
arttırıldığı yapısal programlama yöntemleri göz önüne alınmıştır.

İstisna yönetimi (exception management), paralel işlem (paralel
processing) ve soyut veri tipleri (abstract data types) tanımlanmasına
izin veren bir yapısı vardır.

C++, nesneye yönelik kavramların C diline uygulanarak,
eklentilerle genişletilmiş bir halidir.

Bu nedenle Bjarne Stroustrup, bu yeni dilin adını "C with
Classes" olarak koymuştur.

Simula dilinin nesneye yönelik özelliklerini C diline
uyarlamıştır.

C dilini seçmesinin nedeni, o dönemki bilgisayar
programcılarının hem düşük düzey hem de yüksek düzey
programlama yapmasını sağlaması ve yaygın olarak
kullanılmasından kaynaklanmaktadır.

“C++” terimi ilk kez 1983’te kullanılmaya başlanmıştır.
8
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
JAVA,1995
JAVA,1995

Daha sonra hedefini doksanlı yılların ortasında web
teknolojilerinin popüler olmasıyla birlikte buraya
çevirmiştir.

Doksanlı yılların başlarında, etkileşimli (interactive)
televizyon, teknolojinin geleceği olarak görülüyordu.


Bu amaçla Sun Microsystems tarafından, televizyon dahil
birçok makine üzerinde çalışabilecek taşınabilir (portable)
bir dil üzerinde çalışmaya başladı.
1995 yılında Netscape Java’yı lisanslayarak kendi internet
tarayıcısı olan Navigator içine yerleştirmiştir.

Bu noktadan itibaren Java, birçok yazılım işletmesi
tarafından kullanılmaya başlandı.

Popülaritesi ve gücü yüksek olan C diline benzeyen ve
nesneye dayalı programlamayı daha da kolaylaştıran bu
dil, Java adını almıştır
3.Üçüncü Nesil Programlama Dilleri
3.Üçüncü Nesil Programlama Dilleri
JAVA,1995
C#,2001



İnternet
üzerindeki
uygulamalar,
istemci-sunucu
mimarisiyle
hazırlandığından,
Java
dili,
işletim
sisteminden bağımsız programlama yapmayı sağlayan geniş
çevreler tarafından kullanılan bir dil haline gelmiştir.
Günmüzde JAVA
geliştiriciler için
aracıdır.
dili, açık kaynak kodlu yazılım
vazgeçilmez bir yazılım geliştirme
Günümüz itibariyle, çoğunlukla eğitim ve web
teknolojilerinde kullanılan ve gerçek olarak nesneye
dayalı programlama yeteneğine sahip önemli bir dildir.

C# adını C++ dilinin biraz daha genişletilmiş anlamında olan ve “++”
karakterlerinin birleştirilmiş hali olan (C++)++ harflerinden almıştır.

C# Dili, ECMA tarafından nesneye dayalı yazılım geliştirme
tekniklerinin tümünü destekleyen bir dil olarak tasarlanmıştır.

İkibinli yıllarda geliştirilmeye başlanan bu dilin ilk adı “Simple
Managed C” olarak verilmiştir.

Çünkü bu dil yalnızca .NET altyapısı üzerinde çalışmaktadır.

Bu altyapı üzerinde çalışan uygulamalara yönetilmiş (managed)
uygulama adı verilir.

Bu altyapı dışında geliştirilmiş uygulamalara ise yönetilmemiş
(unmanaged) uygulama adı verilir.
9
10.11.2015
Yazılım Mimarileri - BP1047
3.Üçüncü Nesil Programlama Dilleri
4.Dördüncü Nesil Programlama Dilleri
C#,2001

Kurumsal yazılım geliştirme için iyi bir altyapı sağlayan bu dil, 2000
yılı temmuz ayında C# olarak adlandırılmış ve 2001 yılından itibaren
yaygın olarak kullanılmaya başlanmıştır.
5.Nesneye Dayalı Programlama Dilleri

1961 başlarından itibaren nesneye
mantığına uygun diller geliştirilmiştir.
dayalı
programlama

Temel olarak amaç, programcıya olan ihtiyacın en aza indirilmesidir.

Dördüncü nesil programlama ifadesinden ilk olarak 1982 yılında James
Martin’in “Application Development without Programmers” adlı
kitabında bahsedilmiştir.

Başlıcaları tablo güdümlü programlama, kullanıcı arayüzü üreten
programlar, rapor üreten programlar, veri yönetimine yönelik
programlar olmak üzere bu nesil programlamanın birçok tipi vardır.

Clipper, FoxPro, SQL, Informix-4GL, Progress-4GL, Metafont, Oracle
Reports, Quest, Matlab, Mathematica, SPSS, ColdFusion dördüncü nesil
dillere örnek gösterilebilir.
5.Nesneye Dayalı Programlama Dilleri

Nesneye dayalı yazılım yapan uzmanlar programlama dillerini, hibrit
(hybrid) ve saf nesneye dayalı olmak üzere ikiye ayırır.

Hibrit diller bazı nesneye dayalı kavramların yanında geleneksel olarak
kullanılan diğer modeller ile programlama yapmaya izin verirler.

C++, Object Pascal, Java, Delphi gibi diller bu sınıfta yer
almaktadır.


Bu diller yazılımı yapılan sürece ilişkin nelerin yapılacağını
değil, işin nasıl yapılacağını da belirtirler.
C++ (a superset of C), Ada 95, and CLOS (LISP dilinin nesneye dayalı
uyarlaması) gibi diller hibrit dillere örnek olarak verilebilir.

Saf nesneye dayalı diller ise nesneye dayalı olarak programlama
yapmaya izin verirler.

Bu nedenle bu diller, tanıtıcı (declarative) diller olarak da
anılırlar.

SmallTalk, Eiffel, Simula, Java ve C#, saf nesneye dayalı programla
dillerine örnek verilebilir.
10
10.11.2015
Yazılım Mimarileri - BP1047
5.Nesneye Dayalı Programlama Dilleri

Yakın zamana kadar çok sayıda uygulamada, nesneye dayalı
uygulama dili olarak C++ kullanılmaktadır.

Bu dilin önemli üstünlüğü, sözdizimi olarak C diline benzemesi
ve birçok programcı tarafından bilinip kullanılmasıdır. Bu da
eğitim maliyetlerini azaltmaktadır.

Bunun yanında C++, nesneye dayalı programlamanın tüm
kavramların uygulanmasına izin verir.

Bu dilinin zayıf taraflarından biri ise çokbiçimlik ve dinamik
bağlama konusunda yeteneğinin sınırlı olmasıdır.

Günümüzde en çok C#, Java nesneye dayalı uygulama dili olarak
kullanılmaktadır.
11
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Geliştirme Süreci
Ele Alınacak Hususlar

Günümüzde bir kurumun birçok ihtiyacını karşılayan kurumsal
yazılımlar geliştirilirken, aşağıdaki hususlar detaylı olarak ele alınır;
Yazılım Mimarileri
1.
Teknolojinin getirdiği mali yük,
2.
Farklı teknolojilerden kaynaklanan karmaşıklık,
Yazılım Mimarisi Modelleri
3.
Çok işi az zamanda yapılmak istenmesi,
Öğr. Gör. Emre ÇAM
4.
Sınırlı kaynaklar,
Yazılım Mimarisi Modelleri
1.Şelale Modeli

Şelale modeli (waterfall model) 1970 de Royce tarafından
tanımlanmıştır.

Bu modelde bir sonraki aşamaya geçmek için, bir önceki
aşamanın tamamlanması gerekir.

Bir sonraki aşamaya geçmeden, içinde bulunulan aşamanın
tüm dokümanları hazırlanır.

Bu model, klasik yaşam döngüsü (classic life cycle), doğru
sıralı (linear sequential) model olarak da adlandırılır.
5.
Kayıplar ve sistemi bozan etkenler,
6.
Dağıtık yazılım geliştirme,
7.
Yazılım takımında koordinasyon ve iletişim,
8.
Yazılım takımının yetenekleri,
9.
Yazılım takımın eğitimi ve öğrenme eğrisi.
Yazılım Mimarisi Modelleri
1.Şelale Modeli
1
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
1.Şelale Modeli

Projelerin küçük olması halinde bu modelde yanlış giden hiç bir şey
olmayacaktır.

Burada “küçük olması” ifadesi, projenin ilgili olduğu kişilerden oluşan grubun,
sistemi anlayabilecek kadar az kişiden oluşabildiğini anlatmaktadır.
Yazılım Mimarisi Modelleri
1.Şelale Modeli


1.
Yazılım geliştirme sürecinde bu model, başa dönüp tekrar analiz
yapma imkânı vermediğinden zaman geçtikce risk artar ve hata
ayıklama maliyeti de hızla yükselir.
Bu modelin zayıf tarafları:
Çok fazla dokümana bağımlı kalınır (document driven).
2.
Ele alınan proje büyüdükçe, karmaşıklıklar artar ve çeşitli
zorluklarla karşılaşılır.
3.
Kullanıcı, yazılım tamamlanmadan herhangi bir şey göremez.
4.
Kullanıcının beklediği istekleri tam olarak yerine getiremez.
Yazılım Mimarisi Modelleri
1.Şelale Modeli

Bu modelin üstünlükleri:
1.
Projede disiplin çok kolay sağlanır.
2.
Proje dokümantasyonu üretmek çok kolaydır.
3.
Test işlemi her aşamada yapılabilir.
4.
Bakım işlemi kolaydır.
Yazılım Mimarisi Modelleri
1.Şelale Modeli
5.
Karmaşıklık arttıkça geliştiriciler üzerindeki yük de artar.
6.
Olabilecek riskler önceden düşünülmez ya da daha sonraya
ertelenir.
7.
Büyük problemler projenin daha sonraki aşamalarında,
özellikle sistem uyumlaştırma (integration) aşamasında ortaya
çıkar.
8.
Büyük projelerde her bir aşama oldukça uzun zaman
aldığından dolayı, projeyi gerçekleştirecek personel maliyetleri de
artar.
2
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
2.Hızlı İlkörnek/Prototipleme Modeli
Yazılım Mimarisi Modelleri
2.Hızlı İlkörnek/Prototipleme Modeli

Bu modelin özellikleri;

Hızlı prototipleme modelinde (rapid prototyping model),
ilk olarak kullanıcının önüne hızlıca örnek bir yazılım
konulur ve bu model geliştirilir.
1.
Kullanıcı ve yazılımı geliştiren ekip birlikte iş konusunda
etkileşim içinde bulunur ve birlikte proje hakkında tecrübe sahibi
olur. Yani kullanıcı ile yazılımcı arasında iletişim vardır.

Şelale modelinde bir önceki safhaya geçip tekrar gözden
geçirme yapılmaz.
2.
Yazılımın yapması gerekenler, kullanıcının ilk yazılıma bakıp
ikna olmasından sonra belirlenir.

Bu modelde ise çok az geriye dönüşe izin verilir.
Yazılım Mimarisi Modelleri
3. Artımlı Model
3.
Yazılım geliştirme süreci yine doğrusaldır. Çok az geriye
dönüşe izin verilir. Bu nedenle kullanıcı istekleri daha iyi
çözümlenir.
Yazılım Mimarisi Modelleri
3. Artımlı Model



Artımlı modelde (incremental model), kullanıcı istekleri
aşamalı olarak karşılanacak şekilde birkaç yazılım ortaya
konur ve gerçekleştirilir.
Genellikle aşama sayıcı 5 ile 25 arasındadır.
Bu modelin özellikleri;
1.
Ara yazılımlar, kullanıcı tarafından kullanılabilir.
2.
Ara yazılımın başarısı, nihai yazılımın başarısını da arttırır.
3. Yazılım açık mimaride ya da herkesin anlayacağı yapıda
geliştirilmelidir.
4.
Az sayıda ara yazılım çok sayıda düzeltme işlemini, çok
sayıda ara yazılım az sayıda düzeltme işlemini doğurur.
5.
Yazılımların çok olması bakım işlemini zorlaştırır.
3
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
3. Artımlı Model

Yazılım Mimarisi Modelleri
3. Artımlı Model
Bu modelin üstünlükleri;

Bu modelin zayıf tarafları;
1. Her bir ara yazılımda kullanıcı istekleri daha düzgün tahlil
edilmiş ve yerine getirilmiş olunur.
1.
Ek işlevleri yerine getiren yeni yazılım, bir öncekinin
karşıladığı tüm işlevleri yerine getirmek zorundadır.
2. Yazılımın birbiriyle ilgisiz olan parçaları bağımsız
geliştirildiğinden daha hızlı yazılım geliştirilmiş olunur.
2. Yazılım açık mimaride hazırlanmalıdır. Bu iyi bir şeydir
ancak bakımı oldukça zordur.
3. Kullanıcılar, yazılım geliştirilirken, yazılımı kullandığından
daha az direnç ile karşılaşılır.
3.
Her yeni sürüm çıktığında, bileşen ara yüzleri ve
bileşenler
arasındaki
bağımlılıklardan
dolayı
yeni
düzeltmeler ortaya çıkabilecektir.
4. Yazılım kısmi olarak yapıldığından, projeye başlamak için
çok fazla maliyet gerekmez.
5. Kullanıcı isteklerinin
etkilemeyebilir.
değişmesi,
yazılımın
tümünü
Yazılım Mimarisi Modelleri
4. Sarmal Model

Sarmal modelde (spiral model) kısa yaşam zamanlarına
sahip döngüler ile yazılım geliştirme tamamlanır.

Her bir döngü sonunda yazılımın yeni bir uyarlaması
(version) hayata geçirilir.

Amaç risklerin minimize edilmesidir.

Her bir döngüde riskler (% olarak) ve bu riskler karşısında
sistemin ne kadar etkileneceği (impact: 0-hiç,5-ölümcül)
irdelenir.

Proje, önemli risklerin bertaraf edilmesiyle sonlanır.
Yazılım Mimarisi Modelleri
4. Sarmal Model
4
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
4. Sarmal Model

Bu modelin üstünlükleri;
1. Herhangi bir döngü sonunda elde edilen yazılımın yeniden
kullanımı mümkündür.
2. Bakım bir başka döngüdür.
3. Yazılım geliştiren takım (team), her bir döngünün tüm
aşamalarında (analiz, tasarım, kodlama ve test) yer alır.
Yazılım Mimarisi Modelleri
4. Sarmal Model
5. Yazılımın her bir uyarlamasında ortaya çıkan veya
giderilen problemler göz önüne alınarak risklerin önceden
tespit edilmesi sağlanmış olur.
6. Zorluk derecelerine göre iş bölümlemesi yapılması
sağlanır.
7.
Teknolojideki değişiklikler kolayca yazılıma dâhil edilebilir.
4. Yazılımı talep eden kullanıcıdan alınan fikirler doğrultusunda
geliştirilen uyarlama, daha sonraki uyarlamalarda çıkabilecek
potansiyel problemler hakkında müşteriye fikir verir.
8.
Yazılımın yeni sürümün çıkması takımdaki morali yükseltir.
Yazılım Mimarisi Modelleri
4. Sarmal Model
Yazılım Mimarisi Modelleri
4. Sarmal Model

Bu modelin zayıf tarafları:
1. Çok fazla risk analizi maliyeti arttırır. Ayrıca risk analizi,
geliştirmede çalışanların üzerinde fazladan yük olur.
2. Yazılım geliştirme süreci genellikle Hızlı Uygulama
Geliştirme (RAD-Rapid Application Development) araçları ile
yapıldığından, birkaç sürüm sonunda ortaya çıkan yazılımın
birçok açığı ortaya çıkabilecektir.
9. Sistemin ne kadarının gerçekleştirilebildiğini gösteren
proje durumu, daha doğru olarak tanımlanır.
3. Yönetilmesi oldukça güç olan bir yazılım geliştirme
süreci ile karşı karşıya kalınacaktır.
Şelale modelinde, Gantt Diyagramı (Gantt Chart) gibi
yöntemler ile proje yönetimi yapılabilmesine rağmen, Spiral
model için başka yöntemlere ihtiyaç duyulmaktadır.
4.
Bu model daha çok geniş ölçekli ve kurumun iç ileriyle
ilgili yazılım projelerinde kullanışlı olmaktadır.
5
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
5. Aşırı Programlama Modeli

Aşırı
programlama
modeli
(XP
model-eXtreme
Programming model), yazılım geliştirme süreci ile daha
önce denenmiş olumlu çözümler (best practice) ve
kazanılan yazılım kültürünü birleştiren bir modeldir.
Yazılım Mimarisi Modelleri
5. Aşırı Programlama Modeli

Bu modelin amacı, yazılımın başarısını arttırmak ya da
riskleri azaltmak için daha önce yaşanmış başarılı
örnekleri kullanıp, yazılımdan beklenenleri karşılamayı en
üst düzeyde tutmaktır. Bu modelin üstünlükleri;

1.
Kullanıcı isteklerinin değiştiği ya da belirsiz olduğu
durumlarda kullanışlıdır.

2.
Yazılım ekibi ile iletişimi kolaylaştırır.

3.
Yazılımcılar neyi ne zaman teslim edeceğini bilir.
Yazılım Mimarisi Modelleri
5. Aşırı Programlama Modeli

Bu model, kurum kültürüne, olumlu çözümleri ekleyerek
kurumun yazılımı kabul etmesini kolaylaştırır.

Testlerin üzerinde daha çok durulur.

Artımlı ve yinelemelidir.

Sürüm planlaması ve yeni döngü planlamasına sahiptir.

Daha önce oluşmuş başarılı örnekler, UML olarak gösterilir.
Yazılım Mimarisi Modelleri
5. Aşırı Programlama Modeli
6
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
5. Aşırı Programlama Modeli

Yazılım Mimarisi Modelleri
6.USDP Modeli
Bu modelin zayıf yönleri;
1. Küçük yazılımlar geliştirilebilir. Başarılı bir örnek olay yok ise çözüm
çok geç gelebilir.
2. Sistemin geneline ilişkin bir dokümantasyon çıkarma işini zorlaştırır.
3. Sistemin geneline ilişkin iş süreçlerinin gözden geçirilmesini
zorlaştırır.
4. Yazılımcılar hep birlikte çalışma zorundadır. Ya da aynı fiziki yerde
bulunmak zorundadır.

USDP (Unified Software Development Process) olarak
adlandırılan bu model, UML dilini esas alan bir modeldir.

Bu model, use-case’ler üzerine kuruludur.

Mimariyi ön planda tutan, artımlı ve yinelemeli bir yaklaşımla
projeler gerçekleştirilir.

Bu model, spiral modelin genişletilmiş bir halidir.

Yani Spiral modeldeki döngü adedinin belirlenmesi nihai
yazılıma nasıl ulaşılacağına ilişkin genel bir çerçeveyi ortaya
koyar.

Bu çerçeve yöntem, yinelemelerden oluşan dört ana safhadan
oluşur.
5. Güçlü bir takım liderine ihtiyaç duyulur.
6. Küçük projeleri,
kullanılmaktadır.
küçük
bir
ekiple
Yazılım Mimarisi Modelleri
6.USDP Modeli
hayata
geçirmek
için
Yazılım Mimarisi Modelleri
6.USDP Modeli

Bu çerçeve yöntem, yinelemelerden oluşan dört ana
safhadan oluşur.

Bunlar; Algılama (inception),

Somutlaştırma (elaboration),

İmalat (construction),

Geçiş (transition) aşamalarıdır.
7
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
6.USDP Modeli



Bu
safhalar
Şelale
karıştırılmamalıdır.
modelindeki
Yazılım Mimarisi Modelleri
6.USDP Modeli
aşamalar
ile
Bu model, UP (Unified Process), RUP (Rational Unified
Process), Nesneye Dayalı (object oriented) veya Artımlı
Yinelemeli Çerçeve (Iterative, Incremental Framework)
model olarak da bilinir.
Modelde her bir yineleme için disiplinler altında gösterilen
her bir model, gözden geçirilip yenilenir.
Yazılım Mimarisi Modelleri
6.USDP Modeli
Bu modelin avantajları;
1.
İş modelleme, yazılım örüntüleri (design pattern) gibi birçok
alt modeli vardır.
2.
Yazılımı diyagramlarla kullanıcıya gösterir. Kullanıcı yazılımın
ne yapacağını görür.
3.
Yazılımda yapılacak değişiklikler kayıt altına alınır.
4.
Yazılımın, her döngüdeki test aşaması ile, kalitesi arttırılmış
olur.
Yazılım Mimarisi Modelleri
7.Microsoft Solutions Framework Modeli

MSF modeli, Şelale modeli ile Spiral modelinin güçlü taraflarının
bir araya getiren bir modeldir. Gerçekte altı adet alt modeli
vardır.
2.
Maliyeti azaltmak için yeniden kullanılabilir (reusable)
bileşenlerle çalışılmak zorundadır.

Bunlar;

Kurumsal Mimari (Enterprise Architecture),
3.

Takım (Team), Süreç (Process),

Risk Yönetimi (Risk Management),

Tasarım Süreci (Design Process),

Uygulama (Application) modelleridir.

Bunların yanında dezavantajları da vardır;

1.
Sıkı çalışan bir ekip gerektirir. Aksi halde işlerin gecikmesi
olasıdır.
Başlangıç algılama (inception) çok kritiktir.
4.
Kurum, nasıl bir yazılım alacağını detaylarına kadar
bilmektedir.
5.
Bu model bir kurumun iş süreçlerinin tamamının elektronik
ortama taşınacağı projelerde daha çok başarılı olmaktadır.
8
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
Yazılım Mimarisi Modelleri
7.Microsoft Solutions Framework Modeli
7.Microsoft Solutions Framework Modeli

Bu modelde üç çerçeve ön plana çıkar.

Birinci çerçeve olan MRF (Microsoft Readiness Framework)
sayeyinde, proje veya benzer projeler hakkında yukarıda verilen
altı model için bilgi sahibi olunur.

İkinci çerçeve MSF (Microsoft Solutions Framework) sayesinde,
proje planlanır ve yapılır.

Üçüncü çerçeve olan MOF (Microsoft Operations Framework) ile
geliştirlen projenin yönetimini sağlanır.

Bu modelde uyarlamalar kullanıcıya verilerek kullandırılır.
Yazılım Mimarisi Modelleri
Yazılım Mimarisi Modelleri
7.Microsoft Solutions Framework Modeli
7.Microsoft Solutions Framework Modeli

Ortaya çıkan ilk uyarlama, daha önceki tecrübelerin anlatıldığı
çerçeveler üzerinden yapıldığından, büyük bir oranda çalışacak
ve kullanılacaktır.

Zaman içinde ortaya çıkan hatalar ve istekler değerlendirilerek
yeni sürümler ortaya konur.

Yeni sürüm çıkarılırken kazanılan deneyimler, ilgili çerçevelerde
yenilenir.

Windows NT4, Windows 2000, Windows XP işletim sistemlerinin
geliştirilmesinde kullanılmıştır.

Artımlı modelin geliştirilmiş hali olan bu model, küçük
takımların paralel çalışması ve her gün yapılan çalışmaların
paylaşılması üzerine kurulmuştur.

Paylaşılan deneyimler çerçeveler üzerinde güncellenir.
9
10.11.2015
Yazılım Mimarileri - BP1047
Yazılım Mimarisi Modelleri
Yazılım Mimarisi Modelleri
7.Microsoft Solutions Framework Modeli
7.Microsoft Solutions Framework Modeli

1.
Ayrıca sarmal (spiral) modelin güçlü yönlerini ortaya çıkaran bir
çalışma anlayışı vardır. Sarmalın her bir döngüsünde;
Kurgulama (envisioning phase),
2.
Planlama (planning phase),
3.
Geliştirme (developing phase),
4.
Kararlı hale getirme (stabiling phase),
5.
Gerekli olursa tekrar Yineleme (iteration) bulunur.
Yazılım Mimarisi Modelleri
Yazılım Mimarisi Modelleri
7.Microsoft Solutions Framework Modeli
7.Microsoft Solutions Framework Modeli
Bu modelin üstünlükleri;

1.
Zengin bir modeldir.
1.
2.
Bileşenler her zaman birbirleriyle çalışır.
3.
Önceden yazılımın ne yapacağı görülebilir.
2. Yeni değildir ve yeni yazılımcının bu modeli anlaması zaman
almaktadır.
4.
Yazılımın sıkça derlenmesi kaliteyi arttırır.
3.
5.
Değişiklikler kayıt altına alınır.
6.
Başlangıç koşulları değişse bile bu model kullanılabilir.


Bu modelin dezavantajları;
Oldukça karmaşıktır.
Yazılım ekibinin çok güçlü olmasını gerektirir.
Bu model, Microsoft gibi, çok fazla sayıda takım ile kurumsal
yazılım geliştirmede kullanılır.
10
10.11.2015
Yazılım Mimarileri - BP1047
MODEL
Klasik Derle ve
Düzelt
(Build-and-Fix)
Şelale Modeli
GÜÇLÜ YÖNLER
Bakım Gerektirmeyen küçük
yazılımlar için idealdir.
ZAYIF YÖNLER
Önemli yazılımlarda tercih edilmez.
Projede bir disiplin vardır.
Proje dokümantasyona bağlı olarak
yürür.
Hızlı Prototip Modeli Ortaya çıkan yazılımın, kullanıcı
isteklerini karşılama oranı yüksektir.
Ortaya çıkan yazılım, kullanıcı
isteklerini karşılayamayabilir.
Artımlı Model
Yazılımdan hızlıca cevap alınmaya
başlar.
Bakımı kolaylaştırır.
Aşırı Programlama
Yazılımdan hızlıca cevap alınmaya
başlar.
Kullanıcı isteklerinin belirsiz ya da
değişken olması projeyi etkilemez
Yazılım, açık mimaride hazırlanmalıdır.
Yeni eklentilerle ortaya çıkacak yeni
sürüm, eski sürümlere bağımlıdır.
İstenmeyen durumlar ortaya çıkabilir.
Küçük projeler ve küçük takımlara
uygundur.
Tasarım dokümanı zayıftır.
Herkes tarafından kabul edilen yaygın
Kullanıcı ihtiyaçlarını karşılayıp
karşılamadığı tam olarak detaylı olarak
incelenmelidir.
Proje büyüdükçe daha karmaşık hale
gelir.
11

Benzer belgeler