<?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"></title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Tam</forename><surname>Metin</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Arama</forename><surname>Kullanılarak</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Kullanıcı</forename><surname>Deneyiminin İyileştirilmesi</surname></persName>
						</author>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">D3FEC3B9A44BA0BA15A6A511ED80342D</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-23T19:47+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>Kurumsal arama</term>
					<term>tam metin arama</term>
					<term>OKAPI BM25</term>
					<term>uygulama yaşam döngüsü yönetimi</term>
					<term>iş öğesi ilişkilendirme Enterprise search</term>
					<term>full-text search</term>
					<term>OKAPI BM25</term>
					<term>application lifecycle management</term>
					<term>associate work items</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Kurumsal arama altyapıları, yapısal verinin yanı sıra yapısal olmayan metin tabanlı verinin aranmasını sağlayarak arama etkinliğini arttırmaktadır. Doğru kurgulanmış/uyarlanmış bir kurumsal arama altyapısı kullanıcı deneyimine katkı sağlamakta ve verimliliği arttırmaktadır. Bu çalışmada, HAVELSAN'da kurulu bulunan uygulama yaşam döngüsü yönetim sistemi (Geliştirme Ortamı -GO) özelinde iş öğelerinin geliştirilen arama altyapısı ile kullanıcı sorgulamalarına açılması ve bu altyapının kullanıcı deneyimlerine/verimliliğine katkısı anlatılmaktadır. Tam metin arama uygulaması (OKAPI BM25) ve kurumsal özelleştirmeler için HVL-GO verisinin barındığı SQL sunucusu kullanılmıştır. Yapılan geliştirmeler sonrasında, kullanıcı bilgisayarlarından yapılan iş öğesi arama ve ilişkilendirme işlemlerinde hız sağlandığı görülmüştür.</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>Kurumsal uygulamaların artışına paralel olarak artan veri hacmi, bu verinin sınıflandırılması, saklanması ve gerektiği zaman çağırılması sorunlarını ortaya çıkarmıştır. Kurumsal uygulamalar tarafından üretilen yapısal verilerin yanında kurumsal süreçler ile doküman, rapor, resim vb. gibi yapısal olmayan verilerin de sıklıkla üretildiği görülmektedir. Kurumsal uygulamaların sayısı ve çeşitliliğine ek olarak farklı veri türlerinin ilişkisel veritabanı ve içerik veritabanı gibi farklı ortamlarda saklanması verinin geri çağırılmasını zorlaştırmaktadır. Kurumsal arama yeteneği, kurumsal bilgiye hızlı erişim, bilginin yeniden kullanımın sağlanması, üretim emeğin tekrar etmemesi, "mevcutta ne var" farkındalığının arttırılması, birlikte çalışmayı arttırması, kurum içine aradığı kişiyi, uzmanı bulma amaçlarına hizmet etmektedir. Arama uygulamaları, verinin türüne göre kullanıcılara farklı arayüzler sunmaktadır. Yapısal verilerde arama yaparken daha çok alan üzerinden arama / sorgu sihirbazı kullanılırken, yapısal olmayan verilerde tam metin arama tercih edilmektedir. Sezgisel arama ve öneri sistemleri ise sezgisel arayüzleri kullanıcılara arama kelimeleri önermekte ve bilgiye erişimi hızlandırmaktadır.</p><p>Bu bildiride, HAVELSAN'ın kurumsal uygulamalarından biri olan HAVELSAN Geliştirme Ortamı (HVL-GO)'na eklenen iş öğesi öneri sistemi ve ilişkilendirme özelliğinin geliştirilmesi ve bu özelliğin kullanıcı deneyimine etkileri anlatılmaktadır.</p><p>Bildiride, sezgisel arama ve öneri sistemleri ile ilgili genel bilgi Bölüm 2'de, HVL-GO mimarisi ve mevcut arama özellikleri Bölüm 2'de, HVL-GO'ya eklenen iş öğesi arama ve ilişkilendirme Bölüm 4'te, değerlendirme ve devam eden çalışmalar Bölüm 5'te anlatılmaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Sezgisel Arama ve Öneri Sistemleri</head><p>Standart arama yöntemleri kullanıcının çalışmak için kullanıcının sorgu kelimeleri girerek arama yapmalarını önermektedir. Bu yöntemde arama motorları "arama" düğmesine basıldıktan sonra sorguya eşleşen bilgileri kullanıcıya sunmaktadır. Günümüzün internet arama motorları ve bunların kurum içi uygulamaları, kullanıcı deneyimini iyileştirmek ve aranan bilgiyi en kolay şekilde sergilemek için donanmış durumdadır. Bu mekanizma içerisinde, kullanıcı sorgu kelimelerinin izlenmesi ve kullanıcının arama sonuçlarına verdiği tepki, kullanıcı davranışlarının takibi yer bulmaktadır. Bunun sonucu olarak da sezgisel arama kabiliyeti sunmak mümkün olmaktadır. Sezgisel arama sırasında arama motorları kullanıcı sorgu kelimeleri girmeye başladığında bu kelimeleri tamamlamakta, kelimeler için cümlecik önerileri sunmakta hatta sorgu sonuçlarını henüz kullanıcı kelimeleri yazarken sergilemektedir. Böylelikle kullanıcı, sorgu kelimelerine ek olarak cümlecikler tabanlı sorgu yapmayı ve hatta sorgu kelimesi ile ilgili "başka hangi cümlecikler" kullanılabileceğini görerek sorgularını şekillendirmektedir.</p><p>Öneri sistemleri, kullanıcı bağlamını ve kullanıcı davranışını izleyerek kullanıcılara yeni önerilerde bulunan sistemlerdir. Kullanıcının sorgu kelimelerine göre yerel reklamları gösteren Google Adwords <ref type="bibr" target="#b0">[1]</ref>, kullanıcıların daha önce dinlediği şarkılara göre yeni şarkı öneren Spotify <ref type="bibr" target="#b1">[2]</ref> örnek olarak gösterilebilir. Bu sistemler, kullanıcı geçmiş zamanda en çok ne dinlenmiş, kimleri izlemeye almış kimlerle arkadaş vb. gibi kullanıcı bilgilerinden, kullanıcı eğilimlerini ortaya çıkarmakta ve kullanıcılara yeni öneriler sunmaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">HAVELSAN Geliştirme Ortamı</head><p>HAVELSAN kurumsal uygulamalarından biri olan HVL-GO, kuruma tümleşik uygulama yaşam döngüsü yönetimi sunarak yazılım geliştirme sürecinin otomasyonunu sağlamaktadır.</p><p>Uygulama yazılımlarının fikir aşamasından itibaren geliştirme, dağıtım ve bakım süreçlerinin tamamı Uygulama Yaşam Döngüsü Yönetimi (UYY) olarak tanımlanmaktadır <ref type="bibr" target="#b2">[3]</ref>. Uygulama yaşam döngüsü (UYY), yazılım uygulamalarına ait bütünsel yaşam döngüsü bakışı ve geliştirme sürecinin koordinasyonunu sağlamak ve süreç çıktılarını yönetmek amacı ile ortaya çıkmıştır. UYY, yazılım çıktılarının yüksek kalitede ve hızlı şekilde teslim edilmesi için, yaşam döngüsü süreçlerinin otomasyonunu sağlayarak, yazılım geliştirme sürecine izlenebilirlik ve güçlü raporlama yeteneği kazandırmaktadır <ref type="bibr" target="#b3">[4]</ref>. HAVELSAN Geliştirme Ortamı, kurum içi UYY bilincini arttırmak ve UYY otomasyonu sağlamak için geliştirilen kurumsal bir sistemdir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">HVL-GO Mimarisi</head><p>HVL-GO projelere gereksinim yönetimi, tasarım yönetimi, inşa ve yayın yönetimi, test yönetimi, değişiklik yönetimi, konfigürasyon yönetimi, görev yönetimi, proje izleme ve bilgi havuzu fonksiyonları sunmaktadır. UYY fonksiyonları, HVL-GO kapsamında yer alan hazır ticari ürünlerle sağlanmaktadır. UYY altyapısı olarak MS Team Foundation Server <ref type="bibr" target="#b4">[5]</ref> (TFS) kurumda yaygın olarak kullanılmaktadır. MS TFS, yazılım dünyasına iş öğesi yönetimi, inşa ve yayın yönetimi, test yönetimi, yazılım konfigürasyon yönetimi, proje izleme ve raporlama özellikleri sunmaktadır.</p><p>HVL-GO genel mimarisi Şekil 1'de gösterilmektedir.</p><p>Şekil 1 HVL-GO Mimarisi</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">HVL-GO İş Öğesi Yönetimi</head><p>MS TFS'in kurumsal uygulamalara en büyük katkısı iş öğesi yönetimi ile gerçekleşmektedir. Nitekim UYY'nin görev yönetimi, gereksinim yönetimi ve değişiklik yönetimi özellikleri iş öğeleri ile sağlanmaktadır. MS TFS'in bir diğer katkısı, UYY sürecinin izlenebilirliğin sağlanmasıdır. İş öğelerinin ve diğer özelliklere ait nesnelerin birbirleri ile ilişkilendirilmesi ile bir proje/ürün kapsamında gereksinimden test sürecinin sonuna kadar tüm geliştirme süreci izlenebilmektedir.</p><p>HAVELSAN kapsamında UYY altyapısında yapılan uyarlamalarla elde edilen ilişki haritası Şekil 2'de gösterilmiştir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Şekil 2 TFS İlişki Haritası</head><p>UYY mimarisinde gereksinimler, test durumları, hatalar, görevler gibi farklı öğeler "Work Item (İş Öğesi)" adındaki tek bir model olarak tutulmaktadır. Şekil 2'de bu yapı gösterilmiştir.</p><p>UYY altyapısındaki bu iş öğeleri hiyerarşik ve hiyerarşik olmayan çeşitli ilişki tipleriyle birbirilerine bağlanabilir. Bu ilişki ve iş öğesi tiplerinin çeşidi kullanıcı tarafından da artırılabilir. Gerekli olduğu durumlarda yeni iş öğesi tipi veya iş öğesi ilişki tipi yaratılabilir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">HVL-GO Yerleşik Arama Özellikleri</head><p>HVL-GO'da kayıtlı iş öğelerinin sorgulanması için MS TFS hızlı arama ve sorgu sihirbazı işlevleri sunmaktadır. HVL-GO Web istemcisinde yer alan hızlı arama kutusu, iş öğelerinin tekil tanımlayıcı numara ile çağırılmalarına imkân sağlar. Açılan ekranda çağırılan iş öğesi ile ilgili düzenleme yapmak mümkündür. Anahtar kelime kullanılarak hızlı arama yapılması durumunda, anahtar kelimeler yapısal sorguya dönüştürülerek eşleşen iş öğeleri sorgu sonucu olarak gösterilir. Bu durumda kullanıcı her bir iş öğesini açmak sureti ile işlem yapabilir. İş öğesi numarasının bilinmesi veya iş öğesi tanımında yer alan "ayırt edici" kelimelerin hızlı aramada kullanılması doğrudan erişimi mümkün hale getirmektedir.</p><p>İş öğesi numarasını bilmek her zaman mümkün olmayabilir. Doğru anahtar kelimelerin seçilmemesi durumunda da arama binlerce sonuç dönebilir. Bu durumlar için daha detaylı bir arama fonksiyonuna ihtiyaç vardır.</p><p>HVL-GO Web istemcisi, sorgu sihirbazı kullanılarak iş öğelerini tanımlayan alanlar üzerinden detaylı/yapısal arama yapılmasına imkân sağlamaktadır. Bu alanlar iş öğelerine ait ortak alanlar olabildiği gibi uyarlama ile eklenmiş özel alanlar da olabilir. Sorgu, alt sorgu ile desteklendiğinde iki seviyeli veya ağaç görünümünde sorgu sonuçları elde etmek mümkündür. Sorguda kullanılan alanlara ve sorgu bağlaçlarının kullanımına bağlı olarak sorgu sonucunda onlarca iş öğesi dönüyor olabilir.</p><p>Yerleşik aramanın sezgisel arama veya iş öğesi önerisi kabiliyeti bulunmamaktadır. Kullanıcı deneyiminin arttırılması için iş öğesi öneri sistemi geliştirilerek HVL-GO Web arayüzüne eklenmiştir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">İş Öğesi Öneri Sistemi Geliştirilmesi</head><p>UYY araçlarının gücü, sahip oldukları iş öğelerinde ve bu öğeler arasında kurulan izlenebilirlik ilişkilerinden gelmektedir <ref type="bibr" target="#b5">[6]</ref>. HVL-GO sistemi yaygınlaşma sürecinde kullanıcılar, iş öğeleri arasındaki ilişkinin daha kolay sağlanabilmesini istemişlerdir. HVL-GO'daki yerleşik arama özelliği belirli ölçüde bunu sağlamakla birlikte, kullanıcı deneyimi ve sorgu sonuçlarının yorumlanması açısından zorluklar barındırmaktadır. Arama ile iş öğelerinin bulunması ve ilişkilendirilmesi kullanıcılara çok zaman kaybettirmektedir. UYY fonksiyonlarının iyileştirilmesi <ref type="bibr" target="#b6">[7]</ref> kapsamında UYY altyapısına uzantı olarak geliştirilen yeni arama özelliği ile kullanıcılara hem iş öğesi öneri sistemi hem de ileriki aşamalarda sezgisel aramaya dönüşebilecek tam metin arama altyapısı sağlanmıştır.</p><p>Bu bölümün devamında iş öğesi öneri sistemi geliştirme detayları yer almaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Sık Kullanılan İş Öğesi Alanları</head><p>Her iş öğesi kendi içerisinde farklı alanlardan ve bu alanlar üzerindeki yetkiye bağlı operasyonlardan oluşur. Bu alanların hepsi bir ortak havuzda bulunur. Her iş öğesine gereken alanlar bu havuzdan seçilerek eklenir. Bir alan birden çok iş öğesinde bulunabilir. Tıpkı iş öğeleri ve iş öğesi ilişkileri gibi yeni alanlarda kullanıcılar tarafından tanımlanabilir. Bu alanlardan en sık kullanılanlar Tablo 1'de gösterilmiştir. Bu çalışmada iş öğesi öneri sistemi geliştirilirken iş öğesi başlığı ve iş öğesi açıklama alanları tercih edilmiştir. Çünkü bir iş öğesinin içeriğinin ne olduğunu ve içeriği ile ilgili detayları belirten alanlar bu alanlardır. İş öğesi kimlik numarası ise ayırıcı birer değer olması amacıyla kullanılmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">TFS Uyarlamaları</head><p>İş öğesi öneri sistemi MS TFS arayüzüne ek bir bileşen olarak geliştirilmiştir. MS TFS iş öğelerinin kullanıcılar tarafından olabildiğince esnek bir şekilde modifiye edilmesine olanak sağlamaktadır. Kullanıcılar tarafından geliştirilen uzantılar (extension) iş öğesi ekranında istenen yere eklenebilir. İş öğesi üzerindeki bütün alanlar, rollere tanımlanan yetkiler ve geliştirilen uzantılar XML formatında tutulur. İş öğesi puanlama uygulamasına ait XML içeriği şöyledir.</p><p>&lt;Control FieldName="HVL.ALM.WorkItemSuggestor" Type="Control" Label="Work Item Suggestor" LabelPosition="Left" /&gt; Uygulamanın web arayüzünün geliştirilmesinde TypeScript [11] programlama dili kullanılmıştır. TypeScript, derlendiği zaman çıktı olarak JavaScript kodu veren ve Ja-vaScript kodunu C programlama dili benzeri bir yaklaşımla yazmaya yarayan bir programlama dilidir.</p><p>Uygulamanın genel akışı Şekil 3'de gösterilmektedir. Kullanıcı yeni bir iş öğesi kaydettiğinde iş öğesi tablosuna tüm alanlar kaydedilir. Bu sırada bir tetikleyici (trigger) yardımı ile iş öğesinin kimlik numarası (ID), başlık ve açıklama alanları "WorkItemSource" tablosuna kaydedilir ve indekslenir. Kullanıcı, kaydedilen iş öğesi formunu açtığında ilgili iş öğesinin başlık bilgisi veritabanına gönderilerek öneri iş öğeleri için arama yapılır. Arama sonuçları JSON formatına çevrilerek iş öğesi formu üzerinde listelenir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Şekil 3 Uygulama Akışı</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">SQL Server Uyarlamaları</head><p>MS TFS üzerinde tutulan proje ait verilerin incelenmesinden sonra iş öğesinin kimlik numarası, başlık ve açıklama bilgileri "WorkItemSource" adlı ayrı bir veritabanı tablosu yaratılarak bu tabloya aktarılmış ve indekslenmiştir. Ayrıca her yeni iş öğesi yaratıldığında bu iş öğesinin kimlik numarası, başlığı ve açıklaması da bir tetikleyici (trigger) yardımıyla "WorkItemSource" adlı tabloya aktarılmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3.1">Veri Tablosu</head><p>İndeksleme yapmak için oluşturulan "WorkItemSource" tablosunun şeması aşağıda gösterilmiştir. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>CREATE TABLE [dbo].[hvl_WorkItemTitle]( [Id]</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Kod Listesi 1 WorkItemSource Tablosu Şeması</head><p>Tabloya iş öğesinin kimlik numarası, başlık bilgisi ve açıklama alanları kaydedilmiştir. Son olarak da başlık ve açıklama alanları aralarına birer boşluk karakteri konarak birleştirilmiş ve tek bir kolon olarak kaydedilmiştir. Bunun sebebi "WorkItemSource" tablosu üzerinde çalışacak olan "Work item ranking" uygulamasının başlık ve açıklama alanlarında 0 ile 1 arasında değişen ağırlık oranlarına göre arama yapabilmesini sağlamaktır. Arama algoritması ile ilgili detaylı bilgiler 4.4 bölümde yer almaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3.2">Etkisiz Kelime Listesi</head><p>Etkisiz kelimeler (stopwords), cümle içinde bir anlam taşıyan ancak kullanım frekansları göz önüne alındığında tam metin aramaya değer katmayan kelimelerdir. Bu kelimeler indeksleme işlemi sırasında göz ardı edilirler. Bu çalışmada [8]'daki etkisiz kelime listesi kullanılmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.4">Tam Metin Arama</head><p>Tam metin arama için MS SQL Server ile yerleşik olarak gelen tam metin arama hizmetinden yararlanılmıştır <ref type="bibr" target="#b7">[9]</ref>. İş öğesi araması yapılırken ve sonuçlar puanlanırken veritabanı seviyesinde uyarlanmış olan bir algoritma kullanır. Veritabanı seviyesinde indekslenmiş olan "Title", "Description" ve "TitleDescription" sütunları üzerinde tam metin arama yardımı ile hızlı bir şekilde arama ve sonuçları olabilecek en yakın öğeden en uzak öğeye doğru sıralayarak listelemek mümkündür. Veritabanı üzerinde tam metin arama mimarisi MS SQL Server 2008 öncesinde bağımsız olarak çalışmaktaydı fakat sonraki sürümlerde bu yapı veritabanı mimarisi ile birleştirilmiş ve "sql full-text filter deamon launcher" adı altında hizmet vermeye devam etmiştir. Tam metin arama mimarisinde kullanılan veri tipleri, Char, Varchar, Nchar, Nvarchar, Text, Ntext, İmage, Xml, varbinary(max), FileStream olarak sıralanmaktadır. Tam metin arama mimarisi üç ana adımda oluşturulur. Bunlar:  Tam metin kataloğu oluşturma  Tam metin indeks oluşturma  Tam metin indeks içeriğinin oluşturulması Yukarıdaki üç aşamayı da başarılı bir şekilde bitirdikten sonra ilgili veritabanı tablosunun ilgili kolon veya kolonlarında tam metin arama ile arama yapmak mümkündür. Tam metin arama üzerinde dört farklı SQL metodu kullanmak mümkündür: Contains, ContainsTable, Freetext, FreetextTable Bu dört metottan "Contains" ve "Freetext" metotları sadece ilgili algoritmaya göre arama sonuçlarını döndürür. Fakat "ContainsTable" ve "FreetextTable" metotları ilgili anahtar kelimeye göre dönen her arama sonucuna dayandığı algoritmaya göre bir sıralama puanı (rank) verir. Arama sonuçları puan bilgisine göre sıralayarak aramaya en uygun sonuçların başlarda listelenmesini sağlanmış olur. Bu makalede "FreetextTable" metodu kullanılmıştır. Çünkü bu metoda göre bir kelime aranırken bu kelimenin aynısının geçtiği sonuçlarla birlikte kelimenin çoğul vb. takılarının düşmüş yalın halinin geçtiği sonuçlarda gelecektir.</p><p>FreetextTable metot tanımı <ref type="bibr" target="#b7">[9]</ref> aşağıda gösterilmiştir:  @keyword: Aranan metin.  @titleWeight: Başlık bilgisi için verilen ağırlık değeridir. Uygulamada 0,67 olarak kullanılmaktadır.  @descriptionWeight: Açıklama bilgisi için verilen ağırlık değeridir. Uygulamada 0,33 olarak kullanılmaktadır.</p><formula xml:id="formula_0">FREETEXTTABLE (table , { column_name | (column_list) | * } , 'freetext_string' [ , LANGUAGE language_term ] [ , top_n_by_rank ] ) Kod Listesi</formula><p>MS SQL Server tam metin aramada OKAPI BM25 algoritmasını kullanmaktadır. Bu algoritma ile ilgili bilgiler aşağıdaki bölümde yer almaktadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.5">OKAPI BM25</head><p>Freetexttable metodu, arama sonuçlarının aranan anahtar kelime veya kelimelerle olan yakınlık ilişkisini bulabilmek için OKAPI BM25 puanlama algoritmasını kullanır <ref type="bibr" target="#b8">[10]</ref>. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.6">İş Öğesi Öneri Sistemi Uygulaması</head><p>İş öğesi öneri sistemi HVL-GO üzerindeki iş öğelerine uzantı olarak yazılmıştır. Geliştirilen uygulama, HVL-GO ile birlikte web tabanlı olarak çalışmaktadır. Bu uygulama sayesinde HVL-GO üzerinde bir iş öğesi yaratıldığında veya hazır kayıtlı bir iş öğesi açıldığında ekran üzerindeki "İş Öğesi Önerici" alanında bu iş öğesiyle ilgili olabilecek diğer iş öğeleri başlık ve açıklama bilgisine göre aranır ve sıralama puanı (rank) değerlerine göre sıralanarak listelenir. Bu listeden istenen iş öğesi de üzerine tıklanarak mevcut iş öğesi ile ilişki kurulmuş olur. Geliştirilen öneri sisteminin örnek ekran görüntüsü Şekil 4'de gösterilmektedir.</p><p>Şekil 4 İş Öğesi Öneri Sistemi Ekran Görüntüsü 5</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Değerlendirme ve Devam Eden Çalışmalar</head><p>Kurumlarda artan veri hacmi, kurum bilgi sistemleri genelinde yapılacak kurumsal aramaları zorunlu hale getirmektedir. Ancak artan veri hacmi ve kullanıcı beklentileri aramaların sezgisel olmasını, kullanıcıyı yönlendirmesini gerekmektedir. Arama sistemleri bunun da bir adım ötesine geçerek öneri sistemleri sunmaktadır. Bu bildiride, uygulama yaşam döngüsü yönetimi altyapısı sağlayan HVL-GO kurumsal uygulamasına eklenen iş öğelerinin öneri sistemi geliştirilmesi adımları anlatılmıştır. İş öğesi önerisi, HVL-GO mimarisinde yer alan MS TFS uzantısı olarak geliştirilmiş ve MS TFS ve MS SQL Server uyarlamaları ile gerçekleştirilmiştir. Kullanıcıların yapılan geliştirmeye ilk yaklaşımları öneri sisteminin ve iş öğesi ilişkilendirmenin kolaylaştığı yönündedir.</p><p>Çalışmanın bundan sonraki aşamasında sezgisel arama altyapısının tamamlanarak devreye alınması ve yeni arama işlevlerinin kullanıcı deneyimine ve etkinliğine katkısının ölçülmesi planlanmıştır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Kaynaklar</head></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>[int] IDENTITY(1,1) NOT NULL, [WorkItemId] [int] NOT NULL, [Title] [nchar](256) NOT NULL, [Description] [nvarchar](max) NOT NULL, [TitleDescription] [nvarchar](max) NOT NULL, CONSTRAINT [PK_hvl_WorkItemTitle] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>OKAPI BM25 arama motorları tarafından anahtar kelimelerle aranan dokümanların arasındaki ilgi derecesini belirli bir aralıktaki sayısal değerlere oturtmak için tasarlanmıştır. Algoritmanın temeli 1970 ve 1980'lerde Stephen E. Robertson, Karen Spärck Jones ve diğerleri tarafından geliştirilen olasılıksal ilgi modeli (Probabilistic relevance model) üzerine dayanır. OKAPI BM25 algoritmasının matematiksel formülü (1) ve (2)'de gösterildiği gibidir. değişkenler aşağıdaki gibi tanımlanmaktadır:  Q: Arama sorgusu  q1, q2,…,qn: Arama sorgusu içerisindeki anahtar kelimeler  D: Doküman  |D|: Dokümanın kelime sayısı bakımından uzunluğu  f (qi, D): Anahtar kelimenin (qi) doküman içinde geçme sıklığı  k1, b: Optimizasyon sırasında gerektiğinde değeri değiştirilebilen serbest parametreler. (1,2 &lt;= k1 &lt;= 2,0 ve b = 0,75)  avgdl: Dokümanların ortalama uzunluğu  N: Kaynaktaki toplam dokuman sayısı  n (qi): qi anahtar kelimesinin geçtiği toplam dokuman sayısı OKAPI BM25 algoritması ve freetexttable metodu iş öğesi öneri sisteminin temelini oluşturmaktadır.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="4,124.80,270.36,331.80,155.16" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Tablo 1 Sık Kullanılan İş Öğesi Alanları</head><label></label><figDesc>Work Item Query Language) adında SQL benzeri bir dil kullanır. WIQL ile SQL üzerinde tanımlı olan pek çok metot kullanılabilir böylece iş öğeleri ve gerekirse ilişkileri bu sayede sorgulanabilir.İş öğelerini oluşturan tüm alanların SQL üzerinde tanımlı bir veri tipi vardır. Sorgulama yapılırken bu veri tiplerine göre filtreleme yapılır ve büyüklük, küçüklük vb. operatörler kullanılır. En sık kullanılan alanların veri tipleri Tablo 1'de gösterilmiştir.Bu makalede geliştirilen uygulamada MS TFS üzerindeki iş öğesi alanlarından İş öğesi kimlik numarası, İş öğesi başlığı ve İş öğesi açıklaması alanları kullanılmıştır. İş Öğesi Kimlik Numarası: İş öğesi her yaratıldığında sistem tarafından verilen ayırıcı numaradır. 1'den başlar ve her yeni iş öğesi kaydedildiğinde değeri bir artar.  İş Öğesi Başlığı: İş öğesi içeriğinin en net olarak belirtildiği alandır. En fazla 256 karakter uzunluğunda veri girilebilir. Tüm iş öğelerinde bulunur.  İş Öğesi Açıklaması: İş öğesi içeriği ile ilgili başlık kısmına yazılamayacak kadar uzun olan veya detay bilgileri içeren alandır. Veri tipi HTML (zengin metin) olduğu için içeriğine her türlü resim, link bilgisi, font ve renk içeren yazı eklenebilir. Her iş öğesi tipinde bulunur.</figDesc><table><row><cell cols="3">MS TFS kendi üzerinde kayıtlı olan iş öğelerini bu alanlar yardımı ile sorgulamaya</cell></row><row><cell>yarayan WIQL (</cell><cell></cell><cell></cell></row><row><cell>Referans Adı</cell><cell>Alan Adı</cell><cell>Veri Tipi</cell></row><row><cell>System.Id</cell><cell>İş öğesi kimlik numarası</cell><cell>Integer</cell></row><row><cell>System.Title</cell><cell>İş öğesi başlığı</cell><cell>String</cell></row><row><cell>System.WorkItemType</cell><cell>İş öğesi tipi</cell><cell>String</cell></row><row><cell>System.Description</cell><cell>İş öğesi açıklaması</cell><cell>HTML</cell></row><row><cell>System.AreaPath</cell><cell>İş öğesi alanı</cell><cell>String</cell></row><row><cell>System.TeamProject</cell><cell>İş öğesi takımı</cell><cell>String</cell></row><row><cell>...</cell><cell>...</cell><cell>…</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>2 Freetexttable Kullanım Deseni Metot</head><label></label><figDesc>tanımındaki yer tutucuların tanımı aşağıda yer almaktadır:  table: freetexttable metodu ile arama yapılacak olan veritabanı tablosudur.  column_name: SQL cümleciğindeki FROM tümcesinden sonra kullanılacak olan en az bir veya birden çok kolonun tanımlandığı değişkendir.  column_list: Birden çok kolon üzerinde freetexttable metodu ile arama yapılacağı zaman kullanılan değişkendir. Kolon isimleri aralarına virgül konarak ve parantez ile açılıp kapatılarak bu değişkenle tanımlanır. Eğer özel bir dil değişkeni tanımlanmamış ise tüm kolonlar için aynı ve varsayılan dil değişkeni geçerli kabul edilir.</figDesc><table><row><cell>SELECT WorkItemId, Title, Description,</cell></row><row><cell>FT.[rank]*@descriptionWeight FROM WorkItemSource as WS inner</cell></row><row><cell>join freetexttable(WorkItemSource, Description, @keyword) as FT</cell></row><row><cell>on WS.WorkItemId=FT.[key]</cell></row><row><cell>...</cell></row><row><cell>Kod Listesi 3 Arama Altyordamı</cell></row><row><cell>SQL kod parçasında kullanılan parametreler şu şekildedir:</cell></row><row><cell>Kolon tipleri char, nchar, varchar, text, ntext, image, xml, varbinary veya varbi-</cell></row><row><cell>nary(max) olabilir.</cell></row><row><cell> freetext_string: İndekslenmiş kolonlarda aranacak olan kelime veya kelimelerin ta-</cell></row><row><cell>nımlandığı değişkendir. Bütün bir cümle ile de tek seferde arama yapılabilir. Arama</cell></row><row><cell>sonunda, aramanın yapıldığı bütün cümleyle eşleşen ya da cümle içindeki bir kelime</cell></row><row><cell>ile eşleşen sonuçlar hesaplanan puan ile birlikte geri döner. Freetexttable metodunda</cell></row><row><cell>contains metodunun aksine engellenecek kelimeler listesi dikkate alınır. Örneğin</cell></row><row><cell>tam metin arama için tanımlanan dil İngilizce ise "and" vb. gibi kelimeler etkisiz</cell></row><row><cell>kelimeler listesinde görülür ve aramaya dâhil edilmez.</cell></row><row><cell> language_term: İndekslenmiş verinin üzerinde arama yaparken dikkat edilmesi ge-</cell></row><row><cell>reken dil bilgisi kuralları, harici kelimeler listesi vb. Özelliklerin tanımlanması için</cell></row><row><cell>kullanılan değişkendir. Bu dil değişkeni sayısal, string veya hexadecimal olarak ta-</cell></row><row><cell>nımlanabilir.</cell></row><row><cell> top_n_by_rank: freetexttable metodu ile dönen arama sonuçlarında her satırın bir</cell></row><row><cell>rank değeri bulunur. Bu sonuçlardan belli bir puandan büyük olanlar filtrelenmek</cell></row><row><cell>isteniyorsa "n" adlı sayısal (integer) değişken kullanılarak bu filtreleme yapılır.</cell></row><row><cell>Tam metin arama MS SQL Server'a eklenen alt yordam (stored procedure) ile sağlan-</cell></row><row><cell>maktadır. Freetexttable'ın alt yordamda kullanımı aşağıdaki gibidir:</cell></row><row><cell>...</cell></row><row><cell>SELECT WorkItemId, Title, Description, FT.[rank]*@titleWeight</cell></row><row><cell>FROM WorkItemSource as WS inner join freetexttable(WorkItemSo-</cell></row><row><cell>urce, Title, @keyword) as FT on WS.WorkItemId=FT.[key]</cell></row><row><cell>Union all</cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><surname>Hizmeri</surname></persName>
		</author>
		<ptr target="https://www.google.com/adwords/" />
		<title level="m">Google Adwords Reklam</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">Müzik</forename><surname>Hizmeti</surname></persName>
		</author>
		<ptr target="http://www.spotify.com/" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">What is Application Lifecycle Management</title>
		<author>
			<persName><forename type="first">D</forename><surname>Chappell</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008">2008</date>
			<publisher>Chappell &amp; Associates</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">Y</forename><surname>Macit</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Tüzün</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>İnce</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Aytekin</surname></persName>
		</author>
		<title level="m">Büyük Ölçekli Bir Organizasyonda Uygulama Yaşam Döngüsü Yönetimi Uygulama Deneyimi</title>
				<imprint>
			<publisher>Ulusal Yazılım Mühendisliği Sempozyumu</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<ptr target="https://www.visualstudio.com/tr-tr/products/tfs-overview-vs.aspx" />
		<title level="m">MS Team Foundation Server Ürün Sayfası</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Software traceability: trends and future directions</title>
		<author>
			<persName><forename type="first">C-H</forename><surname>Jane</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Olly</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">H</forename><surname>Jane</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Patrick</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Andrea</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the on Future of Software</title>
				<meeting>the on Future of Software</meeting>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Aspects of improvement of software development lifecycle management</title>
		<author>
			<persName><forename type="first">J</forename><surname>Klespitz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Bíró</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Kovács</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Computational Intelligence and Informatics (CINTI), 2015 16th IEEE International Symposium on</title>
				<meeting><address><addrLine>Budapest</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="323" to="327" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">Tam</forename><surname>Metin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arama</forename><surname>Kullanımı</surname></persName>
		</author>
		<ptr target="https://msdn.microsoft.com/en-us/lib-rary/ms177652(v=sql.110).aspx" />
		<title level="m">MS SQL Server</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<ptr target="https://en.wikipedia.org/wiki/Okapi_BM25" />
		<title level="m">OKAPI BM25 Wikipedia Sayfası</title>
				<imprint/>
	</monogr>
</biblStruct>

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