<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="tr">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Web Uygulamalarında Dolaşım ve Erişim Kontrolü Hatalarının Tespiti ve Yeniden Canlandırılması</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Yudum</forename><surname>Paçin</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">ODTÜ -Enformatik Enstitüsü</orgName>
								<address>
									<settlement>Ankara</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Aysu</forename><forename type="middle">Betin</forename><surname>Ve</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">ODTÜ -Enformatik Enstitüsü</orgName>
								<address>
									<settlement>Ankara</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><surname>Can</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">ODTÜ -Enformatik Enstitüsü</orgName>
								<address>
									<settlement>Ankara</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Web Uygulamalarında Dolaşım ve Erişim Kontrolü Hatalarının Tespiti ve Yeniden Canlandırılması</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">56F3A5E77545CEE65E30D39AEA880366</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T02:05+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Web uygulamaları</term>
					<term>otomatik doğrulama</term>
					<term>model denetleme</term>
					<term>karşı örneklerin yeniden canlandırılması</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Özet. Bu çalışmada, dinamik web uygulamalarındaki dolaşım ve erişim hatalarına yol açan senaryoların tespiti ve otomatik olarak canlandırılması için bir araç sunulmaktadır. Sunulan yöntemde ilk olarak verilen web uygulamasının modeli, AJAX tabanlı web uygulamalarını analiz edebilen, web crawler araçları yardımıyla çıkartılmaktadır. Daha sonra, model, web crawler'a olan bağımlılığı azaltmak ve kullanıcılara çıkartılan modeller üzerinde değişiklik yapma imkanı vermek için oluşturulan ara modelleme diline çevrilmektedir. Ardından geliştirilen araç yardımıyla, model denetleme diline çevrilen modele denetlenmesi istenen özellikler kullanıcı tarafından tanımlanmaktadır. Son olarak, model denetleme aracının ürettiği karşı örnekler web tarayıcısı üzerinde canlandırılmaktadır. Bu özellikler ile model denetleme tekniğinin uygulanması ve çıktılarının herhangi bir geçmiş deneyim gerekmeden anlaşılabilmesi sağlanmaktadır. Aracın kullanılabilirliğini ölçmek için bir kullanıcı çalışması yürütülmüştür. Katılımcılar, hata tespiti ve hataların görselleştirilmesini yararlı bulduklarını bildirmişlerdir. Ayrıca, aracın dolaşım hatalarını tespitindeki etkililiği 14 web uygulamasıyla değerlendirilmiş ve 44 gerçek ulaşım hatası tespit edilmiştir. Araç yardımı ile erişim kontrolü hatalarının tespit edilebilirliği ise hata enjeksiyonu metoduyla değerlendirilmiştir. Ayrıca, web uygulamalarının modelleri, uygulamaların sahip olduğu karmaşık ve zengin yapıdan dolayı crawler tarafından eksik çıkartılabildiği için yanlış tespitlerin ortaya çıkabildiği gözlemlenmiştir.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="tr">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Giriş</head><p>Web uygulamalarının kullanımı artık tüm alanlar için kaçınılmaz bir hale gelmektedir; ticaret, eğitim, sağlık, devlet gibi birçok alandaki hizmetler web uygulamaları aracılığıyla iletilmekte ve web teknolojilerinin hızla gelişmesiyle bu uygulamaların kullanımı giderek artmaktadır <ref type="bibr" target="#b21">[22]</ref>. Web uygulamalarında var olan hataların tespiti için etkili bir yöntem ihtiyacı ise giderek önem kazanmaktadır. Yetersiz dolaşım özellikleri web uygulamalarındaki en yaygın hatalardan birini oluşturmaktadır. Gidecek bir sonraki sayfası olmayan, çıkmaz sayfalar (dead end) ve ulaşılamayan web sayfaları kullanılabilirliği azaltan dolaşım hatalardan bazılarıdır. De Alfaro <ref type="bibr" target="#b8">[9]</ref> ve Di Sciascio v.d. <ref type="bibr" target="#b11">[12]</ref> çıkmaz sayfaların bulunmamasının iyi tasarımın gereksinimlerinden biri olduğunu belirtmişlerdir. Ayrıca, web uygulamalarında kullanıcılardan yetki bilgisini isteyen servislerin erişim kontrolündeki eksiklikler önemli bir başka hata kategorisini oluşturmaktadır. OWASP 2013 web uygulamaları güvenlik açıkları ilk 10 listesinde [23] 7. sırada yer alan "Eksik işlev seviyesindeki erişim kontrolü" ve CWE 2011 en tehlikeli 25 yazılım hataları listesinde <ref type="bibr" target="#b6">[7]</ref> 6. sırada yer alan "Eksik yetkilendirme" maddeleri bu tip erişim hatalarını kapsamaktadır. Bu ve benzeri erişim kontrolü hatalarını ve dolaşım hatalarını önlemek veya tespit etmek için model denetleme kullanılan metotlardan biridir ( <ref type="bibr" target="#b8">[9]</ref>, <ref type="bibr" target="#b10">[11]</ref>, <ref type="bibr" target="#b13">[14]</ref>, <ref type="bibr" target="#b14">[15]</ref>, <ref type="bibr" target="#b15">[16]</ref>).</p><p>Formel sistem modellerinin, verilen zamansal mantık özellikleriyle otomatik doğrulanması için geliştirilen model denetleme metodu, web doğrulanması için kullanılması avantajlı bir metottur; model denetleme otomatik olarak, kullanıcı desteğine ihtiyaç duymadan, sistem modelinin uzayında kapsamlı arama ve denetleme yapabilmektedir. Ayrıca, model denetleme ihlal edilen her özellik için ürettiği karşı örneklerle hatanın bulunmasını kolaylaştırmaktadır. Fakat, bu getirilerine rağmen, model denetleme, formel metotlar ile ilgili deneyimsiz geliştiriciler için uygulaması zor bir metottur. Ek olarak, web uygulamasının formel modelinin çıkarılması, model denetleme uygulanmasını zorlaştıran başka bir nedendir. Çünkü karmaşık yapılarıyla, web uygulamaları, modellenmesi zor sistemlerdir. Tüm bu nedenler, model denetlemenin web uygulamalarının doğrulanması için tercih edilmemesine neden olmaktadır.</p><p>Bu çalışmada,  model denetleme tekniğini deneyimsiz kullanıcılara arka plandaki formel metotlar olmaksızın uygulatmak,  dolaşım ve erişim kontrolü hatalarının sembolik model denetleme ile tespit edilmesi amaçlanmıştır. Geliştirilen araç, web uygulamasının Crawljax <ref type="bibr" target="#b20">[21]</ref> ve WebMole'un <ref type="bibr" target="#b18">[19]</ref> bir başka versiyonu olan, Micro-Crawler araçlarıyla elde edilmiş statik gösterimini model olarak kabul etmektedir. Model denetleme aracı olarak ise NuSMV <ref type="bibr" target="#b5">[6]</ref>, bir sembolik model denetleme aracı kullanılmaktadır. Sunulan yöntem web crawler araçlarının çıktısının web modele çevrilmesi, sembolik model denetleme ve karşı örneklerin canlandırılması için otomatik çalıştırılabilir betik üretme işlemlerini birleştirmektedir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Literatür Taraması</head><p>Model denetleme ile web uygulamalarının doğrulaması birçok kez denenmiş bir yöntemdir. Model denetleme araçları, web tasarımı doğrulaması, desteklenmesi ( <ref type="bibr" target="#b4">[5]</ref>, <ref type="bibr" target="#b11">[12]</ref>, <ref type="bibr" target="#b13">[14]</ref>, <ref type="bibr" target="#b21">[22]</ref>), hata tespiti <ref type="bibr" target="#b0">[1]</ref> ve web akışını kontrol etmede <ref type="bibr" target="#b14">[15]</ref> kullanılabilmektedir. Web uygulamalarının formel modellerini oluşturmak, amaçlar farklı olsa da, model denetlemeyi kullanan tüm çalışmalarda ortak bir süreçtir. Modelleme, model denetleme yönteminde kilit bir öneme sahiptir, çünkü model bazlı herhangi bir doğrulama işlemi sadece sistemin modeli kadar iyidir <ref type="bibr" target="#b1">[2]</ref>. Web uygulamaları genelde dinamik betiklerle yazıldığı ve kullanıcı etkileşimleri uygulamanın akışını dinamik olarak oluşturduğu için, statik analizle yapılmış modelleme dolaşımsal hataların bulunmasındaki potansiyeli sınırlamaktadır <ref type="bibr" target="#b0">[1]</ref>. Buna rağmen statik analiz ile, kaynak koddan, elde edilen model web uygulamalarının kontrol akışını doğrulamakta kullanılabilmektedir <ref type="bibr">[20]</ref>. Dinamik analizle modellemeye bir örnek olan Haydar v.d.'nin çalışmasında harici davranışları izlenerek, http istek/cevapları, web uygulamasının modeli yaratılmaktadır <ref type="bibr" target="#b16">[17]</ref>. Bazı çalışmalarda ise web uygulaması modeli manuel olarak özel bir modelleme diliyle tanımlanmakta, ardından bu model, model denetleme aracının diline çevrilmektedir ( <ref type="bibr" target="#b14">[15]</ref>, <ref type="bibr" target="#b22">[24]</ref>). Ayrıca, var olan bir web uygulamasının modelini web crawler yardımıyla çıkarmak da mümkündür. Fakat, bu çok doğrudan bir süreç değildir <ref type="bibr" target="#b9">[10]</ref>, çünkü artan etkileşim ve dinamik içerikten dolayı web uygulamalarının bu şekilde modellenmesi zor bir süreç haline gelmektedir. Bu çalışmada, bahsedilen sebepten dolayı AJAX tabanlı web uygulamalarını crawl edebilme kabiliyetine sahip araçlar kullanılmaktadır.</p><p>Otomatik web doğrulama araçlarından AnWeb <ref type="bibr" target="#b11">[12]</ref>, web uygulamalarının tasarımlarını desteklemek için geliştirilmiştir. AnWeb'de model, kullanıcı form doldurma işlemleri için sunucu ve statik sayfaları belirlemek için istemci kodlarından oluşturulmaktadır. Model durumlarını web sayfaları, pencereler ve linkler oluşturmaktadır. WaVer <ref type="bibr" target="#b4">[5]</ref> ise web uygulamalarının tasarımını denetlemek amacıyla UML diyagramlarını doğrulayan bir araçtır. NuSMV model denetleme aracının kullanıldığı bu çalışmada, çıktılar UML diyagramında gerekli düzenlemelerin yapılması için kullanılmaktadır. AnWeb ve WaVer'de formel modelleme otomatikleştirilmekte, model denetleme ise yazarlar tarafından hazırlanan özelliklerle uygulanmaktadır. Miao ve Zeng ise özelliklerin üretimini verilen tasarım diyagramı yardımıyla otomatikleştirmektedir <ref type="bibr" target="#b21">[22]</ref>. Denetlenecek model ise web uygulamasının implementasyon modelini temsil etmekte ve manuel olarak tanımlanmaktadır. <ref type="bibr" target="#b21">[22]</ref>'de tasarım modeli, özellikler için bir taban oluştursa da kullanıcı özellik tanımlama işleminin dışında kalmıştır. Denetlenecek özelliklerin kullanıcı tarafından tanımlandığı çalışmalar da mevcuttur ( <ref type="bibr" target="#b3">[4]</ref>, <ref type="bibr" target="#b10">[11]</ref>, <ref type="bibr" target="#b16">[17]</ref>). Bu yolla, deneyimsiz kullanıcılar için model denetleme aracının uygulaması daha anlaşılabilirleştirilse de, bu uygulamanın çıktısının anlaşılması için bir çeviri işlemi yapılmadığı gözlenmektedir. Hata çıktısının anlaşılabilirliğini gözeten bir çalışmaya örnek VeriWeb'dir <ref type="bibr" target="#b2">[3]</ref>. VeriWeb, interaktif web uygulamalarındaki tüm yürütme yollarını keşfetmek ve analiz etmek için geliştirilen bir araçtır. Bu çalışmada VeriSoft'u kullanarak belirlenemezci bir algoritmayla arama ve keşfetme işlemi gerçekleştirilmekte, ayrı bir bileşenle yürütme yollarındaki hatalar tespit edilmekte ve WebVCR adlı kaydet/oynat aracıyla canlandırılabilmektedir. Fakat hata oynatma, otomatik olarak yapılmamakta bunun yerine kullanıcıya bir seçenek olarak sunulmaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Yöntem</head><p>Geliştirilen aracın ayrıntılı çalışma akış şeması Şekil </p><formula xml:id="formula_0">/HTML[1]/BODY[1]/P[1]/A[1] &lt;/XPathOfElement&gt; &lt;/edge&gt; …… &lt;/edges&gt;</formula><p>Şekil 2'de örnek bir ara web modeli gösterilmektedir. İlk satır webstate tanımını ifade etmektedir. Bu formatta, bağlantı ilişkisi &lt;edge&gt; ve &lt;/edge&gt; etiketleri arasında verilmiştir ve her biri, w i , &lt;from&gt; etiketiyle tanımlanan bir webstate, w j , &lt;to&gt; etiketiyle tanımlanan webstate ve w i ve w j arasındaki geçişleri tetiklemek için tıklanan elementin XPath ifadesini içeren etiketlerinden oluşturulmuştur. Şimdilik, geçiş sadece tıklama olayıyla tanımlanmıştır, geri tuşu ise dikkate alınmamıştır. Bu kısıtlamanın sebebi ise web crawler tarafından üretilen sonlu sistem modellerinden kaynaklanmaktadır.</p><p>Web crawler modelinin ara web modele çevrilmesinin ardından kullanıcılar eksik olduğunu düşündükleri webstate veya geçiş tanımlarını aracın arayüzü yardımıyla ekleyebilmektedir. Ayrıca, kullanıcı kendi web modelini elle tanımlayabilmektedir.</p><p>Web crawler aracından alınan web modelin ara web modeline dönüştürülmesinin ardından (Şekil 2) NuSMV modeli yaratılır. Aracımız, denetlenecek özellikleri CTL (Hesaplama Ağacı Mantığı, Computation Tree Logic) formülleri şeklinde tanımlar. CTL özellikleri hakkında detaylı açıklama bölüm 3.3'te, NuSMV modelinin yaratılması ise bölüm 3.2'de verilmektedir. En son aktivite olan karşı örneklerin Selenium Webdriver kütüphaneleri ile web tarayıcı üzerinde yürütülen çalıştırılabilir senaryolara çevrilmesidir. Bu işlem ise bölüm 3.4'te açıklanmaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Örnek Uygulama</head><p>Bu bölümün geri kalanında, aracın ara web modelinin oluşturulmasının ardından çalışma işleyişi örnek bir uygulama (Şekil 3) üzerinden anlatılmaktadır. Örnek web uygulaması 6'sı php dosyası olmak üzere 12 kaynak dosyasından oluşmaktadır. Uygulama özellikle geliştirilen araçla bulunabilen hataların gösterimi için tasarlanmıştır. Örnek uygulamada, AJAX tabanlı bir sayfa, bir oturum açma sayfası ve oturum açma gerektiren bir kaç sayfa, 2 çıkmaz sayfa ve 1 geçersiz bağlantı bulunmaktadır. <ref type="bibr">Bu</ref>   ASSIGN bölümünde öncelikle değişkenlerin ilk değerleri init yapısı ile atanmıştır (satır 8-10). Element değişkenine, henüz hiçbir elemente tıklanmadığını belirtmek için, null_element değerini atanmıştır. Webstate değişkeninin ilk değeri uygulamanın açılış sayfası olan index'tir. Koruma koşulu değişkeni login, false değerini almıştır.</p><p>İlk değerlerin tanımlanmasının ardından, her bir değişkenin bir sonraki adımda alacağı değeri case yapısı içinde geçiş ilişkileri ile tanımlanmaktadır. Case yapısında her bir kısım bir koşul, noktalı virgül ve değişkenin alacağı değerden oluşmaktadır. TRUE kelimesiyle başlayan son case koşulu diğer hiçbir koşulu sağlamayan değişken değerlerinin aldığı değeri, (default value) belirtmektedir.</p><p>Şekil 4'te 11 ve 27. satırlar arasında tanımlanan webstate değerinin geçiş ilişkileri &lt;edge&gt;,&lt;/edge&gt; etiketleri içinde tanımlanan bilgilere göre tanımlanmaktadır. Ara web model anlatımında değinildiği gibi geçişler &lt;from&gt;, &lt;to&gt; ve &lt;XpathOfElement&gt; alt öğelerinden oluşmaktadır. Webstate case koşulları &lt;from&gt; etiketi ve değiştirilmiş XPath ifadesiyle eşleşen elemanın tıklanma olayından oluşmaktadır. Buradaki next ifadesi eleman değişkeninin bir sonraki adımdaki değerini gösterir. Eleman değeri modeldeki bir webstate değerinden ötekine geçmek için gerekli olan tıklanabilir eleman bilgisini vermektedir. Bu yüzden, eleman değişkeni bir önceki webstate içindeki son tıklanan elemanı vermektedir. Son olarak, hiç bir geçiş sağlanamadığında tuzak durum olarak dead_end_webstate geçişini tanımlanmaktadır (Satır 26).</p><p>Eleman değişkeninin bir sonraki değeri o anki webstate değerinin, DOM ağacındaki tıklanabilir elemanlar arasından rastgele seçilmektedir (Satır 28-36). Eğer webstate dead_end_webstate değerini almışsa, sistemin tuzak durumunda kalmasını sağlamak için eleman değeri null_element olarak sabitlenmektedir (satır 36).</p><p>Örnek web uygulamasında bir oturum açma koşulu bulunmaktadır. Bu koşul modele kullanıcının aracımız yardımıyla oturum açma ve kapama geçiş ilişkilerini tanımlamasıyla eklenmiştir. Oturum açma Şekil 5 satır 40 ile verilmektedir. Bu bilgi ayrıca satır 13'ü de etkilemektedir. Satır 13 ile başarılı bir oturum açma işlemiyle state2'ye ulaşılabileceği bilgisi eklenmektedir. Oturum kapama ise satır 41'de tanımlanmaktadır. Örnek web uygulamasının modelinin, belirtilen CTL formülleri ile model denetleme aracıyla yürütülmesi 7 karşı örneğin oluşmasına neden olmuştur. Index ulaşılabilirliği, state9, state4 ve state14 tarafından, çıkmaz sayfa yokluğu aynı webstate'ler tarafından ihlal edilmiştir. Erişim kontrolü özelliği ile ise aslında özel bir durum olması gereken state4'ün oturum açılmadan erişilebildiği tespit edilememiştir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Denetlenen Özellikler</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4">Karşı örneklerden çalıştırılabilir senaryo üretimi</head><p>NuSMV karşı örneklerinden JUnit kodu üretimi, hazırlanan şablon dosyadan yararlanılarak yapılmaktadır. Şablon dosyada Selenium ve JUnit paketlerinin içeri aktarım satırları, setup ve teardown metotlarının ortak kodları bulunmaktadır. Setup metodunda tarayıcı ilk kullanıma hazırlanmakta, teardown adlı metotta ise karşı örneği açıklayan diyalog kutusu gösterilmektedir. Karşı örneklerdeki ihlale neden olan adımlar test metodunun içine, şablona sonradan eklenerek tanımlanmaktadır.</p><p>Şekil 6, NuSMV tarafından AG(webstate=state4-&gt;EF(webstate=index)) özelliğinin modelde ihlal edilmesiyle üretilen karşı örnek vermektedir. Şekil 7, bu karşı örnek ile üretilen JUnit kodunu vermektedir. Ayrıca özellik bilgisi note değişkeniyle teardown metoduna diyalog kutusunu yaratmak için kullanılmıştır. Şekil 6'da hataya neden olan adımlar görülmektedir. Buna göre state4 index sayfasına ulaşamadığı için, state4'e giden yürütme adımları karşı örneği oluşturmaktadır. Bu yüzden Şekil 7'deki test metodunun içinde, index'ten state4'e giden adımlar bulunmaktadır. Test metodu web uygulamasının URL adresinin belirtilmesiyle başlamakta ve hataya yol açan durumlara karşı örnekte yer alan XPath ifadeleriyle eşleşen tıklanabilir elemanlara tıklanmasıyla devam etmektedir. Karşı örnekte NuSMV koduna uyum sağlaması için değiştirilen XPath ifadesi, JUnit koduna çevrilirken orijinal haline dönüştürülmektir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Değerlendirme ve Deneyler</head><p>Geliştirilen aracın değerlendirilmesi 3 adımda gerçekleştirilmiştir. İlk olarak aracın kullanılabilirliğini ölçmek için bir anket uygulanmıştır. Ardından, 14 gerçek uygulama üzerinde aracın dolaşım hata tespit etme kapasitesi değerlendirilmiştir. Son olarak erişim kontrolü hatası bulma kapasitesini ölçmek için hata enjeksiyonu kullanılmıştır. Deneyler, Intel Core i5-3210 Windows 7 ve 4GB RAM bilgisayarda sürdürülmüştür.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Kullanılabilirlik</head><p>Kullanılabilirlik çalışmasının uygulandığı grup ODTÜ Enformatik Enstitüsü web admini, Drupal ile ileri derece web geliştirme deneyimi olan bir doktora öğrencisi, ikisi web geliştirme deneyimi olan, biri php-Mysql deneyimi olan yüksek lisans öğrencileri ve web geliştirme deneyimi olmayan 1 yüksek lisans ve 1 lisans öğrencisi tarafından oluşturulmuştur. Katılımcıların hiçbirinin formel tekniklerle ilgili bilgisi bulunmamaktadır. Aracın, yaklaşık 10 dakika kullanıcılara tanıtılması ve nasıl kullanılacağının anlatılmasının ardından, doğrulama işleminin yapılması istenmiştir. İşlem web crawlerdan çıkan modelin araca yüklenmesi, otomatik olarak üretilen özelliklerle doğulama yapılması, bir bağlantı tutarlılığı özelliği eklenmesi ve bulunan hataların tarayıcı üzerinde oynatılmasından oluşmaktadır.</p><p>Hiçbir formel metot deneyimi olmayan kullanıcılar araç sayesinde CTL özelliği eklemeyi ve web uygulamasını model denetleme kullanarak doğrulamayı başarmışlardır. Bu deneyimin ardından katılımcılara 5 soruluk, likert ölçümüne göre hazırlanmış kullanılabilirlik anketinin tamamlanması istenmiştir. Anket, teknoloji kabul modeli (TAM) <ref type="bibr" target="#b7">[8]</ref> faktörleri olan, algılanan kullanım kolaylığı ve algılanan yararlılık, gözetilerek hazırlanan 5 sorudan oluşturulmuştur. Sonuçlar (bkz. Ek, Tablo A-2) hata canlandırılmasının yararlı bir işlev olacağını öngörmektedir. Kullanım kolaylığı faktörünün düşük sonuçları ise geliştirilen aracın ticari bir yazılım olmadığı için kabul edilebilirdir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Ulaşılabilirlik Hata Tespiti</head><p>Ulaşılabilirlik hatalarının tespiti performansının değerlendirilmesi için 14 web uygulaması kullanılmıştır (bkz. Ek, Tablo A-1). Bu uygulamalar php, asp.net ve java gibi farklı programlama dilleri ile geliştirilmiş, Apache veya IIS 6.0 web sunucularında çalışmaktadırlar. Kullanılan web teknolojileri arasında AJAX da bulunmaktadır.</p><p>Web uygulamaların modelleri Micro-Crawler aracıyla çıkarıldı. Aracın modeli doğrulaması ardından, toplamda 70 karşı örnek üretilmiştir. Her bir web uygulaması için tüm işlem minimum 203 ms (milisaniye), maksimum 2384 ms sürdü. Süre analizine göre medyan 864 ms, ortalama süre ise 533 ms varyansla 961 ms olmuştur. Karşı örneklerden 26 tanesi gerçek uygulamada hata olmayan yanlış gösterimler olmuştur. Yanlış alarm adını verdiğimiz bu karşı örneklerin web crawler aracının modelinin yetersizliğinden ortaya çıktığı gözlemlenmiştir. Örneğin W7 uygulamasında web crawler index ve bir durum arasındaki bağlantıyı rapor etmemiş, bu da iki tane yanlış karşı örneğe neden olmuştur. Bu durumu incelemek için, 3 tane web uygulaması (W7, W12 ve W14) seçilmiş ve model, tarayıcı üzerinden gösterilen hata senaryoları incelenerek, geliştirilen aracın arayüzüyle modeller rafine edilmiştir. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">Erişim Kontrolü Hata Tespiti</head><p>Erişim kontrolü hatalarının bulunmasının performansını değerlendirmek için, açık kaynaklı ve php ile geliştirilen Restaurant Script<ref type="foot" target="#foot_0">1</ref> adlı web uygulamasına hata enjekte edilmiştir. Bu uygulamada kullanıcılar web sitesine kayıt olup, kartları yardımıyla pizza siparişi verebilmektedir. Uygulama kaynak dosyalarından, "auth.php" oturum açma alanlarında doldurulan bilgilerin doğruluğunu kontrol etmektedir. Deney kapsamında, bu dosyanın diğer dosyalara eklendiği satırlar yorum haline getirilerek yetki kontrolünün bazı işlemler için yok sayılması sağlanmıştır. (Şekil 8). Bu yolla web uygulamasının 3 hatalı versiyonu yaratılmıştır. Bir versiyonda sadece üyelik işlemleriyle ilgili dosyalara hata enjekte edilmiştir. Diğer versiyonda kart işlemlerinin yetki alanları değiştirilmiştir. Son olarak hem kart hem de üyelik işlemlerine hata enjekte edilmiştir. Versiyon 1,2 ve 3'te bulunan karşı örnekler yalnızca enjekte edilen hatanın bulunduğu dosyayla ilgilidir. Erişim kontrolü hataları, araç yardımıyla tespit edilebilmiştir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Sonuç</head><p>Bu çalışmada, formel metot bilgisi olmayan kullanıcılara, model denetleme ile web uygulamalarını doğrulama imkanı vermek için bir yaklaşım ve araç geliştirilmiş, bu kapsamda, modelleme işlemi, zamansal özelliklerin tanımlanması ve üretilen karşı örneklerin anlamlandırılması sağlanmıştır. Ayrıca web crawler'ların ürettiği web model formatları model denetlemede kullanılmış, kullanıcının sıfırdan bir model geliştirmesine gerek kalmamıştır. Geliştirilen aracın kullanılabilirliği formel metot bilgisi olmayan fakat web geliştirmeyle ilgili farklı seviyelerde bilgisi bulunan katılımcılarla değerlendirilmiş ve aracın hata bulma, görselleştirmesinde yararlı olduğu, ama kullanım kolaylığı açısından zayıf kaldığı gözlemlenmiştir. Hata tespit etme performansı ise ulaşılabilirlik ve erişim kontrolü için ayrı değerlendirilmiş, sonuçlara göre, 14 uygulamada 44 ulaşılabilirlik hatası ve 1 web uygulamasına kusur enjekte edilerek tüm erişim kontrolü hataları araç yardımıyla tespit edilmiştir. </p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Şekil 3 .</head><label>3</label><figDesc>Model çıkarım sırasında tüm webstate kümesi web crawler tarafından tanımlanmıştır, ancak geçişlerden, state13'ü state2'ye bağlayan geçiş tespit edilememiştir. State13 DOM ağacının asenkron değişmesini saylayan bir AJAX olayı ile ortaya çıkan bir durumdur. Bu gibi durumlarda, Crawljax sadece değişen kısımlarda yer alan farklı tıklanabilir elemanları tanımlayabilmektedir. Örnek web uygulamasında, state2'ye giden bağlantının olduğu kısım yenilenmediği için, bu bağlantı State13'teki haliyle aynı kalmış, bu sebeple, bağlantı ve dolayısıyla state2'ye giden geçiş Crawljax tarafından tanımlanamamıştır. Crawljax'ın tanımlayamadığı bu geçiş, sonradan eklenmeseydi, bu durum state13'ün çıkmaz sayfa olarak tespit edilmesine neden olacak ve yanlış alarma yol açabilecekti. Örnek web uygulaması ara web modeli gösterimi3.2 NuSMV modelinin oluşturulmasıAra web modelinin NuSMV modeline dönüştürülmesi yalnızca sözdizimsel bir işlem değildir. NuSMV dilindeki web modelinde bir tuzak durumu bulunmaktadır, ayrıca NuSMV modelinde, ara web modelinden farklı olarak, durumların erişimlerini kısıtlayıcı, koruma koşulları bulunabilmektedir.Ara web modeli yalnızca uygulama içindeki dolaşımı gösterebilir. Erişim kontrolü ve yetki hatalarını yakalamak için gerekli bilgiye sahip değildir. Bunun için kullanıcılardan oturum açma ve kapamanın gerçekleştiği durumları tanımlaması istenmektedir. Bu çalışmada oturum açma durumundan oturum kapamaya uğramadan ulaşılabilen tüm durumlara özel durum adı verilmiştir.NuSMV web modelinde oturum açılıp açılmadığı bilgisini için boole değişkenler kullanılmıştır. Oturum açmak bir koruma koşulu olarak düşünülmektedir. Koruma koşulları rol bazlı yetkileri tanımlamak için de kullanılabilmektedir.NuSMV web modelinde bulunan bir diğer bileşen ise tuzak durumudur. Model denetlemede kullanılan yapılarda her durumdan en az bir geçiş ilişkisi bulunmalıdır. Buna uyum sağlamak için dead_end_webstate durumu bir tuzak olarak webstate kümesine eklenmiştir. Bu sayede her webstate için gidecek bir sonraki webstate olması sağlanmıştır. Yukarıda belirtildiği üzere, tüm geçişler tıklanabilir bir sayfa elemanıyla tetiklenmektedir. Bu yüzden tuzak durumuna geçiş elemanı olarak null_element tanımlanmıştır. Şekil 4 örnek web uygulamasının NuSMV web modelinin bir kısmını vermektedir. NuSMV girdi diliyle tanımlanan bu model, Şekil 2'deki ara web modelinden otomatik olarak üretilmiştir. NuSMV web modelinin grafiksel gösterimi Şekil 5'te verilmiştir. Şekil 4 ile görüldüğü üzere sistem bir ana modül ile tanımlanmıştır. Bu modül isimleri webstate, element ve login olan 3 değişken içermektedir. Webstate değişkeninin değer kümesi (satır 4) ara web modelde tanımlanmış webstate isim değerleridir. Element değişkeninin değer kümesi ara web model'de &lt;edge&gt; etiketinin içinde bulunan &lt;XpathOfElement&gt; etiketine ait XPath ifadelerinin NuSMV girdi diline uyarlanmış halidir. Aracımız XPath ifadesindeki köşeli parantez ve ters taksim işareti NuSMV diline uyum sağlamak için altçizgi işaretiyle değiştirmiştir.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Şekil 8 .Tablo 4 .</head><label>84</label><figDesc>Erişim kontrolü hatalarına sebep olan kod parçası Deney için Crawljax3.6 model çıkarımında kullanılmış ve CTL özellikleri tanımlanırken sadece yetki gerektiren sayfalar denetlenmiştir. Tablo 4'te hatalı 3 versiyon için de toplam durum, kenar sayısı ve üretilen karşı örnek sayısı verilmektedir. Kusur enjekte edilmiş versiyonlar ve bilgisi</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Tablo A- 2 .</head><label>2</label><figDesc>Kullanılabilirlik anketi sonuçları</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="7,136.10,267.35,330.80,311.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="10,130.75,189.90,334.25,267.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>uygulamanın ara web modeli Şekil 2 ile gösterilmiştir. Bu ara web model, Crawljax aracından çıkan modelden dönüştürülmüştür, çünkü oturum açma için gereken form doldurma işlemi, kullanılan crawler araçlarından sadece Crawljax tarafından desteklenmektedir. Şekil 3'teki kesikli çizgiler Crawljax'ın yakalayamadığı geçişleri temsil etmektedir. Bu geçiş, aracımızın kullanıcı arayüzü yardımı ile ara web modeline eklenmiştir. Şekil 3'te görüldüğü üzere, uygulamada toplam 10 webstate bulunmaktadır. State1 adlı webstate içinde oturum açma işlemi gerçekleşmektedir. Webstate'leri birbirine bağlayan kenarların üzerindeki XPath ifadesi, kenarın başlangıcındaki webstate üzerinde bulunan ve geçişe neden olan tıklanabilir elemanın DOM ağacı üzerindeki adresini vermektedir. Örnekte yalnızca index sayfası tüm kullanıcılara açıktır. State4 ise yetki gerektiren bir sayfa olması gerekirken, oturum açılmadan da erişilebilmektedir. Bu hatanın erişim kontrolü özelliği ile tespit edileceği beklenmektedir. State7 ve state13 aynı URL adresine sahiptir. Bu iki webstate arasındaki geçiş JavaScript olayı ile sağlanmaktadır. State10 geçersiz bağlantı içeren bir web sayfasını temsil etmektedir. State9 ve state4 ise hiçbir tıklanabilir eleman bulundurmayan çıkmaz sayfalardır.</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Tablo 1 .</head><label>1</label><figDesc>Dolaşım ve erişim kontrolü özellikleri ve CTL formülleri Tablo 1'de indexe ulaşım özelliği AG(EF(webstate=index)) olarak da tanımlanabilirdi. Fakat, bu durumda NuSMV sadece bir karşı örnek üretecekti. İhlal edilen her webstate için bir karşı örnek üretilmesini sağlama adına, her bir webstate için bir CTL özelliği tanımlanmıştır. Aynı konu çıkmaz sayfa özelliği için de geçerlidir.</figDesc><table><row><cell>Kategori</cell><cell>CTL Formülü</cell><cell>Açıklama</cell></row><row><cell>Anasayfa</cell><cell>Her bir webstate state i için ,</cell><cell>Anasayfa ulaşılabilir diğer tüm</cell></row><row><cell>(index)</cell><cell></cell><cell>durumlardan ulaşılabilirdir.</cell></row><row><cell>ulaşılabilirliği</cell><cell>AG(webstate=state i -&gt;EF</cell><cell></cell></row><row><cell>(otomatik)</cell><cell>(webstate= index))</cell><cell></cell></row><row><cell>Çıkmaz sayfa</cell><cell>Her bir webstate state i için ,</cell><cell>Tüm ulaşılabilir durumlardan başka</cell></row><row><cell>yokluğu</cell><cell></cell><cell>bir duruma giden bir geçiş vardır.</cell></row><row><cell></cell><cell>AG(webstate=state i -&gt;</cell><cell></cell></row><row><cell>(otomatik)</cell><cell>!EX(dead_end_webstate))</cell><cell></cell></row><row><cell>Bağlantı</cell><cell>AG(webstate=state 1 -&gt;</cell><cell>State 1 durumdan state 2 duruma</cell></row><row><cell>Tutarlılığı</cell><cell>EF(webstate=state 2 ))</cell><cell>ulaşım her zaman mümkündür.</cell></row><row><cell></cell><cell></cell><cell>(kullanıcı state 1 ve state 2</cell></row><row><cell>(yarı otomatik)</cell><cell></cell><cell>durumlarını seçer)</cell></row><row><cell>Erişim</cell><cell>!EF(webstate=state 1 &amp;</cell><cell>Özel durum state 1 oturum açılmadan</cell></row><row><cell>Kontrolü</cell><cell>login=FALSE)</cell><cell>ulaşılamaz.</cell></row><row><cell>(yarı otomatik)</cell><cell></cell><cell>(kullanıcı state 1 durumunu seçer)</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Tablo 3 .</head><label>3</label><figDesc>Model değişimi sonrası ve öncesi karşı örnek ve yanlış alarm sonuçları</figDesc><table><row><cell cols="9">Tablo 3 hata senaryo sayıları, yanlış alarm senaryo sayıları, bulunan durum (state)</cell></row><row><cell cols="9">ve kenar (edge) sayılarını model düzeltmeden önce ve sonraki değerlerini</cell></row><row><cell cols="9">göstermektedir. İlk kısım Micro-Crawler aracının çıkardığı model, diğer kısım ise</cell></row><row><cell cols="9">modelin yanlış alarmlara göre düzeltilmiş model için verilmiştir. 15-20 dakika süren</cell></row><row><cell cols="9">karşı örneklerin incelenmesi ve yanlış alarmların hata senaryolarını gözlemleyerek</cell></row><row><cell cols="7">düzeltilmesi süreci ardından yanlış alarmlar ortadan kaldırılmıştır.</cell><cell></cell><cell></cell></row><row><cell>No</cell><cell cols="4">Web crawler aracından çıkan model</cell><cell cols="3">Değiştirilen model</cell><cell></cell></row><row><cell></cell><cell>Karşı örnek #</cell><cell>Yanlış alarm #</cell><cell>Durum #</cell><cell>Kenar #</cell><cell>Karşı örnek</cell><cell>Yanlış alarm</cell><cell cols="2">Durum # Kenar #</cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>#</cell><cell>#</cell><cell></cell><cell></cell></row><row><cell>W7</cell><cell>6</cell><cell>2</cell><cell>13</cell><cell>74</cell><cell>4</cell><cell>0</cell><cell>13</cell><cell>75</cell></row><row><cell>W12</cell><cell>12</cell><cell>4</cell><cell>16</cell><cell>78</cell><cell>8</cell><cell>0</cell><cell>16</cell><cell>80</cell></row><row><cell>W14</cell><cell>8</cell><cell>6</cell><cell>11</cell><cell>29</cell><cell>2</cell><cell>0</cell><cell>11</cell><cell>32</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://sourceforge.net/projects/restaurantmis/?source=directory</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Finding bugs in web applications using dynamic test generation and explicit-state model checking</title>
		<author>
			<persName><forename type="first">S</forename><surname>Artzi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kiezun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Dolby</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Tip</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Paradkar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">D</forename><surname>Ernst</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software Engineering</title>
		<imprint>
			<biblScope unit="volume">36</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="474" to="494" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
	<note>IEEE Transactions on</note>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Principles of model checking</title>
		<author>
			<persName><forename type="first">C</forename><surname>Baier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Joost-Pieter</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008">2008</date>
			<publisher>MIT press</publisher>
			<biblScope unit="volume">26202649</biblScope>
			<pubPlace>Cambridge</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">VeriWeb: Automatically testing dynamic web sites</title>
		<author>
			<persName><forename type="first">M</forename><surname>Benedikt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Freire</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Godefroid</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of 11th International World Wide Web Conference (WW W&apos;</title>
				<meeting>11th International World Wide Web Conference (WW W&apos;</meeting>
		<imprint>
			<date type="published" when="2002">2002. 2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Tool support for model checking of web application designs</title>
		<author>
			<persName><forename type="first">M</forename><surname>Brambilla</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cabot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Moreno</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Web Engineering</title>
				<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="533" to="538" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Waver: A model checking-based tool to verify web application design</title>
		<author>
			<persName><forename type="first">D</forename><surname>Castelluccia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mongiello</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Ruta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Totaro</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Electronic notes in theoretical Computer Science</title>
		<imprint>
			<biblScope unit="volume">157</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="61" to="76" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">NuSMV: A new symbolic model verifier</title>
		<author>
			<persName><forename type="first">A</forename><surname>Cimatti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Clarke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Giunchiglia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Roveri</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification</title>
				<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1999-01">1999. January</date>
			<biblScope unit="page" from="495" to="499" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Common Weakness Enumeration</title>
		<ptr target="http://cwe.mitre.org/top25/index.html#CWE-862" />
		<imprint>
			<date type="published" when="2011-03-29">2011. March 29, 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Perceived usefulness, perceived ease of use, and user acceptance of information technology</title>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">D</forename><surname>Davis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">MIS quarterly</title>
		<imprint>
			<biblScope unit="page" from="319" to="340" />
			<date type="published" when="1989">1989</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Model Checking the World Wide Web</title>
		<author>
			<persName><forename type="first">L</forename><surname>De Alfaro</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">InComputer Aided Verification</title>
				<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2001-01">2001. January</date>
			<biblScope unit="page" from="337" to="349" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">SiteHopper: Abstracting navigation state machines for the efficient verification of web applications</title>
		<author>
			<persName><forename type="first">G</forename><surname>Demarty</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Maronnaud</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Le Breton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Hallé</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Web Services and Formal Methods</title>
				<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="103" to="117" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Web applications design and maintenance using symbolic model checking</title>
		<author>
			<persName><forename type="first">Di</forename><surname>Sciascio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Donini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">M</forename><surname>Mongiello</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Piscitelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the European Conference on Software Maintenance and Reengineering</title>
				<meeting>the European Conference on Software Maintenance and Reengineering<address><addrLine>Benevento, Italy; Silver Spring, MD</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society Press</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="63" to="72" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">AnWeb: a system for automatic support to web application verification</title>
		<author>
			<persName><forename type="first">E</forename><surname>Di Sciascio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">M</forename><surname>Donini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mongiello</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Piscitelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">InProceedings of the 14th international conference on Software engineering and knowledge engineering</title>
				<imprint>
			<date type="published" when="2002-07">2002. July</date>
			<biblScope unit="page" from="609" to="616" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Design verification of web applications using symbolic model checking</title>
		<author>
			<persName><forename type="first">E</forename><surname>Di Sciascio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">M</forename><surname>Donini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mongiello</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Totaro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Castelluccia</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Web Engineering</title>
				<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="69" to="74" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">A transformation-driven approach to the verification of security policies in web designs</title>
		<author>
			<persName><forename type="first">E</forename><surname>Guerra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Sanz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Díaz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Aedo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Web Engineering</title>
		<imprint>
			<biblScope unit="page" from="269" to="284" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Eliminating navigation errors in web applications via model checking and runtime enforcement of navigation state machines</title>
		<author>
			<persName><forename type="first">S</forename><surname>Hallé</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Ettema</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Bunch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Bultan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the IEEE/ACM international conference on Automated software engineering</title>
				<meeting>the IEEE/ACM international conference on Automated software engineering</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2010-09">2010. September</date>
			<biblScope unit="page" from="235" to="244" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Modeling and verification of adaptive navigation in web applications</title>
		<author>
			<persName><forename type="first">M</forename><surname>Han</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Hofmeister</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 6th international conference on Web engineering</title>
				<meeting>the 6th international conference on Web engineering</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2006-07">2006. July</date>
			<biblScope unit="page" from="329" to="336" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Formal verification of web applications modeled by communicating automata</title>
		<author>
			<persName><forename type="first">M</forename><surname>Haydar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Petrenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Sahraoui</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Formal Techniques for Networked and Distributed Systems-FORTE</title>
				<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2004">2004. 2004</date>
			<biblScope unit="page" from="115" to="132" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Using the model checker spin for web application design</title>
		<author>
			<persName><forename type="first">K</forename><surname>Homma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Izumi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Abe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Takahashi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Togashi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">10th IEEE/IPSJ International Symposium on</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2010-07">2010. July. 2010</date>
			<biblScope unit="page" from="137" to="140" />
		</imprint>
	</monogr>
	<note>Applications and the Internet (SAINT)</note>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Automated exploration and analysis of ajax web applications with WebMole</title>
		<author>
			<persName><forename type="first">Le</forename><surname>Breton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Maronnaud</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Hallé</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 22nd international conference on World Wide Web companion</title>
				<meeting>the 22nd international conference on World Wide Web companion</meeting>
		<imprint>
			<date type="published" when="2013-05">2013. May</date>
			<biblScope unit="page" from="245" to="248" />
		</imprint>
	</monogr>
	<note>International World Wide Web Conferences Steering Committee</note>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Verifying interactive Web programs</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">R</forename><surname>Licata</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Krishnamurthi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings. 19th International Conference on</title>
				<meeting>19th International Conference on</meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2004-09">2004. September. 2004</date>
			<biblScope unit="page" from="164" to="173" />
		</imprint>
	</monogr>
	<note>Automated Software Engineering</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Crawling Ajax-based web applications through dynamic analysis of user interface state changes</title>
		<author>
			<persName><forename type="first">A</forename><surname>Mesbah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Van Deursen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Lenselink</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on the Web (TWEB)</title>
		<imprint>
			<biblScope unit="volume">6</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page">3</biblScope>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Model checking-based verification of web application</title>
		<author>
			<persName><forename type="first">H</forename><surname>Miao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Zeng</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">12th IEEE International Conference on</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2007-07">2007. July. 2007</date>
			<biblScope unit="page" from="47" to="55" />
		</imprint>
	</monogr>
	<note>Engineering Complex Computer Systems</note>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">A Testing tool for Web applications using a domain-specific modelling language and the NuSMV model checker</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Torsel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">InSoftware Testing, Verification and Validation (ICST)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2013-03">2013. March. 2013</date>
			<biblScope unit="page" from="383" to="390" />
		</imprint>
	</monogr>
	<note>IEEE Sixth International Conference on</note>
</biblStruct>

<biblStruct xml:id="b23">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Ek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Tablo</surname></persName>
		</author>
		<ptr target="http://www.seleniumhq.org/" />
		<title level="m">Değerlendirmede kullanılan web uygulamaları No URL Durum Sayısı Kenar Sayısı W1</title>
				<imprint/>
	</monogr>
	<note>-1</note>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<ptr target="http://www.metu.edu.tr/~ymetin/" />
		<title level="m">W9</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<ptr target="http://www.everestyayinlari.com/tr/" />
		<title level="m">W10</title>
				<imprint/>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
