1 / 119

Yazılım Mimarileri

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

ewan
Télécharger la présentation

Yazılım Mimarileri

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Yazılım Mimarileri Konu Başlıkları Arayüz Tanıması Kodlama Biçimleri Kod Belgelemesi İ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.

  31. Yazılım Mimarileri Emre Bilgiç Anlatacağı Konu Başlıkları Veri Bildirimi Değim Yapıları 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ı (shortint) 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.

  48. Yazılım Mimarileri Konu Başlıkları Giriş/Çıkış Etkinliği 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

More Related