Tez Arşivi

Tez aramanızı kolaylaştıracak arama motoru. Yazar, danışman, başlık ve özetlere göre tezleri arayabilirsiniz.


İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Anabilim Dalı / Bilgisayar Mühendisliği Bilim Dalı

2015

A comparative study on hierarchical state machine pattern and state pattern

Hiyerarşik durum makinesi tasarım kalıbı ve durum tasarım kalıbı üzerine karşılaştırmalı bir çalışma

Bu tez, YÖK tez merkezinde bulunmaktadır. Teze erişmek için tıklayın. Eğer tez bulunamazsa, YÖK Tez Merkezi'ndeki tarama bölümünde tez numarasını arayabilirsiniz. Tez numarası: 389362

Tezi Bul
Özet:

Günlük hayatta durum makineleri önemli bir yere sahiptir. İnsanlar içecek satın almak için satış makinelerini, bilet veya jeton ile metroya binmek için turnikeleri kullanırlar. Etkileşimde bulunduğumuz tüm bu makineler durum makineleri ile modellenmiştir. Bunun dışında çok sayıda problem durum makineleri kullanılarak modellenebilir. İletişim protokolü tasarımı, elektronik devre tasarımı, dil işleme ve diğer mühendislik uygulamaları bu problemlerden birkaçıdır. Sonlu durum makineleri(SDM), yazılım davranışını gerçeklemekte de önemli bir yere sahiptir. SDM'ler karmaşık kurallar ve koşullar kümesini gerçeklemenin kolay bir yoludur. SDM, karmaşık yazılım davranışının programlanmasında basit kurallar dizisi sağlar. SDM'leri yazılımda gerçeklemenin bir çok yolu vardır. Bu konuda araştırma yapıldığında özellikle üç tekniğin çok kullanıldığı görülmektedir. Bu teknikler switch cümlesi yöntemi, tablo yöntemi ve durum tasarım kalıbı yöntemidir. Bu tekniklere ek olarak SDM gerçeklemenin bir diğer yolu da hiyerarşik durum makinesi yazılım tasarım kalıbıdır. Hiyerarşik durum makinesi tasarım kalıbı metodu diğer yöntemlerden gerçeklediği durum makinesinin hiyerarşik durumda olmasından dolayı farklıdır. Durum makinesi gerçeklemek için kullanılan bu yöntemlerin her birinin üstün yönlerinin olduğu gibi sakıncalı yönleri de mevcuttur. Bu tezde durum tasarım kalıbı ve hiyerarşik durum makinesi tasarım kalıbı ele alınmış, bu yöntemleri uygulamanın yazılım kalitesi üzerindeki etkileri araştırılmıştır. GoF tarafından ortaya konulan durum tasarım kalıbının temeli nesne yönelimli olmasıdır. Fakat hiyerarşik durum makinesi yazılım tasarım kalıbı nesne yönelimli değildir. İlk bakışta nesne yönelimli olan yöntemin hiyerarşik olan yöntemden daha etkili olacağı düşünülebilir fakat sağlam temeller üzerine dayanan bir karşılaştırma yapmadan kesin bir kanıya varmak tartışmaya açıktır. Bu tasarım kalıplarının yazılım kalitesi üzerindeki etkisini araştırmak için demiryolu sinyalizasyon sistemlerinde güzergah tanziminden sorumlu olan anklaşman yazılımı benzetiminin bir modülü seçilmiştir. Bu sistemin seçilmesinin nedeni sistemin durum makinesi ile gerçeklemeye uygun olmasıdır. Bunun yanında anklaşman yazılımında durum geçişlerinde ve durumlara giriş ve çıkışta yapılması gereken işlemlerin değişkenlerin set/reset edilmesi, zamanlayıcıların başlatılıp-durdurulması gibi karmaşık olmayan işlemleri içermesi sebebiyle farklı tasarımları uygulamanın etkilerini gözlemlemek daha basit olmuştur. Uygulama olarak benzetim yazılımı aynı işlevsellikte üç kez tasarlanmış ve gerçeklenmiştir. İki sürüm hiyerarşik durum makinesi tasarım kalıbıyla, kalıtım kullanmadan ve kalıtım kullanarak tasarlanmış ve gerçeklenmiştir. Bu sürümler sırasıyla Type-1 ve Type-2 olarak isimlendirilmiştir. Üçüncü sürümde durum yazılım tasarım kalıbı kullanılmış ve Type-3 olarak isimlendirilmiştir. Hiyerarşik durum makinesi tasarım kalıbının kalıtımlı ve kalıtımsız uygulanmasıyla, kalıtımın yazılım kalitesi üzerindeki etkisi araştırılmıştır. Durum tasarım kalıbının kullanıldığı sürümde anlam ifade ettiği sürece kalıtım kullanılmıştır. Type-2 ve Type-3 tasarımlarında durumlar için kullanılan kalıtım ağacı birbirinin aynısıdır. Böylece hiyerarşik durum makinesi tasarım kalıbı ve durum yazılım tasarım kalıbını daha sağlıklı bir şekilde karşılaştırmak mümün olmuştur. Bu tezde gerçeklenen farklı tasarımların karşılaştırması yazılımların kalitesi üzerinden yapılmıştır. Fakat yazılım kalitesi bir çok kişi tarafından farklı değerlendirilebilir; son kullanıcı için yazılım kalitesi kullanım kolaylığı olarak tanımlanırken, testçi için kalite, yazılımın test edilebilirliğidir. Bu çalışmada gerçeklenen tasarımların karşılaştırılması yazılım geliştiricinin bakış açısına göre yapılmış, yazılım geliştiriciyi ilgilendirmeyen özellikler göz ardı edilmiştir. Yazılım geliştiriciyi ilgilendiren yazılım kalite karakteristiklerini bulmak için ISO/IEC-25010:2011 standardı incelenmiştir. Bu belgede bulunan yazılım bakım yapılabilirliğinin, yazılım tasarımıyla en ilgili yazılım kalite karakteristiği olduğu belirlenmiştir. Çalışmadaki bir sonraki adım, gerçeklenen üç sürümün yazılım bakım yapılabilirliğinin nasıl ölçüleceğini bulmak olmuştur. Bu amaçla önceki çalışmalar taranmış ve bazı metrikler bulunmuştur. Bu metrikler Chidamber ve Kemerer tarafından önerilen WMC, DIT, NOCS, CBO, LCOM, RFC ve Lorenz ve Kidd tarafından önerilen NMA, NMO, NIM, SIX metrikleridir. Yazılım dünyası tarafından tasarım kalitesini ölçmek için uzun zamandan beri kullanılan bu metrikler sadece nesne yönelimli yazılımlar için geçerlidir. Durum tasarım kalıbı ile gerçeklenen sürüm bu metrikler ile ölçülebilir fakat hiyerarşik durum makinesi tasarım kalıbı kullanılarak gerçeklenen iki sürüm, nesne yönelimli olmadıkları için bu metrikler ile ölçülemez. Bu sebepten dolayı gerçeklenen tüm sürümlere uygulanabilecek bir metrik kümesine ihtiyaç duyulmuştur. Durum tasarım kalıbı ve hiyerarşik durum makinesi tasarım kalıbı farklı paradigmalara ait olsa da ortak bir özelliği paylaşmaktadırlar. Bu özellik ikisinin de durum makinesi gerçeklemesidir. Bu yaklaşımdan yola çıkarak yeni bir metrik kümesi önerilmiştir. Bu metriklerin tasarlanmasında CK ve LK metriklerinden esinlenilmiştir. Önerilen metrikler NHE, DSIT, NOCS, NEA, NEO, CEH, CEnH ve CexH'den oluşturmaktadır. NHE, DSIT, NOCS, NEA, NEO metrikleri nesne yönelimli yazılım metriklerinde sırasıyla WMC, DIT, NOC, NMA ve NMO metriklerine karşılık gelmektedir. NHE, CEH, CenH ve CexH metrikleri karmaşıklıla ilgili iken DSIT ve NOCS metrikleri kalıtımı ölçmektedir. NEA ve NEO, LK metriklerinde sırasıyla NMA ve NMO metriklerine karşılık düşmektedir. Gerçeklenen üç anklaşman benzetim yazılımı nesne yönelimli yazılım metriklerinden esinlenerek oluşturulan durum yönelimli metrikler ile ölçülmüştür. Karşılaştırmalar, Type-1 ve Type-2 kendi arasında, Type-2 ve Type-3 kendi arasında olmak üzere iki şekilde yapılmıştır. Type-1 ve Type-2 arasındaki karşılaştırma sonuçları, hiyerarşik durum makinesi tasarım kalıbında kalıtımı etkili bir şekilde kullanmanın durumların ortalama karmaşıklıklığını azalttığını göstermiştir. Böyle bir sonucun çıkmasının sebebi kalıtımı etkili bir şekilde kullanarak sorumlulukların durumlar arasında daha dengeli bir şekilde dağıtılmış olmasıdır. İkinci karşılaştırma ise durum makinesi tasarım kalıbı ile gerçeklenen Type-3'ün Type-2'den daha karmaşık olduğunu göstermiştir. Bu sonucun ana sebebi iki tasarım kalıbının giriş ve çıkış işlemlerinin gerçeklenmesinde izledikleri yöntemlerin farklı olmasıdır. Sonuç olarak karmaşıklığın yüksek olmasından dolayı durum makinesi tasarım kalıbı ile gerçeklenen yazılımın bakım yapılabilirlik maliyeti hiyerarşik durum makinesi tasarım kalıbı ile gerçeklenen yazılıma göre daha yüksek olacaktır. Anklaşman yazılımına uygulanan yukarıda bahsi geçen bu farklı tasarımların karşılaştırma sonuçları ilgili konferansta sunulmuş ve yayınlanmıştır.

Summary:

State machines are an indispensable element of our lives. People interact with these state machines in order to purchase products from vending machines, to enter a metro station through a turnstile, and so on. Large numbers of problems can be modeled by the help of FSMs. Communication protocol design, electronic design automation, language processing and other engineering applications are among these problems. FSMs are also important for implementing application behavior. FSM is a very compact way to represent a set of complex rules and conditions. FSMs define simple rules to manage complex behavior of the software. There are many techniques for FSM implementation. If the literature is reviewed, three implementation techniques draw attention; switch statement method, table method, and OO SP. In addition, another technique of implementing a FSM is HSM pattern. HSM pattern is different from other methods because it implements HSMs. All of these techniques have their own advantages and drawbacks. In this thesis study, we focused on SP and HSM pattern. The effects of applying these design concepts on software quality are investigated. SP is OO which is introduced by GoF, however HSM pattern is not. At first glance, OO solution may seem to be more effective than HSM pattern, however without a mathematically grounded comparison, it is open to doubt. In order to investigate the effect of these two design patterns on software quality in a sane way, a module of interlocking software simulator, which is responsible for route allocation for railway traffic management system, is picked up. Same module is designed and implemented three times with the same functionality. Two versions of the module is implemented using HSM pattern with and without inheritance. These implementations are named as Type-1(without inheritance), Type-2(with inheritance). Third version of the software is designed and implemented with SP and named as Type-3. In SP implementation, inheritance is used as long as it makes sense. In this study, we aim to compare SP and HSM pattern from the viewpoint of developers. Additionally, we also study the effect of inheritance in HSM pattern. Software has many characteristics defining software quality. ISO/IEC-25010:2011 standard is reviewed in order to find quality characteristic, which is most important concern of software developers. We found that maintainability, which is a software quality characteristic in the standard, is most related to software design. The next step of the study is to find a way for measuring maintainability of three implementations. Previous studies are reviewed and some metrics are found. These metrics are WMC, DIT, NOCS, CBO, LCOM, RFC, which are introduced by Chidamber and Kemerer, and NMA, NMO, NIM, SIX, which are introduced by Lorenz and Kidd. These metrics are well known for measuring the design of the software; however, they are only applicable to OO software designs. SP implementation can be measured with these CK and LK metrics; however, HSM pattern implementations of interlocking simulator cannot be measured because HSM pattern is not OO. Despite the fact that SP and HSM pattern belong to different software paradigms, they share a common property; both of them implement state machines. Starting from this point of view, new metric suit proposed for these patterns. New metrics are originated from CK and LK metrics. Proposed metrics are NHE, DSIT, NOCS, NEA, NEO CEH, CEnH, and CExH. NHE, CEH, CEnH, and CExH are complexity related metrics. DSIT and NOCS measure inheritance. NEA and NEO correspond to NMA and NMO in LK metrics respectively. Three versions of the interlocking software are measured with these state-oriented metrics. Comparisons are made as pairs; Type-1/Type-2 and Type-2/Type-3. First comparison showed that using inheritance effectively in HSM pattern increases software quality in terms of maintenance. Second comparison showed that SP version of interlocking simulator become more complex than HSM pattern version, thus increasing the effort required to maintain the software. Comparison results of the different designs applied to the interlocking software simulator, which is summarized above, discussed, and published in the related conference and publications.