Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "Konu Başlıkları 1. Arayüz Tanıması 2. Kodlama Biçimleri 3. Kod Belgelemesi 4. İsimlendirme."— Sunum transkripti:

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

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

3 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

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: 4

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 5

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 6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 22

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

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

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). 25

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

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

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

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

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

31 Emre Bilgiç Anlatacağı Konu Başlıkları 1. Veri Bildirimi 2. 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. 32

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

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 34

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

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

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

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: 38

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

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

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

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

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

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 44

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

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

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

48 Konu Başlıkları 1. Giriş/Çıkış Etkinliği 2. 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. 49

50 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

51 Giriş/Çıkış Etkinliği 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 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 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.

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

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

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

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

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

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

60 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

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

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

63 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 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ı 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.

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

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

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

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

70 Yüksel Vatan Anlatacağı Konu Başlıkları 1. Durdurma 2. Soyutlama 3. 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. 71

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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: 89

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

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

92 Konu Başlıkları 1. Kod Yazımı 2. Belgelendirme 3. Riskler

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

94 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ı 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..

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

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

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

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

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

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

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

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

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

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

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

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

108 3.Riskler 108  Yazılım gerçekleştiriminde oluşabilecek riskleri şu başlıklar altında inceleyiliriz

109 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ı

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

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

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

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

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

115 3.Riskler > Eksik hata yakalama düzenekleri 115  Hata yakalama düzeneklerinin eksik yerleştirilmesi nedeniyle küçük hatalar yazılımı tamamen çökertebilir.

116 3.Riskler > Düşük okunabilirlik 116  Kodun okunabilirliginin az olması geliştiricinin kendisine dahi zorluk çıkarabilir.

117 3.Riskler > Gereksiz kod parçaları 117  Dikkatsizce yazılmış bazı kod parçaları genel başarımı olumsuz olarak etkileyebilir.

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

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


"Konu Başlıkları 1. Arayüz Tanıması 2. Kodlama Biçimleri 3. Kod Belgelemesi 4. İsimlendirme." indir ppt

Benzer bir sunumlar


Google Reklamları