konu baŞliklarimiz ;

223
1

Upload: bertha

Post on 09-Feb-2016

59 views

Category:

Documents


4 download

DESCRIPTION

Yazılım Gerçekleştirimi. KONU BAŞLIKLARIMIZ ;. Programlama Dilleri. Dillerin Özellikleri. Kod Çevrim İşlemi. Yürütme Ortamı. Kodlama Biçimleri. YAZILIM GERÇEKLEŞTİRİMİ. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: KONU  BAŞLIKLARIMIZ ;

1

Page 2: KONU  BAŞLIKLARIMIZ ;

2

KONU BAŞLIKLARIMIZ;

Programlama Dilleri

Dillerin Özellikleri Kod Çevrim İşlemi

Yürütme Ortamı

Kodlama Biçimleri

Yazılım Gerçekleştirimi

Page 3: KONU  BAŞLIKLARIMIZ ;

3

Yazılım mühendisliği ana aşamalarından çözümleme ve tasarım, aslında isterlerin bilgisayarın anlayabileceği şekle dönüştürülmesi için bir alt yapı sağlar.

YAZILIM GERÇEKLEŞTİRİMİ

Mevlüt inan

Page 4: KONU  BAŞLIKLARIMIZ ;

4

Çözümleme ve tasarım, düşüncelerin makinelerin anlayabileceği hale getirilmesine yardımcı olurken, gerçekleştirim aşamasında, tasarım, programlama diline dönüştürülür.

Page 5: KONU  BAŞLIKLARIMIZ ;

5

Bilgisayara yaptırılması istenen görevleri ona

tanıtabilmek için programlama dilleri

kullanılır.

Page 6: KONU  BAŞLIKLARIMIZ ;

6

Yazılan kaynak kod daha sonra bilgisayar mimarisine uygun makine kodlarına dönüştürülerek uygun bir merkezi işlem birimi üzerinde koşturulurlar.

Page 7: KONU  BAŞLIKLARIMIZ ;

7

Gerçekleştirim aşaması sonunda, yürütülebilir kod veya dinamik kütüphane şeklinde yazılım birimleri elde edilir. Pek çok yerde bu birimlere program denmektedir.

Page 8: KONU  BAŞLIKLARIMIZ ;

8

Page 9: KONU  BAŞLIKLARIMIZ ;

9

Programlama Dilleri

Yazılım mühendisliğinin diğer evreleri ne kadar nitelikli olursa olsun , gerçekleştirim, yani kodlama evresinde kullanılan programlama dili ve kodlama biçimi son ürünün hem niteliğini hem de bakım özelliğini etkiler.

Page 10: KONU  BAŞLIKLARIMIZ ;

10

Dillerin Tarihçesi

1960’larda yapısal programlama ortaya çıktı. Bu yöntemi destekleyen programlama dilleri ile nispeten karmaşık ve büyük programlar yazabilmek mümkün olmaktaydı.

Page 11: KONU  BAŞLIKLARIMIZ ;

11

Fakat yine de projeler belirli boyutları aştığında yapısal programlama yöntemi de yetersiz kalmakta ve projelerin denetimi zorlaşmaktaydı.

Page 12: KONU  BAŞLIKLARIMIZ ;

12

Programcılığa yaklaşımlar bilgisayarın icadından bu yana pek çok değişikliğe uğramıştır. Bunun en önemli nedenlerinden biri gittikçe karmaşıklaşan program isteklerine cevap verebilmektir.

Page 13: KONU  BAŞLIKLARIMIZ ;

13

İlk bilgisayar programları Assembly dili ile yazılmaktaydı. Program boyutları büyüdükçe daha da üst düzey programlama dili FORTRAN’dır.

Page 14: KONU  BAŞLIKLARIMIZ ;

14

Çeşitli gereksinimler nedeniyle bilgisayar programlama tekniklerine 1980’lerde yeni bir yaklaşım daha eklenmiştir.

Page 15: KONU  BAŞLIKLARIMIZ ;

15

Günümüzde çok yaygın

olan bu yazılım geliştirme

tekniğine Nesneye Yönelik

Çözümleme ve Tasarım ve

bunun sonucunda ortaya

çıkan programlama

yöntemine de Nesneye

Yönelik Programlama adı

verilmiştir.

Page 16: KONU  BAŞLIKLARIMIZ ;

16

1980’lerin yaygın yüksek düzey dillerinden biri olan C programlama dili, etkinliği, programlama kuvveti ve kullanım kolaylıkları ile tanınmaktadır.

Page 17: KONU  BAŞLIKLARIMIZ ;

17

C++ ise C’nin nesneye yönelik uyarlamasıdır. C’nin yeteneklerini taşıması yanında nesneye yönelimi de desteklemesi bu dili benzerleri içinde en yaygın ve önemli hale getirmektedir.

Page 18: KONU  BAŞLIKLARIMIZ ;

18

Ancak, C++’ı yalnızca yapısal bir dil olarak kullanmaya çalışmanın otoyolda birinci vitesle araç kullanmaya bezediği de kabul edilmelidir.

Page 19: KONU  BAŞLIKLARIMIZ ;

19

Günümüzde de çok yeni sayılabilecek, fakat çok yaygın bir dil olan JAVA daha çok internet uygulamaları ve taşınabilir programlama için ideal olarak görülmektedir.

Page 20: KONU  BAŞLIKLARIMIZ ;

20

Bunların yanında taşınabilirliği ve uyumluluğu sağlamak üzere HTML,XML gibi yapısal diller ve çeşitli özel amaçlı toplu iş tanımlama dilleri de yaygın bir şekilde kullanılmaktadır.

Page 21: KONU  BAŞLIKLARIMIZ ;

21

DİLLERİN GELİŞİMİBilgisayarın icadından bu yana çeşitli yazılım geliştirme projelerinde kullanılmış olan yüzlerce programlama dili bulunmaktadır. Tarihçesine göre bu diller beş ana nesil içinde toplanabilirler.

Page 22: KONU  BAŞLIKLARIMIZ ;

22Programlama Dillerinin Gelişimi

Page 23: KONU  BAŞLIKLARIMIZ ;

23

a)Birinci Nesil Diller

Assembly dili insanların daha rahat okuyabileceği ilk dil ortaya çıkmıştır.

Page 24: KONU  BAŞLIKLARIMIZ ;

24

Komut ve işlenen birimden oluşan kısa ifadeler halinde olan Assembly dili bilgisayarların merkezi işlem birimlerinin her türü için ayrı ayrı olabilirler.

Page 25: KONU  BAŞLIKLARIMIZ ;

25

b)İkinci Nesil Diller1950’lerden sonra geliştirilmeye başlanmış, 1960’ların sonunda ortaya çıkan modern dillerin temelini oluşturmuşlardır.

Page 26: KONU  BAŞLIKLARIMIZ ;

26

İkinci nesil diller zengin kütüphaneleri, geniş kullanım alanları ile oldukça yaygın hale gelmişlerdir. Bu diller arasında FORTRAN, COBAL, ALGOL ve BASIC sayılabilir.

Page 27: KONU  BAŞLIKLARIMIZ ;

27

Bunlar arasında FORTRAN, kırk yıla yakın bir süredir özellikle matematik ağırlıklı kütüphaneleri nedeniyle problem çözme alanında ağırlıklı olarak kullanılmaktadır.

Page 28: KONU  BAŞLIKLARIMIZ ;

28

FORTRAN-66 ilk standart sürüm iken FORTRAN-77 standart sürüm olmuştur.

COBOL, ticari alanlarda veri işleme amaçlı olarak kullanılan belirli standartlara sahip bir dil haline gelmiştir.

Page 29: KONU  BAŞLIKLARIMIZ ;

29

ALGOL, üçüncü nesil dillere öncülük eden zengin veri tipleri ve yordamsal yapılara sahip bir dildir.

Page 30: KONU  BAŞLIKLARIMIZ ;

30

Avrupa’da özellikle akademik çevrelerde yaygın bir şekilde kullanılmış, ancak Amerika Birleşik Devletleri’ nde pek kabul görmemiştir.

ALGOL-60 ve ALGOL-68 sürümleri ile daha güçlü hale getirilmiştir.

Page 31: KONU  BAŞLIKLARIMIZ ;

31

BASIC, özellikle kişisel bilgisayarlarda kolay programlama olanağı

sağlamıştır. Ancak, çok çeşitli sürümleri nedeniyle fazla standart hale gelmemiştir.

Page 32: KONU  BAŞLIKLARIMIZ ;

32

Günümüzde ise bu dilim grafiksel gösterim amaçlı yeni bir sürümü

VISUAL BASIC adıyla halen kullanılmaktadır.

Page 33: KONU  BAŞLIKLARIMIZ ;

33

c)Üçüncü Nesil DillerBu nesil diller genellikle modern ve yapısal diller olarak adlandırılırlar.

*Genel Amaçlı Yüksek Düzeli Diller*Nesneye Yönelik Yüksek Düzey Diller*Özel Amaçlı Diller

Page 34: KONU  BAŞLIKLARIMIZ ;

34

Genel Amaçlı Yüksek Düzeyli Diller

Genel amaçlı ilk dil olarak ALGOL görülmektedir. Bundan sonra onu model olarak alanPL/I,PASCAL,MODULA-2,C ve ADA izlemiştir.

Page 35: KONU  BAŞLIKLARIMIZ ;

35

PL/I, gelişmiş veri yapıları, çok görevlilik desteği, karmaşık giriş/çıkış işlemleri ve listeleme işlevleri için geniş uygulama alanına sahiptir.

Page 36: KONU  BAŞLIKLARIMIZ ;

36

Bu dilden daha sonraları, PL/C isimli eğitim amaçlı, PL/M isimli mikroişlemcilerde kullanım amaçlı ve PL/S isimli sistem programlama amaçlı alt diller türetilmiştir.

Page 37: KONU  BAŞLIKLARIMIZ ;

37

PASCAL daha çok modern teknikleri öğretmek amacıyla 1970’ lerin başında geliştirilmiştir. Ancak, ortaya çıktıktan sonra oldukça geniş bir uygulama alanı bulmuştur.

Page 38: KONU  BAŞLIKLARIMIZ ;

MODULA-2 dili PASCAL’ ın gelişmiş bir hali olarak ADA dilinin bir alternatifini oluşturmuştur.

38

Page 39: KONU  BAŞLIKLARIMIZ ;

39

C programlama dili aslında işletim sistemleri için geliştirilmiştir. Ünlü Ünix işletim sistemi de C ile geliştirilmiştir. Günümüzde de en yaygın ve en güçlü diller arasındadır.

Page 40: KONU  BAŞLIKLARIMIZ ;

40

ADA, Amerikan Savunma Bakanlığı’ nın yazılım krizine çözüm olması amacıyla gömülü gerçek -zamanlı sistemler için geliştirilmiştir.

Page 41: KONU  BAŞLIKLARIMIZ ;

41

PASCAL diline benzer yapılar yanında, paketler , kalıplar, paralel görevcikler (task), kesme kurtarma ve hata yakalama yapıları gibi özellikleriyle günümüzde özellikle savunma alanında yaygın ve etkin bir şekilde kullanılmaktadır.

Page 42: KONU  BAŞLIKLARIMIZ ;

42

Nesneye Yönelik Yüksek Düzey Diller

Nesneye yönelik çözümleme ve tasarımı desteklemek üzere geliştirilmiş dillerin sayısı çok artmıştır.

Page 43: KONU  BAŞLIKLARIMIZ ;

43

Ancak içlerinden yalnızca C++, Objective-C, SMALLTALK, EIFFEL, PASCAL ( Nesneye Yönelik Sürümü), JAVA dilleri uygulama alanı bulmuşlardır. Bunlardan da C++ ve JAVA günümüzün en yaygın dilleri arasındadır.

Page 44: KONU  BAŞLIKLARIMIZ ;

44

Bu dillerin ortak özellikleri sınıf tanımlamaları, kapsama ve kalıtım ile çeşitli nesneye yönelim özelliklerini desteklemeleridir.

Page 45: KONU  BAŞLIKLARIMIZ ;

45

C++’ ın üstünlüğü ve yaygınlığı her zaman geçerli iken JAVA dilinin yürütme anındaki başarım yetersizlikleri halen bir çok uygulama alanında kabul edilmez durumdadır.

Page 46: KONU  BAŞLIKLARIMIZ ;

46

Özel Amaçlı Diller

Özel amaçlı diller, belirli bir uygulama tipi için tasarlanmış, alışılmışın dışında yapılara ve sözdizimlerine sahiptirler. Bu tür diller dar bir uygulama alanına sahiptirler.

Page 47: KONU  BAŞLIKLARIMIZ ;

47

Ancak, belirli bir uygulama tipinin gereksinimlerini karşılamak üzere geliştirildiklerinden, isterleri tasarıma ve tasarımı koda dönüştürme işlemi daha başarılı olmaktadır. En önemli diller arasında LISP,PROLOG ve APL sayılabilir.

Page 48: KONU  BAŞLIKLARIMIZ ;

48

LISP, simge ve listelerde ardışık bilgi işleme sağlamaktadır. Özellikle yapay zeka uygulamalarında, ağaç yapıları yardımıyla problem çözme amaçlı olarak kullanılır.

Page 49: KONU  BAŞLIKLARIMIZ ;

49

Özyineleme tekniği ile uzman sistemlerin ve bu sistemler için derleyicilerin geliştirilmesinde kullanılır.

Page 50: KONU  BAŞLIKLARIMIZ ;

50

LISP, bilgi tabanlı sistemlerin geliştirilmesi için gerekli olan kuralları, gerçekleri ve ilişkileri tanımla işlerini oldukça kolay hale getirmektedir.

Page 51: KONU  BAŞLIKLARIMIZ ;

51

PROLOG uzman sistemlerin geliştirilmesinde önemli yeri olan bir dildir. Dil içinde bilgi tabanlı sitemler için gerekli olan kural, gerçek ve çıkarım tanımlamaları yanında standart veri yapıları da bulunmaktadır.

Page 52: KONU  BAŞLIKLARIMIZ ;

52

APL, diziler ve vektörlerle işlem yapmak için iyi bir gerçekleştirim aracıdır. Matematiksel problemlerin çözümlerinde bir miktar kullanım yeri bulmuştur.

Page 53: KONU  BAŞLIKLARIMIZ ;

53

d)Dördüncü Nesil Diller

Birinci nesil diller makine komutları düzeyinde iken, ikinci ve üçüncü nesil dillerle gerçek anlamda bilgisayar programları oluşturmak olası hale gelmiştir. Dördüncü nesil dillerle de bu soyutlama, özellikle de veri soyutlaması daha da yükselmiştir.

Page 54: KONU  BAŞLIKLARIMIZ ;

54

Dördüncü nesil diller, kodlayıcı koşulları ve ona karşılık düşen yordamsal eylemleri tanımlamakta, aynı zamanda da bu işlemin sonucunu bir başka yordamsal ayrıntı içinde kullanabilmektedir.

Page 55: KONU  BAŞLIKLARIMIZ ;

55

Sorgulama Dilleri

Veri tabanlarına erişmek , sorgulama ve raporlama yapmak üzere çeşitli diller geliştirilmiştir. DBASE III/IV,CLIPPER, DELPHI PARADOX bu diller arasında sayılabilir.

Page 56: KONU  BAŞLIKLARIMIZ ;

56

Bazı sorgulama dilleri de kullanıcının var olan veri tabanları üzerinde işlem yapabilmesini sağlarlar. SQL en yaygın olan dillerden biridir. Bazı dillerde İngilizce konuşma diline çok yaklaşmışlardır.

Page 57: KONU  BAŞLIKLARIMIZ ;

57

Kod Üreticiler

Günümüzde yaygın bir şekilde kullanılan bilgisayar destekli yazılım mühendisliği araçları (UML, STP, SDL, MDA araçları gibi), grafik tabanlı kullanıcı arayüzü geliştirme araçları, iş dünyası için çeşitli araçlar C, C++, ADA gibi dillerde kod üretmektedirler. Üretilen bu kod uygun bir derleyiciden geçirilerek yürütülebilir kod elde edilmektedir.

Page 58: KONU  BAŞLIKLARIMIZ ;

58

Türetme Diller

Özellikle belirli alanların sorunlarını daha kolay ve etkin bir şekilde çözebilmek için bazı dillere eklemeler ve uzantılar yapılarak yeni diller türetilmektedir.

Page 59: KONU  BAŞLIKLARIMIZ ;

59

Bu dillerin kullanımı, diğer diller gibi olmakta, ancak bir önişleyici kullanılarak yeni dilde yazılan kodun daha standart bir dildeki kod haline dönüştürülmesi, sonrada bu üretilen kodun standart bir derleyici ile derlenip yürütülebilir kod üretilmesi ilkesine dayanır.

Page 60: KONU  BAŞLIKLARIMIZ ;

60

Bu şekilde normal dillerde bulunmayan birçok özellik, dilin yapıları arasına sokularak kodlayıcılara daha geniş işlevleri olan diller sunulmaktadır.

Page 61: KONU  BAŞLIKLARIMIZ ;

61

Örneğin; “Real-Time C++” (RTC++), C++ diline bir uzantı olarak paralel ve dağıtık programlama olanağı sunmaktadır. Bu tür diller, gerçek uygulamalarda ve piyasada fazla yaygın olmamakla beraber, araştırma ve akademik çalışmalarda kullanılmaktadır.

Page 62: KONU  BAŞLIKLARIMIZ ;

62

Diğer Diller

Karar destek, prototipleme ve belirtim gibi çeşitli amaçlara hizmet diller de bulunmaktadır. Arayüz belirtim (CORBA-IDL), toplu iş tanımlama(script, batch file) gibi işlevleri yerine getirmede kullanılan diller olduğu gibi kişisel bilgisayarlarda yaygın bir şekilde kullanılan çalışma tabloları, veritabanı sistemleri de ayrı diller kullanmaktadırlar.

Page 63: KONU  BAŞLIKLARIMIZ ;

63

SGML ve onun daha basitleştirilmiş bir altkümesi olan XML daha çok internet dünyasında kullanılan HTML için bir standart getirmek üzere tanımlanmıştır. Bu diller insanların okuyabileceği türdeki verileri biçimlendirilmiş bir şekle getirmek için kullanılır.

Page 64: KONU  BAŞLIKLARIMIZ ;

64

XML yalnızca metin tabanlı veri tabanlı verileri düzenlemek ve sağlamak için etkin bir dildir. Onun dışında, makinenin okuyabileceği veriler(örneğin, kayan nokta sayılar) ve matematiksel hesaplamalar için kullanılmaz.

Page 65: KONU  BAŞLIKLARIMIZ ;

65

e)Beşinci Nesil Diller

Geleceğe hükmedecek bu son nesil diller çeşitli araştırmalar halindedirler. Yürütülmekte olan bu araştırmaların sonuçları henüz yaygınlaşmamıştır. Bu tür diller yeni oluşumları kapsayacaklardır.

Page 66: KONU  BAŞLIKLARIMIZ ;

66

Örneğin nesneye yönelik programlamadan sonra gelişen yeni bir yaklaşım da konuya yönelik programlamadır. Yeni program dilleri, daha fazla kapsama yaratacak, belki de bizi ardışık düşünmekten kurtaracaktır.

Page 67: KONU  BAŞLIKLARIMIZ ;

DİLLERİN ÖZELLİKLERİProgramlama dillerinin karşılaştırmasında çeşitli özelliklerin ve yeteneklerin varlığı esas alınır. Dillerin özelliklerini genellemek ve bir kısmını da daha alt gruplar için mümkündür.

MELEK İNTEPE

Page 68: KONU  BAŞLIKLARIMIZ ;

68

GENEL ÖZELLİKLERİProgramlama dillerinin genel özelliklerini şu şekilde özetleyebiliriz.Tasarımdan koda geçiş kolaylığı:Kurumsal olarak,iyi yapılmış bir ayrıntılı tasarımı koda çevirmek kolay bir işlemdir.Ancak bunun için programlama dilinin tasarımda öngörülen yapıları desteklemesi gereklidir.

Page 69: KONU  BAŞLIKLARIMIZ ;

69

Amaca uygunluk

Uygulama alanının ve geliştirilecek yazılımın işlevsel ve başarım özelliklerine göre programlama dili seçimi yapılmaktadır.Bu seçim,tasarım sırasında da etkisini ortaya koyar.

Page 70: KONU  BAŞLIKLARIMIZ ;

70

Zira, dilin desteklemediği bir yapıyı tasarlamak ve kodlamaya çalışmak yerine, amaca uygun yapılara sahip bir dili seçerek onun özelliklerini tasarım sırasında kulanmak daha yararlı olacaktır…

Page 71: KONU  BAŞLIKLARIMIZ ;

Dilin etkinliği

Yaygın programlama dilleri İngilizce üzerine kurulmuş olup konuşma diline yaklaştıkça hem yazılması hemde okunması kolaylaşır.

71

Page 72: KONU  BAŞLIKLARIMIZ ;

72

Derleyici etkinliğiAynı kaynak kod kullanılmasına rağmen her derleyici aynı nitelikte kod üretimi yapamaz. Programlama dilinden üretilen makine kodunun etkinliği yürütme sırasında ortaya çıkar.

Page 73: KONU  BAŞLIKLARIMIZ ;

73

Derleyiciler kaynak kodu çözümlemeden önce ne kadar iyi denetlerler ve üretilen makine kodunu ne kadar iyileştirirlerse o kadar başarılı sayılırlar.

Page 74: KONU  BAŞLIKLARIMIZ ;

74

Taşınabilirlik

Bir programlama dili ile yazılan kaynak kodun değişik derleyicilerle, işletim sisteminin yeni sürümleriyle ve hatta başka makineler üzerinde sorunsuzca çalışması arzu edilir.

Page 75: KONU  BAŞLIKLARIMIZ ;

75

Ancak ne yazık ki, birçok derleyici üreticisi genel başarımı arttırmak uğruna bazı özel yapılar, bildirimler ve hatta anahtar sözcükler kullanılabilmektedirler.

Page 76: KONU  BAŞLIKLARIMIZ ;

76

İşletim sistemine özgü alt düzey çağrıların kaynak kod ile iç içe kullanılması ile taşınabilirlik özelliği azalabilir.

Page 77: KONU  BAŞLIKLARIMIZ ;

Geliştirme AraçlarıBir programlama dilinin en özelliklerinden biri geliştirme sırsında kodlayıcıya sunduğu hizmetlerlede ölçülür.

77

Page 78: KONU  BAŞLIKLARIMIZ ;

Geliştirme araçlarının varlığı aslında derleyici üreticisi olan firmaya bağlıdır. Desteği az bir dilin etkinliğinin yüksek olmasını beklemek doğru olamaz.

78

Page 79: KONU  BAŞLIKLARIMIZ ;

79

Bakım

Yazılım bakımının kolay olmasındaki en büyük etkenlerden biri , esnek bir tasarımın yanında, kaynak kodun niteliğidir.Kod, okunabilir, anlaşılabilir ve yeni tasarıma göre rahatça uyarlanabilir olmalıdır.

Page 80: KONU  BAŞLIKLARIMIZ ;

80

Tip kontrolüProgramlamanın temelinde veri işleme yatar. Verilerde bilgisayar donanımın kullandığı temel tipler(karakter,tamsayı ve kayan nokta sayısı)haline dönüştürülerek kullanılırlar.

Page 81: KONU  BAŞLIKLARIMIZ ;

81

Programlama dilinin tip kontrolü yapma yeteneği güvenilir yazılım geliştirme için son derece gerekli bir özelliktir. Çünkü, insanlar hata yapmaya eğilimlidirler.

Page 82: KONU  BAŞLIKLARIMIZ ;

82

Elle yazılan kodlar tip kontrolü zayıf bir derleyicinin denetiminden geçip bazı durumlarda çalışsa bile genelde çökmeye mağdurdurlar.

Page 83: KONU  BAŞLIKLARIMIZ ;

83

Örneğin;C dilinde char ile int tipindeki değişkenleri birbirinin yerine kullanmak mümkündür.

Page 84: KONU  BAŞLIKLARIMIZ ;

84

Denetim yapılarıTüm programlama dilleri kodlayıcıya ardışık komutlardan , koşul testine göre dallanmalardan ve tekrarlardan oluşan mantıksal yapılar sunarlar.

Page 85: KONU  BAŞLIKLARIMIZ ;

85

Klasik dillerin bazılarında hata yakalama düzenekleri ,paralel programlama yapıları , zaman deneyimli yapılar bulunmaktadır. Bunların yanında , dağıtık programlamayı ve gerçek zamanlılığı kendi yapıları ile destekleyen dillerde bulunmaktadır…

Page 86: KONU  BAŞLIKLARIMIZ ;

86

Nesneye Yönelik Dillerin Özellikleri

Alt gruplar için tanımlanabilen özelliklerden nesneye yönelik diller için kullanılan ayırt edici özellikler şunlardır:

Page 87: KONU  BAŞLIKLARIMIZ ;

87

Modülerlik: Yazılım, kendi üzerinde işlemler yapılmasına izin veren basit ve tutarlı arayüzlere sahip ayrı modüller halinde geliştirilir.

Page 88: KONU  BAŞLIKLARIMIZ ;

88

Veri soyutlama(abstraction):Nesneler hem verileri hem de onlar üzerindeki işlemleri kapsayan soyut veri tipleri şeklinde tanımlanırlar.

Page 89: KONU  BAŞLIKLARIMIZ ;

89

Otomatik bellek yönetimi: Sistem öz kaynaklarını kullanan nesneler işleri bitince onları otomatik olarak serbest bırakırlar.

Page 90: KONU  BAŞLIKLARIMIZ ;

90

Sınıflar: Sınıf, kendisinden nesnelerin yaratılan, fakat diğer basit tiplerden olmayan özel yapıda bir tiptir.

Page 91: KONU  BAŞLIKLARIMIZ ;

91

Katılım(inheritance):Bir sınıf temel sınıfın veri ve işlemlerinin bir kısmını yada tamamını devralarak türetilir. Bu türetimi çoklu ve tekrarlanan bir şekilde yapmak mümkündür.

Page 92: KONU  BAŞLIKLARIMIZ ;

92

Çokşekillilik(polymorphisın):

Bir nesne,yürütme anında,çeşitli sınıflardan yaratılmış başka nesneleri işaret edebilir,yürütme anında dinamik olarak başka nesnelerle bağlanabilir.

Page 93: KONU  BAŞLIKLARIMIZ ;

93

Bütün koşulları karşılayan dillere nesneye yönelik,yalnızca ilk dördünü karşılayan dillere ise nesneye dayalı adı verilmektedir.

Page 94: KONU  BAŞLIKLARIMIZ ;

94

Nesneye yönelik dillere örnek;

SMALLTALK,C++,JAVA nesneye dayalı dillere örnek olarakda C,PASCAL ve ADA verilebilir.

Page 95: KONU  BAŞLIKLARIMIZ ;

95

Gerçek Zamanlı Dillerin ÖzellikleriZamansallığın kısıtlama derecesine göre gerçek zamanlı sistemlerin gerçekleştirilmesinde herhangi bir programlama dilinin kullanımı mümkün olabilir.

Page 96: KONU  BAŞLIKLARIMIZ ;

96

Ancak, görev kritik olan ve sıkı gerçek zamanlılık gerektiren sistemler için uygun özellikler taşıyan programlama dillerinin kullanılması daha yararlıdır.

Page 97: KONU  BAŞLIKLARIMIZ ;

97

Şimdi bu özellikleri kısaca görelim:

Kuvvetli tip kontrolü (strong typing) yazılımı geçersiz verilerden korumak için derece gerekli bir özelliktir.Derleme ve yürütme anında yapılan tip kontrolü ile tasarım sırasında beklenen veri büyüklükleri,tipleri ve sınırları denetim altında tutulur.

Page 98: KONU  BAŞLIKLARIMIZ ;

98

Geçersiz verilerin işleme girmesinin istenmemesinin durumunda hata üretilir ve bu hataların uygun şekilde düzeltilmesi beklenir.

Page 99: KONU  BAŞLIKLARIMIZ ;

99

Dinamik bellek yönetimi kısıtlı belleğe sahip sistemlerde,bilgi girişine göre belek ataması ve temizlemesi yapmak üzere gereklidir.Dil tarafından etkin bir bellek yönetimi ve atık toplama desteklenmelidir.

Page 100: KONU  BAŞLIKLARIMIZ ;

100

Parametre geçirme teknikleri yeteri kadar hızlı yapılmalıdır.Örneğin,değer ile geçirme (pass-by-value) tekniğinde,yordam çağrısı sırasında nesne veya değişkenin tümü yığına kopyalanır.Bazı dillerde bu işlem kodlayıcıya saydam olmasına rağmen başarımı arttırır.

Page 101: KONU  BAŞLIKLARIMIZ ;

101

Hata yakalama ve kotarma(exception handling)yazılımın bütünlüğünü bozmadan yürütme sırasında meydana gelebilecek hataların yakalanması ve durumun düzeltilmesi işlemidir.

Page 102: KONU  BAŞLIKLARIMIZ ;

102

Soyut veri türleri yardımıyla veriler ve işlevler beraberce kapsanarak bir değişken üzerindeki işlemin diğer değişkeni etkilememesi sağlanır.

Page 103: KONU  BAŞLIKLARIMIZ ;

103

Modüler yapıyı destekleme özelliği ile geliştirme sırasında kolaylık sağlanırken daha önce geliştirilmiş ve denenmiş modüllerin tekrar kullanımı mümkün olur.

Page 104: KONU  BAŞLIKLARIMIZ ;

104

Zaman belirtimi olanağı ile daha sağlam zaman yapılarını (kesin olarak belirli bir süre bekleme, belirli bir saatte uyanma gibi) kodlama sırasında oluşturmak mümkündür.

Page 105: KONU  BAŞLIKLARIMIZ ;

105

DİL SEÇİMİBazı durumlarda müşteri tarafından belirli bir dilin kullanımı zorunlu tutulabilir, yada başka teknik nedenlerden dolayı belirli bir dilin kullanılması gerekebilir.

Page 106: KONU  BAŞLIKLARIMIZ ;

106

Dil seçimi yapılırken aşağıda belirtilen ilkelerin dikkate alınmasında yarar vardır:

• Özellikle görev kritik ve askeri alanlarda sistem güvenilirliğini zedelemeyecek diller kullanılmalıdır.

Page 107: KONU  BAŞLIKLARIMIZ ;

107

• Yazılımın kullanılacağı bilgisayar ortamı, donanımın ve işletim sisteminin özellikleri dikkate alınmalıdır.

Page 108: KONU  BAŞLIKLARIMIZ ;

108

• Seçilecek dilin yetenekleri algoritmik ve işlemsel karmaşıklık derecesini karşılayabilir olmalıdır.

• Başarım gereksinimleri,dilin diğer özelliklerinden daha fazla önem taşıyabilir.

Page 109: KONU  BAŞLIKLARIMIZ ;

109

• Veri yapılarının özellikleri ve karmaşıklık dereceleri seçilecek dilin yetenekleri arasında olmalıdır.

Page 110: KONU  BAŞLIKLARIMIZ ;

110

• Yazılım geliştirme personelinin bilgi düzeyi seçilecek dil için önemli bir etkendir.

• İyi bir derleyicinin ve geliştirme ortamının varlığı verimliliği arttırabilmek için dikkate alınmalıdır.

Page 111: KONU  BAŞLIKLARIMIZ ;

111

• Seçilecek dil,yazılımın bakım aşamasında son derece önemli olan okunabilirlik ve anlaşılabilirlik özelliklerini desteklemelidir.

Page 112: KONU  BAŞLIKLARIMIZ ;

112

Uzun yıllardır en güçlü ve en yaygın diller arasında C dili gösterilmektedir.Sistem yazılımlarında(işletim sistemi,ara katman,aygıt sürücü gibi)tercih edilen C’nin nesneye yönelik uyarlaması olan C++ da onun kullanıldığı pek çok alanda yaygın olarak kullanılmaktadır.

Dillerin uygulama alanları

Page 113: KONU  BAŞLIKLARIMIZ ;

113

Eğitim dili olarak yaratılmış PASCAL ile birlikte,görsel programlama dilleri olan Visual BASIC,Visual C++,DELPHI gibi diller özellikle PC dünyasında yaygın olarak kullanılmaktadırlar.

Page 114: KONU  BAŞLIKLARIMIZ ;

114

ADA(83 ve 95),C,MODULA-2 gerçek zamanlı sistemlerde, COBOL,LINK iş dünyası yazılımlarında ,FORTRAN bazıuygulamalarında ,PROLOG,LISP yapay zeka uygulamaları ve uzman sistemlerde daha fazla tercih edilmektedirler. Nesneye yönelik çözümleme ve tasarım kullanılması durumunda, SMALLTALK, Objective-C,C++ VE JAVA ön plana çıkmaktadır.

Page 115: KONU  BAŞLIKLARIMIZ ;

115

Bazen bir bilgisayarlı sistemin tamamında tek bir dil kullanmak mümkün olmayabilir. Örneğin, bir kontrol sistemi yazılımında ,C ile yazılmış aygıt sürücüler ADA veya C++ diliyle denetlenirken, grafiksel kullanıcı arayüzü için C veya C++ kullanılabilmektedir.

Page 116: KONU  BAŞLIKLARIMIZ ;

116

Page 117: KONU  BAŞLIKLARIMIZ ;

117

Çeşitli amaçlar için özel olarak geliştirilmiş fakat fazla yaygın olmayan yeni diller bazı geliştiriciler için fazla tercih edilmeyebilir.

Page 118: KONU  BAŞLIKLARIMIZ ;

118

Yazılımın geliştirilip doğru olarak çalıştırılabilmesi için iyi bir şekilde test edilmesi, ondan sonrada bakımın yapılabilir olması için , en başta kolay okunur ve anlaşılır olması, iyi değerlendirme yapılması gereklidir.

Page 119: KONU  BAŞLIKLARIMIZ ;

119

Yeni dillerGünümüzde kullanılan bilgisayar sistemlerinin bilgi işleme ve zaman gereksinimleri tek işlemcili,mimarilerin sınırlarını aştıkça ilave gerçek zamanlılık yetenekleriyle donatılmış dağıtık bilgi işleme yöntemleri daha çekici hale gelmeye başlamıştır.

Page 120: KONU  BAŞLIKLARIMIZ ;

120

Gerçek zamanlı uygulamalar ve dağıtık bilgi işleme gibi birçok alanda güvenilirlik, doğruluk, sağlamlık, tasarım, geliştirme, test ve bakım kolaylığı göz önüne alındığında geleneksel programlama dillerinin yetersiz kaldığı görülmektedir. 

Page 121: KONU  BAŞLIKLARIMIZ ;

121

Nesneye yönelim kavramı yazılım modülleri için yüksek düzeyli bir soyutlama sağlayarak yazılımların tasarımı ve geliştirmesi kolaylaştırmaktır.

Page 122: KONU  BAŞLIKLARIMIZ ;

122

Bunların yanında, internet uygulamalarını daha kolay geliştirmeyi amaçlayan, özellikle ASCII metin üzerinde çok kuvvetli işler yapabilen özel diller de geliştirilmekte, hatta HTML,XML gibi diller oldukça yaygınlaşmaktadır.

Page 123: KONU  BAŞLIKLARIMIZ ;

123

Bu nedenle , geliştirmedeki teknik kolaylıklar yanında , dil seçiminin bakıma olan etkisi de unutulmamalıdır.

Page 124: KONU  BAŞLIKLARIMIZ ;

124

Kod Çevrim İşlemi

Programlama dillerinin en önemli özelliklerinden biri de insan ile makine arasında n tür bir geçiş sağladığıdır. İnsanlar normal karakterlerle gösterilen yazı ve sayıları anlayabilirler.

MERYEM ALTIN

Page 125: KONU  BAŞLIKLARIMIZ ;

125

Ancak bir bilgisayar yalnızca 0 ve 1 değerlerini alabilen ikili düzenden ,yani ”bit” lerden anlamaktadır. Dolayısıyla arada iletişimi sağlayacak bir çevirmene gereksinim vardır.

Page 126: KONU  BAŞLIKLARIMIZ ;

126

Normal olarak bir program ASCII biçimindedir. ASCII, insanların kullandıkları simge, harf ve rakamlar yerine onların sayısal karşılıklarını kullanılır. Bu kodlar 0 ile 255 arasındadır. Her bir karakter bir sekizli (byte) ile gösterilir.

Page 127: KONU  BAŞLIKLARIMIZ ;

127

Günümüzün gereksinimleri değerlendirildiğinde bu kadar karakterin yetmediği görülmüş ve iki sekizli ile gösterilen yeni ve daha evrensel bir kod sistemi de oluşturulmuştur. Halen birçok sistem,standart ASCII kullanmaktadır.

Page 128: KONU  BAŞLIKLARIMIZ ;

128

Derleyiciler

Normal metin halinde yazılmış program içeren dosyalara kaynak kod adı verilir.

Page 129: KONU  BAŞLIKLARIMIZ ;

129

Derleyici (compiler)bu dosyada bulunan metni oluşturan ASCII karakterlerini dilin söz dizim kurallarına uygun olarak okur, hata yoksa bunları bilgisayarın anlayabileceği komutlardan oluşan makine diline çevirir.

Page 130: KONU  BAŞLIKLARIMIZ ;

Bu komutları da bilgisayarın işlemcisinin tanıyabilmesi için nesne koduna çevirir.

130

Page 131: KONU  BAŞLIKLARIMIZ ;

131

Bir projenin kaynak kodu birden çok dosya oluşabilir veya çeşitli kütüphanelere ait kod parçalarını da kullanıyor olabilir.

Page 132: KONU  BAŞLIKLARIMIZ ;

132

Bu durumda her bir bilgisayar donanımı ve işletim sistemine uygun bir derleyici ile ayrı ayrı derlenir ve meydana gelen nesne kodları yada dinamik kütüphaneler bağlayıcı(linkler)kullanarak bağlanır. Bu işlem sonunda yürütülebilir kod elde edilir.

Page 133: KONU  BAŞLIKLARIMIZ ;

133

Derleyicilerle birlikte kullanılan önemli terimlerden biri de derleme anı diğeri de yürütme anıdır .

Page 134: KONU  BAŞLIKLARIMIZ ;

134

Derleme anı ,kaynak kodun derlenmesi işlemi sırasında meydana gelen olaylar için, yürütme anı da yürütülebilir durumdaki kodun işlemci üzerinde koşturulması sırasında meydana gelen olaylar için kullanılır.

Page 135: KONU  BAŞLIKLARIMIZ ;

135

Bazı yazılımlar yorumlayıcı adı verilen özel altyapılarla birlikte kullanılırlar. Standart BASIC, LISP, PROLOG ve JAVA birer örnektir.

Yorumlayıcılar

Page 136: KONU  BAŞLIKLARIMIZ ;

136

Bir yazılım çalıştırılmadan önce yorumlayıcının bilgisayara yüklenmesi ve onun içinden de kaynak kodun yüklenerek çalıştırılması gerekir.

Page 137: KONU  BAŞLIKLARIMIZ ;

137

Yorumlayıcı kaynak kodun satırlarını birer birer okuyarak işlemci komutları haline dönüştürür ve bu komutları uygular.

Page 138: KONU  BAŞLIKLARIMIZ ;

138

Bu nedenle derlenmiş koda göre daha yavaştır. Yorumlayıcının kodun tamamını okumasından dolayı, bir yazılımın tamamen doğru çalıştığını anlayabilmek için her parçasının çalıştırılarak yorumlayıcıdan geçmesi sağlanmalıdır.

Page 139: KONU  BAŞLIKLARIMIZ ;

139

Özellikle büyük projelerde yorumlayıcı ile geliştirilen yazılımlarda hata ayıklaması oldukça güçtür.

Page 140: KONU  BAŞLIKLARIMIZ ;

140

Günümüzde , bu tür dilleri belirli işlemciler için doğrudan çalıştırmaya yarayabilecek derleyiciler de geliştirilmiştir. Bu şekilde, klasik diller gibi nesne kodu da üretilebilmektedir.

Page 141: KONU  BAŞLIKLARIMIZ ;

141

Yazılım geliştirmek için ilk sahip olunması gereken, uygun bir geliştirme ortamıdır. Ana sistem olarak da adlandırılan bu sistemin yanında geliştirilen yazılımın test edilmesi için bir test sistemi ve gerçek sistem yani hedef sistem bulunmalıdır.

Geliştirme Ortamı

Page 142: KONU  BAŞLIKLARIMIZ ;

142

Ana sistem tüm geliştirme etkinliklerinin yürütüldüğü ve bazen de testlerin yapıldığı bir yada daha fazla bilgisayardan oluşan bir sistemdir.

Page 143: KONU  BAŞLIKLARIMIZ ;

143

Sunucu: Ana sistem bir ağ şeklinde ise yeterli özelliklere sahip bir bilgisayar dosya sunucusu olarak kullanılmalıdır. Sunucu üzerinde herbir proje için yeterli miktarda alan ayrılmalı, farklı projelerin kaynak kod ve yazılım geliştirme dosyaları birbirlerine karıştırılmamalıdır.

Profesyonel Anlamda Bir Ana Sistemde Aşağıdaki Öğeler Bulunmalıdır:

Page 144: KONU  BAŞLIKLARIMIZ ;

144

Çalışma Alanları:

Herbir geliştirici için uygun büyüklükte ayrı birer çalışma alanı ayrılmalı, ortak ve paylaşılır alanlar tanımlanmalı, erişim hakları düzenlenmelidir.

Page 145: KONU  BAŞLIKLARIMIZ ;

145

Kişisel çalışma alanları herbir proje için ayrı ayrı tutulmalıdır. Eğer ortak geliştirme yapılıyorsa, kişisel dizinler yerine proje dizinleri kullanılmalıdır.

Page 146: KONU  BAŞLIKLARIMIZ ;

146

Proje Alanları: Her proje için ayrı ayrı geliştirme ve üretim dizinleri tutulmalıdır. Geliştirme dizinleri geliştiricilerin kaynak kod dosyalarını sürekli olarak değiştirdikleri, derlemelerin yapıldığı dizinlerdir.

Page 147: KONU  BAŞLIKLARIMIZ ;

147

Genellikle ana sistemde testler yapılabiliyorsa böyle bir dizin kullanılır. Üretim dizinleri yalnızca sistem yöneticisinin erişebildiği, geliştirilmesi tamamlanmış ve test sisteminde sınanmaya hazır hale gelmiş yazılım birimlerinin bulunduğu dizinlerdir.

Page 148: KONU  BAŞLIKLARIMIZ ;

148

Metin Düzenleyici:

Geliştirme ortamında en az iki tür metin düzenleyici kullanılmalıdır. Bunlardan biri kod yazımı için çeşitli özelliklere sahip metin tabanlı kod düzenleyici, diğeri de belgelendirmede kullanılacak ofis türü uygulamalarıdır.

Page 149: KONU  BAŞLIKLARIMIZ ;

149

Derleyici: Geliştirme için en temel araç derleyicidir. Seçilen programlama diline, bilgisayar donanımı ve işletim sistemine göre derleyiciler farklıdırlar.

Page 150: KONU  BAŞLIKLARIMIZ ;

150

Eğer derlenen yazılım aynı ana sistem üzerinde test edilecek ve yeni aynı türde bir hedef sistemde kullanılacaksa tek bir derleyici yeterli olacaktır.

Page 151: KONU  BAŞLIKLARIMIZ ;

151

Kütüphaneler: Yazılım geliştirme ortamında tekrar kullanımı destekleyerek zaman tasarrufu sağlayan önemli bir etken kütüphane kullanımıdır.

Page 152: KONU  BAŞLIKLARIMIZ ;

152

Dada önce geliştirilen ve tekrar kullanımı mümkün olan modüller, kod parçaları, derleyici ile birlikte gelen standart kütüphaneler geliştiricilerin rahatça ulaşabileceği ortak bir alanda tutulmalıdır.

Page 153: KONU  BAŞLIKLARIMIZ ;

153

Düzenleşim Yönetim Sistemi:

İdeal bir geliştirme sisteminde mutlaka bir düzenleşim yönetim sistemi bulunmalıdır.

Page 154: KONU  BAŞLIKLARIMIZ ;

154

Eğer özel bir düzenleşim aracı yoksa, işletim sisteminin sağladığı çeşitli kısıtlayıcılık özellikleri ve toplu iş yürütme dosyaları kullanılarak basit bir sistem oluşturulmalıdır.

Page 155: KONU  BAŞLIKLARIMIZ ;

155

Yükleme Araçları:Geliştirilen yazılım birimlerini test sistemi veya hedef sisteme yüklemek üzere, üretim dizinlerinde bulunan yazılım birimlerini ağ üzerinden aktarmaya veya herhangi bir taşıyıcı ortam toplu iş dosyası olabileceği gibi bir veritabanı yönetim sistemine bağlı olarak çalışan özel araçlar da olabilir.

Page 156: KONU  BAŞLIKLARIMIZ ;

156

Yazılım Mühendisliği Araçları: Günümüzde pek çok yazılım geliştirme aracı bulunmaktadır. Bunlar yardımıyla, belli bir yazılım mühendisliği yöntem bilimi kullanılarak çözümleme ve tasarım yapılabilir, hatta otomatik olarak kaynak kod üretilebilir.

Page 157: KONU  BAŞLIKLARIMIZ ;

157

•Destekleyici Araçlar:

Bazı geliştirme ortamları tümleşik bir yapıda olup işlevleri yerine getirebilirler. Ayrık yapıdaki sistemlerde, temel geliştirme öğelerine ek olarak, hata ayıklayıcılar, arındırıcılar, test programları, metin düzenleyiciler, resim düzenleyiciler, ofis uygulamaları bulunabilir.

Page 158: KONU  BAŞLIKLARIMIZ ;

158

Geliştirilen yazılımın ilk testleri mümkünse ana sistem üzerine yapılmalıdır. Bu şekilde hedef sistem meşgul etmeden küçük hataların bulunması sağlanabilir.

Page 159: KONU  BAŞLIKLARIMIZ ;

159

Hedef sisteminin bir benzeri olarak bir test sistemi kullanılabiliyorsa bu yazılım geliştirme işleminin daha sağlıklı yürütülmesine yardımcı olur.

Page 160: KONU  BAŞLIKLARIMIZ ;

160

Test sistemi hem donamım hem de yüklü işletim sistemi ve yazılımlar bakımından hedef sistem ile aynı ya da yakın benzerlikte olmalıdır.

Page 161: KONU  BAŞLIKLARIMIZ ;

161

Hedef sistem ise tüm yazılımın gerçekten üzerinde koşacağı ana sistemdir.

Page 162: KONU  BAŞLIKLARIMIZ ;

162

Bazen ana, test ve hedef sisteminin üçü aynı geliştirme yerinde oluşturulabilir. Bazen de hedef sistemi kullanmak son aşamaya kadar mümkün olmayabilir.

Page 163: KONU  BAŞLIKLARIMIZ ;

163

Örneğin; bir hidroelektrik santralı denetleyecek hedef sistem ,geliştirme yerinden çok uzaklarda olabilir. O taktirde, onun bir benzeri olan test sistemi kullanılmak zorundadır.

Page 164: KONU  BAŞLIKLARIMIZ ;

164

YÜRÜTME ORTAMI

Yazılımlar ya tek bir bilgisayar üzerinde yada birbirleriyle iletişim halinde olan bilgisayarlar üzerinde koşarlar. Tek bilgisayardaki yürütme ortamı genellikle işletim sistemidir.

EMİNE DEMİR

Page 165: KONU  BAŞLIKLARIMIZ ;

165

Bazen, bunun üzerinde bir başka katman daha konarak daha etkin çoklu programlama ortamı yaratılır (Java Virtual Machine bunlardan biridir).Dağıtık bilgi işlemeyi destekleyen çeşitli yazılım mimarileri vardır.

Page 166: KONU  BAŞLIKLARIMIZ ;

166

Özellikle bir yerel alan ağı üzerindeki uygulama yazılımlarının bir arada ve uyum içinde çalışmasını sağlayan, onları alttaki bilgisayar ve ağ yapısından ayıran ara katman yazılımlarına daha önce değinmiştik.

Page 167: KONU  BAŞLIKLARIMIZ ;

167

Aynı zamanda tek bilgisayarlı sistemlerde de kullanılabilen bu tür yazılımlar için tanımlanmış standartlardan bazılarını kısaca tanımlayalım :

Page 168: KONU  BAŞLIKLARIMIZ ;

168

CORBA (Common Request Broker Architecture)

Uluslar arası boyutta yazılım ve donanım sağlayıcılarından oluşan Oject Managemnt Group (OMG) adlı ticari olmayan bir örgüt tarafından ortaya konan bir endüstriyel bir standarttır.

Page 169: KONU  BAŞLIKLARIMIZ ;

169

Ticari firmalar,çeşitli isteklere göre belirlenip yayınlanmakta olan bu mimari standardına uygun olarak kendi yazılım ürünlerini geliştirmekte ve piyasaya sürmektedirler.

Page 170: KONU  BAŞLIKLARIMIZ ;

170

Bu şekilde yerel bilgisayar ağı mimarisinden ve donanımdan bağımsız olarak, dağıtık nesneye yönelik programlama yapabilme olanağı getirilmektedir.

Page 171: KONU  BAŞLIKLARIMIZ ;

171

Uygulama yazılımları birer CORBA nesnesi olarak tanımlanır ve standart bir dil olan Arayüz Tanımlama dili (Interface Definetion Language-IDL) ile arayüzleri hazırlanır. IDL arayüz dosyası, bir nesnenin kullanılabilmesi için sunucunun sağladığı veri çeşitlerini, yöntemleri ve işlemleri açıklar.

Page 172: KONU  BAŞLIKLARIMIZ ;

172

Bu arayüzler daha sonra C++,JAVA,ADA gibi çeşitli yüksek düzey programlama dillerine çevrilerek kullanılırlar.

Page 173: KONU  BAŞLIKLARIMIZ ;

173

Bir CORBA nesnesi diğer nesnelerin yerlerini, geliştirme dil ve şekillerini bilmeden onların arayüzlerinde tanımlanmış işlemlerini kullanırlar.

Page 174: KONU  BAŞLIKLARIMIZ ;

Her nesne mimarinin kalbi olan Nesne İsteme Aracısı (Object Request Broker-ORB) ile haberleşmektedir. ORB çeşitli üretici firmalar tarafından geliştirilmiş olabilir.

174

Page 175: KONU  BAŞLIKLARIMIZ ;

175

Ancak nesneler standart bir arayüz kullandıklarından ORB değişikliği uygulama yazılımını etkilememektedir. ORB'un sağladığı çeşitli temel işlevler yanında OMG tarafından yararlı görünen nesne servisleride standart hale getirilmiştir .

Page 176: KONU  BAŞLIKLARIMIZ ;

176

İnternet Inter-ORB protocol (IIOP) CORBA internet üzerindeki geniş dağıtık uygulamalara erişimi sağlayan bir açık protokoldür.

Page 177: KONU  BAŞLIKLARIMIZ ;

177

Bu protokol TCP/IP üzerine kurulur ve ORB lar arası iletişimi sağlar. IIOP farklı makineler üzerindeki nesnelerin haberleşmelerini sağlayarak bilgisayar ağı kavramını büyük boyutlara kadar genişletebilir.

Page 178: KONU  BAŞLIKLARIMIZ ;

178

Halen mart 2004 tarihli CORBA 3.0 belirtimi yürürlükte olup bu konudaki son sürümler ve ilgili diğer belirtimler (IDL,CCM) www.omg.org adresinde bulunmaktadır.

Page 179: KONU  BAŞLIKLARIMIZ ;

179

OMG tarafından oluşturulan bir diğer belirtimde Data Distribution service (DDS sürüm 1,2,, ocak 2007) adını taşımaktadır. Bu standartta, "veri-merkezli yayınla abone ol (DCPS)" ve "Veri yerel tekrar birleştirme katmanı" (DLRL)" tanımlanmaktadır.

DDS

Page 180: KONU  BAŞLIKLARIMIZ ;

180

DCPS,belirli yöntemlerle yayınlanan topic adı veri parçalarını yaymak, yayılan bu verilere belirli kurallara göre abone olup okumak yöntemine dayanmaktadır.

Page 181: KONU  BAŞLIKLARIMIZ ;

181

Bu şekilde gerçek zamanlı bir program, bir diğerinin yayınladığı bilgilerden yalnızca kendi ilgilendiklerine ulaşabilir; iletişim, platformdan bağımsız,etkin,nitelikli ve güvenilir olarak sağlanır.

Page 182: KONU  BAŞLIKLARIMIZ ;

182

DCPS,uygulama alanlarına belirli tipte verilerle işlem yapmak için arayüz sağlar.

Page 183: KONU  BAŞLIKLARIMIZ ;

183

DLPL ise yayınlanan verilerin otomatik olarak toplanıp uygulama tarafından istenildiğinde okunabilir hale getirilmesini sağlar.

Page 184: KONU  BAŞLIKLARIMIZ ;

184

DDS, verilerin hem yerel bilgisayarda, hemde ağ üzerinde ilgilenen abonelere ulaştırılmasını sağlayan bir ara katman belirtimidir. Bu belirtime uyan yazılımlar birbirleri ile rahatça haberleşebilirler.

Page 185: KONU  BAŞLIKLARIMIZ ;

185

Yüksek Düzey mimari (HİGH Level Architecture-HLA),gerçekleştirilen benzetim modelleme ve benzetim mimarisidir.

HLA

Page 186: KONU  BAŞLIKLARIMIZ ;

186

HLA, eğitim, çözümleme,mühendislik,eğlence ve askeri uygulamalar gibi geniş bir uygulama alanına sahiptir.

Page 187: KONU  BAŞLIKLARIMIZ ;

187

HLA herhangi bir yazılım tekniği olmadığı gibi,herhangi bir paket yazılımı veya programlama dilini kullanmayıda zorlamaz.

Page 188: KONU  BAŞLIKLARIMIZ ;

188

HLA, değişik model ve benzetimlerin birbirleriyle daha çok C4I (Command, Control, Communication, Computers and intelligence) sistemleri ile birlikte çalışabilmeleri ve tekrar kullanabilmeleri için geliştirilmiş bir yapıdır.

Page 189: KONU  BAŞLIKLARIMIZ ;

189

ABD savunma modelleme ve benzetim ofisi (Defense Modellik and Simulation office-DMSO) yönetiminde ,Amerikan savunma başkanlığı bünyesinde geliştirilen ve bakımı yapılan benzetim yazılımlarının birlikte çalışabilmelerine ve tekrar kullanılabilmelerine destek vermek amacıyla oluşturulmuş olan HLA standartı , Ekim 2000'de IEEE tarafından açık bir standart ( IEEE standard 1516) olarak kabul edilmiştir.

Page 190: KONU  BAŞLIKLARIMIZ ;

190

HLA, Özellikle Aşağıdaki Uygulama Alanları İçin Geliştirilmiştir:

O - Analitik benzetimlerO -Eğitim amaçlı benzetimlerO -Askeri sistemler ve C4I arayüzleriO -Test ve değerlendirme amacıyla kullanılan

benzetimler O -Mühendislik amacıyla kullanılan benzetimlerO -Üretim sistemlerinin benzetimleriO -Eğlence dünyası için dağıtık oyunlar

Page 191: KONU  BAŞLIKLARIMIZ ;

191

Page 192: KONU  BAŞLIKLARIMIZ ;

192

Federe olarak adlandırılan benzetim nesnelerinin bir amaca yönelik olarak biraraya getirildiği yapıya federasyon adı verilmektedir.

FEDERASYON

Page 193: KONU  BAŞLIKLARIMIZ ;

193

Benzetimler haricinde veri toplama ve izleme yapan destek uygulamalarıda federe olaraka adlandırılırlar.

Page 194: KONU  BAŞLIKLARIMIZ ;

194

Federasyon kuralları ,bir HLA federasyonunun içindeki benzetimlerin düzgün etkileşimini sağlayan ve sorumluluklarını belirleyen kurallardır.

Page 195: KONU  BAŞLIKLARIMIZ ;

195

Ayrıca gerçek sistemler veya platformlarda HLA'nın sağladığı esnek yapı sayesinde kurallara uyarak birer federe şeklinde federasyonlara katılabilirler.

Page 196: KONU  BAŞLIKLARIMIZ ;

196

Yürütme alt yapısı ,dağıtık bir işletim sistemi gibi çalışarak farklı platformda koşan federelerin etkileşimi ve tüm federasyonun yönetimi için gerekli olan destek işlevlerini sağlar..

YÜRÜTME ALT YAPISI

Page 197: KONU  BAŞLIKLARIMIZ ;

197

Yürütme sırasında federeler arasındaki tüm veri iletişimi ve etkileşimler yürütme alt yapısı üzerinden yürütülür.

Page 198: KONU  BAŞLIKLARIMIZ ;

198

Yürütme altyapısı benzetimlere sağlanan servisleri ve bu servislere federeler tarafından nasıl ulaşacağını belirler. Ayrıca federeler tarafından alt yapıya sağlanması gereken çağrı yordamlarını tanımlar.

Page 199: KONU  BAŞLIKLARIMIZ ;

199

ARAYÜZ TANIMLAMASI

Arayüz tanımlaması ,federelerin ve yürütme alt yapısı'nın birbirleri ile iletişim sırasında kullanılacak standart yöntemleri belirler.

Page 200: KONU  BAŞLIKLARIMIZ ;

200

Federasyon yönetimiBildirim yönetimiNesne yönetimi Ait olma yönetimi Zaman yönetimiVeri dağıtım yönetimi

Bu Yöntemler Toplam 6 Yönetim Alanına Bölünmüştür Bunlar:

Page 201: KONU  BAŞLIKLARIMIZ ;

201

Çeşitli yazılım firmalarının ,araştırma kurumlarının ve üniversitelerin geliştirdiği çok sayıda ara katman ürünleri bulunmaktadır.

TİCARİ ARA KATMANLAR

Page 202: KONU  BAŞLIKLARIMIZ ;

202

Bunların bir kısmı belirli bir işletim sistemini destekleyerek başarımını en üst düzeye çıkarmakatadırlar. Bir kısmıda daha geniş kapsamlı olarak sunulmaktadır.

Page 203: KONU  BAŞLIKLARIMIZ ;

203

Geniş çaplı iletişimin gerektiği durumlarda ,internetin küresel erişim gücünü kullanabilecek uygulama geliştirme yeteneği,

Birçok ürün aşağıdaki ortak özellikleri desteklemektedir;

Page 204: KONU  BAŞLIKLARIMIZ ;

204

*Yazılım geliştiricilerin yenden eğitimine gerek duyulmadan,hızlı bir şekilde yeni geliştirme yapabilme ve ürünü pazara çabuk sunabilme ,

Page 205: KONU  BAŞLIKLARIMIZ ;

205

*Tüm işlevselliğin en az kod yazarak sağlanması,

*İşlevsel olarak tüm katmanların halen kullanılan herhangi bir sistemle uyum içinde çalışabilme yeteneği,

Page 206: KONU  BAŞLIKLARIMIZ ;

206

*Bilgi işlem uzmanlarına yazılım öğelerinin iletişimi ile uğraşmak yerine iş problemlerini çözme zamanı sağlanması.

Page 207: KONU  BAŞLIKLARIMIZ ;

207

*Programlama dilinden ve donanımdan bağımsızlık,

*İstenen dağıtık ve paralel uygulamayı kolaylıkla oluşturma,yönetme ve gerektiğinde değiştirebilme.

Page 208: KONU  BAŞLIKLARIMIZ ;

208

Ticari ara katmanlar çok çeşitli amaçlar taşıdıkları ve genellikle özel olarak geliştirildikleri için burada daha fazla ayrıntıya giremeyeceğim.

Page 209: KONU  BAŞLIKLARIMIZ ;

209

* KODLAMA BİÇİMLERİ

Tasarım ne kadar iyi yapılırsa yapılsın onu hayata geçiren işlem kodlamadır.

Günümüzde kodlama,yazılım geliştirme sürecinin hala büyük emek getiren ,önemli fakat bazıları için biraz can sıkıcı evresidir.

Page 210: KONU  BAŞLIKLARIMIZ ;

210

Birçok dosya ile uğraşmak ,binlerce satır kod yazmak ,bunları doğru yazmak, derleyeciden başarıyla geçirmek test etmek ve sonunda da doğrulamak büyük emek getirir.Bu emeğin bazı biçimlere uyulması, bazı kurallara dikkat edilmesi gereklidir.

Page 211: KONU  BAŞLIKLARIMIZ ;

211

KODALMA DİLİ

Yazılım geliştirmede Türkçe yada bir başka dil kullanımı çoğu zaman tartışma konusudur. Belgelendirme ve kodlama da hangi dilin kullanılacağını bazen müşteri belirler bazende yönetimin kararı uygulanır.

Page 212: KONU  BAŞLIKLARIMIZ ;

212

Tamamen yurt içinde kalıcak ve türk personel tarafından geliştirilecek yazılımın tüm belgelendirmesi ve kodlaması türkçe yapılabilir.

Page 213: KONU  BAŞLIKLARIMIZ ;

213

Yabancı kişilerin katılım sağladığı ortak yazılım geliştirme projelerinde ortak anlaşılabilinen bir dil kullanılmalıdır.

Page 214: KONU  BAŞLIKLARIMIZ ;

214

Günümüzde kullanılan yaygın programlama dillerinin tamamı ingilizce anahtar sözcükler içermekte ve yalnızca ingiliz alfabesini desteklemektedir.Hatta PASCAL,ADA gibi bazı dillerin söz dizimi dahi ingilizce konuşma diline yaklaşmıştır.

Page 215: KONU  BAŞLIKLARIMIZ ;

215

Türkçenin bozulmasına engellemek amacıyla kaynak kodun ingilizce olarak yazılması daha tutarlı olmaktadır. Türkçe harfleri destekleyen dil veya derleyici kullanmak başka ortamlara taşınabilirliği büyük ölçüde azaltmaktadır.

Page 216: KONU  BAŞLIKLARIMIZ ;

216

Hatta bazı işletim sistemleri türkçe dosya dosya isimlerinde bile sorun çıkartmaktadırlar. Öte yandan pek çok yazılım mühendisliği destek gereci türkçe dilini henüz desteklememektedir.

Page 217: KONU  BAŞLIKLARIMIZ ;

217

Eğer kodlamada türkçe kullanılacaksa ,olabildiğince türkçe karakter içermeyen sözcüklerin seçilmesine dikkat edilmelidir.

Page 218: KONU  BAŞLIKLARIMIZ ;

218

Anlam karmaşasına engel olunmalıdır. bu durumda karşılaşabilinecek bir başka sorunda özel isim ve kısaltma karmaşasıdır.

Page 219: KONU  BAŞLIKLARIMIZ ;

219

Örneğin;

Belgelerde isterlerden tasarım sonuna kadar kullanılan türkçe harfi içeren bir kısaltma, kodlama sırasında bir başka anlam ifade etmesi olası bir isme dönüşmek zorundadır. Yine koda yakınlığı sağlanabilmesi için tasarımında aynı dilde yapılması gerekir.

Page 220: KONU  BAŞLIKLARIMIZ ;

220

Bu amaçla gerekirse bir dönüşüm tablosu kullanılmalıdır. Hangi aşamada hangi dilin kullanılması yönetim tarafından alınması gereken önemli bir karardır.

Page 221: KONU  BAŞLIKLARIMIZ ;

221

KOD BELGELEMESİTasarım her nekadar iyi belgelenmiş olsada, kaynak kodun içinde yapılan belgeleme en kullanışlı ve en doğru olanıdır.Bu belgeleme işlemi içinde , tanımlayıcı isimlerinin seçilmesi, açıklamalar ve görsel yapı yer alır.

Page 222: KONU  BAŞLIKLARIMIZ ;

222

• Öğr. Gör Mevlüt İNANHAZIRLAYAN

Page 223: KONU  BAŞLIKLARIMIZ ;

223

Bizi Sabırla Dinlediğiniz İçin Teşekkürler Ederiz…