Master'sOpen Access

Bulut sistemlerde geliştirilen uzak servislerin hatadan ayaklanması

Is this your thesis?

This record came from a bulk archive import. If it’s yours, link it to your profile.

2018
0 views
0 downloads

Abstract (TR)

Bulut tabanlı geliştirme platformları, bulut hizmetleri daha kullanılabilir hale geldikçe ve bu platformların performansı arttıkça daha yaygın bir şekilde kullanılmaktadır. Bulut tabanlı bir geliştirme platformu geliştirmede en önemli konulardan biri, geliştiricilerin kodlarını bir IDE geliştirme oturumunda gerçekleştirecekleri kadar verimli ve etkili bir şekilde hata ayıklamalarını sağlamaktır. Özellikle bir uzaktan hizmetin geliştirilmesi gerçekleştiriliyorsa, hata ayıklama istemcisi ve gerçek kodu çalıştıran sunucunun ayrı olması, normal bir hata ayıklama oturumunda bulunmayan birçok sorunun ortaya çıkmasına neden olabilir. Bu çalışmada, uzaktan hata ayıklamada ortaya çıkabilecek sorunlar ile başa çıkmak için bir "kaydet/tekrarla" yaklaşımı önerilmektedir. Normal bir hata ayıklayıcısında geliştirici, hatanın yerini bulmak için hata günlüklerini kontrol etmelidir. Bu çalışmada önerilen hata ayıklayıcısı ile kod geliştiricilerin hata yerini keşfetmelerini kolaylaştıran bir sistem tasarlanmıştır. Önerilen sistemde sunulan kullanıcı arayüzünü kullanarak, geliştiriciler hataları çözebilir ve değişikliklerin hataları düzeltip düzeltmediğini kontrol etmek için çalıştırılan web servislerinin kayıtlı girdileriyle hata oturumunu tekrarlayabilirler. Hata ayıklayıcıyı kullanırken, geliştirici tam kayıt seçeneğini seçerse tüm değişken değerlerini ve web servislerinin girdilerini kaydeder. Böylece geliştirici önceki kayıtların listesinden hatalı çalıştırmayı seçebilir ve kodun hatalarını ayıklayabilir/yeniden yürütebilir. Ardından geliştirici, mevcut kodun kaydedilen girdilerle hatalarını ayıklayabilir. Hata ayıklama oturumunda, veritabanı ve web servislerinin mevcut durumu kullanılarak satır satır çalıştırılacaktır. Önerilen sistemde geliştirici kesme noktaları kullanabilir. Böylece geliştiriciye sunulan "devam et" butonuna basılırsa, hata ayıklayıcı ilk kesme noktasına ulaşana kadar satır satır kod yürütmeye devam edecektir. Geliştirici ayrıca değişkenlerin eski değerlerini göstermek için tekrar oynatma düğmesini kullanabilir ve bunu yaparak geliştiricinin web hizmet kayıtlarını detaylıca incelemeden oluşan hatayı anlayabilmesi sağlanır. Çalışmada ayrıca, yaklaşımın mümkün olduğunca düşük bir iletişim ek maliyeti oluşturması için, yeni bir kayıt türü (minimum kayıt) önerilmektedir. Minimum kayıt hata ayıklayıcı değişken değerlerini sadece bir veritabanı sorgusu veya bir web servis çağrısı gibi harici veri erişimi için kaydeder. Web hizmeti hatasız çalışıyorsa, hata ayıklayıcı ekstra verileri kaydetmez. Hata ayıklayıcı, ilgili web hizmeti aykırı bir durum oluşturduğunda kayıt tipine göre ilgili değişken değerlerini kaydeder ve daha sonra uzak hizmetin hata ayıklamasını gerçekleştiren istemcide satır satır tekrar oynatılmasına olanak verir. Hata ayıklayıcı, "adım adım", "devam et" ve "geri adım" düğmeleri gibi temel hata ayıklayıcı özelliklerini de içerir. Geri adım özellikleri sadece tam kayıt seçeneği ile çalışır. Bu tür hata ayıklama yaklaşımları literatürde "Zaman Yolculuğu Hata Ayıklama" olarak adlandırılmaktadır. Geliştirilen sistemde, hata ayıklamaya olanak sunan programlama dili olarak temel java fonksiyonunu kolayca çalıştırabilen br betik dili olan MVEL dili kullanıldı. Hata ayıklanabilen betik komut seti içerisinde sınırlı bir alt küme desteklendi. Bu alt küme içerisinde: ForEachNode, ForNode, IfNode, DeclTypedVarNode, AssignmentNode, DeepAssignmentNode, ASTNode gibi yapılar bulunmaktadır. Kayıt oturumu sırasında üst düzey yürütme noktalarını saklamak için bir yürütme yığını kullanılmıştır. Kesme noktaları eklemek ve kaldırmak için bazı web hizmetleri eklenmiştir: insertBreakpoint ve removeBreakpoint. Hata ayıklayıcının istemci tarafı, bu web hizmetini çağırmakta ve yürütmenin burada durdurulacağını belirtmek için satırın soluna küçük bir işaretçi eklemektedir. Geliştriilen hata ayıklayıcıyı kullanarak, işlevin herhangi bir parametresinin yalıtılmış bir fonksiyonunun hataları ayıklanabilir. Çalışmada sunulan sistem gelecekte farklı yönlerde geliştirilebilir. Bunlardan ilki geliştiriciye farklı koşullarda farklı tip kayıtların yapılmasına olanak verilmesi olabilir. Örneğin, sadece keritik düzeyde hatalar oluştuğunda tam kayıtların saklanması, aksi durumlarda hata kayıtlarının belirli bir süre sonra silinmesi gibi. Bununla birlikte çalışma kaydı performansının artırılması için çoklu iş parçaçıkları da kullanılabilir. Özellikle birden fazla alt iş parçacağının kullanıldığı sunucu tarafı programlarında bu işlevin önem kazanacağı düşünülmektedir. Son olarak sunulan sistemin bazı değişkenleri kaydetme şekli özelleştirilebilir. Örneğin tüm değişken değerlerini saklamak yerine, örneğin listeler içerisinde bulunan eleman sayısını ve değişken tiplerini saklayarak sistemin ürettiği ek veri miktarı düşürülebilir. Bu çalışmada önerilen yaklaşım, gerçek dünya bulut tabanlı bir yazılım geliştirme platformuna entegre edilmiştir ve yaklaşımın yararını göstermek için bazı örnek denemeler için çalışma zamanı ek yükü ölçülmüştür. Yapılan ölçümler sonucunda özellikle minimum kayıt tipi aktive edildiğinde, MVEL betiklerinin hata ayıklanmasında sisteme göz ardı edilebilecek düzeyde az yük bindiği görülmüştür. Çalışma sonucu ortaya koyulan yaklaşımların hedef kullanım alanı bulut üzerinde yazılım geliştirmeye olanak sunan sistemlerdir. Her ne kadar çalışmada MVEL ile yazılım geliştirme yapılan bir sistem üzerinde denemeler yapılmış olsa da herhangi farklı bir programlama dilinin kullanımı sunulan yaklaşımların uygulanabilirliğini etkilemez. Sunulan yaklaşımlara yönelik önemli bir kısıt ise minimum kayıt yapılmadığı zaman yaklaşımın uygulanabilirliğinin görece küçük kodlar için uygun hale gelmesidir. Binlerce satırdan ve değişkenden oluşan büyük yazılımların hata ayıklamasında ek optimizasyonların devreye girmesi gerekmektedir. Öte yandan bulut üzerinde sunulan geliştirme ortamları daha ziyade küçük çaplı, az sayıda satır ve değişken içeren betikleri hedeflediğinden sunulan yaklaşımın kullanılırlığının yüksek olduğu söylenebilir. Gelecekte daha karmaşık sistemlerin bulut üzerinde geliştirilmeye başlamasıyla minimum kayıt yöntemine benzer yöntemlerin geliştirilmesi ile bu tezde sunulan çalışmalar geliştirilebilir.

Author

Mohammed Subhı Sheıkh Quroush

How to Cite

Mohammed Subhı Sheıkh Quroush (Yüksek Lisans Tezi). Bulut sistemlerde geliştirilen uzak servislerin hatadan ayaklanması, 2018, İstanbul Technical University.

License

Tüm Hakları Saklıdır

This work is shared under the specified license terms.

More theses from İstanbul Technical University