Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1. Nesneye Yönelik Tasarım İlkay YILMAZ. Nesneye yönelik çözümleme ve tasarım günümüz yazılım geliştirme ortamlarının en yaygın kavramlarından biridir.

Benzer bir sunumlar


... konulu sunumlar: "1. Nesneye Yönelik Tasarım İlkay YILMAZ. Nesneye yönelik çözümleme ve tasarım günümüz yazılım geliştirme ortamlarının en yaygın kavramlarından biridir."— Sunum transkripti:

1 1. Nesneye Yönelik Tasarım İlkay YILMAZ

2 Nesneye yönelik çözümleme ve tasarım günümüz yazılım geliştirme ortamlarının en yaygın kavramlarından biridir.

3 Çoğu zaman büyük bir kurtarıcı olarak algılanmasına rağmen gerçekte böyle bir kurtarıcı bulunmamaktadır.

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

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

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

7 Tasarım aşamasında ise sınıflardan yaratılan nesneler ve onların aralarındaki ilişkiler tanımlanır.

8 Nesneye yönelik tasarımın en basit şekliyle, işlemlerden çok nesne kullanan bir düşünceye dayanır.

9 Bu düşünceyi destekleyen programlama dilleri de programı nesne adı verilen küçük parçalara bölebilmeyi sağlayan özel yapılara sahiptir.

10 Nesnenin iç yapısında durum bilgileri ve arayüz olarak tanımlanan işlemler, yani yordamlar kümesi bulunur. Bu işlemlerle durum bilgisi üzerinde değişiklik yapılabilir.

11 Nesneye yönelik tasarımın gerçekleştirilebilmesi için mutlaka nesneye yönelik bir programlama dili kullanılması zorunlu değildir; ancak nesneye yönelik tasarımın tüm özelliklerden yarar sağlayabilmek, bu yararı özellikle kodlamada görebilmek için nesneye yönelik bir dil seçilmelidir.

12 Eğer bu sağlanmazsa, nesneye dayalı bir dil ile veya o hale getirilmiş yapılarla desteklenen bir dil kullanılmalıdır.

13 Tasarımcılar artık problemleri önceden tanımlanmış veri ve denetim yapıları kullanarak çözmek zorunda değillerdir.

14 Nesneye yönelim ile kendi tasarladığı soyut veri yapılarını ve işlevsel kapsamayı kullanarak gerçek dünya problemlerini çözebilir duruma gelmişlerdir. Bu amaçla kullanılan temel soyutlama birimi de nesnedir.

15 Diğer tasarım yöntemleri gibi nesneye yönelik tasarım yöntemi de bir dizi tanım, gösterim şekli ve yordam kullanmaktadır.

16 Bunlar, kullanılan araç veya dile göre küçük farklılıklar gösterseler de temelde aynıdırlar.

17 En önemli ortak özellik olan nesne gerçek dünyadaki varlıkların yazılım alanına uyarlanmasında kullanılır.

18 Diğer slaytta bir nesnenin ayrıntılı yapısı gösterilmekte ve bir örnek verilmektedir.

19

20 Nesneler birbirleriyle ilişkili veri ve işlemleri bir arada tutarak kapsama (encapsulation) ve iyi tanımlanmış bir arayüz ile modülerlik (modularity) ilkelerini desteklerler.

21 Nesnenin genel kısmı herkese açık ve paylaşılır verileri içerirken özel kısmında yalnızca kendisi tarafından kullanılan veriler bulunur.

22 Böylelikle de bilgi gizleme (information hiding) ilkesi desteklenmiş olur.

23 Nesneye yönelik tasarımın aşamalarına geçmeden önce nesneye yönelimin temel özelliklerine değinmekte yarar vardır.

24 Nesneye yönelik tasarım yönteminin en temel özellikleri şunlardır:

25 ● Kapsama (Encapsulation)

26 Bir veri yapısı ve onun üzerinde işlem yapan bir grup yordamın iyi tanımlanmış bir arayüzü olan, erişimi ve kullanımı kolay bir yapı içine konmasına kapsama denir.

27 Nesneye yönelik tasarımda bu yapı nesnedir ve gönderilen iletilerle arzu edilen işi yapması sağlanır.

28 Her nesne belirli bir veri grubunu ve işlevleri kapsar; farklı veriler farklı nesnelerde yer alır.

29 Sınıfların ve onlardan yararlanılan nesnelerin adları kapsamlarını en iyi tanımlayacak şekilde seçilir.

30

31 Nesneye yönelik programlamanın en önemli özelliklerinden biri olan sınıf, kapsamayı sağlayan bir gruplandırma yapısıdır.

32 İçeriğinde hem veriler hem de işlemler bulunur. Sınıf kendisinden yaratılacak nesneler için bir şablon görevi görür.

33 ● Çokşekillilik (Polymorphism)

34 Çokşekillilik bir ismin birbirleriyle bağlantılı fakat aslında değişik olan birden fazla amaç için kullanılmasıdır.

35 Çokşekilliliğin amacı, bir tek ismi genel bir işlevler kümesini tanımlamada kullanmaktır.

36 Hangi işlevi gerçekleştireceği üzerinde işlem yapılacak veri tipi tarafından belirlenir.

37 ● TEMSILCILIK (DELEGATION)

38 Bir nesnenin kullanımı temsilcilik ya da kalıtımla (inheritance) genişletilebilir.

39 Temsilcilik bir işlemin o nesne tarafından yapılmaması durumunda işlemin o işi yapabilecek bir başka nesneye aktarılması esasına dayanmaktadır.

40

41 Kalıtım, bir sıradüzen şeklinde, bir sınıftan veri ve işlemlerin tekrar kullanım amacıyla devralınmasıdır.

42 Durağan kalıtımda devralınan kod derleyici tarafından türetilmiş nesneye kopyalanır.

43 Dinamik kalıtımda ise, sistem en uygun aktif yöntemi yürütme sırasında seçer ve devralınan kısımla ilgili bir görevcik başlatır.

44 Durağan kalıtım bellek kullanımı dışında oldukça etkin ve güvenlidir.

45 İsteğe bağlı dinamik kalıtımda ise işlemler ve veriler ortak bir yerde tutulur, gerektiğinde bu kod dinamil olarak bağlanır.

46 Tekrar kullanımı en yükseğe çıkarabilmek için birden fazla sınıfın temel sınıf olduğu çoklu kalıtım (multiple inheritance) ortaya çıkmaktadır.

47 Bazı dil ve ortamlarda bu yöntem diğer slaytta gösterilen olası bir soruna neden olabilir.

48

49 Bu özelliklerin tamamının tasarım sırasında dikkate alınması gerçekleştiriminde kullanılacak programlama diline bağlıdır.

50 Bazı diller kapsamayı desteklerken sınıf yapısını desteklemezler; bazıları da kalıtımı desteklemezler.

51 Bu nedenle, nesneye yönelik tasarımdan yararlanabilmek için tasarım aşaması sırasında hangi dilin kullanılacağına karar verilmelidir.

52 1.2. Tipler ve Sınıflar

53 Tip kavramı önceleri belirli bir topluluğun genel özelliklerini temsil etmek üzere küme oluşturmada kullanılmıştır.

54 Örneğin, integer tipi tüm tamsayılar kümesini temsil etmiş, bu kümenin elemanları üzerinde de çeşitli işlemler yapılabilmiştir.

55 Küme içinde altküme adı verilen gruplarda oluşturulabilir. Bu alt kümeleri temsil eden tipler alttip (subtype) adını alırlar.

56 Örneğin; tamsayılar, gerçel sayıların bir alt kümesi olduğundan C’deki int tipi float tipinin alttipidir.

57 C ve C++ dillerinde kullanılan unsigned int ve unsigned char gibi tipler de aslında birer altkümedir.

58 İlk zamanlardaki sayısal hesaplamalar mühendislik ve matematik uygulama alanlarına yönelik olduğundan, hesaplarda kullanılan nesneler ve tipler, günün gereksinimlerine göre, kullanılan dilin değişkenliklerine ve tiplerine karşı düşmekteydi.

59 Fakat programlama dilleri gerçek dünyayı makine dünyasına yansıtmak için bir takım yaklaşımlar ve sınırlamalar yapmak zorundadır.

60 Örneğin, sayı kümeleri gerçek anlamda sınırsız değildirler; gösterilebilecek en büyük ve en küçük sayı değerleri kullanılan bilgisayar donanımının sözcük uzunluğuna ve uygulanan sayı biçimlerine bağlıdır.

61 Bu nedenle int ve float tipleri makinede farklı şekillerde işlem görürler.

62 1.3. Nesne Ve Sınıf İlişkisi Fehmi GÜR

63 Nesnelerle sınıflar arasında bazı ilişkiler kurulmaktadır. Bunlardan en temel onları şöyle sıralayabiliriz:

64 ● Tanımlama İlişkisi

65 Bu ilişki tipler ve sınıflar arasında tek yönlü bir tanımlama için kullanılır.

66 Örneğin, kişi sınıfından türetilen öğrenci sınıfı bu ilişkiye bir örnektir. Bu ilişki daha çok genel özellikleri kapsamak için kullanılır.

67 ● Sahip Olma İlişkisi

68 İki sınıf, bir sınıf ve bir nesne veya iki nesne arasındaki bir ilişkiyi tanımlayan bu tip bir taşıma belirtir.

69 Örneğin, bir bölüm başkanı bir sekreter ve üç asistan ’a sahiptir.

70 Buradaki asistanlar öğrenci sınıfının birer nesnesidir ve bölüm başkanı sınıfının dışında başka bir sınıf tarafından doğrudan kullanılamazlar.

71 Kişi sınıfı belirli bir kavramı tek başına ifade edebilmektedir.

72 ● Kullanılma İlişkisi

73 Bu ilişki, bir sınıfın üye yordamının bir başka sınıfın bir nesnesini parametre olarak kullanması ile meydana gelir.

74

75 Bir sınıf ve bir nesne için gerekli olan yaratma ilişkisi, bir sınıfın yordamı yürütülürken bir başka sınıfın nesnesini yaratmak için onun yapıcısını çağırması şeklinde ortaya çıkar.

76 Burada belirtilen 4 ilişki, varlıklar ve tipler arasında ortak olan mantıksal bağları ifade etmekte, bunların sınıf ve nesneler şeklinde gerçekleştirilmelerinin nasıl yapılabileceğini açıklamaktadır.

77 1.4. Nesneye Yönelik Tasarım Aşamaları

78 Nesneye yönelik tasarımı; nesneye yönelik olmayan programlama dilleri için ve nesneye yönelik diller için olmak üzere iki şekilde incelemekte yarar vardır :

79

80 Nesneler çözümleme aşamasında genel olarak belirlendikten sonra tasarım tanımlaması yapılır. Bu amaçla nesnelerin iki türlü tanımlaması olabilir:

81 ○ İletişim tanımlaması, nesnenin arayüzünü, alabileceği iletileri ve aldığı bir iletiyle ne gibi bir işlem yapacağını anlatır.

82 Genellikle iletinin adını ve her bir ileti için yapılacak işlemleri anlatan bir liste şeklindedir.

83 ○ Gerçekleştirim tanımlaması iletiyi aldıktan sonra nesnenin nesnenin yürüteceği yordamın ayrıntılarını, nesnenin genel ve özel kısımlarının yapısını içerir.

84 Diğer slaytta belirtilen tasarım basamaklarını kılavuz olarak kullanarak ilerlemek başarılı bir sonuç verir ;

85 ▪ İsterler çözümlemesi aşamasında ; - Problem tanımlanarak kapsam belirlenir. Problemin yazılım ile çözülecek kısmı metinsel bir şekilde anlatılır.

86 - Nesneler ve öznitelikleri belirlenir. - Nesnelere uygulanacak işlemler belirlenir. Nesneler ve işlemler arasındaki ilişki ortaya konur ve arayüzler oluşturulur.

87 - Gerçekleştirim için uygun bir programlama dili seçilmesine gayret edilir ve tasarımda kullanılacak yönteme karar verilir.

88 ▪ Nesnelerin öznitelikleri olarak nesne içinde kullanılacak veri tipleri ve veri yapıları tanımlanır.

89 ▪ Her işlem için birer yordam ve yordamlar için ayrıntılar tanımlanır.

90 Nesneye Yönelik Diller İçin Tasarım

91 Nesneye yönelik bir programlama dili kullanmak için yapılacak tasarım nesneye yönelimin tüm özelliklerini ortaya çıkaracaktır.

92 Nesneye yönelik bir programlama dilinin en büyük özelliği sınıf yapısıdır.Sınıfların kullanımıyla yapılacak bir tasarımın adımları şunlardır;

93 ▪ Çözümleme sırasında belirlenen nesneler için veri soyutlaması yapılacak sınıflar tanımlanır.

94 ▪ Soyutlama sağlayan her sınıf için öznitelikler birer yaratım değişkenleri haline getirilir.

95 ▪ Her nesne üzerinde uygulanacak işlemler birer sıanıf yordamı haline dönüştürülürler.

96 ▪ Nesneler arasındaki ilaetişim tanımlanır. Bu amaçla, iletiler alındığında çağrılacak yordamlar belirlenir.

97 ▪ Tasarım bir senaryoya kağıt üzerinde sınanır. Tatmin edici bir başarım sağlaması, yeterli bir hata hoşgörüsüne sahip olması gibi durumlar gözden geçirilir ve tüm ileti alış-veriş seçenekleri denenir.

98 1.5. Nesneye Yönelimde Nitelik Ölçütleri

99 Nesneye yönelimin en büyük özelliği sınıflarıdır. Her biri soyut bir tip tanımlayan bu sınıflardan nesneler üretilir.

100 Sınıf yordamları, yani metotlar, nesnenin iç yapısına erişmek için kullanılır.

101 Bir sınıfın sahip olduğu yordamların sayısı ve her bir yordamın karmaşıklığı bir metrik olarak kullanılabilmektedir.

102 Sınıfların kalıtım yoluyla devraldıkları yordamlar bu metriğin değerini arttırıcı nitelikte olduğundan dikkatli bir çözümleme yapılması gereklidir.

103 ● Kalıtımın Derinlik Ağacı

104 Kalıtım sıra düzeninin oluşturduğu ağacının tepesinden sınıfın bulunduğu yere kadar olan düzey sayısıdır.

105 Bu sayı ne kadar büyük olursa sınıfın kalıtımla devraldığı yordam ve veri sayısıda o kadar artmış olur.

106 ● Türetim Sayısı

107 Kalıtım sıra düzeni içinde bir sınıftan türetilen başka sınıfların toplam sayısıdır.

108 Bu sayı, tasarım ve dolayısıyla da sistem üzerinde bir sınıfın potansiyel etkisinin bir göstergesidir.

109 Türetim sayısının fazla olması temel sınıfın tekrar kullanımını da gösterebilir.

110 1.6. Nesneye Yönelik Tasarım İlkeleri

111 Nesneye yönelik tasarımda genel olarak diğer slayttaki önerilerimizin dikkate alınması iyi bir yazılımı ortaya çıkarmak için önemli bir adım olacaktır:

112 ▪ Eğer iki sınıf arasında önemli ölçüde ortak yanlar varsa bu ortak özellikler bir temel sınıf içinde toplanmalıdır.

113 ▪ Eğer bir sınıf birkaç nesneyi üzerinde tutan saklayıcı bir özellik gösteriyorsa onu kalıp yapmak yararlı olur.

114 ▪ Evrensel veri ve yordam kullanılmamalıdır. Böyle gereksinimler sınıflarla karşılanmalıdır.

115 ▪ Bir başka nesnenin iç verilerine doğrudan erişmeye çalışılmamalı, bunun yerine o nesnenin yordamları kullanılmalıdır.

116 2. Veriye Yönelik Tasarım

117 Veriye yönelik tasarımda, veriyle ilgili işlemler fazla dikkate alınmadığı için veri akış diyagramı kullanılmasına gerek yoktur.

118 Onun yerine veri yapılarının ve yordamlarının tanımlamaları yapılır.

119 Tasarım sırasında genellikle şu işlemler gerçekleştirilir ;

120 ▪ Veri yapılarının özellikleri değerlendirilir.

121 ▪ Verilerin saklama, arama ve erişim yöntemleri, veri yapılarına ait temel gösterim şekilleriyle tanımlanır.

122 ▪ Veri yapıları yazılımın denetim sıra düzeni içindeki yerine göre uyarlanır.

123 ▪ Bundan sonraki yazılımın genel tasarımı yordamsal tanımlama şeklinde yapılır.

124

125 Yazılım mühendisliğinde en yaygın ve etkin yöntemlerden biri olan nesneye yönelik çözümleme ve tasarım yeni bir konunun doğmasına neden olmuştur.

126 Tasarım kalıpları, elde edilen deneyimlerin çıkarılan derslerin ve en iyi sonuçların belgelendirilmesiyle oluşmuş modern mimarilere problem çözme disiplinleridir.

127 3.1. Kalıp Tanıtımı Ve Özellikleri

128 Tasarım kalıpları çözümleyicinin, tasarımcının ve kodlayıcının aynı dili konuşmalarını sağlayarak iletişimi kolaylaştırır.

129 Bir tasarım kalıbı belirli bir bağlam içindeki bir problemi ve onun çözümünü kapsayan bir kuraldır.

130 Kalıpların ortak özellikleri arasında şunlar vardır ;

131 ▪ Deneyimlerle ortaya çıkmışlardır. ▪ Daha büyük problemleri çözmek için beraberce kullanılabilirler.

132 ▪ Çeşitli soyutlama düzeylerinde bulunurlar. ▪ Yapısal bir biçimde yazılırlar. ▪ Tekrar kullanılabilir öğelerdir.

133 ● İsim

134 Kalıbı tanımlamak üzere temsil ettiği bilgiyi ve yapıyı anlatan anlamlı bir isim kullanılmalıdır.

135 İyi seçilmiş isimlerle bir kalıp sözlüğü oluşturularak geniş bir uygulama alanının kapsanması sağlanabilir.

136 ● Problem

137 Problem, kalıbın bağlam içindeki kullanım amacını belirleyen bir açıklamadır.

138 ● Bağlam

139 Problemin oluştuğu ve çözümün arzu edildiği ön koşullardır.

140 ● Kuvvetler

141 Amaçlanan hedefle veya birbirleriyle etkileşen yada çelişen her türlü kuvveti ve kısıtlamaları anlatır.

142 Problemin karmaşıklık derecesini ve uygulamada oluşabilecek istenmeyen durumları gösterir.

143 ● Çözüm

144 Arzu edilen getirinin nasıl elde edileceğini tanımlayan kurallardır.

145 ● Örnekler

146 Kullanıcının kalıbın kullanımını ve uygulanabilirliğini daha iyi anlamasına yardım eden görsel ve metinsel anlatımlardır.

147 ● Sonuç Bağlamı Bahadır AKPINAR

148 Kalıbın uygulamasından sonra oluşabilecek durumları, son koşulları ve yan etkilerini tanımlar.

149 ● Mantık Açıklaması

150 Kalıp içindeki basamakların ve kuralların doğru olduğunun açıklanmasıdır.

151

152 Aynı bağlam yada sistem içindeki kalıplarla bu kalıp arasındaki ilişkiler açıklanır.

153

154 Daha önce kullanıldığı bilinen ve halen var olan uygulamalarda bu kalıbın kullanım şekli anlatılır.

155 3.2. Karşı Kalıplar

156 Bir kalıp en iyi uygulamayı ya da pratiği gösterirken bir karşı kalıp(anti-pattern) çıkarılan bir dersi gösterir. Karşı kalıpların iki şekli vardır;

157 ▪ Kötü sonuçlanan bir problem çözümünde kullanılan kötü bir yöntemi tanımlayanlar (kötü örnek).

158 ▪ Kötü bir durumdan kurtulup iyi duruma geçmeyi tanımlayanlar

159 Karşı kalıplar, çeşitli basılı yayınlarla kullanıcının bilgisine sunulur.

160 Sürekli gelişen bir bilgi topluluğu olduğu için henüz belirli bir standart içinde değildir.

161

162 Kalıp örneklerini geliştirme yapan büyük deneyim sahibi firma, kurum ve kuruluşlarda bulabilmek mümkündür.

163 Bu konuda halen yayınlanmakta olan bir çok kaynakta vardır. Biz şimdi yaygın olarak kullanılan tasarım kalıplarından bazı örnekleri kısa özet halinde verelim:

164 ● Önyüz (Façade)

165 Ön yüz kalıbı, bir nesne grubuna arayüz olacak şekilde dışarıdaki nesnelerin erişebilceği bir tek nesne sağlayarak dışardakilerin grupla haberleşmesini kolaylaştırır.

166 Genelde grup içinde yer alan nesneler arasındaki bağlılık kullanıcılar için karmaşıklık getirir.Oysa kullanıcı karmaşıklığının azaltılması istenir.

167 Bu amaçla bir önyüz nesnesi kullanılarak grup ile kullanıcı arasında soyutlama sağlanır.

168 Kullanıcıların ve nesnenin arkasındaki ayrıntıları bilmelerine gerek yoktur.

169

170 Bu kalıpta bir sınıfın yalnızca bir tek yaratımı (istence) vardır. Bu sınıfın yaratımlarını kullanan diğer nesnelerin tümü aynı yaratımı kullanırlar.

171 Genel olarak özkaynağın merkezden yönetilmesi amacı vardır.

172 Yönetilen özkaynak dışsal bir veritabanı bağlantısı olabileceği gibi, durağan bir değişkende tutulan içsel bir sayaç olabilir.

173 Sınıfın tek yaratımı yürütme başladığı anda belleğe yüklenir. Bu tek yaratıma erişmek için sınıfın durağan bir işlemi bulunur.

174 ● Fabrika (Factory)

175 Fabrika kalıbı, kendisine aktarılan veriye bağlı olarak olası sınıflardan birinin yaratımını döndürür.

176 Genellikle, döndürülebilen tüm sınıfların ortak bir temel sınıfı ve ortak işlemleri vardır, fakat her biri başka tür verileri işleyerek başka işler yaparlar.

177 Her birinin aynı işlemi bulunduğundan kullanıcı açısından hangi sınıfın döndürüldüğü fark etmez, ancak bu sınıf işlemlerinin gerçekleştirimleri farklıdır.

178 Hangi sınıfın nasıl ve neye göre döndürüleceği tamamen fabrikaya bağlıdır. Kullanıcı sınıf, döndürülen sınıflardan tamamen farklıdır.

179

180 Bileşik kalıpla ağaç yapısında, birbirine benzer nesneleri özyineli (recursive) biçimde oluşturarak karmaşık nesneler yaratmak mümkündür.

181 Hatta, tüm nesnelerin ortak bir süper sınıfı olduğu için ağaç yapısındaki nesneler üzerinde daha tutarlı şekilde işlem yapmak oldukça kolaylaşır.

182 Bir belgeyi oluşturan karakterlerin, satırların, metin sütunlarının ve sayfaların gösterimi buna örnektir.

183 Bunları içeren bir bileşik belge nesnesi süper sınıf olarak kullanılarak alttaki nesnelerin yönetimi sağlanır.

184 Bu şekilde karmaşıklık alt parçalara bölünerek azaltılmış olur. Alttaki nesneler ise basit veya bileşik olabilirler.

185 4. Kullanıcı Arayüzü Tasarımı

186 Bilgisayar tabanlı sistemler insanların işlerini kolaylaştırmak üzere geliştirilirler.

187 Ne kadar mükemmel tasarlanmış ve gerçekleştirilmiş olursa olsun, eğer bir sistem kullanıcısına zor anlar yaşatıyorsa tam başarılı sayılamaz.

188 Bu nedenle sistemin insanlarla olan arayüzün çok etkin ve kullanışlı olarak, verimliliği arttıracak şekilde, kullanıcı dostu olarak tasarlanması gereklidir.

189 Bilgisayar tabanlı sistem arayüzünün önemi çok geniş uygulama alanları düşünüldüğünde daha iyi ortaya çıkar.

190 Bir programlanabilir fırın veya çamaşır makinesi, bir cep telefonu, bir tıbbi cihaz, bir uçuş kontrol alt sistemi gibi gömülü sistemlerin arayüzleri, bir veri tabanı işletim sisteminin arayüzü, hele hele günümüzde en yaygın bilgisayar uygulamalarından biri olan internet tabanlı programların arayüzleri insan mühendisliğinin ne kadar önemli olduğunu çok güzel ortaya koyan örnekler arasındadır.

191 Bir sistemin arayüzünü öğrenmek ve etkin bir şekilde kullanmak ne kadar kolay olursa o sistemin yetenek ve işlevlerinden yarar sağlamakta o kadar artar.

192 4.1. İnsan-Bilgisayar Etkileşimi

193 İnsan ile bilgisayar arasındaki etkileşim genellikle görsel, işitsel ve dokunmatik olarak gerçekleşir.

194 Ekrandaki bilgiler görsel iletişimi sağlarken, mikrofon ve hoparlör ile ses bilgileri alınır veya verilir.

195 Bunlar yanında, girdi sağlamak için klavye, mouse, joy-stick, çeşitli özel tuşlar ve giriş aygıtları kullanılır. Tüm bunlara insan-makine arayüzü (Humman-Machine Interface – HMI) adı verilir.

196 Etkileşimin daha çok bilgisayarla yapıldığı durumlarda bu isim İnsan - Bilgisayar Arayüzü (Humman- Computer Interface – HCI) adını almaktadır.

197 Bu şekilde, bir insan, bilgisayardan çeşitli bilgileri alabilir, kendi belleğinde saklayabilir, neden-sonuç ilişkilerini değerlendirebilir ve kendisi yeni bilgiler girebilir.

198 Günümüzde, insan- bilgisayar arasındaki arayüzü daha da iyi duruma getirebilmek için bilimsel ve teknik çalışmalar sürdürülmektedir.

199 Örneğin, bir zamanlar siyah beyaz olan ekranlar sonradan. 16 renk, 256 renk ve en sonunda da milyonlarca rengi desteleyerek gerçeğe en yakın görüşü vermeye başlamışlardır.

200 Aynı zamanda ekranların çözünürlüğü, canlılığı ve büyüklüğü artmış, insan gözünü yormayacak (en az 72 Hz yatay tarama standardı gibi) ve sağlığı tehdit etmeyecek (düşük radyasyon yayımı) hale gelmişlerdir.

201 Tüm bilgisayarlı sistem kullanıcıların aynı anlayış derecesine sahip olduklarını kabul etmek yanlış olur.

202 Kimi kullanıcılar bilgisayara alışkın olduklarından hızlı bir şekilde öğrenip etkin olarak kullanabilirken, kimileri bilgisayarı ancak açıp yavaş bir şekilde kullanabilmektedir.

203 Bir bilgisayar mühendisine çok uygun gelen arayüz, deneyimsiz bir işçi için hiçte uygun olmayabilir.

204 Bu düşünceyle, kullanıcıları üç sınıfa ayırmak doğru olur:

205 ▪ Deneyimsiz: Sistem hakkında hiçbir bilgisi olmayan ancak bir miktar bilgisayar kullanabilen kişilerdir.

206 ▪ Az deneyimli: Sistem hakkında bir miktar bilgisi olan ancak az miktarda kullanım pratiğine sahip kişilerdir.

207 ▪ Çok deneyimli: Hem sistemi hem de kullanımı iyi bilen, hatta daha hızlı kullanabilmek için kestirmeler arayan kişilerdir.

208 Dolayısıyla insan bilgisayar arayüzü, hedef kullanıcının yaş, fiziksel yeterlilik, eğitim ve kültürel durum, dil, kişisel güdü ve amaçlarıyla konu hakkındaki bilgi ve becerisi, hatta teknolojik korkusu dikkate alınarak tasarlanmalıdır.

209 Örneğin, ekran çıktısında bulunan bilgi miktarı karmaşıklığa yol açmayacak kadar az ve öz olmalı, kısaltmalar herkes tarafından anlaşılabilir olmalı, basılacak tuşların isimleri ve sırası kolay takip edilebilmeli, yanlış sırada kullanımları engellemek üzere giriş seçenekleri kısıtlanmalıdır (istenen bir bilgi girilmezse ”Tamam” tuşunun geçerli hale gelmemesi gibi).

210

211 Grafiksel sergileme ortaya çıkmadan önce bilgisayarlarla etkileşim yalnızca klavye ile komut satırlarından yapılmaktaydı.

212 Öğrenmesi oldukça zor ve hata yapma payı çok yüksek olan komut satırı ile işlem yapmak artık geride kalmış sayılır.

213 Ancak, Unix tabanlı işletim sistemleri gibi yaygın bazı sistemler hala komut satırı kullanmakta, büyük bir kullanıcı kitlesi de bu konutlarla daha etkin kullanım sağlayabilmektedir.

214 Fakat uygulama yazılımların çoğunlukla grafiksel kullanıcı arayüzüne sahip olacak şekilde geliştirilmektedir.

215 Günümüzdeki bilgisayar işletim sistemlerinden bir kısmı tamamen pencere sitemine dayalı olarak çalışmakta iken bir kısmı da ek bir pencere yönetim sisteminin (Linux ile X- Windows Sistemi, vb.) çalıştırılmasını gerektirir.

216 Pencere yönetim sistemleri özel olarak geliştirilebileceği gibi yaygın standartlardan biride seçilebilir.

217 Ancak dikkat edilmesi gerek nokta, seçilen standarda uygun olarak yazılım geliştirme olanağı sağlayan yazılım geliştirme paketlerinin (Software Development Kit) kullanılmasıdır.

218 Zira kendi içlerinde standart olsalar da birbirleri arasında uyum olmayan pek çok pencere yönetim sistemi bulunmaktadır.

219 Herhangi bir etkileşimli yazılım iki öğeden oluşur. Burada kullanıcı yazılıma girdi sağlayan ve çıktıları değerlendiren işletmendir.

220 Bilgi işleme ve çözüm üretici kendisine ulaştırılan gerçeklenmiş bilgilerin işlendiği ve eldeki problemin çözülmesi için gereken bilgilerin üretildiği öğedir.

221  ŞEKİL……….

222 4.3. Arayüz Yazılım Mimarisi

223 Bir uygulama yazılımı tek bir yürütülebilir yazılım biriminden, yani programdan oluşabileceği gibi birden fazla birimden de oluşabilir.

224 Pencere sistemi ile uyum sağlayan arayüz yazılımı ya ayrı bir birim halinde geliştirilir ya da aynı birim içine gömülür.

225 Tek birimden oluşan yazılımlarda, bilgi işleme birimleri ile arayüz birimleri aynı bağlam (context) içinde yer alırlar diğer slaytta gösterilen ve birleşik mimari olarak adlandırılan bu yapı, tek işlemciye ait bilgisayarlar için uygundur.

226  ŞEKİL….

227 Birden fazla işlemcisi olan bilgisayarlarda veya tamamen dağıtık mimaride çalışabilmek üzere diğer slaytta gösterilen ayrık mimari kullanılır. Bu mimarinin yararı, bilgi işleme ile arayüz birimlerini birbirinden ayırarak hem geliştirme hem de yürütme bağımsızlığı sağlanır.

228 ŞEKİL….

229 4.4. Arayüz Yazılım Birimleri

230 Arayüz donanımları cinsleri ne olursa olsun mutlaka ana sistemle tümleştirilmeleri gerekir.

231 Tümleştirme işlemi için mutlaka birer arayüz donanımı ve onları etkinleştiren birer yazılım birimi kullanılmaktadır.

232 Örneğin, ekranı uygun grafik özellikte sürmek için yeterli güce sahip bir grafik kartı kullanılmalıdır.

233 Bu kartında uygun bir sürücü yazılımı ile sistemine tanıtılması gerekir.

234 Kullanıcı arayüz yazılımlarının bir kısmı kullanıcı tarafından fark edilmez.

235 Ancak en çok fark edileni şüphesiz ki ekran üzerinden çıkış, klavye ve mouse ile giriş olanağı sağlayan grafiksel arayüz yazılımlarıdır.

236 Günümüzde pek çok işletim sistemi de grafiksel arayüz vermektedir. Bir kısmı da özel paket yazılımlar yardımıyla grafiksel arayüze sahip olurlar.

237 Sistemin kullanıcı arayüz yazılımları grafik özellikleri daha uygun olan ayrı bilgisayarlar üzerinde çalıştırılabileceği gibi, sistem tasarımına ve yazılım mimarisine bağlı olarak, ana sistemle beraber aynı bilgisayar üzerinde de çalışabilirler.

238 Ali Can AKIN

239 Kullanıcı arayüz tasarımı genellikle tasarımcının deneyimine ve uygulama alanını ne kadar tanıdığına bağlıdır.

240 Yazılım geliştirmeye başlamadan önce uygulama alanının özellikleri dikkate alınarak arayüz standartlarının belirlenmesi büyük yara sağlar.

241 Yüksek Nitelik

242 Arayüzün nitelikli olmasını sağlayabilecek bazı nitelikler şunlardır:

243 ▪ Arayüzde kullanılan dil kullanıcının rahatça anlayabileceği ve işini güvenli bir şekilde yapabileceği bir dil olmalıdır.

244 Örneğin, yabancı dilin geçerli olduğu bir kullanım ortamında Türkçe bir arayüz kullanmaya çalışmak anlık çeviri ve algılama güçlüğü yaratabileceğinden arayüzün o dilde gerçekleştirilmesi daha uygun olur.

245 ▪ Arayüzde uygulama alanında yaygın olarak kullanılan teknik terimler veya kısaltmalar kullanılmalıdır.

246 ▪ Bu şekilde hem görsel karmaşıklık giderilir, hem de kullanıcının alışkın olduğu terimlerle çalışması sağlanmış olur.

247 ▪ Arayüz üzerinde tüm bilgiler, uygulama alanına ve gerçeğine uygun olarak mantıksal bir sıralama içinde bulunmalıdır.

248 ▪ Arayüz, olabildiğince tekdüze olmalı, algılamayı azaltacak karışıklıklara yer verilmemelidir.

249 ▪ Arayüz, sistemin o an içinde bulunduğu durum, çalışma kipi, yürütmekte olduğu işlem, hata durumları gibi bilgileri her an kullanıcıya gösterebilmelidir.

250 ▪ Arayüzün değişik bölümlerinde bir etkinliğin başlatılmasında herhangi bir çelişik durum olmamalıdır.

251 Örneğin, dosya açmak için kullanıcı karşısına çıkan bir pencerenin özellikleri, bir dosyayı arayıp bulup onu belgeye ekleyen bir işlev için de aynı görüntüye sahip olmalıdır.

252 ▪ Kullanıcı, arayüzün bir bölümünden diğer bölüme geçtiğinde bir önceki bölümdeki bilgiyi hatırlamak zorunda kalmamalıdır.

253 ▪ Çok gerekli olmadıkça kullanıcı onay isteyen bir uygulama diğer uygulamaların giriş çıkışını durdurmamalıdır; yani tüm giriş odağını üstüne almamalıdır.

254 ▪ Arayüz üzerinde verilen her komutun sistem tarafından doğru algılanıp işleme sokulduğunun bir göstergesi sergilenmelidir. Buna sistemin yanıtı da denilebilir.

255 ▪ Arayüz, az bir öğretim gerektirmelidir. Gerekli olan bilgiler arayüz kullanılırken verilmeli, bir tür kılavuzlama, küçük simgelerle anlatım ve standart terimler kullanılmalıdır.

256 ▪ Arayüz, herhangi bir uygulama tarafından gerek duyulan sesli uygulamalar, görüntülü yardımlar gibi çeşitli çıkış türlerini desteklemelidir.

257 ▪ Sistemin görüntülü, yazılı, sesli ileti ve uyarıları tarafsız bir şekilde hazırlanmış olmalı, kesinlikle kişiselleştirilmemelidir.

258 Uyarı için kullanılan metinler kısa ve öz olmalı, sorunu açıklamalı, suçlayıcı veya incitici ifadeler içermemelidir.

259

260 İnsan-Bilgisayar arayüzü, etkileşimli yazılım sistemlerinde kullanıcı ile bilgi alış verişini sağlayan kısım olduğundan, olabildiğince kullanıcı dostu olması, verimliliğini ve iletişim güvenirliliğini arttırır.

261 Kullanıcı dostu olan bir arayüzünün sağladığı yararlardan bazıları şunlardır:

262 ▪ Kullanıcı, kullanım kılavuzlarını yanında bulundurmak veya kullanmak zorunda kalmadan bilgisayardan yararlanabilir.

263 ▪ Kullanıcı, yazılımı kullanırken birçok bilgiyi aynı anda karşısında görebildiği için çok miktarda bilgiyi belleğinde tutmak ve gerek duyduğunda anımsamak zorunda kalmaz.

264 ▪ Kullanıcı, uygulama alanının terimlerini kullanabilir.

265 ▪ Kullanıcı, yazılımı ve sistem araçlarını kullanırken veya yardım pencerelerinde dolaşırken pencere ve menü seçimlerini kolaylıkla yapabilir.

266 ▪ Kullanıcı, en seri ve doğru bir şekilde bilgi girebilir ve alabilir.

267 Güvenirlik

268 Arayüzü yeterince güvenli olmayan bir sistemin işlevleri ne denli iyi ve yüksek başarımlı olursa olsun kullanıcıya zor anlar yaşattığı ve çöktüğü sürece hiçbir değer taşımaz.

269 Yazılımın asıl bilgi işleme kısmı kadar kullanıcı arayüzünün de güvenilir olması için şunlara dikkat edilmelidir:

270 ▪ Veri veya komut girişi sırasında yapılabilecek hataların birçoğu arayüzden gelecek uyarılar ile önlenebilir.

271 Bu nedenle, giriş arayüzü, hataları önlemek için tüm girdileri görüntülemeli, gerekli tip ve sınır kontrollerini yapabilmelidir.

272 ▪ Çıkış arayüzü tanımlanmış sınırlar içindeki değerleri göstermelidir.

273 ▪ Uygulama alanının özelliğine göre, yapılmış bir işlevi geri almak mümkün olabilmelidir.

274 Yardımlar

275 Grafiksel bir kullanıcı arayüzünün vazgeçilmez özelliklerinden biri her etkileşim aşamasında kullanıcıya yardım verebilmesidir.

276 Yardım olanakları ve menüleri tasarlanırken dikkate alınması gerekli noktalar arasında şunları sayabiliriz:

277 ▪ Yardım tüm işlevleri kapsayabileceği gibi, seçenekli olarak, yalnızca o anda yapılan işlevlere ait olarak da tasarlanabilir.

278 ▪ Yardıma erişmek için bir menüden seçmek, bir tuşu tıklamak ya da klavyeden bir tuşa basmak yeterli olmalıdır.

279 ▪ Yardımdan ana uygulamaya dönmek için iptal veya geri tuşuna basmak, pencereyi kapatmak, kaçış karakteri kullanmak gibi yöntemler benimsenmeli, hiç çıkmayıp bir kenarda tutma özelliği de dikkate alınmalıdır.

280 ▪ Yardım penceresi içinde zenginleştirici eklemelerde yapılabilir. Örneğin:

281 - Arama motoru kullanılması günümüzde pek çok yazılım paketinde yaygın olarak kullanılır hale gelmiştir.

282 - Sıkça sorulan sorular şeklinde verilen yardım da kullanıcının kendi sorunlarını ifade edebilecek hazır yapılar bulabilmesini sağlar.

283 Bazı kullanıcılar uygulama yazılımını yardımdan giderek öğrenmeye çalışırlar. Bu gerçeği göz önünde bulundurarak, yardımların aşamalı olarak, yönlendirici ve uygulatıcı bir yapıya sahip olması yararlı olur.

284 Hatalar Ve Uyarılar

285 Kullanıcı arayüzünün bir özelliği de bilgi işleyici kısmı kullanıcı hatalarından korumak ve hata durumlarında kullanıcıyı uyarmaktır.

286 Bu uyarıların bir kısmı kullanıcının hatalı bilgi girmesinden dolayı yapılırken, bir kısmı geri dönüşü olamayan bir işlem gerçekleştirilmeden önce onay almak için yapılır.

287 Bir kısmı da yazılımın bütünü içinde meydana gelen bir hatayı kullanıcıya bildirmek ve ne gibi bir işlem yapması gerektiğini açıklamakta kullanılır.

288 Bu bildirimler yapılırken diğer slaytlarda belirtilen noktalara dikkat edilmesi yararlı olacaktır.

289 ▪ Kullanıcının bilgi girmesi gerek yerde yanlış biçimde bilgi girmesi ya da eksik alan bırakması durumunda, kullanıcı arayüzü hatalı girişi belirterek gerekli uyarıyı vermelidir.

290 ▪ Görsel uyarılar gerçekten dikkat çekecek şekilde, ekranın ortasına ve gerekli görüldüğü takdirde başka bir iş yapılmasına izin vermeyecek yapılmalıdır.

291 ▪ Hata iletisi sorunu açıklıkla tanımlanmalı, bir takım kod numaraları sergileyerek yazlnızca hata oluştuğunu belirtmekle yetinmemelidir.

292 ▪ Hata iletisi içinde kesinlikle kullanıcıyı suçlayıcı ifadeler yer almamalıdır.

293 Bu tür yaklaşımlar profesyonellikten uzaklaşma anlamına gelir.

294 Yapısal Özellikler

295 Bir arayüzde bulunması gereken yapısal özellikleri de şu şekilde sıralayabiliriz:

296 ▪ Bir arayüzde, kullanım sırasında ortaya çıkabilecek programlama hatalarının düzeltilmesi ya da daha sonra oluşabilecek kullanıcı istekleri ile ilgili değişiklikler kolay ve hızlı olarak yapılabilmelidir.

297 ▪ Mümkünse belirli bir kütüphane kullanılarak standart geliştirme sağlanmalıdır.

298 ▪ Grafiksel kullanıcı arayüzleri için estetik görünüm oldukça önemlidir. Pencerelerde renklendirme aşırıya kaçmadan, belirli bir yöntem izlenerek yapılmalı, tüm nesneler hizalanmalı ve etiketler çok düzgün yerleştirilmelidir.

299 Bu maksatla önceden hazırlanmış standart öğelerin kullanımı sağlanmalıdır.

300 ▪ Arayüz, uzamanlar, yeni başlayanlar gibi farklı kullanıcılar için gerekli işlevleri (kısa yol gibi) sağlamalıdır.

301

302 Tüm sistem yazılımı belirli bir disiplinin uygulandığı geliştirme süreci ile gerçekleştirilir.

303 Kullanıcı arayüz yazılımı da ana sistem yazılımının temel öğelerinden biridir. Kendi içinde bir süreç uygulanarak geliştirilir.

304 Bu süreç yine standart yazılım geliştirme sürecine benzer ve üç aşamadan oluşur.

305 Çözümleme

306 Bilgisayar tabanlı bir sistem genellikle elle yapılan işleri otomatik hale getirmek üzere tasarlanır ve geliştirilir.

307 Otomasyonun ne derece olacağı, işletmenlerin hangi düzeyde devreye gireceği, sistemin girdi ve çıktıları sistem çözümlemesi sırasında belirlenir.

308 Bu çözümleme sırasında, sistemin kullanıcı arayüz isterleride belirlenir. Çözümleyici bu amaçla sistemin amaçlarını ve temel işlevlerini tanımlar.

309 Her amaca karşılık düşen eylemleri ve bunların kullanıcı arayüzünden nasıl başlatacaklarını belirtir.

310 Eylemler sırasında sistemin içinde bulunması gereken durumları tanımlar.

311 Kullanılacak denetim aygıtlarını ve düzenekleri, bu düzeneklerin sistem durumunu nasıl etkileyeceğini açıkça ortaya koyar.

312 Kullanıcıya sistem durumu hakkındaki bilgilerin nasıl sunulacağını, uyarıların nasıl yapılacağını belirtir.

313 Tasarım

314 Sistemin arayüz tasarımı sırasında kullanıcıya ne tür arayüzler sağlanacağı, giriş ve çıkışların hangi aygıtlarla, ne şekilde yapılacağı, hata ve uyarı iletilerinin nasıl verileceği belirlenir.

315 Özel bir donanım ile arayüz gerçekleştirilecekse, donanım tasarımı aşamasında gerekli çalışma yapılmalı, uygulama alanının özelliklerine göre en uygun giriş/çıkış aygıtları seçilmelidir.

316 Yalnızca akran, klavye ve mouse tan oluşan standart giriş/çıkış ile denetlenen bir grafiksel kullanıcı arayüzü bulunacaksa bunun gerekli tasarımı yazılım geliştirme aşamalarında yapılmalıdır.

317 Grafiksel kullanıcı arayüzünü gerçekleştirmeden önce bir ilk örneğini yapmak ve bunu kullanıcı ile gözden geçirmek her zaman büyük yarar sağlar.

318 4.6.3.Gerçekleştirim

319 Arayüz tasarımı çeşitli çizim araçlarıyla yapılabileceği gibi gerçekleştirmede kullanılacak geliştirme aracıyla da yapılabilir.

320 Bu araçlar, önceden geliştirilmiş çeşitli grafiksel şablonlar, tuşlar, menüler ve daha pek çok grafik nesneler sağlayarak çok hızlı geliştirme olanağı sunmaktadır.


"1. Nesneye Yönelik Tasarım İlkay YILMAZ. Nesneye yönelik çözümleme ve tasarım günümüz yazılım geliştirme ortamlarının en yaygın kavramlarından biridir." indir ppt

Benzer bir sunumlar


Google Reklamları