Algoritma GeliştirmeYazılım Mühendisliği

Yazılım Tasarımı(Software Design)

image_pdfimage_print

Yazılım Nedir ? Hem bilgisayar sistemini oluşturan donanım parçalarının yönetimini hem de kullanıcıların işlerini yapmak için gerekli olan konular topluluğuna yazılım denir.

Tasarım ise herhangi bir mühendislik ürünü geliştirme sürecindeki ilk adım sayılabilir.

Bir kodlayıcı , ne kadar iyi olursa olsun , bir tasarım yapıp onu yeterli bir şekilde yazılı hale getirmedikten sonra verimli bir geliştirme yapamaz .

Yazılım tasarımı , Bir binanın temeline benzetilebilir yeteri kadar sağlam olmayan bir  temel üzerine plansızca inşa edilen katlardan inşa edilen katlardan oluşan bir binanın depreme dayanıklı olması da beklenemez. Ayrıca üzerine başka katlarda çıkmak da mümkün olmayabilir.

Tasarımın temel amacı, ziyaretçi ile içerik arasında gerçekleşen iletişimi kolaylaştırmaktır. Ziyaretçilerin içeriği özgürce keşfedebilecekleri arayüz çalışmasını geliştirmek öncelikli prensip olmalıdır.

 Tasarım Aşaması (Design stage)

Tasarım, yazılımın testine kadar her şeyi etkilediğinden nitelik unsurunun öne çıktığı  ilk aşama olma özelliğini taşımaktadır. Yazılım geliştirme sürecinin ana aşamalarından ilki olan isterler çözümlemesi daha kuramsal iken , tasarım, kodlama ve test daha tekniktir.

Tasarım aşaması bir tür süreç şeklindedir. Aşamalar halinde sürdürülen bu süreç sonunda ortaya çıkan tasarım , kodlamanın ve testin temelini oluşturduğu için  mutlaka yeterli dikkat ve zaman ayrılmalıdır.

Tasarımcılar , sistem tasarımının yapılması , sisteminin yazılım öğelerinin tasarlanması , öğeler de yer alacak standart yazılım birimlerinin belirlemesi ve bu uygulama için hazırlanması , iç yapılarının tasarlarken sıfırdan başlamak zorunda değildir. Daha önce benzer bir iş yapılmış ve başarılı olduğu görülmüş bir tasarım tekrar kullanılabilir.

Tasarımın birinci amacı her zaman basitlik olmalıdır. Çünkü anlaşılır ve basit bir tasarım hem kodlamada hem de sonraki değişikliklerde kolaylık sağlar . Sistem öyle tasarlanmalıdır ki bir dizi değişiklik yapılsa bile sistem hala basit kalabilmelidir. Bunun için veri yapılarında esneklik sağlanmalı, Programlama dilinin sağladığı kolaylıklar göz önüne alınmalıdır.

Basit tasarım , yetenekleri ve özellikleri kısıtlı tasarım olarak algılanmamalıdır.

 

Tasarım Nitelikleri(Design Attributes)

  • İşlevselliği , başarımı ve güvenilirliği yüksek , nitelikli bir ürün oluşturmak ana hedef olmalıdır.
  • Öğrenim ve kullanım kolaylığı göz önünde tutulmalıdır.
  • Tasarımın isterler ile izlenebilirliği olmalıdır.
  • Geliştirilen birimin kodu ve testleri ile izlenebilirliği olmalıdır.
  • Tasarım programlama dilinden olabildiğince bağımsız , kolay anlaşılabilir kolay değiştirilebilir Ve tekrar kullanılabilir olmalıdır.
  • Yazılım projelerinde tasarım , projenin büyüklüğüne göre yazılım tasarım uzmanları veya yazılım mimarları tarafından kullanılır.

 

 

Yazılım Tasarım  Süreci(Software Design Process)

Genelde bir bütün olarak düşünülmesine rağmen yazılım tasarım aşaması da adımlar halinde gerçekleştirilir. En önemli adımlardan biri veri tasarımı olup , çözümleme sırasında toplanan bilgilerin ve bilgi yapılarının yazılımda kullanılacak veri yapılarına dönüştürülmesini içerir.

Tasarım sırasında isterlerin yazılım geliştirmede kullanılacak ifadelere dönüştürülmesi ana amaçtır. Teknik olarak, süreç başında , bu ifadeler ve gösterim tarzı ile yazılımın genel görünüşünü oluşturulurken , süreç sonunda tasarım kaynak koda yakın bir hale gelir.

 

Veri Tasarımı(Data Design)

Veri , Bilgilerin işlenmemiş halidir. Örnek Verecek olursak Öğrenci bilgi Sistemindeki(Obis) öğrencininAdi , ÖğrenciniSoyadi, ÖğrencininNumarasi  Veya şirkette çalışan personelAdı, PersonelSoyadi,PersonelCalistigi Departman bunların hepsi veriye örnektir.

Veri yapısı , Bilgisayar ortamında verilerin ,etkin olarak saklanması ve işlenmesi için kullanılan yapıya denir.

 

Veri modelleme, bir işletmenin, kurumun hatırlamaya değer bulduğu verilerin şekil ve metin olarak ifade edilmesidir.

Veri Yapıları ve veri modelleri , Birbirleriyle mantıksal olarak ilişkili olan verileri yönetilebilir  şekilde bir arada tutmaya yararlar.  Bu yapı ve modeller,  veriler arasındaki sıradüzensel ilişkileri ve erişim yöntemlerini de belirler. Yapıların düzenlemesi ve karmaşıklık düzeyi tamamen tasarımcı belirler.

Tasarımcı, veriye erişim yöntemi, hız, etkinlik, büyüklük, işlev bakımından çözümlenmesini yaparak en uygun veri türlerini ve yapılarını belirler.

Veri yapısı ile veri modeli, iç içe geçmiş iki ayrı kavramdır. Birisi verinin bellekte tutulması veya saklanmasıyla ilgilenirken diğeri veriler arasındaki ilişki ve bağıntılar konusuyla ilgilenir.

İşlevsel çözümlemeye verilen önem kadar veri çözümlemesi ve tasarımı da önem verilmelidir.

 

İyi Bir Veri Tasarımı Nasıl Olmalı ?(How to Design a  Good  Data)

 

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 tasarımda doğal olarak yapılır . Ancak tasarımda ayrı dikkat edilmelidir.

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ükte kullanılacak karmaşık yapıların ve algoritmaların tasarımında kolaylık sağlanır.

Veri yapıları yalnızca kullanan modüllere görünür olmalıdır . Bu şekilde ‘Bilgi Gizleme’ ilkesine uyulmuş olur.

Çok kullanılacak veri yapıların soyut veri türleri şeklinde önceden geliştirilerek bir kütüphane haline getirilirse , tasarım sırasında bunlarla ilişkilendirilir ve kodlama test için zaman ayrılmasına gerek kalmaz . C, C++ dillerindeki kütüphaneler örnek verilebilir.

Tasarım sırasında, kodlamada kullanılacak programlama dilinin özellikleri dikkate alınarak veri yapıları tanımlanır.

Karmaşık veri yapılarının kullanımı gerekiyorsa kullanılacak programlama dili soyut veri türlerini(abstract data types) destekleyecek şekilde seçilmelidir.

Mimari Tasarım(Architectural Design)

Mimari Tasarım, Sistemin tüm yapısının tasarımı ve sistemin nasıl kurulduğunu anlamayla ilgili aşamadır. Daha net olarak ifade edecek olursak, bu aşamada, sistemin nasıl bir yapı üzerine oturması gerektiği hakkında karar verilir.

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.

 

Yazılım içindeki modüller birer nesne olabileceği gibi, tasarım veya gerçekleştirme yönteminin özelliğine göre, birer programi 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.

 

Uygulama Yazılım Tasarımı

Uygulama alanının özellikleri

Yazılımın kullanılacağı alanın gereksinimine göre yazılım birimlerini fiziksel olarak belirli donanım ögeleri üzerinde çalıştırmak gerekebilir. Sistemin merkezi yada dağınık olması, açık sistem olması, belirli bir amaçla kullanmak üzere tahsis edilmesi veya gömülü sistem olması mimari seçimine etki eder.

Uygulama yazılımının karmaşıklık derecesi

Basit uygulamalar, tek program içinde, her türlü arayüz ve bilgi işlemeyi kapsayacak şekilde geliştirilebilirler. Daha karmaşık uygulamalarda, hem geliştirme hem de yürütme bakımından yazılımı ögelere, ögeleri bileşenlere, onları da birimlere bölmek, daha kolay şekilde geliştirme, test ve bakım olanağı sağlar.

Kullanıcı arayüz kısıtlamaları

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. Bu nedenle, 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.

 

Yordamsal Tasarım(Procedural Design)

Yordam(procedure, function) , bilgi işlemeyi gerçekleştirmek üzere yazılım modülünün iç yapısında bulunan ve belirli işlevleri olan kod parçalarıdır.

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.

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ımlanmasıdır.Tasarım ,konuşma diline yakın bir anlatımla yapılabileceği gibi çeşitli şekilsel gösterimlelr de yapılabilir.

Yordamsal Tasarım Nasıl Yapılır?(How to Do Procedural  Design)

A-)Yapısal Programlama Gösterimi:  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 design language) adı verilen bir dil de tasarım için tanımlanmıştır. Sözde Kod(Psodue) adı verilen yöntem , Gerçek programlama dili yapılarına benzer şekilde ,ancak daha serbest bir sözdilimiyle her yapı ve her yordam tanımlanır.

Program tasarım dilleri genellikle ADA veya Pascal gibi yüksek düzey bir dili andırırlar. Özel bir yazılım paketi getirmeksizin normal bir metin yazıcı kullanılabilir. Tasarım dili ile yazılmış metin dosyalarını grafiksel bir tasarım yöntemine dönüştürülebilen araçlar da bulunmaktadır.

Yordamsal Tasarım Dillerinin Sahip Olduğu Ortak Özellikler
  • Her türlü yapıyı destekleyebilen sabit bir anahtar sözcük listesi
  • Veri yapıları ve veri tipleri tanımlama yeteneği
  • Alt program tanımlama ve çağırma düzeneği
  • Bilgi işlemeyi serbest bir dille anlatabilme yeteneği
  • Arayüz tanımlama yeteneği
  • Giriş/Çıkış yapıları
  • Zaman belirtimleri

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. Ancak , bu anlatımda aşırıya kaçılır . ve gereksiz ayrıntıya girilirse tasarım uzar (örneğin anlaşılır olmasına rağmen bir veri yapısının tüm alanlarına tek tek veri atamayı göstermek gibi), ayrıntıya boğulur ve amacı dışına çıkılır.

B-) Grafiksel Gösterimi: 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 sınucu tasarımı yanlış anlaması hatalı kodlamaya neden olabilir. Bu nedenle grafiksel gösterimlerinin iyi öğrenilmesi ve iyi anlaşılması gereklidir.

Yapısal çözümleme ve tasarım yapmak için veri akış diyagramları ve durum geçiş diyagramları kullanılır.

Unified Modelling Language(UML) : Nesneye yönelik çözümleme ve tasarımın hem metinsel hem de grafiksel olarak yapılanilmesine yardımcı olan uluslararası çevrelerce kabul edilmiş , Standart ve yaygın bir tanımlama dilidir.

 

UML Diyagram Türleri (Tr)

 

UML Diyagram Türleri (ENG)

 

 

Akış Diyagramları (Flow Charts):En Eski ve en yaygın program tasarım yöntemlerinden biri akış diyagramları(Flow Chart) kullanılmaktadır. Günümüzde bir program çok sayıda modülden veya yordamdan oluştuğundan , çok sayıda akış diyagramı kullanmak   gerekebilir.

Basit Flow Chart Kullanımı (Eng)

 

 

Basit Flow Chart Kullanımı (Tr)

Arayüz Tasarımı(interface design)

Arayüz tasarımı, kullanıcının faydalanması amacıyla sunmuş olduğunuz çeşitli yazılımsal ürünlerde onların işini kolaylaştırmak ve dilediklerini yapabilmelerini sağlamak amacıyla gerçekleştirilir. Arayüz tasarımlarının genel prensibi kullanıcı odaklı olmalarıdır.
Kullanıcı odaklı arayüzün mutlaka sahip olması gereken üç nitelik bulunmaktadır. Etkileşimli arayüz, görsel tasarım ve bilgi mimarisi bu üç niteliği oluşturmaktadır.

Kullanıcı odaklı arayüzün mutlaka sahip olması gereken üç nitelik bulunmaktadır. Etkileşimli arayüz, görsel tasarım ve bilgi mimarisi bu üç niteliği oluşturmaktadır.

   Bileşen Arayüz Tasarımı

Büyük Yazılımlar birkaç ana ögeden , her bir öge birkaç bileşenlerden 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 grubu da olabilirler.

   Sistem- Altsistem Arayüz Yazılım Tasarımı

Bilgi sistemlerinin bazıları , başka sistemleri , altsistem veya aygıtları tümleştirerek daha büyük sistemler elde etmek üzere tasarlanırlar .Tümleştirme için özel olarak tasarlanan altsistem arayüz yazılımları kullanılır.
Kullanıcı Arayüz Tasarımı

Bilgi Sistemleri , insanların denetiminde çalıştıkların için kullanımı kolay , etkin ve açık arayüzlere sahip olmalıdırlar. Arayüz tasarımı gerçekleştirmek istiyorsanız öncelikli olarak kullanıcıyı merkeze yerleştirmelisiniz. Kullanıcının beklentilerini karşılayabilmeli, ihtiyaçlarına cevap verebilmeli ve onların eğilimlerini tahmin edebilmelisiniz.

Referanslar(Kaynakçalar)

  • Erhan SARIDOĞAN Yazılım Mühendisliği Kitabı Papatya Yayıncılık,
  • http://baskaisler.com/arayuz-tasarimi
  • http://www.ihs.com.tr/blog/10-arayuz-tasarim-kurali
  • https://www.slideshare.net/TurulCanll/cb-yazlm-mimarisi-ve-tasarm
  • https://sherpa.blog/5-adimda-veri-bilgi-data-gorsellestirme#.We-EY2i0PIU

 

 

Hazırlayan:Necmi Altuk  – Rifai Kuçi

0
0

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir