119
Yazılım Mimarileri Konu Başlıkları 1. Arayüz Tanıması 2. Kodlama Biçimleri 3. Kod Belgelemesi 4. İsimlendirme

Yazılım Mimarileri

  • Upload
    ewan

  • View
    96

  • Download
    0

Embed Size (px)

DESCRIPTION

Yazılım Mimarileri. Konu Başlıkları Arayüz Tanıması Kodlama Biçimleri Kod Belgelemesi İsimlendirme. Arayüz tanıması. - PowerPoint PPT Presentation

Citation preview

Yazılım Mimarileri

Konu Başlıkları1. Arayüz Tanıması2. Kodlama Biçimleri3. Kod Belgelemesi4. İsimlendirme

2

Arayüz tanıması

Arayüz tanıması, federelerin ve Yürütme Altyapısı’nın birbirleri ile iletişimi sırasında kullanılacak standart yöntemleri belirler. Bu yöntemler toplam altı yönetim alanına bölünmüştür.

3

Arayüz tanıması

Federasyon yönetimi Bildirim yönetimi Nesne yönetimi Ait olma yönetimi Zaman yönetimi Veri dağıtım yönetimi

4

Ticari ara katmanlar

Ç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.

Bunların bir kısmı belirli bir işletim sistemini destekleyerek başarımını en üst düzeye çıkarmaktadırlar.

Bir kısmı da daha geniş kapsamlı olarak sunulmaktadır. Birçok ürün aşağıdali ortak özellikleri desteklemektedir:

5

Ticari ara katmanlar

Geniş çaplı iletişimin gerektiği durumlarda, İnternet’in küresel erişim gücünü kullanabilecek uygulama geliştirebilme yeteneği

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

6

Ticari ara katmanlar

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

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

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

7

Ticari ara katmanlar

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

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 girmeyeceğiz.

8

Kodlama Biçimleri

Tasarım ne kadar iyi yapılsın onu hayata geçiren işlem kodlamalıdır.

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

Birçok dosya ile uğraşmak, binlerde satır kod yazmak, bunları doğru yazmak, derleyiciden başarıyla geçirmek, test etmek ve sonunda da doğrulamak büyük emek gerektirir.

9

Kodlama Dili

Yazılım geliştirmede Türkçe ya da bir başka dil kullanımı çoğu zaman tartışma konusudur.

Belgelendirme ve kodlamada hangi dilin kullanılacağı bazen müşteri belirler bazen de yönetimin kararı uygulanır.

Tamamen yurtiçinde kalacak ve Türk personel tarafından geliştirilecek yazılım tüm belgelendirmesi ve kodlaması Türkçe yapılabilir.

10

Kodlama Dili

Günümüzde kullanılan yaygın programlama dillerinin tamamı İngilizce anahtar sözcükler içermekte ve yalnızca İngiliz alfabesindeki harfleri desteklemektedir.

Hatta PASCAL, ADA gibi bazı dillerin söz dizilimi dahi İngilizce konuşma diline yaklaşmıştır. Derleyicilerin çoğu zaman da yalnızca İngiliz alfabesini desteklemektedirler.

11

Kodlama Dili

Hatta bazı işletim sistemleri Türkçe dosya isimlerinde bile sorun çıkarmaktadırlar.

Onların ürettiği yapılar, belgeler, diyagramlar ve şablonlarda da Türkçe olmamaktadır. Hele bir de daha önce İngilizce kullanılarak geliştirilmiş olan kütüphanelerin ya da otomatik kod üreticilerin ağırlıklı kullanımı gerektiğinde, oraya karma dille yazılmış kaynak kod çıkabilmekte ve kodun okunabilirliği en aza inmektedir.

12

Kodlama Dili

Eğer kodlamada Türkçe kullanılacaksa, olabildiğince Türkçe karakter içermeyen sözcüklerin seçilmesine dikkat edilmelidir, anlam karmaşasına engel olunmalıdır.

Kaynak kodun İngilizce, belgelendirmenin Türkçe yapılmasına engel olunmalıdır. Hangi aşamada hangi dilim kullanılması gerektiğini yönetim tarafından alınması gerekli önemli bir karardır.

13

Kod belgelemesi

Tasarım her ne kadar iyi belgelenmiş olsa da, kaynak kodun içinde yapılan belgeleme en kullanışlı ve en doğru olanıdır.

Bu belgeleme işlemi içerisinde, tanımlayıcı isimlerinin seçilmesi, açıklamalar ve görsel yapı yer alır. Şimdi bu özellikleri içerecek şekilde kod belgeleme kurallarına değinelim.

14

İsimlendirme

Bir yazılım kaynak kodu içinde kullanılan veri tipi, yordam, değişken ve sabitlerin isimleri ( tanımlayıcılar) belirli bir düzen içinde verilmelidir. Bu düzeni sağlamak için şu noktalara dikkat edilmelidir.

Karmaşıklığa yol açabilecek veya başkası tarafından okunduğunda anlaşılmayı güçleştirecek isimler (dosya, yordam, değişken adı vb.) kullanılmamalıdır.

15

İsimlendirme

Evrensel bir değişken veya sınıf ismi aynı zamanda yerel olarak kullanılmalıdır.

Proje boyunca aynı isimlendirme yöntemi kullanılmalıdır.

Bazı dillerde büyük ve küçük harf olduğu unutulmamalı, buna göre bir isimlendirme yöntemi seçilmelidir.

16

İsimlendirme

Anlaşılabilirliği arttırmak için uzun ve birden fazla sözcükten oluşan isimler kullanılmaktan kaçınılmalı ancak bu da aşırıya kaçılmamalıdır.

Yazılım küçük tutmak amacıyla kısa isimler kullanımı doğru değildir. İsimlerin kısa veya uzun olması çalışmayı ve boyutu etkilemez.

17

İsimlendirme

Değişken ve nesne isimlerinde birden fazla sözcük kullanılacaksa aralarına alt çizgi (_) konmalı veya her sözcüğün baş harfi büyük yazılarak yan yana getirilmelidir.

İsimlerin baş harfi rakam olmamalıdır.

Bir dilde anahtar sözcük veya onun yakın bir benzeri isim olarak kullanılmamalıdır.

18

İsimlendirme

Program başında tanımlanan sabitlerin veya makroların isimlendirilmesinde büyük harfler kullanılması daha uygundur.

Dosyalara verilecek isimler işletim sistemine bağımlı olduğu için her zaman anlaşılır isimler vermek mümkün olmayabilir. Bu durumda mantıklı kısaltmalar yapılmalı ya da sıra numaralarına sahip dosya isimleri kullanılmalıdır.

19

İsimlendirme

Günümüzde kullanılan programlama dilleri ve derleyiciler İngilizce alfabeye göre yapıldıkları için, diğer dillere özgü bazı harfleri desteklememektedir.

İsimlendirmede Türkçe ve İngilizce sözcükleri karıştırarak kullanılmaması, kodun tamamında projenin başında seçilen dilin kullanılması önerilir.

20

Açıklamalar

Program kaynak kodunun çalışmasını en iyi açıklayan kodun kendisinin yanında kullanılan açıklama satırlarıdır. Bu şekilde doğal bir dil ile o anda ne yapıldığı, o yordamın ne işe yaradığı anlatılır.

Daha sonrada kod okunurken yalnızca bu açıklamalarla yetinmek bile mümkün olabilir. Bazı modern yazılım geliştirme araçları tasarımda oluşturulan açıklamaları koda yansıtabilmektedirler.

Her türlü yazılımın mutlaka bir iç belgelendirmesi olmalıdır. Bunun yollarından biri de açıklama satırlarıdır.

21

Açıklamalar

Kodun sonradan bakımı yapılması gerektiğinde en büyük yardımcı son halini gösteren açıklama satırlarıdır.

Her modülün başında standart yapıda açıklama bulunmalıdır. Bu yapı şu bilgileri içerebilir.

22

Açıklamalar

Modülün veya yordamın adı, saklama düzenindeki numarası

Modülün amacının anlatımı

Arayüz tanımlaması (çağrı şekli, giriş ve çıkış parametreleri)

Önemli değişkenler ve kısaltmalar

23

Geliştirme tarihçesi

Kod içinde yapılan işi tanımlayıcı açıklamalar da şu bilgileri içerebilir

Her satır yerine bir öbek için açıklama yazılmalıdır.

Boş satırlar ve başlangıçları hizalayarak açıklamaların kolay okunması sağlanmalıdır.

Açıklamalar kodun yaptığı işle uyumlu olmalı, yanlış anlaşılmaya neden olmamalıdır.

24

Geliştirme tarihçesi

Uygulama alanındaki kodlayıcılar tarafından bilinen veya bilindiği kabul edilen oldular için açıklama kullanılmamalıdır.

Bazı kod yazma araçları programlama diline göre açıklama satırlarını farklı yazı tipi ve renkte gösterebilirler. Bu Özelliğe sahip araçlar kullanmak genel verimi arttırır.

 

25

Geliştirme tarihçesi

Çok sıkı denetlenen nitelik güvence yöntemleri uygulandığı takdirde açıklama satırları arasında, hangi yazılım isterinin karşılandığı yazılır. Açıklama satırlarında kullanılacak dil İngilizce olabileceği gibi Türkçede olabilir (Bazı yerlerde Türkçe harflerin kullanılamayacağı dikkate alınarak).

26

HATA AYIKLAMA

Hata ayıklama ilk kodlama sırasında kodlayıcının en çok yaptığı iştir.Yazılan her kod parçası derleyiciden geçirilerek hatasız bir şekilde nesne koduna dönüştürülmek zorundadır.

Sonrada birleştirilip bağlanarak bir yürütülebilir kod elde edilir.Bundan sonra bir çok programlama dili yürütme anında yazılımın içini görme şansı vermez.

27

HATA AYIKLAMA

Bazı geliştirme ortamları bu amaçla hata ayıklayıcı yazılımlar sunarlar.Ancak bazen bunları kullanmak mümkün olmaz.

Örneğin,paralel çalışan zaman ve olay bağlılığı gerektiren yazılım birimleri çok görevcikli yazılımlar için hata ayıklama araçları kullanılmaz.

Böyle durumlarda en iyi yardımcı kod içindeki bazı noktalara gelindiğinde ekrana bir ileti vermek ve o anki değişkenlerin değerlerini ekrana veya bir dosyaya yazdırmaktadır.

28

HATA AYIKLAMA

Kod içine bu tür komut satırları eklemek yazılım tamamlanıp kullanıma verildiğinde büyük bir başarım düşüklüğüne yol açar.

Çünkü ekrana çıkış yapmak işlemciyi gerçekten çok meşgul eder. Bu satırları kod içinde ayıklamak ise ileride gereksinim duyulduğunda tekrar hazırlamayı gerektirir.

29

HATA AYIKLAMA

Ekran çıktılarını her zaman değil de yalnızca istediğini zaman ve istenen miktarlarda kullanabilmek için mutlaka bir düzenek kullanılmalıdır.

Bazı programlama dilleri ve derleyiciler koşullu derleme özelliği ile bu tür kod parçalarının tamamen gizlenmesini sağlayabilirler(C ve C++ için # ifdef - # endif yapısı gibi).

C++ için iki adet düzenek örneği göstermektedir.

30

HATA AYIKLAMA

Böyle düzenekler ,toplam geliştirme sürecini kısaltıcı ve sonradan bakım sırasında hata bulmada zaman azaltıcı etki sağlarlar.

Bu tür deyimleri kod içine bolca serpiştirmek ise tam tersi etki yaparak okunabilirliğini iyice düşürür. O nedenle dikkatli olmalı ve yalnızca amacı karşılayacak kadar az miktarda iletiler verilmektedir.

Yazılım Mimarileri

Emre Bilgiç Anlatacağı Konu Başlıkları

1. Veri Bildirimi2. Değim Yapıları3. Kod Etkinliği

32

Veri Bildirimi

Veri yapıların düzeni ve karmaşıklığı tasarım aşamasında ,veri bildiriminin biçimi ise kodlama sırasında belirlenir.

Aynı yazılım paketi içinde ortak olarak kullanılan veri tipleri uygun bir dizinde tutularak tekrarların önüne geçilmelidir. Örneğin ,C ve C++ dilleriyle geliştirilen yazılımında kullanılan ortak veri tipleri (typedef) başlık dosyalarına yerleştirilmeli ve bu dosyalar,derleme sırasında taranan bir dizinin içine konmalıdır.

33

Veri Bildirimi

Bir tek program içinde ortak olarak kullanılan veri tipleri aynı dizinde bulunan ve beden dosyaları tarafından içerilen başlık dosyalarına konmalıdır.

34

Veri Bildirimi

Soyut veri tipleri tanımlanması gerektiğinde Bilgi Gizleme ve Yerleştirme ilkelerine bağlı kılınması için bir dosya içinde kullanılan veri tipleri o dosyanın başında dilin izin verdiği söz dizime göre bir sıraya göre yerleştirilmelidir.

Veri tiplerinden değişken bildirimi yapılırken tek sırada değilde alt alta ve alfabetik bir sıra izlenmesi aranan bir değişken isminin kolay bulunmasını sağlar

35

Değim Yapıları

Yazılım biriminin gerçekleştirilmesi ve mantıksal akışın sağlanması kodlama sırasında yazılan deyimlerle yani ifadelerle gerçekleşir.

Değimleri yazarken dikkat edilecek bazı kurallar okunması ve anlaşılması rahat bir kaynak kod oluşmasını sağlar. Şimdi biraz bu kurallara değinelim:

Her deyim bir satırda yer almalı gereksiz karmaşıklıklar içermemelidir.

36

Değim Yapıları

Çevrim ya da koşul testleri ile dallanma gibi programlama dilinde bağlı yapılar uygun satır başı girintileri ile hazırlanarak kolay okunabilir hale getirilmelidir.

Karmaşık koşul testleri (if yapıları) kullanmaktan kaçınılmalıdır.

İç içe girmiş fazla sayıda döngü ve koşullu dallanmalar kullanılmalıdır.

37

Değim Yapıları

Koşullarda gereksiz ve tekrarlanan testler yapılmalıdır.

Mantıksal ve aritmetik ifadeleri daha açık ve anlaşılır hale getirmek için parantezler kullanılmalıdır.

Deyim içinde uygun şekilde boşluk karakteri kullanılarak okunabilirlik artırılmalıdır.

Deyimler yazan kişiden başkasının da okuyup anlayabilmesi için olabildiğince basit ancak içlevini yapabilecek şekilde yazılmalıdır.

38

Kod Etkinliği

Bir yazılımın kaynak kodunun etkinliği ayrıntılı tasarım sırasında kullanılan algoritmaların etkinliği ile doğru orantılıdır. Buna ek olarak kodlama biçimi yürütme hızına ve bellek yönetimine etki eden çok önemli bir unsurdur.

Kod etkinliğini artırmak üzere aşağıdaki kurallara uygulamaya çalışmak gereklidir:

39

Kod Etkinliği

Tasarım sırasında belirlenen algoritmaları gerçekleştirmek için mantıksal ve aritmetik deyimler kodlamaya geçmeden önce en verimli hale getirmeye çalışılmalıdır.

Etkinlik için uzun yordamlar kullanılmamalı ancak gereksiz yordam çağrılarından da kaçınılmalıdır.

40

Kod Etkinliği

Etkinliği düşürecek veri yapıları kullanılımından kaçınılmamalıdır. Örneğin arama sıklığı çok olan durumlarda ağaç yapısı tercih edilirken baştan sona taramanın daha sık olduğu durumlarda sıralı liste tercih edilmelidir.

Yordamlara parametre geçirirken değer olarak değil adres ya da işaretçi olarak geçirmek daha yararlıdır.

41

Kod Etkinliği

Aritmetik işlemlerinde makine mimarisi için en hızlı olanları kullanmak daha yararlıdır.

Programlama dilleri izin verse dahi veri tipleri birbirlerine karıştırılmamalı uygunsuz atamalar yapılmalıdır.

42

Kod Etkinliği

Veri tipleri tanımlanırken gereksinimi en iyi karşılayacak şekilde bellekte en az miktarda yer tutan tipler kullanılmalıdır.

Örneğin fazla hassasiyet gerektirmeyen kayan nokta tipinde 8 sekizli yerine 4 sekizli kullanımı tercih edilmeldir. Ancak işlemci mimarisinin kullanmak zorunda olduğu en düşük bit miktarı da göz önüne alınmalıdır.

43

Bellek Etkinliği

Eskiden bilgisayar sistemlerinin ana ve yarımcı bellekleri maliyetleri nedeniyle oldukça kısıtlıydı.

Zaman içindeki teknolojik gelişmelere artık çok ucuza, yüksek kapasitede bellek kullanımı mümkün olmaktadır.

Bu şekilde kesintisiz fiziksel ana belleğin ve yüksek kapasiteli sabit disklerin kullanımı yaygınlaşmıştır.

44

Bellek Etkinliği

Ancak yine de sınırsız değillerdir, onun için de tasarrufla kullanımında yarar vardır. Aşırı miktarda bellek kullanımı sonuçta genel başarımı olumsuz olarak etkiler.

Özellikle boyut sorunu olan mikroişlemcili gömülü sistemlerde bellek yönetimi oldukça önemlidir. Bir de çok uzun süre kesintisiz çalışması gereken sistemlerde, dinamik bellek yönetimi ve atı toplama çok daha fazla önem taşımaktadır.

Bellek etkinliğini artıtmanın birkaç yolu aşağıda sıralanmaktadır

45

Bellek Etkinliği

Sık sık ekleme ve çıkarma yapılan, toplam eleman sayısı belirsiz olan veri yapılarında dinamik bellek kullanılmalı, ancak bu yapıların yapıcı ve yok edici yordamları mutlaka uygun şekilde kullanılmalıdır.

Bazı programlama dillerinde atık toplama işlemi otomatik yapılırken bazı dillerde açıkça denetimi gereklidir.

46

Bellek Etkinliği

Veri tipleri tanımlanırken arzu edilen hassasiyet ve uçdeğerlere en uygun temel tipi şeçilmelidir. Örneğin, 1 ile 100 arasında tamsayı kullanılacaksa , bu veri tipi bir sekizli uzunluğunda kısa bir tam sayı (short int) olabilir.

Bileşik veri tiplerinin tanımlarına hiç kullanımı olmayan alanlar(field) dahil edilmemelidir. Hele bu tiplerden dizi yaratılması gereken durumlarda daha da dikkatli olunmalıdır.

47

Bellek Etkinliği

Bilgisayarların bellek erişimlerinde kullanılan veri yolu genişlikleri bugün için 2 ile 8 sekizli arasında değişmektedir.

Bu da bir defada bellekten işlemciye aktarılacak veri miktarını belirlediği için bir bitlik veri ile 64 bitlik veri aynı hızda yazılıp okunmuş olur.

Onun için, veri tipleri tanımlanırken hedef sisteme uygun sözcük uzunluğuna göre değerler verilmeli, gereksiz kısaltmalar yapılmamalıdır.

Yazılım Mimarileri

Konu Başlıkları1. Giriş/Çıkış Etkinliği2. Atık Toplama

49

Giriş/Çıkış Etkinliği

Bir bilgisayar sisteminin genellikle iki tür giriş/çıkışı vardır. Bunlardan birincisi,insanla olan etkileşim ,yani kullanıcı arayüzü,diğeri de başka aygıtlarla ve çevre birimleriyle olan etkileşim,yani veri arayüzüdür.

Kullanıcı arayüzü,inşan mühendisliğinin bir uygulama alanı ortaya çıkar. Etkinliği, kullanım kolaylığı, kullanıcı dostluğu, öğrenme çabasının azlığı ve anlaşılabilirlik açısından değerlendirilir.

50

Giriş/Çıkış Etkinliği

Başka donanımlarla olan giriş/çıkış işlemlerinin etkinliği alt düzey programlarda önemli bir deneyim ve bilgi birikimi gerektirir.

Bu işlemler uygulama alanı ve bilgisayar türüne göre farklılık göstermesine rağmen bazı genel kuralları şu şekilde sıralayabılırız

51

Giriş/Çıkış Etkinliği

1. Giriş/çıkıs istekleri yazılımın genel mimarisi içindeolabildiğince düşük düzeyde tutulmalıdır.Çünkü,yürütme sırasındaki program akışı, işlemciden çok giriş/çıkış sonuçlanması için bekler.

2. Her türlü giriş/çıkış işlemi iletişim yükünü azaltmak için tamponlanmalıdır.

52

Giriş/Çıkış Etkinliği

3. Giriş/çıkış sırasında kullanılan veri tipi ve büyüklüğü istek sıklıgına göre en iyi hale getirilmelidir

4. Veri aktarım hızı ilgili aygıtın algılayabileceği en uygun düzeyde olmalıdır.

53

Atık Toplama

Tüm yazılımlar bilgisayar donanımları üzerinde sınırlı miktarlardaki özkaynakları kullanarak çalışırlar.

En önemlı özkaynaklardan biri ana ve yardımcı bellektir.Programlama dilinin özelliğine göre ,kodlayıcı fiziksel ana ve yardımcı belleği istediği gibi kullanabilir.

54

Atık Toplama

Özekllikle dinamik ,sistemlerde bellek kullanım gereksinimi zaman içimde farklılık gösterdiğinde ,uzun süreli çalışmalarda bellek sıkıntısına düşmemek için kullanımı sona eren nesne ve veri yapılarının silinmesi gereklidir.

Silme işlemi sistemi veya işletim sistemi ,hatta özel bir donanım tarafından da yapılabilir. Bu işleme atık toplama denir.

55

Atık Toplama

Otomatik olarak yapılan atık toplama işlemiyle geliştiriciye yalnızca fızıksel olarak kısıtlanabilen sonsuz büyüklükte bir bellekle çalışma olanağı verilerek kullanımı bitmiş,artık gereksinim duyulmayan nesne ve yapılarla uğraşmamaları sağlanır.

56

Atık Toplama

Sistem,bir nesnenin başka bir nesne ya da değişken tarafından erişiminin mümkün olmadığını sezebilirse bu nesnenin bulunduğu alanı başka bellek isteklerinde kullanılmak üzere serbest bırakabilir;bu işlem kullanıcı tarafından fark edilmez.

57

Atık Toplama

Yazılım biriminin işlemci üzerinde yürütülmesi sırasında havuz bellekten(hesap) ayrılan bellek öbekleri kullanımı bitince ,tekrar sistemine geri verilmelidir.

Yine sabit diske yazılan geçici dosyalar,işlemleri silinmeli,diskte yer kaplamaları engellenmelidir.

58

Atık Toplama

Ana ve yardımcı bellek yanında,bir yazılım birimi,dosya tutamacı(File handle), giriş/çıkış aygıtı ,paylasılır bellek,semafor,soket gibi özkaynakları da kullanılabilir.İşletim sistemine göre değisiklik göstermesine rağmen ,bu tür özkaynakların kullanımı sınırlıdır.

O nedenle, kullanımları sona erdiğinde derhal serbest bırakılmalıdırlar.

59

Atık Toplama

Simgesel dillerle yapılan bellek yönetimi,geliştiriciler tarafından yazılan kaynak kod düzeyinin altında derleyici desteği,işletim sistemi kolaylıkları veya özel donanımlar yardımıyla sağlanır.

Bazı dillerde atık toplama düzeneği tamamen saydam olarak ve makine düzeyine en yakın biçiöde gerçekleştirilebilir.Onun altında başka düzey daha yoktur.

60

Atık Toplama

Kod içinde açıkça yapılan atık toplama yanında (işaretçilerin gösterdikleri yerde yaratılan bellek parçasının işi bitince açıkça silinmesi) otomatik atık toplama için çeşitli algoritmalar geliştirilmiştir.

Şimdi bunların bazılarına kısaca değinelim

61

1. İşaretle ve temizle yöntemi

Bu yöntemde,dinamik bellekte yer tutan tüm nesne ve veri yapıları incelenerek hangi nesne ve yapılarla ilişki halinde oldukları belirlenir;aralarında ilişki bulunan nesneler işaretlenir.

Tüm bellek içeriği tarandıktan sonra ikinci bir geçiş yaılarak hiç işaretlenmemiş nesneler ve yapılar temizlenir.bu işlem belirli aralıklarla tekrarlanır.

Tarama sırasında genellikle tüm yürütülen işlemler kısa bir süre için dondurulur.Sistem genelinin bu kısa duraklamadan etkilenmemesi için,önlem alınmalı, mümkünse sistem boşta iken veya kritik anlar dışında yapılmalıdır.

62

2. Referans sayma yöntemi

İşletim sistemi veya yazılım birimi tarafından kullanılabilen bu yöntemde istepe göre ayrılan bellek öbeklerinin bir kaydı tutulur.Öbekleri kullananların sayısı bir yerde bulunana sayaçlara kaydedılır.

Kullanıcı sayısı azaldıkça sayaçların değerleri de azaltılır.Uygun aralıklarla ana denetleyici tarafından yapılan taramalarda referans değeri sıfır olan bu öbekler belirlenerek gerekli temizlik yapılır. Aralıklı tarama yerine belirli bir algoritma kullanmak da mümkündür.Bu yönetem kod içinde açıkça yapılan bellek denetimlerinde de kullanılabılır.

63

3-Yarı alan kopyalama tekniği

Genellikle işletim sistemi düzeyinde kullanılan bu teknik,işaretle ve temizle yönteminde taramadan dolayı oluşan ara vermeyi kaldırarak gerekli temizliği sağlar.Ancak daha fazla bellek gerektirir

64

Günümüzde bazı programlama dilleri dinamik bellek yönetimini kendi içinde yapmakta,hatta bazıları yapılanmaya izin vermemektedir.JAVA dili işaretçi kullanmayan ve kendi atık toplama düzeneğine sahip bu dillerden biridir.

65

Aykırı Durumların Kotarılması

Aykırı durumlar (exception),bir programın çalışmasını geçersiz bir komut yürütme,yanlış veri işlemr ya da başka nedenlerle istenmeyen bir şekilde ve denetim dışında soonlanmasına neden olan durumlardır.

66

1-Kod öbeği kotarma

Önceden potansiyel bir hata kaynagı olarak belirlenen kod parçası bir öbek şeklinde hata yakalama düzenegi ile koruma altına alınarak hata oluştuğu anda neler yapılacağı kotarma kısmında yer alır.

67

2-Yordan içinde kotarma

Her yordamın sonuna bir hata kotarıcı yerleştirmek alışkanlık halinde olmalıdır.Yordam bedeninde bulunan deyimlerin herhangi birinde hata oluştuğunda veya bir kotarma öbeğinden hata iletildiğinde sonraki deyimler yürütülmeden program akışı kesilir ve denetim yordam sonundaki hata yakalma düzeneğine geçer.

68

3-Modül içinde kotarma

Bazı programlama dilleri modül olarak paket yapıları kullanırlar .ADA dili bunlardan biridir.Paketlerin son kısımlarında hata yakalama düzenekleri bulunur.

Genellikle ilk yaratmadan (ELABORATİON)kaynaklanan veya yordamlardan iletilen hataları paket düzeyinde yakalmak ve raporlamak içim kullanılır.

69

4-Ana yordamlama kotarma

Her programın bir tek ana yordamı bulunur.Program belleğe yüklendikten sonra ana yordamın deyimleri sırayla yürütülür.

Ana yordamın son kısmında en son hata yakalama düzeneği bulunur.Bundan sonra hata programın dışına,yani işletim sistemine iletilir,kontrollü sonlama meydana gelir.

Yazılım Mimarileri

Yüksel Vatan Anlatacağı Konu Başlıkları1. Durdurma2. Soyutlama3. Bilgi Gizleme

71

Durdurma

İşletim sistemine hata kod ile dönen bir programın yürütülmesi sona ermiş demektir. Bundan sonra sistemin genel durumu hakkında ya işletmen ya da sistemi denetleyen bir sistem yönetim birimi karar verir.

Bazı sistemlerde, hataya düşen programın kendi durumunu sistem yönetim birimine bildirmesi durumunda o program yönetim birimi tarafından sonlandırılır ve yeniden başlatır.  

72

TEMEL İLKELER

İyi bir yazılım geliştirmek, eski deyimiyle, program yazmak, kişinin aklını kullanma yeteneğine, yeterli bir beğeni duygusuna ve sabrına sahip olması gerekmektedir.

Bunların hepsini bir anda uygulayıp bir kerede mükemmel bir yazılım geliştirilemez. Denemeler yaparak, başka kodları inceleyerek ve karşılaştırarak bu konudaki deneyim artırılabilir. Bu kısımda iyi bir yazılım gerçekleştirimi için gerekli kurallara değineceğiz.

73

Kodlamada Niteliksel Özellikler

Programlama dillerinin tasarımı ve karşılaştırılması için çeşitli niteliksel özellikler kullanılır. Yazılımlarda aranan nitelikler arasında da yer alan bu ilkeler, mutlaka uyulması gereken katılıkta değildir.

Ancak ideal duruma ulaşmada temel adım niteliğini taşırlar. Özel bir dil seçmeksizin bu ilkeleri görelim.

74

Soyutlama

Aynı şeyi birçok defa ifade etmekten kaçınmak gereklidir. Bunun için tekrarlama yapan döngü ortadan kaldırılmalıdır.

Örnek olarak, bir döngü içinde yer alan bir atama deyimi döngü dışına çıkarıldığında işlem bozulmuyorsa bu atamanın sürekli tekrarlanmasına gerek yoktur. Küçük bir ayrıntı olarak görülebilen bu noktanın aslında bu programın genel başarımına büyük etkisi vardır.

75

Soyutlama

Bir başka örnek de program içinde tekrarlanan kısımların bir modülde toplanması ve daha sonra bu modülün dilin kurallarına göre ilgili yerlere dahil edilmesidir.

C++ ve JAVA dillerinde sınıfların ve nesnelerin kullanımı, ADA dilindeki paketler bu ilkenin en güzel uygulanmış halidir.

76

Bilgi Gizleme

Modüllerin yalnızca gerekli bilgileri saklaması sağlanmalıdır. Modül kullanıcısı, bir modülü doğru bir şekilde kullanabilmek için gerekli ve yeterli bilgilere sahip olmalıdır.

Kaynak kod dosyasının modül olarak kullanımı, görünürlük kurallarının uygulandığı kod öbekleri, sınıfların özel ve korunmuş kısımlarındaki veri denetimi bu ilkenin uygulanışına birer örnektir.

77

Otomasyon

Ne zaman çalışması gerektiği önceden belirli işlevler otomatik, yani kendiliğinden çalışır hale getirilmelidir. Belirli zaman aralıklarında çalışan döngüler buna örnek olarak verilebilir.

Döngünün denetimi ve yürütülmesi bu yapı ile otomatik olarak sağlanır. Bunun için ayrı bir işlem yapılmasına gerek yoktur. Bazı dildeki atık toplama sistemi, saate dayalı işlem başlatma önemli birer örnektir.

78

Çoklu Düzeyli Koruma

Yazılımın hatalara karşı koruması için düzeyler halinde önlemler alınmalıdır. Bir düzeyde oluşan bir hatanın o düzeyde yakalanmaması halinde bir üst düzeyde yakalanmasına olanak sağlar.

Güvenilir bir yazılım, kullanıcıdan, donanımdan veya başka yazılım birimlerinden dolayı oluşan hataları yakalayıp kendini korumalı, gerekli raporlama ve düzeltme işlemlerini yapmalı, hiçbir durumda tamamen çökmemelidir.

79

Etiketleme

Kullanıcı, kendisine anlamlı gelen bir isimlendirme yöntemi ile verilere, yapılara ve öbeklere erişim sağlamalıdır.

Saymal tipler bu ilkenin kodlamada kullanılmasına iyi bir örnektir.

80

Belirgin Ara Yüz

Tüm ara yüzler açık ve belirgin olmalıdır. Kullanıcı neyi nasıl kullanacağını rahatlıkla anlayabilmelidir.

Gerek yordam bildirimleri gerekse paket veya sınıf ara yüzleri dilin elverdiği ölçüde açıkça tanımlanmalı, gerekirse ek açıklamalarla anlatılmalıdır.

81

Taşınabilirlik

Kodlama yapılırken belirli bir donanıma bağlı kalmamalıdır. Kod yazımı sırasında yalnızca o an kullanılan ortamı düşünmek hatalı olur.

Yazılımın başka bir donanım üzerine taşınması halinde aynen çalıştırılması veya yer bilinen, çok küçük değişikliklerle aynı sonucun alınması gereklidir.

82

Güvenlik

Yazımlarda kullanılan verilerin güvenliğinin sağlanması ve bunlara erişimin uygun şekilde kısıtlanması gereklidir. Bir paket yada sınıfın iç verilerinin yetkisiz kullanıcılar tarafından değiştirile bilmesi önlenmelidir.

Sınıfların veya modüllerin verileri dilin özellikleri kullanılarak olabileceğince korumalı, evrensel veri kullanımından kaçınılmalıdır.

83

Basitlik

Yazılım olabildiğince basit olmalıdır. Dilin yapısında çok az sayıda kavram olmalı ve bunları birleştiren basit kurallar bulunmalıdır.

Yazılan programlarda da basitlik hedef alınmalı, anlaşıbilirliği azaltan karmaşık yapılardan kaçınılmalıdır.

84

Genel Yapı

Bir yazılımın durağan yapısı yürütme sırasında kullanılan dinamik yapısı ile açık bir şekilde bağdaşmalıdır. Yazılımın kaynak kodunun metinsel görüntüsü onun dinamik olarak çalışması hakkında fikir verebilmelidir.

85

Sözdizimsel Tutarlılık

Sözdizimsel ve anlamsal benzerlikler anlaşılabilirliği artırmaktadır. Kod yazarken de anlaşılabilirliğin korunması için modül, değişken ve yordam isimlendirilmesinde, programa dilinin söz dizim kurallarına uygun yapılar kullanılmasına dikkat edilmelidir.

86

Sıfır-Bir-Sonsuz

Yazılımda yalnızca, sıfır, bir ve sonsuz değerleri dikkate alınabilir özellik taşımalıdır. İyi bir yazılım kaynak kodu içinde sayılara bağlı herhangi bir kısıtlama bulunmamalıdır.

Yazılımın tasarımı sırasında hiçbir özellik, işlev ya da yapı belirli ve sabit bir sayıya göre yapılmamalı, gelecekte doğacak artmalara karşı tedbirli olmak gereklidir.

87

Sıfır-Bir-Sonsuz

Örneğin, başlangıçta iki makine üzerinde çalışacak bir yazılımın kaynak kodunda makinelerden biri ve diğeri olmak üzere iki seçeneğe göre geliştirilen algoritmalar, makine sayısının üç ya da daha fazla olması durumunda çalışmayacaktır.

O nedenle, “bir” ve sistem içinde bir sabit olarak tanımlı “en fazla makine sayısı” arasında döngü kurulmalıdır.

88

Modül Oluşturma

Yazılımın büyüklüğü arttıkça yordamları ve verileri birbirine olan bağımlılıkları düşünülerek birimlere ayırmak gereklidir. Çoğu geliştirme ortamında dosya en küçük yazılım birimidir.

Birbiriyle ilişkili yordamlarla bunlara ait verileri bir dosya içine koyarak bir modül oluşturulabilir. Nesneye yönelik programda modül olarak sınıflarda kullanılabilir.

89

Modül Oluşturma

Bu şekilde modüller programlama tekniği uygulanarak Bilgi Gizleme ilkesine bağlı kalınmış olur. Dilin özelliğine göre, dosya şeklinde olan modüller ayrı derleme olanağı sağlayarak büyük yazılımların paralel olarak geliştirilebilmesini kolaylaştırır.

Dosya halinde modül oluşturmada dikkat edilmesi gereken noktalara değinmekte yarar vardır:

90

Modül Oluşturma

Aynı tür işlevlere sahip yordamlar belirlenmeli ve bir modülde toplanmalıdır.

Modülün açık ve anlaşılır olmalıdır. Veri yapısı, değişkenler ve sabitler görünürlük

kuralına göre modülün başında belirtilmelidir. Dosya sayısının artması halinde her modül

için gerekli kod dosyaları ayrı dizilere yerleştirilmelidir.

Yaratılan her bir dosyanın baş kısmına yeterli bir açıklama konmalıdır.

91

Ticari ara katmanlar

Ç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. Bunların bir kısmı belirli bir işletim sistemini destekleyerek başarımını en üst düzeye çıkarmaktadırlar.

Yazılım Mimarileri

Konu Başlıkları1. Kod Yazımı2. Belgelendirme3. Riskler

1.Kod Yazımı93

Yazılım geliştirmenin çözümleme ve tasarım aşamaları ne kadar iyi olursa olsun gerçekleştirim iyi olmadığı takdirde sonuca ulaşılamaz.

Kod yazmak, her ne kadar bir sanat niteliğinde olsa da, bir takım kurallara uymak ve disiplinli olmak gereklidir.

1.Kod Yazımı94

Bir programlama dili bilen herkes “program” yazabilir, fakat herkes “yazılım” geliştiremez.

Tüm yazılım geliştirme aşamalarının gerçekleşmesi ve belirli bir mühendislik bilgisinin denetiminde kod yazılması nitelikli yazılım için temel oluşturur.

95

1.Kod Yazımı

Yazılımın kaynak kodu seçilen bir programlama dilinin kurallarına uygun olarak yazılır.

Dilin kendi sözdizim kuralları yanında bazı temel ilkelerin de kullanılmasında yarar vardır..

96

1.Kod Yazımı

Örneğin, ADA dili için Amerika Birleşik Devletleri Savunma Bakanlığının çıkarmış olduğu “Ada Style Guide” bu dil için çok yararlı kodlama önerileri sunmaktadır.

C ve C++ için öneriler çok çeşitli kaynaklarda yer almaktadır.

97

1.Kod Yazımı

Kodlama, ana sistem üzerinde, uygun bir dizin yapısı kullanılarak oluşturulan proje ortamında yapılır.

Dosya bağlarını destekleyen bir işletim sistemi kullanılıyorsa, asıl kaynak kod dosyaları fiziksel olarak bir dizinde, ona bağlı sanal dosyalar asıl derleme dizininde oluşturulursa, tehlikeli bir işletim sistemi komutunun yanlışlıkla kullanılması sonucu dosyaların silinmesi engellenmiş olur.

98

1.Kod Yazımı

İdeal olarak, her çalışma gününün sonunda geliştirilen kodlar birleştirilerek yeni bir sürüm üretilmeli ve çalışma alanının yedeklenmesi sağlanmalıdır.

99

2.Belgelendirme

Yazılım gerçekleştirim aşamasında mutlaka bir belge üretilmesine gerek yoktur.

Ancak, kodlama sırasında elde edilen bazı bilgileri(deneyim, test sonuçları, önemli noktaları gibi) gelecekte kullanabilmek üzere düzenleşim yönetim sisteminde saklamak gerekebilir.

100

2.Belgelendirme

Gerçekleştirim yönelik belgelendirme çalışmalarını şu şekilde özetleyebiliriz..

101

2.Belgelendirme

Her bir kaynak kod dosyasının başında, bir başlık kısmı bulunmalıdır.

Bu kısımda dosyanın dosyanın tanımlayışı olabilecek ad veya numara dosya içeriği yazarı yaratılma ve değiştirilme tarihleri mülkiyet hakları gibi bilgiler yer almalıdır.

102

2.Belgelendirme

Kodlamada çalışmış kişilere daha sonradan yararlı olacağı düşünülen önemli noktaları derleme sırasında karşılaşılan sorunları ve bunların nasıl çözüldüklerini anlatan kayıtlar bir dosyada tutulmalıdır.

103

2.Belgelendirme

(Bazen bu dosyalara “okubeni.txt” şeklinde isim verilir). Bu açıklama dosyaları da mutlaka diğer kaynak kod dosyaları gibi düzenleşim yönetim sistemine konmalıdır.

104

2.Belgelendirme

Küçük programlar için her türlü derleme bilgisi ana fonksiyonun bulunduğu dosyanın başına açıklama halinde yazılmalıdır.

105

2.Belgelendirme

Ana ve test sistemi üzerinde yapılan testlerde kullanılan her türlü yazılım ayarlama ve yapılandırma gerekli açıklamalarla beraber kaynak kod yanında düzenleşim sistemine girmelidir.

106

2.Belgelendirme

Kod içinde kullanılan açıklama satırları anlamlı değişken ve yordam isimleri etiketler de kodun anlaşılabilirliğini arttırarak bir tür belgelendirme sağlarlar.

107

2.Belgelendirme

Kod yapısını tasarım belgelerinde yer almayan çeşitli bilgileri içeren açıklayıcı özellikle her türlü belge dosyası kaynak kod ile beraber düzenleşim sisteminde saklanmalıdır.

108

3.Riskler

Yazılım gerçekleştiriminde oluşabilecek riskleri şu başlıklar altında inceleyiliriz

109

3.Riskler

• Dilin etkin kullanılamaması • Geliştirme ortamının kısıtları • Tasarımın tamamının koda dönüştürülememesi

• Yanlış Kodlama • Mantık Hataları • Eksik hata yakalama düzenekleri• Düşük okunabilirlik• Gereksiz kod parçaları• Kod inceleme yapılmaması

110

3.Riskler > Dilin etkin kullanılamaması

Kodlayıcı personelin programlama diline hakim olmaması sonucu dil yapıları etkin kullanılamayabilir.

Kodun deneyimli kişilerce incelenmesi eksiklerin bulunarak giderilmesi ile bir ögrenme süreci geçirilmesi gerekebilir.

111

3.Riskler > Geliştirme ortamının kısıtları

Geliştirme ortamındaki bilgisayar sayısı derleyici ve diger gereçlerin kullanım lisansları gibi bazı kısıtlamalar personel sayısının yeterli olması durumunda dahi önemli sorunlar yaratabilir.

112

3.Riskler > Tasarımın tamamının koda dönüştürülememesi

Karmaşıklık veya bazı eksiklikler sonucunda tasarımın tamamının koda dönüştürülememesi durumunda bazı isterlerin karşılanması mümkün olmayabilir.

Bu durumda yazılımın hatalı çalışmasına neden olabilir.

113

3.Riskler > Yanlış Kodlama

Tasarımın yanlış anlaşılarak yanlış kodlanması ile çözümleme ve tasarım doğru yapılmış olsa dahi hatalı bir yazılım ortaya çıkabilir.

114

3.Riskler > Mantık Hataları

Kodlama sırasında bulması çok güç mantık hataları yapılabilir.

Mantık hataları programcıları en meşgul eden hatalardır.

115

3.Riskler > Eksik hata yakalama düzenekleri

Hata yakalama düzeneklerinin eksik yerleştirilmesi nedeniyle küçük hatalar yazılımı tamamen çökertebilir.

116

3.Riskler > Düşük okunabilirlik

Kodun okunabilirliginin az olması geliştiricinin kendisine dahi zorluk çıkarabilir.

117

3.Riskler > Gereksiz kod parçaları

Dikkatsizce yazılmış bazı kod parçaları genel başarımı olumsuz olarak etkileyebilir.

118

3.Riskler > Gereksiz kod parçaları

Örneğin, bir döngü içinde fazladan çağrılan bir yordam bir çok kez tekrarlanınca işlevsel sorun yaratmamasına rağmen önemli miktarda özkaynak (işlemci, ana ve yardımcı bellek) kaybına neden olabilir.

119

3.Riskler > Kod inceleme yapılmaması

Kodlayıcılar işi en iyi kendilerinin bildiği kanısında olabilirler.

Bu nedenle bir başkası tarafından yapılması gereken kod inceleme işleminin atlanması ileride başka sorunlar çıkarabilir.