<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Durumsal Servislerin Sanallast r lmas</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hasan Ferit Eniser ve Alper Sen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hasan Ferit Eniser</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alper Sen</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Software</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Bogazici University, Department of Computer Engineering</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Software systems are becoming more complicated with increasing number of dependent applications, heterogeneous technologies and common usage of Service Oriented Architectures (SOA). This trend makes testing of such systems challenging. For testing these software systems, the concept of service virtualization is an attractive solution. Service virtualization is an automated technique to mimic the behavior of a given real service. Services are in two types namely, stateless or stateful services. Many services are stateful in nature. In this work, we bring a solution to automated stateful service virtualization. We employ classi cation based and sequence-to-sequence based machine learning algorithms in our solutions. We demonstrate the validity of our approach on two data sets collected from real life services and obtain successful results.</p>
      </abstract>
      <kwd-group>
        <kwd>Service Virtualization Testing</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Giris</title>
      <p>Gunumuz yaz l m sistemlerinde, Servis Temelli Mimariler (STM) sirketlere ihtiyac
duyduklar esnekligi ve olceklenebilirligi saglamaktad r. Bu tur mimariler
birbirine bagl servislerin ve tak mlar n say s nda art sa sebep olmaktad r. Bunun
yan nda STM'de bircok farkl teknoloji ayn yaz l m sisteminde kullan lmaktad r.
Yaz l m testcileri ve gelistiricileri asag daki sebeplerden dolay bagl olduklar
servislere ulasmakta s k nt cekebilmektedirler:
{ Henuz gelistirilmesi tamamlanmam s servisler.
{ S n rl kapasiteli servisler.
{ Ucuncu-partiler taraf ndan saglanan servislerin maliyeti.
{ Ayn anda birden cok gelistirici veya testci taraf ndan ihtiyac duyulan servisler.</p>
      <p>Bu sebeplerden dolay yaz l m gelistirmede test ikizleri ne ihtiyac
duyulmaktad r. Servis sanallast rma ile ihtiyac duyulan servisin sanal bir kopyas yarat larak,
Test Edilen Sistemi (TES) bag ml l klar ndan kurtarmak mumkundur. Sanal
servisler, gercek servislerin yerine kullan larak, ozellikle buyuk yaz l m
sistemlerinin testini kolaylast rmaktad r. Buna ek olarak sanal servisler, gercek
servislerin hem performans hem de veri ozelliklerini taklit edebilmektedir.</p>
      <p>Servis sanallast rma Sekil 1'de goruldugu gibi yakala, modelle, ve taklit-et
sekline isimlendirebilecegimiz uc ana ad mdan olusmaktad r. Yakala ad m nda
bir servisi sanallast rmak icin gerekli olan istek-cevap ikilileri kaydedilmektedir.
Daha sonra kay tl veriden bir model c kar l r. Son olarak da, sanal servis gercek</p>
      <sec id="sec-1-1">
        <title>Sekil 1. Servis sanallast rmaya genel bak s.</title>
        <p>servisin yerine gorevlendirilir ve gelen isteklere gercege benzer yada gercekle ayn
sentetik cevaplar uretir.</p>
        <p>Servisler durumsal ve durumsal olmayan olmak uzere iki s n fa ayr labilir.
Durumsal servislerde bir istek servisin durumunu degistirebilir. Durumsal
servislerdecevaplar o andaki duruma bagl bir fonksiyondan uretilir. Bu tur servislere ornek
olarak al sveris sepeti servisi ornegi verilebilir. Kullan c sepetin icerigini gormek
ya da odemeye gitmek istediginde, servis dogru cevaplar uretebilmek icin daha
once eklenmis ya da c kar lm s maddeleri hesaba katmak zorundad r.
Durumsal olmayan servislerde ise cevap uretmek icin gerekli olan butun bilgiler istekte
gonderilmektedir, baska bir soyleyisle servisin durumu onemli degildir. Bu tur
bir servise ornek olarak bir sehirdeki otellerin isimlerini listeleyen bir servis
verilebilir.</p>
        <p>Bu bildirideki katk lar m z soyle s ralanabilir:
{ Durumsal servislerin sanallast r lmas na iki farkl cozum getirdik.
{ Sanal servis yaratmak icin makine ogrenmesi metodlar ndan faydaland k.
{ Bu bildiride onerdigimiz teknikleri bir arac haline getirdik ve gercek servisler
uzerinde dogrulamas n yapt k.
{ Bu bildiride onerdigimiz teknikleri literaturdeki bir durumsal model c karma
arac yla kars last rd k.</p>
        <p>Bu bildirinin ikinci k sm nda ilgili cal smalar, ucuncu k sm nda on bilgiler,
dorduncu k sm nda onerilen tekniklerin detaylar ve besinci k s mda degerlendirme
detaylar anlat lmaktad r. Son olarak alt nc k s mda sonuclar ve gelecek cal smalar
tart s lm st r.
2</p>
        <p>
          I_lgili Cal smalar
Michelsen ve ark. [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] cal smas nda servis sanallast rman n temellerini,
detaylar n ve faydalar n anlatm st r. Servis sanallast rman n kullan m na dair bir
vaka cal smas [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]'de gosterilmistir. Servis sanallast rmaya cozum getiren son
cal smalar [
          <xref ref-type="bibr" rid="ref23 ref25 ref26 ref6 ref7">6, 23, 7, 25, 26</xref>
          ] durumsal olmayan servislerin sanallast r lmas icin
bioinformatik algoritmalar ndan faydalanm st r. Bu cal smalardan sonuncusu [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ],
eski cal smalarda elde edilen sonuclar gelistirerek durumsal olmayan
servislerin sanallast r lmas icin Opaque Service Virtualization (OSV) ad yla bir arac
sunmustur. Eniser ve ark. [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] OSV'de elde edilen sonuclar daha da iyilestirmislerdir.
Bunun d s nda [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]'de yazarlar durumsal servislerin sanallast r lmas icin literaturde
bilinen ilk yontemleri sunmustur.
        </p>
        <p>
          Akademideki cal smalar n yan s ra, IBM, HP, CA, SmartBear ve Parasoft
gibi rmalar kendi servis sanallast rma araclar n gelistirmislerdir. Bu araclar n
bir kars last rmas [
          <xref ref-type="bibr" rid="ref10 ref19">10, 19</xref>
          ]'de bulunabilir. Gercek kullan c lar uzerinde, bahsi
gecen servis sanallast rma araclar yla alakal yap lm s bir anket bulunmaktad r
[
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
        <p>
          Bunun d s nda kara-kutu durum modeli c karma teknikleri [
          <xref ref-type="bibr" rid="ref15 ref16 ref2 ref21 ref22 ref27 ref3">2, 3, 22, 21, 15, 16,
27</xref>
          ] sanallast r lmak istenen servisin modelini c karmak icin uygun bir yontem
gibi gorunmektedir. Fakat daha onceki cal smalar n bu problem ozelinde
uygulanmas icin problemin baska bir sekilde formulize edilmesi gerekmektedir. Fakat
deneylerde gosterdigimiz gibi bu islem yuksek bir maliyet getirmektedir ve sonuclar
memnun edici olmamaktad r.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Yontem</title>
      <p>Bu k s mda, ornek bir durumsal servis anlatt ktan sonra durumsal servislerin
sanallast r lmas icin iki farkl yontem sunacag z. Bu yontemlerde bir servise
gelen herhangi bir istek icin dogru cevab tahmin etmeye cal sacag z. Sekil 1'de
gosterildigi gibi daha once kaydedilmis istek-cevap dizilerinden ogrenme yoluyla
bir model olusturacag z ve bu modeli gelen isteklere cevap sentezlemek icin
kullanacag z. I_lk olarak bahsi gecen modeli s n and rma yontemiyle ogrenmeyi
daha sonra ise derin ogrenme tekniklerini kullanarak ogrenmeyi gosterecegiz.
S n and rma tabanl yontemde sentezlenmeye cal s lan cevab n her bir icerigi
bir s n f olarak dusunulmus ve bu icerikler tahmin edilmeye cal s lm st r. Derin
ogrenme tabanl yontemde ise modeli egitirken direk olarak istekleri ve onlara
kars l k gelen cevaplar verdik ve boylece modelin istekten cevaba ceviri yapmay
ogrenmesini saglad k.
3.1</p>
      <sec id="sec-2-1">
        <title>O rnek Bir Durumsal Servis</title>
        <p>Bu k s mda durumsal servis ornegi olarak takvim servisini anlatacag z. Bir
kullan c takvim servisini kullanarak, etkinlik yaratabilir, etkinlik silebilir, bir etkinligin
detaylar n gorebilir ya da etkinligin bilgilerini guncelleyebilir. Boyle bir servise
ait istek-cevap dizileri Sekil 2'de gorulebilmektedir. Bu dizide istekler kesikli
cizgilerin uzerinde, cevaplarsa alt nda gorunmektedir. I_stek tipleri (createEvent,
updateEvent vs.) ve cevap tipleri (success, fail) kal n olarak yaz lm st r. Geriye
kalan k s mlar ise istek ve cevaplar n iceriklerini olusturmaktad r.</p>
        <p>Bu diziye gore ilk once bir etkinlik yarat lm s (createEvent), sonra etkinlik
tarihi guncellenmis (updateEvent) daha sonra da etkinlik detaylar istenmistir
(getEvent). Sonras nda etkinlik silinmis (deleteEvent) ve tekrar detaylar
istenistir (getEvent). Fakat bu kez etkinlik silindigi icin cevap degismis ve hata
al nm st r. Devam nda da baska bir etkinlik yarat lm s (createEvent) ve onun
detaylar istenmistir (getEvent).</p>
        <p>Bu dizi durumsal bir serviste dogru cevab n sentezlenebilmesi icin, sadece
gelen istegin degil gelen istekle beraber gecmisin de hesaba kat lmas gerektigini
gostermektedir. Cunku ornekte goruldugu gibi gecmisteki istek-cevap ikilileri
yeni gelen bir istegin cevab n degistirebilmektedir.
3.2</p>
        <p>S n</p>
        <p>and rma Tabanl Sanallast rma (STS)
S n and rma, girdiler ve c kt lar aras ndaki iliskiyi ogrenmek icin kulland g m z
bir makine ogrenmesi yontemidir. S n and rmada verilen bir girdi mumkun olan
s n ardan birisine atan r.</p>
        <p>createEvent
it1: 1‘e2v/e0n2t/11’8 →
-----------success
200, OK
updateEvent
16/01/18
-----------success
200, OK</p>
        <p>getEvent
→
‘-e--v-e--n-t--1-’-success
‘event1’
16/01/18
200, OK
deleteEvent
‘event1’
→
-----------success
200, OK
→
getEvent
‘event1’
-----------fail
401, Not
found.</p>
        <p>createEvent
→ ‘0e9ve/0n9t2/1’8
------------success
200, OK</p>
        <p>getEvent
→
‘-e-v--e-n--t-2--’success
‘event2’
09/09/18
200, OK</p>
        <sec id="sec-2-1-1">
          <title>Sekil 2. Takvim servisine ait ornek bir istek-cevap dizisi.</title>
          <p>Durumsal bir serviste bir istegin cevab gecmisteki istek-cevap ikililerinden
etkilenebilmektedir. Dolay s yla durumsal servis sanallast rma icin bir model
egitirken verilen bir istegin kendisi ve gecmis istek-cevap ikilileri ile bu istegin
cevab aras ndaki ilisikiyi ogrenmek isteriz. Gercek hayattaki servislerin istek
tipleri, icerikleri ve cevaplar cogunlukla kategorik veri ozelligi gosterir. Kategorik
verilerde iki veri noktas aras ndaki mesafe butun veri ikilileri icin esittir (O rn.
I_stanbul, Ankara, I_zmir). Bu tur bir veriyi bir makine ogrenmesi algoritmas na
girdi olarak verirken one-hot encoding yontemiyle yeniden formatlamak gerekir.
Sekil 3'de ornek bir istek-cevap gecmisi ve ona kars l k gelen s n f atamalar
gorulmektedir.</p>
          <p>Girdiler
Çıktılar
1</p>
        </sec>
        <sec id="sec-2-1-2">
          <title>Sekil 3. Takvim servisine ait bir veri noktas nda ornek bir one-hot encoding uygulamas .</title>
          <p>STS yontemi ham isteklerin ve cevaplar n istek tipi, istek icerigi, cevap tipi ve
cevap icerigi seklinde cozumlenmesini gerektirmektedir. Girdi k sm nda, cozumlenen
her bir alana one-hot encoding uygulan r, c kt k sm ndaysa tahmin edilmesi
beklenen cevap icerikleri numaraland r l r. Sonuc olarak bu sekilde bir veri noktas
olusturulmus olur.</p>
          <p>O rnekte goruldugu gibi eger birden fazla s n f tahmin edilecekse ve her bir
tahmin icin ikiden fazla s n f ihtimali varsa bu tur bir s n and rma problemine
coklu c kt l coklu s n and rma problemi ismi verilir.</p>
          <p>
            Biz bu cal smada, bahsedilen s n and rma problemi icin kural tabanl bir
s n and rma yontemi olan Repeated Incremental Pruning to Produce Error
Reduction (RIPPER) algoritmas n [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ] kulland k. RIPPER s n f ayr st rmas icin
ifthen kurallar ogrenir ve s n f atamalar n bu kurallara gore yapar. Farkedilecegi
gibi dogru if-then kurallar n ogrenmek servis sanallast rma probleminde dogru
cevaplar uretmek icin uygun bir yontemdir. Dolay s yla RIPPER burada en
uygun s n and rma cozumu olarak durmaktad r. Bunun d s nda RIPPER' n
egitme suresi de diger s n and rma algoritmalar na gore (orn: yapay sinir aglar )
oldukca iyidir.
          </p>
          <p>Model, egitilmesi tamamland ktan sonra gelen bir istege cevap uretmek icin
kullan lmaya haz rd r. Modele yeni bir istek ulast g nda, bu istek, gecmis
istekcevap ikilileriyle birlikte one-hot encoding kullan larak modele uygun hale
getirilir. Eger bir istegin gecmisinde veya kendisinde daha once kaydedilmemis bir
icerik varsa bu icerik butun diger istek tipi, icerik vs.den farkl bir sekilde one-hot
encoding yap s na cevirilir. Bir istek gecmisiyle birlikte bu sekilde modele girdi
olarak verildikten sonra, model ilgili cevab tahmin edecektir.</p>
          <p>Bu yontemi JSON, XML gibi cok kullan lan mesaj formatlar yla haberlesen
servislerde kullanmak daha uygun olacakt r. Cunku ozel bir mesaj format yla
haberlesen servislerden kaydedilen mesajlar n cozumlenmesi oldukca zor olabilir
ve her bir ozel mesaj format icin ayr bir cozumleyici gerekmektedir.
3.3</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>Derin O grenme Tabanl Sanallast rma</title>
        <p>
          Bu k s mda, durumsal servislerin sanallast r lmas icin derin ogrenme tabanl
bir yontem sunacag z. Derin sinir aglar kavram ozellikle cok katmanl ve farkl
mimarilerdeki yapay sinir aglar icin kullan lmaktad r. Derin ogrenme ise
derin sinir aglar n n kullan ld g ogrenme yontemlerine denir. Biz durumsal servis
sanallast rma icin Long Short Term Memory (LSTM) [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] yapay sinir ag
mimarisi ile diziden-diziye ismi verilen bir model cesidi egittik. Diziden-diziye
modelleri girdi olarak bir soz dizisi al r ve c kt olarak baska bir soz dizisi verir. Bu
yontem ozel mesaj formatlar icin kullan labilir cunku dizilerin cozumlenmesi
gerekmez.
        </p>
        <p>
          Diziden-diziye modelleri girdinin bir dizi olarak ele al nmas gerektigi ceviri
[
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] ve otomatik chat-bot yaratma [
          <xref ref-type="bibr" rid="ref28 ref29">28, 29</xref>
          ] gibi konularda basar l sonuclar
vermektedir. Diziden-diziye modellerinde devirli sinir aglar n n ozel bir formu olan
LSTM'ler [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] kullan lmaktad r. LSTM'ler gecmisteki bir bilginin daha sonraki
ad mlarda kullan lmas na olanak veren bir mimariye sahiptir. Bu ozellik
durumsal servis sanallast rma ac s ndan onemlidir cunku doru cevab uretmek icin
gecisteki istek-cevap ikililerini de hesaba katmak gerekir.
        </p>
        <p>Diziden-diziye modellerinin genel yap s Sekil 4'de gorulmektedir. Bu yap
embedding ad m ile birlikte bir kodlay c ve bir cozucuden olusur. Kodlay c ve
cozucu birer LSTM ag d r.</p>
        <p>
          DTS'ya ilk olarak bir sozluk olusturarak baslad k. Bu sozlugu Etkilesim
Kutuphanesi'ndeki kay tl istek ve cevaplardan olusturduk. Daha onceki cal smalar
[
          <xref ref-type="bibr" rid="ref24 ref28">28, 24</xref>
          ] sozlugu kelime baz nda olustururken biz bu sozlugu elimizde bir cozumleyici
olmad g n varsayd g m z icin karakterler aras ndan olusturduk. Diziden-diziye
modellerinde ilk olarak sozlukteki karakterle numaralan r ve girdiler kodlay c
girmeden once yeni bir formata cevirilir. Yeni bir formata girdikten sonra girdi
kodlay c ya verilir ve c kt olarak bu girdiyi temsil eden belli uzunlukta bir yoney
elde edilir. Cozucu bu yoneyi alarak tekrardan girdiye kars l k gelen bir diziye
cevirir.
        </p>
        <p>Biz durumsal servislerin sanallast rmas nda gelen bir istegin gecmisini ve bu
istege kars l k gelen cevab n aras ndaki iliskiyi bulmas icin bir diziden-diziye
modeli egittik. Bu egitim yap l rken basar m n artmas icin belli teknikler
uygulamak mumkundur. O rnegin biz bu cal smada, gecmisin tamam n tek bir seferde</p>
        <p>Bugün
Çözücü
hava
güneşli
Bugün
1</p>
        <p>Embedding
hava
2
nasıl?
3
5
6
7</p>
        <sec id="sec-2-2-1">
          <title>Sekil 4. Diziden-diziye modellerinin genel yap s kodlay c ve cozucu adl iki k s mdan</title>
          <p>olusur. Bugun hava nas l? dizisi Bugun hava gunesli dizisine cevirilmis.
vermek yerine gecmisteki her bir istek icin yeni bir veri noktas olusturup bunlar
da modelin egitiminde kulland k. Bu sayede basar m m z n artt g n gorduk.
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Degerlendirme</title>
      <p>
        Bu k s mda, bu bildiride sundugumuz durumsal servis sanallast rma yontemlerinin
gercek servislerin yerine gecmede ne kadar basar l olduklar n gosterdik ve egitme
surelerini kars last rd k. K sacas deneyler ile (1) yontemlerimizin durumsal servis
sanallast rmada ne kadar etkili olduklar n ve (2) yontemlerimizin h z n n ne
oldugunu arast rd k. Bunun d s nda yontemlerimizi literaturdeki bir kara-kutu
model c karma algoritmas (EFSM arac [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]) ile kars last rd k.
4.1
      </p>
      <p>
        Degerlendirmede Kullan lan Servisler
Yontemlerimizi degerlendirmek icin gercek hayattan iki tane servisi ele ald k. Bu
servisler s ras yla ozel bir servis olan Havayolu Biletleme Servisi (HBS) herkesin
kullan m na ac k olan Google Calendar API'd r (Takvim). Takvim servisi JSON
format yla haberlesirken, HBS ozel bir mesaj format yla haberlesmektedir. Her
iki servisin de gercek hayattan al nm s olmas ve farkl mesaj formatlar yla
haberlesmeleri bu servisleri secmemizde etkili olmustur. HBS 26 farkl istek
tipi icerirken, Takvim servisinde 5 farkl istek tipi kullan lm st r. Degerlendirme
asamas nda STS yontemini HBS servisi uzerinde denemek icin ozel bir cozumleyici
yazd k. HBS'den toplanan istek-cevap ikilileri bir havayolunun biletleme
operasyonlar nda kulland g istekler ve cevaplara kars l k gelmektedir. Takvim servisi icin
bir Python betigi vas tas yla rastgele istekler gondererek veri toplad k. Toplamda
her bir servis icin her biri 10 istek-cevap ikilisi iceren 400 istek-cevap dizisi
toplad k. Deneylerimiz bu say lar n yeterli oldugunu gosterdi.
O lcutler: STS ve DTS yontemlerini hem dogruluk hem de performans ac s ndan
degerlendirdik. Burada performans modellerin egitim suresine kars l k
gelmektedir. STS yonteminin dogrulugunu olcmek icin Kesin Eslesme O lcutu (KEO ) ve
Altkume Eslesme O lcutu (AEO ) [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] olmak uzere iki farkl olcut hesaplad k. DTS
yontemi icin ise Kesinlik olcutunu hesaplad k. Yontemlerimizin dogas geregi
ikisi icin de ayn olcutu kullanmak mumkun degildir. Fakat Kesin Eslesme O lcutu
ve Kesinlik birbiriyle kars last r labilmektedir. I_ki yontemin kars last rmas bu
olcut uzerinden yap labilir.
      </p>
      <p>
        Kesin Eslesme O lcutu'nde bir tahminin dogru say labilmesi icin modelin
c kt s ndaki s n f atamalar n n tamam n n dogru olmas gerekir. Goruldugu gibi
bu olcut tahminlerdeki k smen dogru yap lan s n f atamalar n goz ard
etmektedir. Buna kars n Altkume Eslesme O lcutunde bir tahminin dogrulugu model
c kt s ndaki dogru s n f atamalar toplam s n f atamas na bolunmesiyle bulunur.
O rnegin dogru c kt [
        <xref ref-type="bibr" rid="ref1 ref3 ref6">1, 6, 3</xref>
        ] iken egittigimiz modelin c kt s [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1, 2, 3</xref>
        ] ise Kesin
Eslesme O lcutunde bu bu c kt n n dogrulugu 0 olarak hesaplan rken Altkume
Eslesme O lcutunde dogruluk 23 olarak hesaplan r.
      </p>
      <p>Bunun d s nda deneylerimizde STS yontemi icin mikro- ve makro-ortalamal
F-skorunu da hesaplad k. F-skor temelde ikili s n and rma icin tan mlanm st r.
Diger bir deyisle basit F-skor atama yap labilecek sadece iki s n f varken
kullan l r. Fakat bunun skorun coklu-s n f s n and rma problemleri icin baska bir
versiyonu mevcuttur. Biz de bu cal smada coklu-s n ar icin onerilmis F-skor
versiyonunu kulland k.</p>
      <p>Yukar da bahsettigimiz gibi DTS'de dogrulugu olcerken Kesinlik olcutu
kullan l r. DTS'nin c kt s karakterlerden olusan bir dizidir. Kesinlik olcutune gore
eger bu dizi beklenen c kt ile tam olarak uyumlu ise dogru say l r. Yanl zca
bir karakterin bile yanl s olmas c kt n n yanl s olarak degerlendirilmesine sebep
olur.</p>
      <p>Deneylerin Tasar m : Deneylerimizde, her bir sanallast rma yontemiyle farkl
uzunluklarda (k=1, k=5 ve k=10) gecmis istek-cevap dizilerinin hesaba kat ld g
uc farkl sanal servis olusturduk. k=1 icin sadece son istek-cevap ikilisini hesaba
katarken k=5 (k=10) icin son 5 (10) istek-cevap ikilisini ele ald k.</p>
      <p>
        STS yonteminde faydaland g m z RIPPER yontemi icin Weka makine ogrenmesi
kutuphanesini [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] kulland k. Weka icinde bir cok algoritman n haz r olarak
bulundugu birlesik bir veri isleme arac d r. Bunun d s nda STS'yi kullan rken HBS
icin bir cozumleyici yazmam z gerekiyordu, fakat, Takvim servisi icin Python'un
kendisinde bulunan JSON cozumleyicisini kulland k.
      </p>
      <p>
        DTS yontemiyle sanallast rma yaparken Tensor ow [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] kutuphanesinden
faydaland k. Fakat Tensor ow'u direk kullanmak yerine Keras'tan [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] faydaland k.
Keras, Tensor ow gibi farkl makine ogrenmesi kutuphanelerinin uzerinde cal san
yuksek-duzeyli bir sinir ag API'sidir. DTS yontemini kullanarak sanallast r lacak
her bir servis icin 1, 5 ve 10 uzunlugundaki gecmis istek-cevap dizilerini
kullanarak 3 farkl sanal servis olusturduk. Egittigimiz diziden-diziye modeli 1
kodlay c , 2 cozucu ve 1 tane de ek katman olmak uzere toplam 4 gizli
katmandan olusmaktad r. Kodlay c ve cozumleyici katmanlar 128'er norondan
Servis k STS
HBS 1 76.6
Takvim 1 70.3
HBS 5 82.7
Takvim 5 81.1
HBS 10 82.7
Takvim 10 82.0
olusmaktad r. Egitim s ras nda girdileri 128'erlik gruplar halinda verdik ve toplamda
1000 tekrarlama ile egitimi tamamlad k. Modelin egitimi icin ADAM
oprimizasyon yontemini [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] kulland k ve kay p fonksiyonu olarak kategorik ters
entropiden faydaland k.
      </p>
      <p>
        EFSM arac n internetten indirerek kulland k ve deneylerimizde mumkun
olan s n and rma parametreleri aras ndan J48'i sectik. Bu parametre EFSM
arac n n en iyi cal st g parametre olarak gosterilmistir [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. J48 secenegi bir
cesit karar agac c karmaktad r. Bu arac kullanmak icin servis sanallast rma
problemini bir model c karma problemi olarak formule ettik.
      </p>
      <p>Deneylerimiz her bir servis icin uc ana ad mdan olusmaktad r:
1. Gercek servisten istek-cevap ikililerini toplama
2. Bu ikilileri kullanarak bir model ogrenme
3. O grenilen modelin dogrulugunu ve performans n olcme
Bunun d s nda deneylerde STS yontemi ve EFSM arac icin 5-katl capraz gecerlilik
uygulad k ve deneylerimizi 16 GB haf zal ve Intel Xeon E5-2630L v2 2.40GHz
CPU islemcili bir sunucuda gerceklestirdik.
4.3</p>
      <p>Deney Sonuclar
Bu k s mda yapt g m z deneylerin sonuclar ndan bahsedecegiz. Dogruluk ve
performans deneylerimizin sonucar Tablo 1 ve Tablo 2'da gorulmektedir.</p>
      <sec id="sec-3-1">
        <title>Tablo 1. STS ve DTS yontemlerinin farkl k degerleri icin dogruluk sonuclar . k say s hesaba kat lan gecmis istek-cevap dizisinin uzunlugudur.</title>
        <p>EFSM Arac</p>
        <p>DTS
KE O(%) AE O(%) Fmacro Fmicro KE O(%) AE O(%) Fmacro Fmicro Kesinlik
Dogruluk Sonuclar : Tablo 1 goruldugu uzere butun olcutlerde en yuksek
dogruluk oranlar her zaman k=10 icin elde edilmistir. Bu durum her iki servis
icin de gecerlidir. F-mikro ve F-makro degerleri deneylerde al nan gorece yuksek
KEO , AEO ve kesinlik olcutlerini desteklemektedir.</p>
        <p>Bunun d s nda, STS kulland g m zda HBS'de Takvim servisine gore daha iyi
sonuclar elde ettigimizi gorduk. Bunun sebebi de HBS'nin s n rl say da icerik
veya cevap iceriginin olmas d r. Buna kars n Takvim servisinde cok farkl say da
icerik bulunmaktad r.</p>
        <p>Tablo 1'in gosterdigine gore en iyi sonuclar DTS ile elde edilmistir. Bu durum
her iki servis icin de gecerlidir. DTS teknigi ile elde edilen sonuclar her zaman
(KEO goz onunde bulunduruldugunda) STS ile elde edilenden iyi olmustur. En
yuksek dogruluk oran ysa k=10 icin al nm st r. DTS yontemi k=10 icin hem HBS
hem de Takvim servisinde %100'e yak n bir basar elde etmistir. Veriye daha
detayl bakt g m zda %100'e ulasman n imkans z oldugunu farkettik. Bunun sebebi
baz cevaplar n gecmis istek-cevap ikililerinde bulunan bilgilerden tamamen farkl
iceriklerden olusuyor olmas d r. O rnegin gecmis istek-cevap ikililerinden bag ms z
olarak cevapta o gunun saat ve tarihi bulunabilmektedir.Bu tur bir cevab
tahmin etmek icin bu bildirideki yontemleri kullanmak gercekci degildir. Fakat bu
tur bir problem kullan c taraf ndan kucuk bir manuel eforla halledilebilir.</p>
        <p>EFSM arac n n sonuclar na bakt g m zda, degerlerin genellikle STS ile
birbirine yak n olmas na ragmen cogu zaman STS'den dusuk oldugunu gormekteyiz.</p>
        <p>O zetlemek gerekirse, DTS kullan larak olusturulan sanal servisler %90' n
uzerinde bir dogrulukla cal sabilmektedir. STS kullan larak olusturulan servislerse
daha dusuk dogruluk oranlar na sahiptir dolay s yla daha dusuk eslesme olcutunun
yeterli oldugu durumlarda kullan labilir.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Tablo 2. STS ve DTS yontemlerinin farkl k degerleri icin performans sonuclar . k say s hesaba kat lan gecmis istek-cevap dizisinin uzunlugunu gostermektedir. Tabloada gosterilen egitim suresi su formattad r: (hh:mm).</title>
      </sec>
      <sec id="sec-3-3">
        <title>Servis k DTS STS EFSM Arac HBS 1 01:42 00:01 00:06 Takvim 1 02:21 00:01 00:06</title>
        <p>HBS 5 08:51 00:03 00:11
Takvim 5 09.54 00:03 00:14
HBS 10 14:42 00:04 00:18</p>
        <p>Takvim 10 16:19 00:04 00:19
Performans Sonuclar : Tablo 2 goruldugu gibi STS yontemiyle sanal servis
olusturmak DTS yontemine gore cok daha h zl d r. RIPPER s n and rma
algoritmas n n kullan ld g STS yontemi dakikalar icerisinde egitilirken, DTS yontemiyle
sanal servis olusturmak saatler almaktad r. Bu genel olarak egitmesi zor olan
derin sinir aglar n kullanman n bir sonucudur. Fakat DTS'nin performans sonuclar n n
iyilestirmenin CPU yerine GPU kullanarak mumkun olabilecegini dusunmekteyiz.
EFSM arac ise DTS'den cok daha h zl cal s yor olmas na ragmen STS'den daha
yavas cal smaktad r.</p>
        <p>Sonuc olarak eger egitme suresi onem arzediyorsa STS yontemini kullanmak
mant kl olacakt r. Diger yandan sanal servisin olusturulmas nda dogruluk daha
onemli ise DTS yontemiyle olusturmak daha iyi sonuclar verecektir.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuc</title>
      <p>Yaz l mda Servis Temelli Mimariler sirketlere bir cok fayda saglasa da yaz l m
gelistirme ve yaz l m testinde yuksek karmas kl kl ktan dolay s k nt lara sebep
olabilmektedir. Biz bu cal smada yaz l m bilesenlerinin birbirine bag ml l klar ndan
dolay ortaya c kacak sorunlar n ortadan kald r lmas icin otomatik servis sanallast rma
yontemleri gelistirdik. Yontemlerimiz sanallast rmas cok daha zor olan
durumsal servisler uzerinde cal sabilmektedir. Yontemlerimizde makine ogrenmesi
algoritmalar ndan faydaland k. Sundugumuz yontemlerin birincisinde (STS) servis
sanallast rma problemini bir s n and rma problemi olarak formulize ettik. I_kinci
yontemde ise (DTS) diziden-diziye modellerini yani LSTM yap s ndaki yapay
sinir aglar n kullanarak sanallast rma yapt k. Deneylerimizde yontemlerinizin
gelen isteklere dogru cevaplar uretmede basar l oldugunu ve EFSM arac yla
kars last r ld g nda hem dogruluk hem de performans ac s ndan daha iyi sonuclar
verdigini gosterdik. STS yonteminin egitme suresi ac s ndan daha iyi sonuc verdigini,
DTS yonteminin ise dogruluk ac s ndan en basar l performans gosterdigini
gorduk. Bunun d s nda dizi uzunlugunun dogru cevap uretmede oldukca onemli
oldugunu gorduk. Gelecekte istek-cevap ikililerini kullanarak servislerin sonlu
durum makinesini c karmay planl yoruz. C kard g m z sonlu durum makineleri
servis sanallast rma probleminin yeniden formulize edilmesini
gerektirmeyecektir ve bu makinelerin dogrulugu yuksek olacakt r. Bunun yan nda halihaz rdaki
yontemlerimizin dogrulukla beraber performans n da art rmay dusunuyoruz.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Abadi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agarwal</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barham</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brevdo</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Citro</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corrado</surname>
            ,
            <given-names>G.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dean</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Devin</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al.:
          <article-title>Tensor ow: Large-scale machine learning on heterogeneous distributed systems</article-title>
          .
          <source>arXiv preprint arXiv:1603.04467</source>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Beschastnikh</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ernst</surname>
            ,
            <given-names>M.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krishnamurthy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Inferring models of concurrent systems from logs of their behavior with csight</article-title>
          .
          <source>In: International Conference on Software Engineering</source>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Beschastnikh</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sloan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ernst</surname>
          </string-name>
          , M.D.:
          <article-title>Leveraging existing instrumentation to automatically infer invariant-constrained models</article-title>
          .
          <source>In: ACM SIGSOFT symposium and European conference on Foundations of software engineering</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Chollet</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , et al.: Keras. https://github.com/fchollet/keras (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>W.W.</given-names>
          </string-name>
          :
          <article-title>Fast e ective rule induction</article-title>
          .
          <source>In: 12th International Conference on Machine Learning</source>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hine</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Generating service models by trace subsequence substitution</article-title>
          .
          <source>In: International ACM Sigsoft conference on Quality of software architectures</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          , Han,
          <string-name>
            <given-names>J</given-names>
            .,
            <surname>Grundy</surname>
          </string-name>
          , J.:
          <article-title>Interaction traces mining for e cient system responses generation</article-title>
          .
          <source>SIGSOFT Software Engineering Notes</source>
          <volume>40</volume>
          (
          <issue>1</issue>
          ) (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Eniser</surname>
            ,
            <given-names>H.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Testing service oriented architectures using stateful service visualization via machine learning</article-title>
          .
          <source>In: Proceedings of the 13th International Workshop on Automation of Software Test</source>
          . pp.
          <volume>9</volume>
          {
          <fpage>15</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Eniser</surname>
            ,
            <given-names>H.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polat</surname>
            ,
            <given-names>S.O.</given-names>
          </string-name>
          :
          <article-title>Fancymock: creating virtual services from transactions</article-title>
          .
          <source>In: Proceedings of the 33rd Annual ACM Symposium on Applied Computing</source>
          . pp.
          <volume>1576</volume>
          {
          <fpage>1578</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Giudice</surname>
            ,
            <given-names>D.L.</given-names>
          </string-name>
          :
          <article-title>Service virtualization and testing solutions</article-title>
          .
          <source>Forrester Wave</source>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Hall</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frank</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Holmes</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pfahringer</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reutemann</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Witten</surname>
            ,
            <given-names>I.H.</given-names>
          </string-name>
          :
          <article-title>The WEKA data mining software: an update</article-title>
          .
          <source>SIGKDD Explorations</source>
          <volume>11</volume>
          (
          <issue>1</issue>
          ),
          <volume>10</volume>
          {
          <fpage>18</fpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Hochreiter</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidhuber</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>Long short-term memory</article-title>
          .
          <source>Neural computation 9(8)</source>
          ,
          <volume>1735</volume>
          {
          <fpage>1780</fpage>
          (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>IT-</surname>
          </string-name>
          Central-Station:
          <article-title>Service virtualization a peek into what real users think</article-title>
          . https://goo.gl/oN23qH (
          <year>2017</year>
          ), accessed at December 2017
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kingma</surname>
            ,
            <given-names>D.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ba</surname>
          </string-name>
          , J.:
          <article-title>Adam: A method for stochastic optimization</article-title>
          .
          <source>arXiv preprint arXiv:1412.6980</source>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Krka</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          :
          <article-title>Automatic mining of speci cations from invocation traces and method invariants</article-title>
          .
          <source>In: ACM SIGSOFT International Symposium on Foundations of Software Engineering</source>
          . pp.
          <volume>178</volume>
          {
          <fpage>189</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Lorenzoli</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mariani</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pezze</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>Automatic generation of software behavioral models</article-title>
          .
          <source>In: International conference on Software engineering</source>
          . pp.
          <volume>501</volume>
          {
          <fpage>510</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Michelsen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>English</surname>
          </string-name>
          , J.:
          <article-title>What is service virtualization?</article-title>
          <source>In: Service Virtualization</source>
          , pp.
          <volume>27</volume>
          {
          <fpage>35</fpage>
          . Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Mohammad</surname>
            ,
            <given-names>S.S.:</given-names>
          </string-name>
          <article-title>A literature survey on algorithms for multi-label learning</article-title>
          . Oregon State University, Corvallis
          <volume>73</volume>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Murphy</surname>
            ,
            <given-names>T.E.</given-names>
          </string-name>
          , Wilson, N.:
          <article-title>Magic quadrant for integrated software quality suites</article-title>
          .
          <source>Gartner Research</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Nizamic</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Groenboom</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lazovik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Testing for highly distributed serviceoriented systems using virtual environments</article-title>
          .
          <source>Dutch Testing Day</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ohmann</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Herzberg</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fiss</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Halbert</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palyart</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beschastnikh</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Behavioral resource-aware model inference</article-title>
          .
          <source>In: International conference on Automated software engineering (</source>
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Ohmann</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thai</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beschastnikh</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brun</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Mining precise performanceaware behavioral models from existing instrumentation</article-title>
          .
          <source>In: International Conference on Software Engineering</source>
          . pp.
          <volume>484</volume>
          {
          <fpage>487</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mandile</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Generalized su x tree based multiple sequence alignment for service virtualization</article-title>
          .
          <source>In: Australasian Software Engineering Conference (ASWEC)</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Sutskever</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vinyals</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Le</surname>
            ,
            <given-names>Q.V.</given-names>
          </string-name>
          :
          <article-title>Sequence to sequence learning with neural networks</article-title>
          .
          <source>In: Advances in neural information processing systems</source>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bird</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J</given-names>
            ., Han, J
          </string-name>
          .:
          <article-title>Enhanced playback of automated service emulation models using entropy analysis</article-title>
          .
          <source>In: International Workshop on Continuous Software Evolution and Delivery</source>
          (CSED) (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Versteeg</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>J.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grundy</surname>
            ,
            <given-names>J</given-names>
            ., Han, J
          </string-name>
          .,
          <string-name>
            <surname>Goyal</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Opaque service virtualisation: a practical tool for emulating endpoint systems</article-title>
          .
          <source>In: International Conference on Software Engineering Companion</source>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Walkinshaw</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.,
          <string-name>
            <surname>Derrick</surname>
          </string-name>
          , J.:
          <article-title>Inferring extended nite state machine models from software executions</article-title>
          .
          <source>Empirical Software Engineering</source>
          <volume>21</volume>
          (
          <issue>3</issue>
          ),
          <volume>811</volume>
          {
          <fpage>853</fpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guo</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sinha</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Akkiraju</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>A new chatbot for customer service on social media</article-title>
          .
          <source>In: Conference on Human Factors in Computing Systems</source>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Zhou</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tang</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          :
          <article-title>Answer sequence learning with neural networks for answer selection in community question answering</article-title>
          .
          <source>arXiv preprint arXiv:1506.06490</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>