Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

YAZILIM TASARIMI.

Benzer bir sunumlar


... konulu sunumlar: "YAZILIM TASARIMI."— 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
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
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
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
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
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
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 Öğrenmesi ve kullanması kolay bir ürünü hedeflemelidir.
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 Gerektiğinde kolaylıkla değiştirilebilmelidir.
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
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
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
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
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 YORDAMSAL TASARIM 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
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,bir 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
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
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
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 GRAFİKSEL GÖSTERİM 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 1-YAPISAL ÇÖZÜMLEME VE TASARIM
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 2-UML "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 AKIŞ DİYAGRAMLARI 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 DİĞER ŞEKİLDE GÖSTERİMLER
Ç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 4-Arayüzler belirli bir veri tipine bağımlı olmamalıdır.
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
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
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
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 AKIŞ TÜRLERİ 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
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
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
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
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
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 6.5.1 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." indir ppt

Benzer bir sunumlar


Google Reklamları