Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

YAZILIM TASARIMI. Yazılım tasarımı Tasarım, herhangi bir mühendislik ürünü geli ş tirme sürecindeki ilk adım sayılabilir. Tasarımcının amacı, geli ş tirilecek.

Benzer bir sunumlar


... konulu sunumlar: "YAZILIM TASARIMI. Yazılım tasarımı Tasarım, herhangi bir mühendislik ürünü geli ş tirme sürecindeki ilk adım sayılabilir. Tasarımcının amacı, geli ş tirilecek."— Sunum transkripti:

1 YAZILIM TASARIMI

2 Yazılım tasarımı Tasarım, herhangi bir mühendislik ürünü geli ş tirme sürecindeki ilk adım sayılabilir. Tasarımcının amacı, geli ş tirilecek bir ürünün ilk modelini veya gösterimini ortaya çıkarmaktır.

3 Tasarım genel olarak deneyim ve bilgi birikimiyle desteklenen çe ş itli kurallarla yapılır. İ n ş aat, makine, mekanik düzenek veya elektronik tasarımlar için çe ş itli hesaplamalar ve yardımcı araçlar kullanılabilir.

4 Bilgisayar yazılımın tasarımı ise daha yeni bir geçmi ş e sahiptir. Çe ş itli geli ş tirme teknikleri, tanımlama ve tasarım yöntemleri bulunsa da yazılım mühendisli ğ i hala bir “ sanat” niteligindedir.

5 Bir kodlayıcı ne kadar iyi olursa olsun, bir tasarım yapıp onu yeterli ş ekilde yazılı hale getirmekten sonra verimli bir geli ş tirme yapamaz. En küçük kod parçaları için dahi olsa mutlaka önce tasarım yapılmalı, ondan sonra kod yazımına geçilmelidir.

6 Hiçbir bilgisayar programı dogrudan kod yazma ile ba ş lamamalıdır. Zira, yazılım tasarımı, bir binanın temeline benzetilebilir

7 Yeteri kadar sa ğ lam olmayan bir temel üzerine plansızca in ş a edilen katlardan olu ş an bir binanın depreme dayanıklı olmasıda beklenemez. Ayrıca üzerine ba ş ka bir kat çıkmakda mümkün olmaz.

8 Bu bölümde genel olarak yazılım tasarımı hakkında temel bilgiler verilecek, basamaklar, yöntemler, kurallar ve çe ş itli özel durumlar anlatılacaktır.

9 Tasarım a ş aması  Genelde bir bütün olarak dü ş ünülmesine ra ğ men yazılım tasarımı a ş aması adımlar halinde gerçekle ş tirilir. En önemli adımlardan biri veri tasarımıdır;

10  çözümleme sırasında toplanan bilgilerin bilgi yapılarının yazlımda kullanılacak veri yapılarına dönü ş türülmesini içerir. Daha sonra gelen mimari tasarımı, yazılım birimlerinin yapısal parçalarını, birbirleriyle ili ş kisini tanımlar.

11  Yordamsal tasarım, yazılımı olu ş turan yapısal birimler yordam ve fonksiyonlar haline dönü ş türür. Arayüzü tasarımı da insan-makine etkile ş iminin ş eklini, altsistemlerle olan arayüzlerinin ayrıntılarını içerir

12  Tüm bunlar bir belgede toplanır, de ğ erlendirilir ve sonrada kodlama a ş amasınıa geçilir. Tasarım, yazılımın testine kadar her ş eyi etkiledi ğ inden nitelik unusurunun öne çıktı ğ ı ilk a ş ama olma özelli ğ ini ta ş ımaktadır.

13

14  Yazılım geli ş im çevrimi içinde yer alan ve tekrarlanarak yapılan tasarımla ilgili çe ş itli i ş lemler vardır. Bunlar arasında projenin bir bütün olarak tasarlanması, yani sistem tasarımın yapılması,

15  Standart yazılım birimlerinin belirlenmesi ve bu uygulama için hazırlanması, yeni yazılım birimlerinin olu ş turulması, bu birimlerin iç yapılarının belirlenmesi, birimleri biraraya getirerek sistemin olu ş turulması sayılabilir

16  Tasarımcılar bu i ş leri yaparken sıfırdan ba ş lamak zorunda de ğ illerdir. Örne ğ in dört kapılı orta büyüklükte yeni model bir arabanın tasarımını göz önüne alalım. Böyle bir arabanın tasarımı yeni ba ş tan ba ş lamayacaktır.

17  Önce fabrikanın elindeki yedek parça, malzeme ve tezgahlar incelenecek, bunların amaca uygunlukları dikkate alınacak, daha önce yapılmı ş bir arabanın tasarımı örnek alınarak tekrar kullanılabilcek kısımlar alınacak,

18  yeni araba için dü ş ünülen eklemeler yapılacak, parçalar üzerinde bu yeni tipe uygun küçük de ğ i ş iklikler tasarlanıp üretilecek, ortaya çıkan ilk örne ğ in denenmesi ve testlerden sonrada seri üretime geçilecektir.

19  Yazılım geli ş tirmede benzer bir yol izler. Burada söz edilen ana mazlemeler, yedek parça ve tezgah gibi standart birimler de ğ il, o çalı ş ma grubu tarafından belirli amaçlar için, kullanılmakta olan yazılım yardımcı araçları veya tekrar kullanılabilir kod parçaları olabilir.

20  Standart birimler yeterli olmadı ğ ı zaman projenin isterlerini kar ş ılayabilcek yeni birimler olu ş turulur. Son a ş amada da tüm parçalar bir araya getirilerek tasarıma son ş ekli verilir.

21  Tasarımın birinci amacı herzaman basitlik olmalıdır. Çnkü, anla ş ılır ve basit bir tasarım hem kodlamada hemde sonraki de ğ i ş ikliklerde kolaylık sa ğ lar.

22 İ leride gereksinim duyulabilecek iyile ş tirme, geni ş leme, ta ş ınabilirlik gibi bazı durumların önceden sezilenmemesi halinde, sistemin bu tür de ğ i ş ime açık olması tasarım ve gerçekle ş tirimin basit olması ile gerçekle ş ebilir.

23  Sistem öyle tasarlanmalıdır ki, bir dizi de ğ i ş iklik yapılsa bile sistem tasarımı hala basit kalabilmelidir. Bunun için de ğ i ş iklik yapılması olası olan kısımlara özel dikkat gösterilmeli,

24  veri yapılarında esneklik sa ğ lanmalı, programlama dilinin sa ğ ladı ğ ı kolaylıklar göz önüne alınmalıdır.

25  Yazılım tasarımı sırasında sürekli olarak gözetilmesi gereken temel ilkelerden en önemli gördü ğ ümüz üç unsuru ş unlardır:

26  Soyutlama (abstraction), denetimi ve anla ş ılabilirli ğ i artırmak üzere en az ayrıntı ile i ş len yapmaktır. Bu amaçla, yazılım isterlerini gruplayarak kar ş ılamak üzere bile ş enler, birimler ve modüller olu ş turulur, aralarındaki ili ş kinin en aza indirgenmesine çalı ş ılır.

27  Birbirlerinden soyutlanan modüllerde bulunan yordam ve veriler üzerinde eri ş im kısıtlamaları sa ğ lanarak bilgi güvenli ğ i artılırır.

28  Bilgi gizleme (information hiding), modüllerin iç yapılarını de ğ erlerinden gizlemek, bu ş ekilde karma ş ıklı ğ ı engellemek ve soyutlamayı arttırmaktır. Bunun yararıda geli ş tirme, testler ve bakım sırasında ortaya çıkarak gereksinim duyulabilecek de ğ i ş iklerden etkilenme en aza indirgenir.

29  Kapsama (encapsulation), tüm isterlerin etkisiz olarak kar ş ılanması amacıyla yordam ve verilerin denetim altına alınmasıdır.

30  Bu ilkelerin sayısını daha da arttırmak mümkündür. Yazılım nitelik etmenlerini tasarıma yansıtmakta bir ilke olarak de ğ elendirilebilir

31  Esneklik, geli ş ebilirlik ve ta ş ınabilirlik özelliklerine tasarım a ş amasında gerekli önem verilmesi ile, bakım sırasında gereksinim duyulan niteliksel özelliklerde kendili ğ inden belirlenmi ş ve ortaya çıkması olası sorunların önüne geçilmi ş olur.

32  Tasarım nitelikleri olarak adlandırılan a ş a ğ ıda sıraladı ğ ımız bu özelliklerin yazılım tasarımı yapılırken sürekli göz önünde bulundurulması gereklidir:

33  İ sterler ile izlenebilirli ğ i olmalıdır.  Geli ş tirilen birimin kodu ve tesleri ile izlenebilirli ğ i olmalıdır.  Programlama dilinden olabildi ğ ince ba ğ ımsız olmalıdır.  İş levselli ğ i, ba ş arımı ve güvenirli ğ i yüksek bir ürün olu ş turulmalıdır.

34  Yürütme sırasında olu ş abilcek hataların ilgili i ş sürecini aksatmayacak ş ekilde kurtarılması sa ğ lanmalıdır.  Ö ğ renmesi ve kullanması kolay bir ürünü hedeflemelidir.  Tekrar kullanılabilir olmalıdır.  Bir ürün ailesin temel olu ş turabilmelidir

35  Kolay anla ş ılmalıdır.  Gerekti ğ inde kolaylıkla de ğ i ş tirilebilmelidir.  Kurumsal tasarım standartlarına uygun olmalıdır.  Di ğ er tasarımlarla birle ş tirilmesi mümkün olmalıdır.

36  Yazılım projelerinde tasarım, projenin büyüklü ğ üne göre, yazılım tasarım uzmanları tarafından yapılır; personel yeterlil ğ ine, deneyime ve projenin karma ş ıklı ğ ına ba ğ lı olarak sistem çözümleyicisi veya proje yöneticisi hatta kodlayıcılar tarafından da yapıldı ğ ı olur.

37  Bazen de, büyük bir sistem bile ş enlere ayrılır ve herbir bile ş enin çözümlemesi, tasarımı ve gerçekle ş tirilmesi ayrı gruplar tarafından yapılır.

38  Yazılım Tasarım Süreci  Yazılım geliştirme sürecinin ana aşamaları daha önce belirtilmişti. Bu aşamalardan ilki olan isterler çözümlemesi daha kurumsal iken, tasaraım,kodlama ve test daha tekniktir.

39  Tasarım aşaması bir tür süreç şeklindedir. B u süreç sonunda ortaya cıkan tasarım, kodlamanın ve testin temeli oldugu için mutlaka yeterli zaman ayrılması gereklidir.

40  Tasarımın niteligini degerlendirebilmek için iyi bir tasarım kıstasların belirlenmesi gereklidir. B u kıstaslar genellikle yazılım geliştirme planında kullanılan standaryla belirtilidir.

41  Yazılım tasarımı sürecinde ve tanımlamalarda rehber olarak aşagıdaki standartlar kullanılabilir:

42  Tasarım için çeşitli yazılım geliştirme yardımcı araçları kullanabilcegi gibi, çeşitli tasarım yöntemleri de kullanılabiliri sonuçta ortaya elektronik yada basılı ortamda çeşitli belgeler çıkar..

43  Tasarım sırasında isterler yazılım geliştirmede kullanılacak ifade lere dönüştürürler.Teknik olarak,süreç başında,bu ifadeler ve gösterim tarzı ve yazılım genel görünüşü oluşturulurken,süreç sonunda tasarım kaynak koda yakın bir hale gelir. Yönetsel olarak bu süreç iki aşamada ele alınır:

44  ön tasarım(preliminary design):İsterlerin veri ve mimari tasarımına dönüştürülmesidir.  Ayrıntılı tasarım(detail design):Veri ve mimari tasarımın ayrıntılı veri yapıları ile algoritmik gösterime dönüştürülmesidir.

45  Her iki aşamanın sonunda resmi gözden geçirme işlemi yapılır.Pek cok projeden bu aşamalar ödemeye esas önemli geçiş noktalarıdır.

46  Yazılım tasarımı,isterler cözümlenmesi sonunda elde edilen bilgilerle gercekleştirilir.Ve kodlamaya esas olacak veri tasarımı,mimari tasarım, yordamsal tasarımive ara yüz tasarımı yapılır.Bu arada gerekli belgeler üretilir.

47  Şekil

48  VERİ TASARIMI  Veri yapıları ve modelleri,birbirleriyle mantıksal olarak ilişkili veririleri yönetilebilir olarak bir arada tutmaya yararlar.bu yapılar ve modeller, veriler arasındaki sıra düzensel ilişkileri ve erişim yöntemlerini belirler.

49  Yapıların düzenlenmesi ve karmaşıklık derecesi tamamen tasarımcı tarafından belirlenir.tasarımcı,veriye erişim yöntemi,hız,etkinlik,büyüklük,işllev bakımından çözümlemesini yaparak en uygun veri tiplerini ve yapıları belirler

50  veri yapıları ve modelleri bu kitabın konusu dışında tutulduğu için yanlızca tanımlama olarak kısaca değinelim:

51  sayısal ögeler,belirli bir temel tipten olup programlama dili ve donanıma göre değişiklik gösterilebilir. örneğin C dilindeki tam sayı,bazı donanımlar için 32 bit,bazıları için 64 bit ile gösterilmektedir.

52  diziler birden fazla aynı tür ögenin ardışık olarak sıralanmasıyla oluşur.Tek boyutlu olanlar bazen vektör adını alır.Dizilerin çok sayıda boyuta sahip olduğu durumda matrisler oluşur.

53  dinamik veri yapıları,programın çalışması sırasında gereksinim duyuldukça bellekde yaratılması ve yönetilmesi esasıuna dayanır.bağlı listeler(linked list),ağaç(tree)ve eşlem(map)yapıları buna örnektir.

54  veri yapılarının ve modellerinin ne şekilde kullanıcağı da ayrı soyutlama kavramlarının kullanımını gerektirir.örneğin,bir bağlı liste,ya"ilk giren ilk çıkar"(first -in first-out)ilkesine dayalı bir yığın(stack)yada rastgele erişimli bir depo olabilir.

55  tasarım sırasında benimsenen soyutlama derecesine göre,veri yapısının iç tasarımı belirtilmeden işlevselliği ön planda tutulabilir.yani,tasarımcı,yanlızca bir yığın kullanmak istediğini belirtebilir,yığının gerçekleşinmine kodlayıcıya bırakabilir.

56  veri yapısı ile veri modeli içiçe geçmiş iki ayrı kavramdır. birisi verinin bellekde tutulması veya saklanmasıyla ilgilenirken diğeri veriler arasındaki ilişki ve bağıntıla konusuyla ilgilenir.

57  veriler üzerinde işlem yapacak olan algoritmalar da bu veri modellerine göre tasarlanırlar.  iyi bir veri tasarımı yapabilmek için aşağıdaki kuralların uygulanmasında yarar vardır.

58  1-işlevsel çözümlemeye verilen önem kadar veri çözümlemesi ve tasarımına da önem verilmelidir.Gözden geçirmeler sırasında veri yapılarının da tasarımı incelenmelidir. önem verilmeyen, göz ardı edilen bir tasarımın başarılı olması beklenemez.

59  2-veri yapıları ve modelleri yanında bu yapılar üzerinde yapılacak işlemlerin de tanımlanması gereklidir. bu tanımlama nesneye yönelik programlamada doğal olarak yapılır;

60  ancak yapısal programlamada özel dikkat gereklidir. nesneye dayalı programlamada kullanılan soyut veri tipleri de veri ve işlemleri içerdiğinden önerilebilir.

61  3-kullanılacak veri yapılarını oluşturan birimlerin türleri,sınırları ve birbirleri ile olan ilişkileri bir veri sözlüğü içinde toplanmalıdır.bu sözlük kullanılarak karmaşık yapıların ve algoritmaların tasarımında kolaylık sağlanır.

62  4-veri yapılarının tanımlanmasında döngüsel bir yol izlenmesi daha uygundur. her şeyin başında iken tüm veri yapılarını en ince ayrıntılarına kadar tasarlamaya çalışmak başarılı bir sonuuç vermeyebilir.

63  bu nedenle, tasarımın başında anahatları oluşturulan veri yapılarının tasarım ilerledikçe alt düzey ayrıntılarını tamamlamak daha fazla yarar ve zamandan kazanç sağlar.

64  5-veri yapıları yalnızca kendilerini kullanan modüllere görünür olmalıdır. bu şekilde "Bilgi Gizleme"ilkesine uyulmuş olur.

65  6-çok kullanılması olası veri yapıları, soyut veri türleri şeklinde önceden geliştirilerek bir kütüphane haline getirilirse,geliştirme sırasında veri yapılarını kodlamak ve test etmek için zaman ayrılmasına gerek kalmaz.

66  Örneğin,bir bağlı liste ve ilgili işlemleri genel amaçlı olarak önceden geliştirilirse,kod yazarken açıkta kalan göstergeç(dangling pointer) veya bellek temizlenmemesi gibi problemlerden sakınılmış olur.

67  Bir başka öneri de, C++ dilinin desteklediği "Standart Template Library" gibi önceden geliştirilmiş hazır ve standart yapıların kullanımıdır.

68  7-Tasarım sırasında, kodlamada kullanılacak programlama dilinin özellikleri dikkate alınarak veri yapıları tanımlanmalıdır.

69  Günümüzde kullanılmakta olan genel amaçlı programlama dillerinde pek sorun yaşanmayabilir;ancak,FORTRAN gibi bir dilde bağlı liste yaratmak mümkğn değildir.

70  8-karmaşık veri yapılarının kullanımı gerekiyors kullanılacak programlama dili soyut veri türlerini(abstract data types) destekleyebilecek şekilde seçilmelidir.

71  Nesneye yönelik bir programlama dili kullanılabilecekse onunla yapısal programlama yapmaya çalışmak pek doğru olmaz.

72 MİMARİ TASARIM Uygulama yazılımı bir problemin çözümünü çeşitli parçalara bölerek sağlayabilir.bu parçaların yazılımdaki karşılığı modüllerdir. Modüllerin sıradüzensel ilişkilerini gösteren yapıya uygulama yazılımı mimarisi denir.

73

74 Yazılım içindeki modüller birer nesneye olabileceği gibi,tasarım veya gerçekleştirim yönteminin özelliğine göre,birer program,birer paket,birer nesne veya birer yordam olabilirler.yapıının çıkış yelpazesi,genişliği ve derinliği modüler yapı hakkındaki önemli ölçütlerdir.

75 Bu modüller ayrıt 2.6 da değindiğimiz genel yazılım mimarileri şeklinde yapılanabilirler. Yazılım mimarisi seçiminde dikkate alınması gerekli noktaları şu şekilde özetleyebiliriz.

76 1-UYGULAMA ALANININ ÖZELLİKLERİ Yazılımın kullanacağı alanın gereksinimlerine göre yazılım birimlerini fiziksel olarak belirli donanım öğeleri üzerinde çalıştırmak gerekebilir.

77 Sistemin merkezi yada dağıtık olması, açık sistem olması, belirli bir amaçla kullanmak üzere tahsis edilmesi yada gömülü sistem olması mimari seçimine etki eder.

78 2-UYGULAMA YAZILIMININ KARMAŞIKLIK DERECESİ Basit uygulamalar,tek program içinde,her türlü arayüz ve bilgi işlemeyi kapsayacak şekilde geliştirilebilirler.

79 Daha karmaşık uygulamalarda,hem geliştirilme hem de yürütme bakımından yazılımı öğelere,öğeleri de birimlere bölmek daha kolay şekilde geliştirme,test ve bakım olanağı sağlar.

80 3-KULLANICI ARAYÜZÜ KISITLAMALARI Bilgi işleme birimleri ile kullanıcı arayüzünün farklı mimariye sahip işlemcilerde çalışması gereken durumlar olabilir.

81 Yüksek nitelikde grafik görüntü verebilen bilgisayarlar her amaç için uygun olmadıklarından bir ayrım yapmak gerekebilir. o taktirde, uygun bir iletişim alt yapısı kullanılması zorunludur.

82 1-TAŞINABİLİRLİK Geliştirilen yazılımın sonradan başka işletim sistemi veya donanım ile kullanılmak üzere farklı ortamlara taşınması gerekiyorsa,katmanlı bir yaklaşımla,asıl yazılımı olası taşıma işinden etkilenmeyecek şekilde tasarlamak gerekir.

83 Bu amaçla,yazılım mimarisi içine uygun katmanlar yerleştirilebileceği gibi iletişimin zorluklarını gidermek üzere bir ara katman mantığı da kullanılabilir.

84  Yordamlar(procedure,function) bilgi işlemeyi gerçekleştirmek üzere yazılım modülünün iç yapısında bulunurlar.bir yordam,veri yapıları,döngüler.karşılaştırmalar, dallanmalar yardımıyla tüm bilgi işleme özelliklerini tanımlamalıdır.

85  Yordamlar arasında da belirli bir yapı gözetilmesi zorunludur.bir yordam içinde başka yordamların çağrılması,yazılım mühendisliği kuralları bakımından gereklidir.

86  Bir modülün tüm işlevlerinin tek bir yordamla gerçekleştirilmesi olası olmadığı gibi,yordam içinde yordam çağırmada aşırıya kaçılmamalıdır.

87  Veri ve program yapılarının tasarımı tamamlandıktan sonra yordamsal tasarım başlar.Yordamsal tasarım,modüllerin iç yapılarındaki algoritmik ayrıntıların tanımlamnmasıdır.

88  Tasarım konuşma diline yakın bir anlatımla yapılabileceği gibi çeşitli şekilsel gösterimlerle de yapılabilir.şimdi yordamsal tasarımın nasıl yapılacağını görelim.

89 YAPISAL PROGRAMLAMA GÖSTERİMİ  Yazılım tarihinin en eski tasarım yöntemlerinden biri işlevleri metinsel bir şekilde anlatmaktır.bu anlatım için genellikle ingilizce kullanılmaktadır.Program tasarım dili(programming Desing Language)adı verilen bir dilde tasarım için tanımlanmıştır.

90  Sözde kod(pseudo) adı verilen bu yöntemle, gerçek programlama dili yapılarına benzer şekilde,ancak daha serbest bir söz dizimiyle her yapı ve her yordam tanımlanır.genellikle ardışık deyimler, koşullu dallanma ve döngüler kullanılır.

91

92  Program tasarım dilleri genellikle ADA veya PASCAL gibi yüksek düzey bir dili andırırlar. özel bir yazılım paketi gerektirmeksizin normal bir metin yazıcı kullanılabilir.

93  Tasarım dili ile yazılmış metin dosyalarını grafiksel bir tasarım yöntemine dönüştürebilen araçlarda bulunmaktadır.Örneğin,bi r yazılım paketi bir tasarım kodunu tarayıp akış diyagramı üretebilir.

94  Piyasadan temin edilebilecek çeşitli tasarım dilleri de vardır. Bunların sahip oldukları ortak özellikler arasında şunlar sayılabilir:

95  1-Her türlü yapıyı destekliyebilen sabit bir anahtar sözcük listesi  2-Veri tipleri ve veri yapıları tanımlama yeteneği  3-Alt program tanımlama ve çağırma düzeneği  4-Bilgi işlemeyi serbest bir dille anlatabilme olanağı

96  5-arayüz tanımlama yeteneği  6-koşul ve çevrim yapıları  7-giriş/çıkış yapıları  8-zaman belirtimleri

97  Bilinen yapıların kullanımı nedeniyle okunması ve takibi kolaydır. Programlama diline yakın olduğu için kodlayıcının işi daha kolaydır.

98  Ancak bu anlatımda aşırıya kaçılır ve gereksiz ayrıntıya girilirse (örneğin anlaşılır olmasına rağmen bir veri yapısının üm alanlarına tek tek veri atmayı göstermek) tasarım uzar,ayrıntıya boğulur ve amacı dışına çıkar.

99  Böyle bir tasarımda,tutarlılığı korumak son derece güç olur. Öte yandan,kod içinde yapılan küçük değişikliklerinde tasarım belgelerine uygulanması gerekir.

100  Bazen bir resim bir çok satırdan oluşan bir anlatımın yerine geçebilir,bu gerçekten hareketle, çeşitli grafiksel gösterim yöntemleri bulunmuş, bu yöntemleri kullanan yazılım tasarım araçları geliştirilmiştir. Ancak, bir şeklin eksik yada yanlış çizilmesi, okuyucunun gösterim simgelerini iyi bilmemesi sonucu tasarımı yanlış anlaması hatalı kodlamaya neden olabilir.

101  Bu nedenle grafiksel gösterimlerin iyi öğrenilmesi ve iyi anlaşılması gereklidir.Şimdi grafik tabanlı gösterim şekillerine biraz değinelim :

102  Yapısal çözümleme ve tasarım yapmak için veri akış diyagramları ve durum geçiş diyagramları kullanılır.bu konudaki ayrıntılı bilgiler yapısal çözümleme kısmında verilmiştir.

103  "Unified Modelling Language"(UML),nesneye yönelik çözümleme ve tasarımın hem metinsel hem de grafiksel olarak yapılabilmesine yardımcı olan uluslararası çevrelerce kabul edilmiş,standart ve yaygın bir tanımlama dilidir.

104  Piyasada bu dili destekleyen çeşitli yazılım araçları ve tümleşik ortamlar bulunmaktadır.UML hakkında tanıtıcı bilgiler Ek-D de Verilmektedir.

105  En eski ve en yaygın program tasarım yöntemlerinden biri akış diyagramları (flow chart) kullanmaktadır. günümüzde bir program çok sayıda modülden veya yordamdan oluştuğundan, çok sayıda akış diyagramı kullanmak gerekebilir.

106  Uzun veya karmaşık yordamlarda iç içe diyagramlar kullanmakda mümkündür.Hazırlanan diyagramlar arası geçişin sağlanması ve tutarlılığın korunması bir miktar zorluk getirir.

107

108  Çeşitli tasarım yöntemlerinde kullanılabilecek görsel anlatımları ve diyagramları ikiye ayırmak mümkündür. Bunlardan ilki olan ve durağan olarak nitelendirilebilecek yapısal tasarım gösterim teknikleri içinde şunlar yer alabilir:

109  1-sınıf nesne diyagramları  2-bileşen diyagramları(component diagrams)  3-konuşlandırma diyagramları(deployment diagrams)  4-Varlık-ilişki diyagramları(entity- relationship diagrams)  5-Yapı diyagramları(structure charts)

110  Dinamik olan davranışsal tasarım için de aşagıdaki tekniklerinden biri kullanılabilir:

111  1-işleklik diyagramları(activity diagrams)  2-işbirliği diyagramları (collaboration diagrams)  3-veri akış diyagramları (data flow diagrams)

112  4-karar tabloları ve diagramları(decision tables)  5-akış diyagramları(flowcharts)  6-Sözde kod(pseudo code)

113  7-Ardıllık diyagramları(sequence diagrams)  8-Etkileşim diyagramları(interaction diagrams)  9-Durum geçiş diyagramları(state transition diagrams)  10-durum diagramları(statechart diagrams)

114 ARAYÜZ TASARIMI  Modüller bir şekilde geliştirilen yazılımın çeşitli arayüzleri bulunur. bunların bir kısmı içsel arayüzler bir kısmıda dışsal arayüzlerdir. içsel arayüzler genellikle yazılımın kendi iç öğeleri,bileşenleri ve birimleri arasındadır.

115  Yazılımın dış dünya ile arayüzü ise başka sistemlerle olabileceği gibi etkileşimli sistemler için kullanıcıyla da olabilir. Tasarım,arayüzün bu özelliğine göre değişiklik gösterir.

116 BİLEŞEN ARAYÜZ TASARIMI  Büyük yazılımlar bir kaç ana öğeden, her bir öğe birkaç bileşenden ya da birimden oluşabilir.bu bileşenler arasında mutlaka tanımlı bir arayüz vardır.Bileşenler ya da birimler birer yürütülebilir program olabilecekleri gibi,bir program grubuda olabilirler.

117  Daha ince tanelikli yapılarda ise bileşenler ayrı birer görevcik(thread),hatta birer yordam grubu olabilirler.Bağımsız birer süreç halinde geliştirilen bileşenler birbiriyle işletim sisteminin sağladığı çeşitli alt düzey iletişim düzenekleriyle haberleşirler.

118  Örneğin, Unix tabanlı işletim sistemleri için bağlantılar(socket),ileti kuyrukları(message queue),paylaşılır bellek parçaları(shared memory) ve semaforlar kullanılır. Bu düzenekler yardımıyla arayüzü oluşturan iletilerin veya uzaktan yordam çağrılarının(remote procedure call) gerçekleştirimi yapılır.

119

120 Bileşenler arası Arayüz tasarlarken dikkat edilmesi gerekenleri şöyle özetleyebiliriz:

121  1-Arayüz anlaşılır yapıya sahip ileti ya da yordamlardan oluşmalıdır.  2-İleti tabanlı arayüzlerde başarım için ileti boyutu uygun şekilde ayarlanmalı, çok kısa ve çok uzun iletiler kullanılmamalıdır.

122  3-Büyük miktarda veri aktarımı için ileti yerine ortak bir veri deposu ve aktarılıcak verinin adresi kullanılmalıdır.  4-Arayüzler belirli bir veri tipine bağımlı olmamalıdır.

123 KULLANICI ARAYÜZ YAZILIMI TASARIMI  Bilgisayar sistemlerinin hemen hemen hepsi insanların denetiminde çalısırlar. Bu nedenlede kullanımı kolay,etkili ve açık bir arayüze sahip olmalıdırlar.

124  Sistemler genellikle standart bir bilgisayarın arayüzü ile denetlenirler. Yani, bir klavye ile girdi sağlanır ve ekranda çıktı görülür.

125  Bunlar dışında basılı çıktılar,çeşitli göstergeler çıktı için kullanılabileceği vibi çeşitli tuş takımları, işaretçi ayar düğmeleride girdi için kullanılabilir.

126  Önemli olan,uygulama alanında en uygun kullanım olanağını sağlayacak yöntemi bulmak,uygulamak ve en iyi etkileşimi sağlamaktır.

127 SİSTEM-ALTSİSTEM ARAYÜZ YAZILIMI TASARIMI  Çogu sistem birkaç altsistemi tümleştirerek daha büyük sistemler elde etmek üzere tasarlanır. Tümleştirme için altsistem arayüz yazılımları kullanılır.bu yazılımlar denetledikleri alt sistemlerin gerektirdiği iletişim protokollerini destekleyerek veri alışverişini sağlarlar.

128

129  Arayüz yazılımları tümleştirilen altsistemin özelliğine göre çok çeşitli yapıda olabilirler.Alt sistemden gelen veriler Veri alıcı modul ile arayüz donanımından okunur.

130  Bir veri katarı şeklinde olan bu ham veri,Arayüz isterleri Belirtiminde yada teknik anlaşmada anlatılan yönteme göre ve sınır kontrolü yapılarak tüm alanları anlaşılabilir iletiler haline dönüştürülür.

131  İletinin adına göre bir dallanma yapılarak içindeki veriler işlenmek üzere alınır ve bilgi haline getirilir.bu bilgiler ana sistemin kullandığı arayüze sistem girdisi yada bir komutun yanıtı olarak gönderilir,aynı zamanda sistem içinde bulunan ortak veri yapılarıda tazelenir.

132  Ana sistemden gelen çıktılar yada komutlar arayüz giriş biriminde işlenerek ortak yapıların da yardımıyla iletiler oluşturulur.

133  Bu iletiler protokole gore veri katarına çevrilerek arayüz donanımına yazılır.Ana sistemden gelen komutlara göre bir test çevrimi başlatmak yada durum bilgisi almak mümkündür.

134  Bazı altsistemler düzenli aralıklarla haberleşmek isteyebilirler.Bu iletileri üretmek,zaman aşımlarını denetlemek ve artık toplamak üzere bilgisayar saatini kullanan bir periyodik işlem birimi kullanılabilir.

135  Bu işlevler yanında,altsistem arayüz yazılımı tüm birimlerden gelen hata iletilerini toplayıp raporlama ve sonradan çözümleme amaçlı olarak kaydetme yeteneğine sahip olmalıdır.Her altsistem,ana sisteme kendi durumu hakkında sürekli rapor(heart- beat)vermelidir.

136 TASARIM YÖNTEMLERİ İyi bir tasarım için belirli bir yöntemi seçip kurallarıyla uygulamak gereklidir.hangi tasarım yöntemi veya aracı seçilirse seçilsin iyi kullandığı takdirde pek çok yarar sağlar.

137 Ancak eksik yada hatalı kullanım geliştirilecek yazılımında hatalı olmasına neden olur.çünkü kodlama tasarıma dayanarak yapılır.projede resmi tasarım tekniklerinin benimsenmesi bazı etmenlerden dolayı engelleniyor olabilir.

138 Bunlar arasında,proje sürelerinin yeterli olmaması, tasarım araçlarına yeterince yatırım yapılmaması,gerekli eğitimlerin alınamaması,üst yönetimden yeterli desteğin sağlanamaması,yazılım geliştirme personelinin isteksizliği gibi nedenler sayılabilir. yinede belirli bir yöntem seçilerek kurallara göre uygulanması için çaba harcanmalıdır.

139 Yazılım tasarımında kullanılabilecek pek çok yöntem bulunmaktadır.Bu yöntemleri şu şekilde listeleyebiliriz:

140 1-Böl ve yönet(divide-and-conquer) 2-Tümevarım(bottom-up) 3-Tümdengelim(top-down) 4-Aşamalı ayrıntılandırma(stepwise refinement) 5-Buluşsal yöntemler(heuristic methods)

141 6-Deneme yanılma yaklaşımı(iterative approach) 7-Artımlı yaklaşım(incremental approach) 8-İşleve yönelik tasarım(function-orient design)

142 9-Yapısal tasarım(structural design) 10-Veri akışına yönelik tasarım(dataflow-orient design) 11-Nesneye yönelik tasarım(object-orient design) 12-Veriye yönelik tasarım(data-orient design)

143 Tasarım oldukça geniş bir konu olduğu için,bir burada en yaygın olarak kabul edilen yöntemlerden bir kaçının özelliklerine değinmek istiyoruz.

144 Bunlar yapısal tasarım(structral design),veri akışına yönelik tasarım(data-flow-orient design),nesneye yönelik(object- oriented)tasarım ve veriye yönelik (data-oriented) tasarımdır.

145 VERİ AKIŞINA YÖNELİK TASARIM Yazılım isterleri çözümlemesinin bir parçasının bilginin çözümlenmesi olduğuna değinmiştik.Bilgisayar tabanlı bir sistemde,bilgi belirli bir şekilde sisteme girer,çeşitli aşamalarda değişikliğe uğrar ve sistemden çıkar.

146 Yazılım tasarımında bu bilgi akışı dikkate alınarak veri akış diyagramları(data flow diagram)kullanılır.Bu diagramlara daha önce yapısal çözümleme kısmında değinmiştik.

147 Veri akışına yönelik(data flow-oriented)tasarım yönteminde verilerin değişim şekilleri program yapısına uyarlanır.

148 Bu yöntem modüler yaklaşım,yukarıdan aşağı tasarım modeli ve yapısal programlama ile birleştirilerek oluşturulmuştur.Her ikiside aynı özellikleri taşıdığından yapısal tasarıma ayrıca değinmeyeceğiz.

149 Veri akışına yönelik yöntemin çok çeşitli uygulama alanları vardır.Aslında,her türlü yazılım bir veri akış diagramıyla gösterilebilir.

150 Ancak veri akışına yönelik yaklaşım,özellikle sıra düzensel veri yapılarının bulunmadığı ve bilgilerin ardışık olarak işlendiği yazılımlar için daha kullanışlıdır.

151 Karmaşık sayısal çözümleme yazılımları,mühendislikle ilgili çeşitli yazılımlar ve kontrol sistemleri yazılımları örnek olarak verilebilir.

152 Bu yöntemin biraz daha genişletilerek gerçek zamanlı ve kesme kontrollü uygulamalarda kullanılması sağlanmıştır.veri tabanı sistemleri,uzman sistemler,nesneye yönelik arayüzlerin bulunduğu sistemlerde diğer yöntemlerin kullanılması daha uygun olur.

153 Yazılım isterlerini veri akışına yönelik olarak tasarıma aktarabilmek için bilgi akışının program yapılarına dönüştürülmesi gereklidir.

154 Bu amaçla bilgi akışının,sınırların,işleme şeklinin ve yapıların tanımlanması gereklidir.Tanımlaama için kullanılacak veri akış diyagramlarında gösterim şekli olarak iki tür bilgi akışı yer alır.

155

156 DÖNÜŞÜM(transform)AKIŞI: Her sisteme dış dünyadan bir giriş vardır.Girişler sistem içinde işlenir ve dış dünyaya çıkış şeklinde gönderilir.Giriş akışı,sistemin dönüşüm merkezinde işlenir ve çıkış haline dönüşür.

157 Her giriş bu merkezde ardışık bir sıra ile işlenir ve bir dönüşüm akışını oluşturur.

158 ARA-İŞLEM(transaction)AKIŞI: Giriş şeklinde gelen bir veri akışı,bir veri öğesine göre,çeşitli akış yollarından birine yönlendirilerek bir başka veri akışını tetikleyebilir.

159 Bu şekilde bir ara işlem akışı oluşur.Her akışda ara-işlem değerlendirilerek elde edilen değere göre bir hareket yolu seçilir.

160 TASARIM AŞAMALARI veri akışına yönelik tasarım,akış diyagramının incelenmesiyle başlar.Önce akış türleri belirlenir ve akışın sınırları çizilir. Dönüşüm ve ara- işlem merkezleri belirlenir.

161 Sınırların yerine göre dönüşümleryani daire ile gösterilen süreçler,birer modül olarak program yapısı ile örtüşür hale getirilirler.

162 Tanımlama ve örtüşmenin yapılışı dönüşüm ve ara-işlem çözümlemeleri ile gerçekleşir

163 Süreçlerle yapıların hassas bir şekilde örtüşmesi, yürütme denetiminin yukarıdan aşağı doğru süreçlere dağıtılmasıyla yapılır. Bu aşamada modülerlik özelliğinin korunmasına dikkat edilir.

164  DÖNÜ Ş ÜM ÇÖZÜMLEMES İ  Dönü ş üm çözümlemesi,program yapısını olu ş turmak üzere, isterler çözümlemesi sırasında yapılan i ş in tekrar gözden geçirilmesiyle ba ş lar.

165

166  yazılım isterleri belirtiminde anlatılan sistem özellikleri ile düzey 0 veri akı ş diyagramı kullanılarak bilgi akı ş ları yapı ve arayüzler incelenir.

167  veri akı ş diyagramı daha ayrıntılı hale getirilerek Düzey 1 ve düzey 2 veri akı ş diyagramları hazırlanır.Bunlar içinde dönü ş üm akı ş özellikleri olanlar aranır.

168  Bu maksatla giri ş den çıkı ş a do ğ ru giden akı ş lar ele alınır.ara-i ş lem dönü ş ümü olup olmadıgına bakılır.

169  bilginin yorumlanarak giri ş e dönü ş türüldü ğ ü ve i ş lenen verilerin çıkı ş bilgisi haline dönü ş tü ğ ü yerler akı ş sınırları olarak çizilir.bu sınırlar arasında kalan süreçler dönü ş üm merkezini olu ş turur.

170  Program yapısı,yürütme denetiminin yukarıdan a ş a ğ ıya da ğ ıtımının bir gösterimidir.

171  bu yapının olu ş turulması amacıyla ayrı ş tırma yapılır,giri ş,karar verme,bilgi i ş leme,çıkı ş ve bazı di ğ er toplu i ş lerin yapıldı ğ ı modüller belirlenir.

172  önce,giri ş,dönü ş üm ve çıkı ş akı ş ları üzerinde bulunan süreçler modüllere da ğ ıtılır,sonra da kalan süreçler en uygun modüllere bölü ş türülür.

173  genel tasarım ilkeleri göz önüne alınarak program yapısı iyile ş tirilir.bir kısım modüller birle ş tirilir yada daha küçük parçalara ayrılır.sonuçta iyile ş tirilmi ş bir program yapısı elde edilir

174  ARA İŞ LEM ÇÖZÜMLEMES İ  ara i ş lem çözümlemesinde izlenen yol a ş a ğ ı yukarı dönü ş üm çözümlemesinde oldu ğ u gibidir.Aralarındaki temel fark veri akı ş diyagramının program yapısına uydurulmasıdır.

175

176  düzey 0 veri akı ş diyagramı,yada di ğ er adıyla temel sistem modeli incelenir.  veri akı ş diyagramları gözden geçirilir ve gerekiyorsa düzeltme yapılır.  veri akı ş diyagramının neresinde dönü ş üm,neresinde ara-i ş lem akı ş ı oldu ğ u ara ş tırılır.

177  bir giri ş ve birden fazla çıkı ş olan süreçler ara-i ş lem merkezi olarak belirlenir ve her çıkı ş yani her eylem yolu için akı ş özellikleri tanımlanır.giri ş yolu yani ara- i ş lem akı ş ı ile çıkı ş yolları için sınırlar çizilir.

178  ara i ş lem akı ş ı,da ğ ıtıcı(dispatcher)bir program yapısına uydurulur.giri ş e göre yapılacak bir dallanmada kullanılacak modüller tanımlanmı ş olur.

179  genel tasarım ilkeleri göz önüne alınarak program yapısı iyile ş tirilir.modüllerin bazıları birle ş tirilerek veya daha küçük parçalara ayrılarak program yapısı iyile ş tirilir.

180  MODÜLER TASARIM  veri akışına yönelik tasarımla oluşturulan program yapısı üzerinde bazı düzenlemeler yapılarak etkin bir modüler,yani birimsel tasarım elde edilebilir.sistem parçalara ayrıldıkça,her parçanın karmaşıklık derecesi azalacak,dolayısıyla da sistemin toplam karmaşıklığı düşecektir

181  modül sayısının çok az olması yeterli soyutlama ve ayrıştırma sağlamaz dolayısıyla da gerçekleştirimde yarar sağlamaz.modül sayısının çok fazla olması da hem iş gücünü hemde arayüzleri arttırır,tümleştirme güçlükleri yaratır.

182  modüllerin sıra düzensel yapısının gösterildiği sistem yapısında oluşan derinlik veya genişlik çok fazlaysa azaltılmalıdır.

183  Bunun için denetim ve karar verme yapıları yukarıya çekilmeli,yalnızca çağrılarak kullanılan yapılar alt düzeyde tutulmalıdır.

184  TASARIM ANLATIMI  iyi bir mimari tasarım için dönüşüm yada ara-işlem çözümlemesi yanında iyi bir anlatımda gereklidir.Bu amaçla yazılım tasarımının belgelendirmesi yapılır.

185  Genel olarak tasarım tanımlaması(design description) adını taşıyan belge içinde,her modül için yapılan işin metinsel anlatımı,arayüzün tanımı,yerel ve evrensel veri yapılarının tanımı,bellek,işlemci ve zamansallık gibi kısıtlamaların belirtimi bulunur.Karar verme düzenekleri ve giriş/çıkışlar belirtilir

186  Her yazılım geliştirme işlemi gibi bu ön tasarımında bi gözden geçirmesi yapılır,bulunan eksiklikler giderilir,gerekirse iyileştirme yapılır.Bundan sonrada takip eden aşama olan ayrıntılı tasarıma geçilir.

187  NESNEYE YÖNELİK TASARIM  Nesneye yönelik çözümleme ve tasarım günümüz yazılım geliştirme ortamlarının en yaygın kavramlarınından biridir.Çoğu zaman büyük bir kurtarıcı olarak algılanmasına rağmen gerçekte böyle bir kurtarıcı bulunmamaktadır.

188  Nesneye yönelim,daha geleneksel olan işlevsel çözümleme ve veri akış yöntemlerine göre daha değişik bir yaklaşım gerektirmektedir.

189  Nesneye yönelik çözümleme ile nesneye yönelik tasarım arasında kesin bir ayrım yapmak bazen mümkün değildir.

190  Temel olarak çözümleme bir sınıflandırma etkinliği olarak değerlendirilebilir.bu aşamada problem çözümü için kullanılacak nesnelerin ait olacağı sınıfların belirlenmesi için çalışma yapılır.Tasarım aşamasında sınıflardan yaratılan nesneler ve onların aralarındaki ilişkiler tanımlanır

191  nesneye yönelik tasarım en basit şekliyle işlemlerden cok nesne kullanan bir düşünceye dayanır. bu düşünceyi destekleyen programlama dilleri de porgramın nesne adı verilen küçük parçalara bölebilmeyi saglayan özel yapılara sahiptir

192  nesnenin iç yapısında durum bilgileri ve arayüzs olarak tanımlanan işlemler, yani yordamlar kümesi bulunur bu işlemlerle durum bilgisi üzerinde degişiklik yapılabilir

193  nesneye yönelik tasarımın gerçekleştirilibeilmesi için mutlaka nesneye yönelik bir porglamlama dili kullanılması zorunlu degildir ;ancak nesneye yönelik tasarımın tüm özelliklerden yarar saglayabilmek,

194  bu yararı acık ve kodlama görebilmek için nesneye yönelik bir dil seçilmelidir. eger bu saglanmazsa nesneye dayalı bir dil ile veya o halde getirilmiş yapılara desteklenen bir dil kullanılmalıdır.

195  tasarımcılar artık problemleri önceden tanımlanmış veri ve denetim yapıları kullanılarak cözmek zorunda degillerdir.

196  nesneye yönelim ile kendi tasarladı soyut veri yapılarını ve işlevsel kapsamayı kullanarak gerçek dünya problemlerinin cözebilir duruma gelmişlerdir. Bu amaçla kullanılan temek soyutlama birimide nesnedir.

197  diger tasarım yöntemleri gibi nesneye yönelik tasarım yöntemi de bir dizi tanım, gösterim şekli ve yordan kullanmaktadır.

198  bunlar, kullanılan araç veya dile göre küçük farlılıklar gösterseler de temelde aynıdırlar. en önemli ortak özellik olan nesne gerçek dünyadaki varlıkların yazılım alanına uyarlanmasında kullanılır.her nesnenin bir ayayüzü bir veri yapısı ve bir dizi işlemi vardır

199

200  nesneler birbirleriyle ilişki veri ve işlemleri bir arada tutarak kapsama (encapsulation ) ve iyi tanımlanmış bir ayayüz ile modülerlik ilkeleri destekler.

201  nesnenin genel kısmı herkeze acık ve paylaşılır verileri içerirken özel kısmında yanlızca kendisi tarafından kullanılan veriler bulunur. böylelikle de bilgi gizleme (informatinon hiding ) ilkesi desteklenmiş olur

202  nesneye yönelik tasarım aşamalarına geçmeden önce nesneye yönelimin temel özelliklerine degmekte yarar vardır

203  TEMEL ÖZELLİKLER nesneye yönelik tasarım yönteminin en temel özellikleri şunlardır:

204  kapsama(encapsulation) ;  bir veri yapısı ve onun üzerinde işlem yapan bir grup yordamın iyi tanımlanmış bşr arayüzü olan, erişimi ve kullanımı kolay bir yapı içine konmasına kapsama denir

205  nesneye yönelik tasarımda bu yapı nesnedir ve gönderilen iletilerle arzu edilen işi yapması saglanır. her nesne belirli bir veri grubunu ve işlevleri kapsar;

206  farklı veriler farklı nesnelerde yer alır sınıfların ve onlardan yaratılan nesnelerin adları kapsamlarını en iyi tanınlayacak şekilde seçilir

207 Öğr. Gör. Mevlüt İNAN


"YAZILIM TASARIMI. Yazılım tasarımı Tasarım, herhangi bir mühendislik ürünü geli ş tirme sürecindeki ilk adım sayılabilir. Tasarımcının amacı, geli ş tirilecek." indir ppt

Benzer bir sunumlar


Google Reklamları