Transcript 7. Hafta

Konu Başlıkları
1. Arayüz Tanıması
2. Kodlama Biçimleri
3. Kod Belgelemesi
4. İsimlendirme
Arayüz tanıması
2

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.
Arayüz tanıması
3






Federasyon yönetimi
Bildirim yönetimi
Nesne yönetimi
Ait olma yönetimi
Zaman yönetimi
Veri dağıtım yönetimi
Ticari ara katmanlar
4



Ç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:
Ticari ara katmanlar
5


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
Ticari ara katmanlar
6
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

Ticari ara katmanlar
7


İ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.
Kodlama Biçimleri
8



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.
Kodlama Dili
9



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.
Kodlama Dili
10


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.
Kodlama Dili
11


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.
Kodlama Dili
12


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.
Kod belgelemesi
13


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.
İsimlendirme
14


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.
İsimlendirme
15



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.
İsimlendirme
16


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.
İsimlendirme
17



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.
İsimlendirme
18


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.
İsimlendirme
19


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.
Açıklamalar
20



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.
Açıklamalar
21


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.
Açıklamalar
22




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
Geliştirme tarihçesi
23

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.

Geliştirme tarihçesi
24


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.
Geliştirme tarihçesi
25

Ç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).
HATA AYIKLAMA
26


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.
HATA AYIKLAMA
27



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.
HATA AYIKLAMA
28


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.
HATA AYIKLAMA
29



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.
HATA AYIKLAMA
30


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.
Emre Bilgiç Anlatacağı Konu Başlıkları
1.
2.
3.
Veri Bildirimi
Değim Yapıları
Kod Etkinliği
Veri Bildirimi
32


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.
Veri Bildirimi
33

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.
Veri Bildirimi
34


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
Değim Yapıları
35



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.
Değim Yapıları
36



Ç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.
Değim Yapıları
37




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.
Kod Etkinliği
38


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:
Kod Etkinliği
39


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.
Kod Etkinliği
40


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.
Kod Etkinliği
41


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.
Kod Etkinliği
42


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.
Bellek Etkinliği
43



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.
Bellek Etkinliği
44



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
Bellek Etkinliği
45


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.
Bellek Etkinliği
46


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.
Bellek Etkinliği
47



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.
Konu Başlıkları
1. Giriş/Çıkış Etkinliği
2. Atık Toplama
Giriş/Çıkış Etkinliği
49


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.
Giriş/Çıkış Etkinliği
50


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
Giriş/Çıkış Etkinliği
51
1.
2.
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.
Her türlü giriş/çıkış işlemi iletişim yükünü azaltmak için
tamponlanmalıdır.
Giriş/Çıkış Etkinliği
52
3.
4.
Giriş/çıkış sırasında kullanılan veri tipi ve
büyüklüğü istek sıklıgına göre en iyi hale
getirilmelidir
Veri aktarım hızı ilgili aygıtın algılayabileceği
en uygun düzeyde olmalıdır.
Atık Toplama
53


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.
Atık Toplama
54


Ö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.
Atık Toplama
55

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.
Atık Toplama
56

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.
Atık Toplama
57


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.
Atık Toplama
58


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.
Atık Toplama
59


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.
Atık Toplama
60


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
1. İşaretle ve temizle yöntemi
61



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.
2. Referans sayma yöntemi
62


İş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.
3-Yarı alan kopyalama tekniği
63

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.
Aykırı Durumların Kotarılması
65

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.
1-Kod öbeği kotarma
66

Ö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.
2-Yordan içinde kotarma
67

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.
3-Modül içinde kotarma
68


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.
4-Ana yordamlama kotarma
69


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.
Yüksel Vatan Anlatacağı Konu Başlıkları
1. Durdurma
2. Soyutlama
3. Bilgi Gizleme
Durdurma
71


İş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.
TEMEL İLKELER
72


İ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.
Kodlamada Niteliksel Özellikler
73


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.
Soyutlama
74


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.
Soyutlama
75


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.
Bilgi Gizleme
76


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.
Otomasyon
77


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.
Çoklu Düzeyli Koruma
78


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.
Etiketleme
79


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.
Belirgin Ara Yüz
80


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.
Taşınabilirlik
81


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.
Güvenlik
82


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.
Basitlik
83


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.
Genel Yapı
84

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.
Sözdizimsel Tutarlılık
85

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.
Sıfır-Bir-Sonsuz
86


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.
Sıfır-Bir-Sonsuz
87


Ö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.
Modül Oluşturma
88


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.
Modül Oluşturma
89


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:
Modül Oluşturma
90





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.
Ticari ara katmanlar
91

Ç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.
Konu Başlıkları
1. Kod Yazımı
2. Belgelendirme
3. Riskler
1.Kod Yazımı
93


Kod yazmak, her ne kadar bir sanat
niteliğinde olsa da, bir takım kurallara
uymak ve disiplinli olmak gereklidir.
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.
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.
1.Kod Yazımı
95


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..
1.Kod Yazımı
96


Ö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.
1.Kod Yazımı
97


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.
1.Kod Yazımı
98

İ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.
2.Belgelendirme
99


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.
2.Belgelendirme
100

Gerçekleştirim yönelik
belgelendirme çalışmalarını şu
şekilde özetleyebiliriz..
2.Belgelendirme
101


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.
2.Belgelendirme
102

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.
2.Belgelendirme
103

(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.
2.Belgelendirme
104

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.
2.Belgelendirme
105

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.
2.Belgelendirme
106

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.
2.Belgelendirme
107

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.
3.Riskler
108

Yazılım gerçekleştiriminde
oluşabilecek riskleri şu başlıklar altında
inceleyiliriz
3.Riskler
109
•
•
•
•
•
•
•
•
•
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ı
3.Riskler > Dilin etkin kullanılamaması
110


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.
3.Riskler > Geliştirme ortamının kısıtları
111

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.
3.Riskler >
Tasarımın tamamının koda dönüştürülememesi
112


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.
3.Riskler > Yanlış Kodlama
113

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.
3.Riskler > Mantık Hataları
114


Kodlama sırasında bulması çok güç
mantık hataları yapılabilir.
Mantık hataları programcıları en
meşgul eden hatalardır.
3.Riskler >
Eksik hata yakalama düzenekleri
115

Hata yakalama düzeneklerinin eksik
yerleştirilmesi nedeniyle küçük
hatalar yazılımı tamamen çökertebilir.
3.Riskler > Düşük okunabilirlik
116

Kodun okunabilirliginin az olması
geliştiricinin kendisine dahi zorluk
çıkarabilir.
3.Riskler > Gereksiz kod parçaları
117

Dikkatsizce yazılmış bazı kod
parçaları genel başarımı olumsuz
olarak etkileyebilir.
3.Riskler > Gereksiz kod parçaları
118

Ö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.
3.Riskler > Kod inceleme yapılmaması
119


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.