YPY Literatür Önerisi Şadi Evren ŞEKER 05/12/2005

Yıldız Teknik Üniversitesi

Bilgisayar Mühendisliği Bölümü

Yazılım Proje Yönetimi Dersi Litaratür Çalışması

Konu:Yazılım Projelerinde Tutarsızlık (Inconsistency in Software Projects)

Anahtar kelimeler: Uyuşmazlık, tutarsızlık, Yazılım projeleri, Paradigma, Eşbenzersizlikler, Parçala Yönet, Dil Felsefesi

Keywords: Inconsistency, Software Projects, Paradigm, Incommensurability, Divide and Conquere, Linguistic

Giriş

Bu çalışma Yıldız Teknik Üniversitesi Yazılım Proje Yönetimi Lisansüstü dersi için hazırlanmıştır. Çalışmanın amacı yazılım proje yönetiminde önemli sorunlardan birisi olan uyuşmazlık (Inconsistency) kavramını daha iyi tanımak, sebepleri ve çözümlerini ortaya koymak için literatür çalışması yapmaktır.

Çalışma kapsamında yüze yakın kaynaktan faydalanılmış, bu sayede uyuşmazlık konusunda geniş bir bakış açısına kavuşulmuş ve problem mühendislik yönleriyle olduğu kadar sosyal yönleri ile de tahlil edilmiştir.

Raporda öncelikle konunun tanımı yapılmış daha sonra mühendislik çalışmalarında çok kullanılan karakutu yöntemi ile sorun incelenmiştir. Buna göre karakutunun giriş, sistem ve çıkış unsurları bulunmaktadır. Uyuşmazlık konusunun yazılım projelerinden önce, yazılım projeleri sırasında ve yazılım projelerinden sonra nasıl ortaya çıktığı (2. ve 3. bölümler) ve nasıl çözülmesi gerektiği (4. bölüm) bu sıra ile incelenmiştir.

Bu projenin var olmasında emeği geçen ve raporun pekçok yerinde derslerinden faydalandığım Prof. Dr. Oya Kalıpsız’a buradan teşekkürü bir borç bilirim.

Bu rapor ve sunum malzemeleri http://www.shedai.net/doktora/ypy/ adresinde de yayınlanmaktadır.


  1. Uyuşmazlık Nedir?

Uyuşmazlık (inconsistency) kelimesi latince “Ad Hominem Tu Quoque” yani "at the person, you too“, Sen de Hatalısın (you too fallacy) kavramına dayanır. Mantık biliminde uyuşmazlık tanımlanırken aşağıdaki formül kullanılır:

 Person A makes claim X. (A kişisi X önermesini yapıyor)

 Person B asserts that A's actions or past claims are inconsistent with the truth of claim X. (B kişisi yapılmış olan X önermesi ile A kişisinin geçmiş önermelerini veya davranışlarının uymadığını gösteriyor)

 Therefore X is false. (Dolayısıyla X yanlıştır)


  1. Uyuşmazlık ve Yazılım Projeleri,

Yazılım projeleri diğer bütüm projeler gibi insana ve doğaya dayanan ve dolayısıyla tam olarak standartlaştırılması imkansız olan projelerdir. Bu sorunun en belirgin yansıması uyuşmazlık örneklerinde ortaya çıkar. Projelerdeki bütün uyuşmazlık problemlerini Paradigma1 kavramıyla açıklamak mümkündür ve diğer bütün problemleri bu kavram içine almaktadır ancak biçimsel olarak uyuşmazlık sebepleri:

•Dil Problemleri

•Stratejik Problemler

•Paradigma ve Eşbenzersizlikler (Incommensurability)

olarak tanımlanabilir.

    1. Dil Problemleri

İnsanoğlunun ifade edebildiği ve düşüncenin aktarıldığı tek araç dildir. Dolayısıyla birden fazla insanın bulunduğu bütün ortamlarda dil kullanılması gereklidir. Projenin başarısını dil kullanmadaki başarı etkilemektedir. Dolayısıyla projelerin gereksinin analizi (requirement analysis) aşamalarında başlıyarak herşeyin iki taraf arasında mükemmel bir şekilde anlatılması ve anlaşılması gerekmektedir. Bunun için değişik tabloların veya grafiklerin kullanılması da dilin bir parçasıdır ve ancak daha iyi bir iletişim için gerekmektedir.

Yazılım projelerindeki uyuşmazlık sebeplerinden en önemlisi dile bağlı olarak anlaşamamaktan kaynaklanmaktadır. İsteklerin yapılanlar ile tutuşmaması, tasarımın gereksinimlere cevap verememesi, gerçeklemenin hatalı olması genelde dil probleminden kaynaklanmaktadır.

    1. Strateji hataları

Strateji genel olarak yapılacak eylemlerin detaylı ve sistematik tanımıdır. Buna göre yazılım projelerinde pekçok farklı strateji izlenebilmektedir. Stratejide yapılan hatalar projelerde uyuşmazlığa sebep olmaktadır. Örneğin “parçala fethet” (Divide and Conquere) yöntemi kullanılan bir projede, proje değişik modüllere bölünerek ayrı ayrı geliştirilmekte, ve nihayi aşamada bu modüller birleştirilerek proje neticelendirilmektedir. Ancak görülmektedir ki gerek parçalama işlemi yapılırken birleştirilmenin tam kestirilememesinden, gerekse modüllerin ayrı ayrı gerçeklemesi sırasında (implementation) parçalamanın anlaşılamamasından doğan problemler olmaktadır. İşte bu projenin stratejik başarısızlığını göstermektedir. Dolayısıyla yazılım projelerinde karşılaşılan en büyük problemlerden birisi de stratejilerden doğan hatalardır.

    1. Paradigmik problemler

Paradigma kelimesinin eski bir kullanımı olmasına karşın günümüzdeki anlamı Thomas Khun tarafından verilmiştir. Khun, “The Structure of Scientific Revolutions” isimli kitabında paradigmayı aşağıdaki şekillerde tanımlamıştır:

Dolayısıyla paradigma kavramının çıkışında insanların konuya bakış açısı önem kazanmakta toplumsal paradigma kavramının tanımında ise Toplumsal bilinçaltı (Social subconscious) veya sağduyu (Commonsence) yatmaktadır.

Bu tanım yazılım projelerinin geliştirilmesinde iki farklı etki bulur. Bunlardan birincisi insan etkisinin açıklamakta kullanılır yani tanımlamalar ve stratejiler ne kadar mükemmel yapılırsa yapılsın anlaşılan ve gerçeklenen projeler farklılıklar taşıyacaktır. İkinci etkisi ise projelerin modülleri sürümleri veya beraber çalışmaları gereken diğer projeler farklı paradigmalar ile geliştirilmiş olabilir, bu geliştirilmişliğin uyumlu çalışabilmesi için paradigmaların biribinre geçiş yapması gerekir, ki bu sorun yine Thomas Khun’un incommensurability tezi tarafından tanımlanmıştır.

Bu tezin yazılım projelerine uygulanmasından önce, teorinin tanımına bir bakalım:

Incommensurability (eşbenzersizlikler veya eçölçülemezlik) aynı terimleri ve kavramları kullanmadiği - ya da birbirine tekabül eden parçalara sahip olmadığı - için iki şeyin karşılaştırılmayacağını anlatır. Kavramların içerikleri farklı olunca da benzer bir durum ortaya çıkar. mesela, einstein'in sistemi ile newton'un sistemi eşölçülemezdir, çünkü 'kütle' dendiğinde ikisi farklı şeyler ifade eder. (kütle paradigması)

Benzer şekilde yazılım projelerinde kullanılan stratejiler ve taktikler farklı paradigmalar ile geliştirilmiş olabilir. Örneğin recursive bir sistem ile iterative bir sistem yapı olarak farklıdırlar. Recursive bir sistemde ve iterative bir sistemde her döngü farklı anlamlar ifade etmektedir.

Benzer şekilde yazılım projelerinde kullanılan yazılım mühendisliği yöntemleri veya programlama dilleri arasında da paradigma farklılıkları bulunmaktadır. Örneğin nesne yönelimli (object oriented) bir dil ile yapısal (structured) bir dil arasında veya recursive bir dil arasında paradigmik farklılıklar bulunmakta, bu dillerden bir kaçı ile yazılmış farklı modüller biraraya getirildiğinde uyuşmazlıklar ile karşılaşılmaktadır.

  1. Uyuşmazlık Noktaları

Uyuşmazlık sebeplerini inceledikten sonra uyuşmazlık problemlerinin sağlıklı bir şekilde çözülebilmesi için uyuşmazlığın çıktığı noktaların incelenmesi gerekir.

Buna göre proje geliştirilme aşamasında kullanılan karakutu (Blackbox) yöntemi izlenirse, uyuşmazlığın çıkabileceği 3 temel unsur ve bu unsurların alt başlıkları aşağıdaki şekildedir:

•Yazılım Öncesi

–Gereksinim analizinde

•Yazılım Sırasında

–Modüler çalışmalar

–Dağıtık çalışmalar

•Yazılım Sonrasında

–Konfigürasyon

–Güncellemeler

–Eklentiler


Temel olarak yazılımın geliştirilmesi aşamasında uyuşmazlık sebeplerinden en önemlisi içerik analizi olarak bilinir.

3.1. Gereksinim Analizi

İçerik analizi yazılım projelerinin şeklinin belirlendiği en önemli adımlardan birisidir. Mamafih bu adımda çoğu kez yazılım konusunda bilgisi olmayan kişiler ile iş analizi yapılması gerekir. Genellikle istenilenlerin net olarak bir kerede anlaşılması mümkün olmaz. Dolayısıyla bu adımda,

Olması ihtimalleri bulunmaktadır. Örneğin, fizibilite çalışması yapılan projenin tahmini bedelinin ve tahmini maliyetinin üzerinde değerler analiz sırasında çıkabilmektedir. Yine benzer şekilde gereksinimler analiz sırasında değişebilmekte yeni gelen gereksinimler bir önceki ile çelişebilmektedir. Benzer şekilde analizin yapıldığı ortamda bulunan değişik aktörlerin birbirlerinden farklı gereksinimler bildirmeleri mümkün olabilmektedir.

3.2. Grup Çalışmaları

Yazılım geliştirmelerinde karşılaşılan bir diğer uyuşmazlık sebebi modüler çalışmalardır. Gelişmekte olan dünya koşulları ile birlikte artık yazılım projeleri birden fazla insanın aynı anda geliştirme yaptığı hatta dünyanın farklı ülkelerinden farklı insanların internet ortamında farklı zamanlarda projeye katkı sağladığı projelere dönüşmüştür. Böyle dinamik ortamlarda her modül için ve projedeki her insan için bir uyuşmazlık ihtimali bulunmaktadır.

3.3. Dağıtık Çalışmalar

Dağıtık(Distributed) çalışmalar yazılım dünyasında her ne kadar tek elden yönetilen projeler olarak düşünülsede, doğası gereği dağıtık geliştirilmiş ve pekçok aktörün farklı zamanlarda geliştirdiği projeler olabilmektedir. Örneğin Türkiyenin belediye yapısı doğası gereği dağıtık bir yapıdadır. Türkiye önce illere daha sonra ilçelere ve beldelere bölünmüş ve her ilçenin ilin ve beldenin özerk idaresi kurulmuştur. Bu kuruluşların her birisi farklı firmalar ile farklı içeriklerde projeler isteyebilmekte ve bu projelerin neticede birbiri ile uyumlu olması gerekmektedir.

Proje tek elden yönetilse bile projelerin dağıtık olması durumunda uyuşmazlıklar ile karşılaşılabilmektedir. Örneğin veritabanlarının farklı parçacıklara bölünmesi 3 mümkün olmasına karşın, verilerin birden fazla aktör tarafından güncellenmesinde sorunlar yaşanmakta özel tasarımlar gerekmektedir.

3.4. Konfigürasyon Çalışmaları

Yazılım projelerinin gelecekte değişen ortamlara kendilerini adapte edebilmeleri için konfigürasyon özellikleri eklenmektedir. Eklenen konfigürasyon özellikleri zaman içindeki hızlı gelişmelere ayak uyduramayarak yetersizlik göstermekte dolayısıyla değişen şartlara uyamamaktadır. Ayrıca aynı konfigürasyonun farklı yazılımlar için yapılamıyor olması, yazılımlar arasında uyuşmazlığın bir göstergesidir.

3.5. Güncellemeler

Yazılım projelerine ayrılan emeğin önemli bir kısmı da yazılmış olan projenin güncellenmesi ve konfigürasyon yönetimindekine benzer şekilde değişen ortamlar için yeniden yazılan programların sisteme eklenmesinden ibarettir. Unutulmamalıdır ki yazılan her proje yeni riskler içermekte ve özellikle yeni yazılan projenin eskisi ile uyumlu çalışmasının gerektiği durumlarda bütün projenin yeniden gözden geçirilerek gerekiyorsa reengineering çalışması yapılarak yeni yazılacak güncelleme ile uyumlu olduğunun denetlnemesi daha da önemli olmaktadır.

3.6. Eklentiler

Proje tamanlandıktan sonra karşılaşılan bir diğer sorun ise projenin değişik adımlarında atlanan veya bilinmeyen parçaların projeye dahil edilmesidir. Örneğin projenin analiz aşamasında dikkate çeşitli sebeplerle alınmamış bir gereksinim daha sonradan istenirse bunun giderilmesi için bütün projenin baştan yazılması yerine, bu ihtiyacı giderecek eklentilerin yazılması daha ekonomik bulunabilir. Bu ve benzeri durumlarda projelere ekleti yapma ihtiyacı, projedeki uyuşmazlığı arttırıcı bir sebeptir.

  1. Uyuşmazlık Çözümleri

Uyuşmazlık sorunun temel kaynağı daha öncede belirtildiği üzre 4doğaya ve insana dayanmaktadır. Dolayısıyla hem standartlaştırılması hem de tam olarak çözülmesi imkansız sorunlardır. Ancak yapılan çalışmalara sayesinde problemlerin asgariye indirilmesi mümkün olmaktadır. Bu bölümde daha önceki bölüme benzer şekilde karakutu yaklaşımı kullanılarak uyuşmazlık sorunlarının projelerin değişik aşamalarında nasıl çözülebileceği anlatılacaktır.

    1. Yazılım Öncesinde Uyuşmazlık Çözümleri

Yazılım öncesinde karşılaşılan en büyük uyuşmazlık sebebi, yazılımların gereksinim analizinden kaynaklanmaktadır. Gereksinim analizinde uyuşmazlığa sebep olabilecek en önemli faktörler ise dil, paradigma, farklı aktörler ve yeni gereksinimler olarak sıralanabilir.

Buna göre uyuşmazlık çözümü bu unsurların çözülmesi ile mümkün olabilir. Yapılan araştırmada görülmüştür ki, dil ile ilgili problemlerin çözülmesi için dökümantasyon kullanılması önemle vurgulanmış. Bu dökümantasyonun daha anlaşılır olması için grafikler, tablolar ve diyagramlar gibi paradigmik olmayan unsurlardan faydalanılmasının uyuşmazlığı engelleyeceği anlaşılmıştır. Ayrıca gereksinim analizinin daha başarılı ve daha az uyuşmazlık içermesi için bu aşamada kullanılabilecek yazılımlardan faydalanılması mümkündür. Aktörlerin belirlenmesi ve aktörler arasındaki ilişkilere göre uyuşmazlık durumlarında yazılımın uygulanacağı ortama özgü çözümler bulunulması mümkündür. Örneğin yazılımın otoriter bir kurum için yazıldığı durumlarda actor ağı (actor networks) çizilerek gereksinimin belirlenmesinde daha başarılı olunabilir. Yine benzer bir örnekte yazılımın dağıtık bir ortamda yazılması durumunda, merkezi bir kararın istenmesi ve yazılımın buna göre şekillendirilmesi mümkün olabilmektedir.

4.2. Yazılım Sırasında Uyuşmazlık Önleme

Daha önce vurgulandığı üzere 5 günümüzde projeler birden fazla kişinin değişik coğrafyalardan katılımı ile değişik zaman dilimlerine bölünerek gerçekleştirilmektedir. Bu şartlar altında projelerin daha verimli ve daha az uyuşmazlık içermesi için değişik yazılımlar kullanılmaktadır. Örneğin bu çalışma kapsamında incelenen CVS6 yazılımı da göstermektedir ki, projelerin daha az uyuşmazlık içermesi için çok miktarda unsura dikkat edilmesi gerekmektedir. Her ne kadar değişik yazılımlar kullanılıyor olursa olsun, projelerin büyümesi halinde uyuşmazlıkların sayısı artmaktadır. Örneğin proje geliştirilmesinde en çok kullanılan yöntemlerden birisi olan parçala yönet, yönteminde her modülün ayrı bir kişi veya grup tarafında ayrı bir zamanda yazılması mümkün hale getirilmiştir ancak bu modüllerin7 birbirleriyle uyumlu çalışmaları ve bu modüller arasında veri yapılarında örtüşme sağlanması ancak standartlaşma ile mümkün olmaktadır. Yapılan incelemede görülmüştür ki, standartlaşma için denenen pekçok yoldan şu anda en başarılı olan XML8 standartlaşmasıdır. Örneğin yeni gelen SOAP9 ve webservices10 teknolojilerinde XML kullanılması bir standart haline gelmiştir. Bu sayede değişik uygulamalar arasında veri standartları oluşturulmuş ve istenilen değişikliklerin daha kolay yapılması sağlanmıştır. Benzer şekilde dağıtık projelerin geliştirilmesinde, projenin birden fazla unsuru arasında veri akışı sağlanması için XML teknolojisinden faydalanılmaktadır.

Veri akışı dışında projedeki unsurların analizi ve yeni yazılan unsurlar ile bağlantılarının sağlanmasında, proje gerçeklemesinin daha başarılı olabilmesi için yapısal dillerde akış diyagramları kullanılırken, nesne yönelimli dillerde UML11 diyagramları kullanılmaktadır. Bu diyagramlar sayesinde projenin farklı unsurları hakkında bilgi sahibi olabilmek mümkündür.

XML, UML ve akış diyagramları yardımıyla proje geliştirilirken uyuşmazlık kontrolleri yapılabilmekte, projenin ne kadar uyuşmazlık içerdiği bu sayede anlaşılabilmekte ve daha proje gerçeklenirken karşılaşılan uyuşmazlıklara müdahale edilebilmektedir.

Ayrıca projelerin yeni sürümlerinin yazılması, güncellemelerinin yapılması veya reengineering çalışmaları sırasında bu tip diyagramlarda faydalanılabilmektedir.

    1. Yazılım Sonrasında Uyuşmazlık Engelleme

Yazılım projelerinde, her ne kadar proje sırasında uyuşmazlıklar öngörülerek asgari seviyeye çekilmeye çalışılsa da, projelerin bitirilmesinden sonra değişik sebepler ile uyuşmazlıklar çıkabilmektedir. Bu sebeplerin başında öngörülmeyen ve analiz aşamasında atlanan unsurlar gelmektedir. Ayrıca yeni eklenen güncellemeler, konfigürasyon eklemeleri ve değişen ortamların getirdiği etkiler yazılımın tesliminden sonra uyuşmazlıklara sebep olmaktadır.

Yazılım sonrasında karşılaşılan yukarıdaki uyuşmazlıkların giderilmesi için yine en çok kullanılan enstruman dökümantasyondur. Şayet sorun yeni bir yazılımı gerektiriyorsa, bu zaten yeni biri yazılımın gereksinim analizinin başlangıcı olur. Şayet sorun hali hazırda var olan projenin değiştirilmesini gerekiyorsa, bu yine bir yazılım projesi olarak kabul edilebilir ve yine her projede karşılaşılan uyuşmazlıklar bu projede de beklenir. Ancak bu durumda yeni bir problem vardır, yazılacak olan projenin hali hazırda var olan proje ile ne kadar uyumlu çalışacağı mutlaka incelenmeli bunun için daha önceden yapılan projenin geliştirilme paradigmasına uygun olarak tasarım kontrol edilmelidir. Yine proje geliştirme aşamasında kullanılan araçlar yardımıyla projenin uyuşmazlığı kontrol edilmelidir.

Yazılım sonrasında karşılaşılan diğer bir uyuşmazlık problemi ise yazılımın uygulanacağı ortamdır. Buna göre yazılımın değişik aşamalarında yazılımın uygulanacağı ortamdan uzaklaşılmış olabilir. Örneğin gereksinim analizi aşamasındaki başarısızlık veya tasarım aşamasındaki gereksinimlerin yanlış yorumlanması, nihai projenin uygulanmasında sorunlar doğuracaktır. Benzer durumlarda projenin değişikliğe uğratılması gerekmektedir. Projelerin değişik seviyelerde karşılaşılan problemlere göre yeniden şekillendirilmesi durumunda bir yada birkaç modülün yenileneceği göz önünde bulundurularak bu mödüllerin yeniden tasarlanması, tasarlanan her modülün sistem içindeki rollerinin yeniden sınanması gerekmektedir.

Sonuç

Bu çalışma kapsamında yapılan araştırmada, yazılım projelerinde karşılaşılan önemli sorunlardan birisinin de gerek yazılım projelerinin gerçeklenmesi gerekse yeni yazılım projelerinde karşılaşılan uyuşmazlık problemleri olduğu anlaşılmıştır. Bu problemlerin en büyük sebebi olarak, projelerin doğaya ve insana bağımlı olması gösterilmiş, projelerde karşılaşılan uyuşmazlıkların insanlar arasındaki uyuşmazlığın bir tezahürü olduğu ortaya konulmuştur. Yine yapılan karakutu çalışmasına göre projelerin uyuşmazlık sebepleri projenin değişik aşamalarında ortaya çıkmakta ve hemen her yapılan iş bir uyuşmazlık doğurabilmektedir. Ancak yazılım projelerinin pek de uzun olmayan tarihi boyunca sıkca karşılaşılan bu problemin çözümü için değişik yöntemler geliştirilmiştir. Bu yöntemlerin başında, dökümantasyon ve standartlaştırma gelirken, yazılım projeleri yine diğer yazılım projeleri ile yönetilebilmekte ve bu sayede daha başarılı neticeler alınabilmektedir.

Evrensel bir formülün arandığı günlerden, dünyanın evrensel bir standarda gitti günlere gelmiş bulunuyoruz. Bu çalışma ile bir kere daha anlaşılmıştır ki içinde bulunduğumuz çağ, hızla büyüyen proje ölçeklerinin insanoğlunu daha da standartlaşmaya götüreceği bir çağ olacaktır.


Kaynaklar:

  1. Thomas Khun, The Structure of Scientific Revolutions

  2. Asaf Adi, Opher Etzion. Amit - The Situation Manager. VLDB Journal (13), pp. 177--203, 2004.

  3. P. Bahl, V. N. Padmanabhan, A. Balachandran. Enhancements to the RADAR User Location and Tracking System. Microsoft Research Technical Report, Feb 2000.

  4. B. Brumitt, B. Meyers, J. Krumm, A. Kern, S. Shafer. EasyLiving: Technologies for Intelligent Environments. Proceeding of the 2nd International Symposium on Handheld and Ubiquitous Computing (HUC 2000), Bristol, England, 2000.

  5. Licia Capra, Wolfgang Emmerich, Cecilia Mascolo. CARISMA: Context-Aware Reflective Middleware System for Mobile Applications. IEEE Transactions on Software Engineering 29(10): pp. 929--944, Oct 2003.

  6. S. Chakravarthy, D. Mishra. Snoop: An Expressive Event Specification Language for Active Databases. Data Knowl Eng 14.1: pp. 1--26, 1994.

  7. Anind K. Dey, Gregory D. Abowd, Daniel Salber. A Context-Based Infrastructure for Smart Environments. Proceedings of the 1st International Workshop on Managing Interactions in Smart Environments, Dublin, Ireland, Dec 1999.

  8. Philip D. Gray, Daniel Salber. Modeling and Using Sensed Context Information in the Design of Interactive Applications. Proceedings of the 8th IFIP International Conference on Engineering for Human-Computer Interaction (EHCI 2001), Toronto, Canada, May 2001.

  9. William G. Griswold, Robert Boyer, Steven W. Brown, Tan Minh Truong. A Component Architecture for an Extensible, Highly Integrated Context-Aware Computing Infrastructure. Proceedings of the 25th International Conference on Software Engineering (ICSE 2003), Portland, USA, May 2003.

  10. Andy Harter, Andy Hopper, Pete Steggles, Andy Ward, Paul Webster. The Anatomy of a Context-Aware Application. Mobile Computing and Networking, pp. 59--68, 1999.

  11. Karen Henricksen, Jadwiga Indulska. A Software Engineering Framework for Context-Aware Pervasive Computing. Proceedings of the 2nd IEEE Conference on Pervasive Computing and Communications (PerCom 2004), Orlando, USA, Mar 2004.

  12. Karen Henricksen, Jadwiga Indulska, Andry Rakotonirainy. Modeling Context Information in Pervasive Computing Systems. Proceedings of the 1st International Conference on Pervasive Computing, Zurich, Switzerland, Aug 2002.

  13. Glenn Judd, Peter Steenkiste. Providing Contextual Information to Pervasive Computing Applications. Proceedings of the 1st IEEE International Conference on Pervasive Computing and Communications (PerCom 2003), Dallas, USA, Mar, 2003.

  14. Christine Julien, Gruia-Catalin Roman. Egocentric Context-Aware Programming in Ad Hoc Mobile Environments. Proceedings of the 10th International Symposium on the Foundations of Software Engineering (FSE 2002), Charleston, USA, Nov 2002.

  15. Aloysius K. Mok, Prabhudev Konana, Guangtian Liu, Chan-Gun Lee, Honguk Woo. Specifying Timing Constraints and Composite Events: An Application in the Design of Electronic Brokerages. IEEE Transactions on Software Engineering 30(12): pp. 841--858, Dec 2004.

  16. C. Nentwich, L. Capra, W. Emmerich, A. Finkelstein. xlinkit: A Consistency Checking and Smart Link Generation Service. ACM Transactions on Internet Technology 2(2): pp. 151--185, May 2002.

  17. C. Nentwich, W. Emmerich, A. Finkelstein. Consistency Management with Repair Actions. Proceedings of the 25th International Conference on Software Engineering (ICSE 2003), Portland, USA, May 2003.

  18. L.M. Ni, Y. Liu. Y.C. Lau, A.P. Patil. LANDMARC: Indoor Location Sensing Using Active RFID. Proceedings of the 1st IEEE International Conference on Pervasive Computing and Communications (PerCom 2003), Dallas, USA, March 2003.

  19. Raghu Ramakrishnan, Johannes Gehrke. Database Management Systems (Third Edition), McGraw-Hill Higher Education.

  20. A. Ranganathan, R. H. Campbell, A. Ravi, A. Mahajan. ConChat: A Context-Aware Chat Program. IEEE Pervasive Computing (vol. 1, no. 3), pp. 51--57, Jul-Sep 2002.

  21. A. Ranganathan, J. Al-Muhtadi, RH. Campbell. Reasoning about Uncertain Contexts in Pervasive Computing Environments. IEEE Pervasive Computing (vol. 3, no. 2), pp. 62--70, Apr-Jun 2004.

  22. M. Roman, C. Hess, R. Cerqueira, A. Ranganathan, R. H. Campbell, K. Nahrstedt. A Middleware Infrastructure for Active Spaces. IEEE Pervasive Computing (vol. 1, no. 4), pp. 74--83, Oct-Dec 2002.

  23. Bill N. Schilit, Marvin M. Theimer, Brent B. Welch. Customizing Mobile Applications. Proceedings of USENIX Mobile & Location-Independent Computing Symposium, Cambridge, USA, Aug 1993.

  24. Albrecht Schmidt, Kofi Asante Aidoo, Antti Takaluoma, Urpo Tuomela, Kristof Van Laerhoven, Walter Van de Velde. Advanced Interaction in Context. Proceedings of the 1st International Symposium on Handheld and Ubiquitous Computing (HUC 1999), Karlsruhe, Germany, Sep 1999.

  25. Bryan Scotney, Sally McClean. Database Aggregation of Imprecise and Uncertain Evidence. Information Sciences-Informatics and Computer Science: An International Journal (Vol. 155, Iss. 3-4), pp. 245--263, Oct 2003.

  26. J. P. Sousa, D. Garlan. Aura: An Architectural Framework for User Mobility in Ubiquitous Computing Environments. Proceedings of the 3rd Working IEEE/IFIP Conference on Software Architecture, Montreal, Canada, Aug 2002.

  27. Chang Xu, S.C. Cheung, Cindy Lo, K.C. Leung, Jun Wei. Cabot: On the Ontology for the Middleware Support of Context-Aware Pervasive Applications. Proceedings of the IFIP Workshop on Building Intelligent Sensor Networks (BISON 2004), Wuhan, China, Oct 2004.

  28. Chang Xu, S.C. Cheung, Xiangye Xiao. Semantic Interpretation and Matching of Web Services. Proceedings of the 23rd International Conference on Conceptual Modeling (ER 2004), Shanghai, China, Nov 2004.

  29. Box, D., Ehnebuske, D., Kakivaya, G., Layman, A., Mendelsohn, N., Nielsen, H. F., et al. ( May 8, 2000). Simple Object Access Protocol (SOAP) 1.1. Retrieved April 5, 2003 from http://www.w3.org/TR/SOAP/

  30. Cerami, Ethan. (February 12, 2002). Top ten FAQs for Web Services. Retrieved April 11, 2003 from http://www.oreillynet.com/lpt/a/webservices/2002/02/12/webservicefaqs.html

  31. Cerami, Ethan. (2002). Web Services Essentials. California: O'Reilly & Associates, Inc.

  32. Christensen, E., Curbera, F., Meredith, G., Weerawarana, S. (March 15, 2001). Web Services Description Language (WSDL) 1.1. Retrieved April 5, 2003 from http://www.w3.org/TR/wsdl

  33. Ewald, Tim. (September 27, 2002). Understanding XML Web Services: The Web Services Idea. Retrieved March 20, 2003 from http://msdn.microsoft.com/webservices/understanding/readme/default.aspx

  34. Introduction to Web Services Part I. (n.d.). Retrieved February 23, 2003 from http://www.epionet.com/webservices/articles/art_webservicesintro1.html

  35. Introduction to Web Services Part II. (n.d). Retrieved February 23, 2003 from http://www.epionet.com/webservices/articles/art_webservicesintro2.html

  36. Introduction to Web Services Part II. (n.d). Retrieved February 23, 2003 from http://www.epionet.com/webservices/articles/art_webservicesintro2.html

  37. Kalata, Kathleen. (2002). Introduction to ASP.NET. Massachusetts: Course Technology.

  38. Markatos, Dimitrios. (November 19, 2002). Creating and Consuming .NET Web Services in Five Easy Steps. Retrieved March 25, 2003 from http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=603

  39. Skonnard, Aaron. (March 2003). Understanding SOAP. Retrieved April 10, 2003 from http://msdn.microsoft.com/webservices/understanding/webservicebasics

  40. SOAP Tutorial.(n.d). Retrieved April 9, 2003 http://www.w3schools.com/wsdl/default.asp

  41. Tapang, Carlos C. (July 2001). Web Service Description Language (WSDL) Explained. Retrieved April 5, 2003 from http://msdn.microsoft.com/library

  42. WSDL Tutorial.(n.d). Retrieved April 9, 2003 from http://www.w3schools.com/wsdl/default.asp

  43. Wolter, Roger. (December 2001). XML Web Services Basics. Retrieved April 9, 2003 from http://msdn.microsoft.com/library

  44. Levitt, Jason. (October 1, 2001). From EDI To XML And UDDI: A Brief History Of Web Services. Retrieved May 5, 2003 from http://www.informationweek.com/story/IWK20010928S0006

  45. Serge Abiteboul, Omar Benjelloun, Ioana Manolescu, Tova Milo, and Roger Weber. Active XML: Peer-to-Peer Data and Web Services Integration (demo). VLDB, 2002.

  46. Serge Abiteboul , Angela Bonifati , Grégory Cobéna , Ioana Manolescu , Tova Milo, Dynamic XML documents with distribution and replication, Proceedings of the 2003 ACM SIGMOD international conference on on Management of data, June 09-12, 2003, San Diego, California

  47. The Active XML homepage. http://www-rocq.inria.fr/verso/Gemo/Projects/axml/.

  48. K. Selçuk Candan , Sushil Jajodia , V. S. Subrahmanian, Secure Mediated Databases, Proceedings of the Twelfth International Conference on Data Engineering, p.28-37, February 26-March 01, 1996

  49. R.G. Cattell, editor. The Object Database Standard: ODMG-93. Morgan Kaufman, 1996.

  50. Sophie Cluet , Claude Delobel , Jérǒme Siméon , Katarzyna Smaga, Your mediators need data conversion!, Proceedings of the 1998 ACM SIGMOD international conference on Management of data, p.177-188, June 01-04, 1998, Seattle, Washington, United States

  51. E. Damiani, S. De Capitani di Vimercati, S. Paraboschi, and P. Samarati. Securing XML Documents. In Proc. of EDBT, 2001.

  52. AnHai Doan , Pedro Domingos , Alon Y. Halevy, Reconciling schemas of disparate data sources: a machine-learning approach, Proceedings of the 2001 ACM SIGMOD international conference on Management of data, p.509-520, May 21-24, 2001, Santa Barbara, California, United States

  53. Hector Garcia-Molina , Yannis Papakonstantinou , Dallan Quass , Anand Rajaraman , Yehoshua Sagiv , Jeffrey Ullman , Vasilis Vassalos , Jennifer Widom, The TSIMMIS Approach to Mediation: Data Models and Languages, Journal of Intelligent Information Systems, v.8 n.2, p.117-132, March/April 1997

  54. Himanshu Gupta, Selection of Views to Materialize in a Data Warehouse, Proceedings of the 6th International Conference on Database Theory, p.98-112, January 08-10, 1997

  55. John E. Hopcroft , Jeffrey D. Ullman, Introduction To Automata Theory, Languages, And Computation, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1990

  56. Haruo Hosoya , Benjamin C. Pierce, XDuce: A Typed XML Processing Language (Preliminary Report), Selected papers from the Third International Workshop WebDB 2000 on The World Wide Web and Databases, p.226-244, May 18-19, 2000

  57. Jelly: Executable xml. http://jakarta.apache.org/commons/sandbox/ jelly.

  58. Trevor Jim , Dan Suciu, Dynamically distributed query evaluation, Proceedings of the twentieth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems, p.28-39, May 2001, Santa Barbara, California, United States

  59. SUN's Java Server Pages. http://java.sun.com/products/jsp/.

  60. Macromedia Coldfusion MX. http://www.macromedia.com/.

  61. M. Makoto. RELAX (Regular Language description for XML). ISO/IEC Technical Report, may 2001.

  62. Microsoft and IBM. The WS-Security specification. http://www.ibm.com/webservices/library/ ws-secure/.

  63. Tova Milo , Dan Suciu , Victor Vianu, Typechecking for XML transformers, Proceedings of the nineteenth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems, p.11-22, May 15-18, 2000, Dallas, Texas, United States

  64. John C. Mitchell, Type systems for programming languages, Handbook of theoretical computer science (vol. B): formal models and semantics, MIT Press, Cambridge, MA, 1991

  65. Jeffrey D. Ullman , Hector Garcia-Molina , Jennifer Widom, Database Systems: The Complete Book, Prentice Hall PTR, Upper Saddle River, NJ, 2001

  66. F. Dang Ngoc. Validation de documents XML contenant des appels de services. Master's thesis, CNAM, 2002. DEA SIR (in French).

  67. Oracle XML Developer's Kit for Java. http://otn.oracle.com/tech/xml/.

  68. The PHP Hypertext Preprocessor. http://www.php.net.

  69. M. Tamer Ozsu , P. Valduriez, Principles of distributed database systems, Prentice-Hall, Inc., Upper Saddle River, NJ, 1991

  70. Universal Description, Discovery, and Integration of Business for the Web (UDDI). http://www.uddi.org.

  71. The W3C Web Services Activity. http://www.w3.org/2002/ws.

  72. The Xerces Java Parser. http://xml.apache.org/xerces-j/.

  73. The W3C XML Activity. http://www.w3.org/XML.

  74. Jian Yang , Kamalakar Karlapalem , Qing Li, Algorithms for Materialized View Design in Data Warehousing Environment, Proceedings of the 23rd International Conference on Very Large Data Bases, p.136-145, August 25-29, 1997

  75. Yue Zhuge , Héctor García-Molina , Joachim Hammer , Jennifer Widom, View maintenance in a warehousing environment, Proceedings of the 1995 ACM SIGMOD international conference on Management of data, p.316-327, May 22-25, 1995, San Jose, California, United States


1 Bkz. Thomas Khun The structure of Scinetific Revolution

2 “Aktör” Kavramı sosyoloji biliminde kullanılan ANT (Actors Network Theory)’den alınmıştır.

3 Burada anlatılmak istenen fragmentation veya table partitioning olarak geçen bir veritabanının bir tablosunun değişik parçalarının farklı ortamlarda tutulması durumudur. Dolayısıyla tablonun tamamı hiçbir yerde durmaz ancak bütün parçalar birleştirildikten sonra tablonun bütünü elde edilebilir.

4 bkz. Bölüm “2. Uyuşmazlık ve Yazılım Projeleri”

5 bkz. 3.2. Grup Çalışmaları

6 Current Version System

7 Örneğin nesne yönelimli yazılımlarda nesnelern herbirisi ayrı birer modül olarak ele alınabilir

8 Extensible Markup Language (genişletilebilir işaret dili)

9 Simple Object Access Protocol (basit nesne erişim protokolü)

10 İnternet üzerinde bulunan bir nesneye başka uygulamalardaki nesneler tarafından erişilip tercihen sonuçlarının da alındığı uygulamalar

11 Unified Modeling Language, genellikle nesne yönelimli dillerde nesnelerin method ve özellikleri bilgilerini içeren grafiksel bir dil.