<!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>Yazılım Yeniden Yapılamaya Yönelik Model Güdümlü ve Kaliteye Yönelimli Süreç Modeli</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Murat Paşa Uysal</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>A. Erhan Mergen</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Bilgisayar Teknolojileri Bölümü, Ufuk Üniversitesi MYO</institution>
          ,
          <addr-line>İncek, Gölbaşı, 06836, Ankara</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Saunders College of Business, Decision Sciences, Rochester Institute of Technology</institution>
          ,
          <addr-line>Rochester, N.Y. 14623-5608</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <fpage>408</fpage>
      <lpage>417</lpage>
      <abstract>
        <p>Özet. Yazılım Yeniden Yapılama (software re-engineering) (YYY), yoğun kaynak ve zaman kullanımını gerektiren, gidiş-dönüşlü ve yinelemeli yazılım mühendisliği etkinliklerini içermektedir. Dolayısıyla, söz konusu süreçler otomatik hale getirilebilmeli, ortaya çıkan ürün, araç ve yöntemler yeniden yapılanmış yazılımla ilgili sonraki süreçlerde tekrar kullanılabilmelidir. Bu bağlamda, Model Güdümlü Mimari (MGM) ve Model Güdümlü Yazılım Geliştirme (MGYG), yazılımların otomatik geliştirilebilmesi ile kalite ve öngörülebilirliğini hedefleyen yaklaşımlardır. Ancak model, modelleme ve kalite kavramlarını YYY çalışma alanında bütünleşik olarak birlikte ele alan araştırmalar sınırlı düzeydedir. Bu amaçla çalışmamız, Tasarım Bilimi Araştırma Yöntemi (Design Science Research) (TBAY) doğrultusunda yürütülmüş, sistematik haritalama ile desteklenmiştir. Araştırmamızda “Model Güdümlü ve Kaliteye Yönelimli bir YYY Süreç Modeli” geliştirilmiştir. MGM, YYY ve ISO/IEC 2500n “Software Quality Requirements and Evaluation” (SQuaRE) yazılım kalite standartları bütünleşik olarak kullanılmış, TBAY kapsamında çalışmanın kuramsal temellerini oluşturmuştur. Geliştirilen modelde hesaplama bağımsız modeller mevcut yazılıma ait iş akışı vb. çizeneklerle, platform bağımsız modeller ise UML çizenekleri ve Soyut Söz Dizim Ağaçları (Abstract Syntax Tree) (SSDA) ile temsil edilmektedir. SSDA'ları aynı zamanda iyileştirilecek yazılımın anlambilim yapısının, model ve kod dönüşümlerinde kullanılabilmesini sağlamaktadır. Mevcut yazılıma ait kalite gereksinimleri MGYG doğrultusunda ve SQuaRE standardındaki metrik ve ölçütlerle belirlenmektedir.</p>
      </abstract>
      <kwd-group>
        <kwd>Anahtar Kelimeler</kwd>
        <kwd>Yazılım yeniden yapılama</kwd>
        <kwd>model güdümlü mimari</kwd>
        <kwd>yazılım kalitesi</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Giriş</title>
      <p>
        Yazılım sistemlerinin ömür devri boyunca ortaya çıkan gereksinimlere yönelik
güncelleme, bakım, iyileştirme vb. yazılım etkinliklerin birçoğu Yazılım Yeniden
Yapılama (software re-engineering) (YYY) kapsamında ele alınabilecek niteliktedir.
Literatürdeki YYY çalışmaları incelendiğinde, temel amacın mevcut yazılım
sistemlerinin kalitesinin iyileştirilmesi, işlevsel ve/veya işlevsel olmayan
özelliklerinin geliştirilmesi olduğu görülmektedir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Nesneye yönelimli sistemlere
yönelik YYY ile ilgili çeşitli çalışmalar yapılmış, süreçlerin iyileştirilmesine yönelik
yöntemler önerilmiştir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Örneğin, bu kapsamda gerçekleştirilen önceki
çalışmamızda, “6 Sigma”, yazılım süreçleri ve yazılım kalite standartlarının
bütünleştirildiği bir model geliştirilmiştir [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Ancak YYY, yoğun kaynak ve zaman
kullanımını gerektiren, gidiş-dönüşlü (round-trip), yinelemeli ve artırımsal yazılım
mühendisliği etkinliklerini içermektedir [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Dolayısıyla, bu süreçler otomatik hale
getirilebilmeli, ortaya çıkan ürün ve araçlar yeniden yapılanmış olan yazılımla ilgili
sonraki süreçlerde kullanılabilmelidir.
      </p>
      <p>
        Yazılım sistemlerin anlaşılırlığı ve sürecin kolaylaştırılması amacıyla çeşitli
modelleme yöntem ve tekniklerine yazılım süreçlerinin farklı aşamalarında
başvurulmaktadır [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Bu bağlamda, Model Güdümlü Yazılım Geliştirme (MGYG) ve
Model Güdümlü Mimari (MGM) yazılım sistemlerinin otomatik olarak
geliştirilebilmesini, kalite, etkililik ve öngörülebilirliğini farklı modelleme ve
soyutlama düzeylerinde hedeflemektedir [
        <xref ref-type="bibr" rid="ref10 ref6">6, 10</xref>
        ]. Ancak, YYY, MGYG ve kalite
kavramları arasında kavramsal ve işlevsel ilişkiler bulunmakla birlikte bu çalışma
alanlarını birlikte ele alan çalışmalar sınırlı düzeydedir. Söz konusu bilgi alanlarını
bütünleşik kullanarak YYY sürecinin iyileştirilmesini hedefleyen kapsamlı çalışmalar
ise az sayıdadır [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Dolayısıyla, söz konusu araştırma boşluğunu doldurmaya yönelik
yapılacak çalışmaların, YYY ile ilgili kuramsal alana katkıda bulunabileceği gibi
yazılım endüstrisinde konuyla ilgili problem sahalarına da ışık tutulabileceği
düşünülmektedir.
1.1
      </p>
      <sec id="sec-1-1">
        <title>Problem</title>
        <p>Bir YYY süreci, farklı soyutlama düzeylerinde bulunan bir dizi model dönüşümleri
ile bu modellerin program kodlarına çevrildiği yazılım dönüşümlerini içermektedir.
Yeninden yapılandırılacak yazılımın sahip olması istenildiği özellikler ile kalite
ölçütleri dikkate alındığında, çalışmamıza konu olan “Model Güdümlü ve Kaliteye
Yönelimli YYY” (MGKY_YYY)’ya yönelik araştırma problemi formal olarak
aşağıdaki gibi ifade edilebilir:</p>
        <p>
          Yeniden yapılanacak bir yazılım sistemi S; bu sistemin sahip olması
istenildiği P1, P2, …Pn özellikleri ve ilgili kalite ölçütleri KÖ1, KÖ2, …KÖn
verildiğinde; model ve yazılım dönüşümlerini içeren öyle bir Yeniden
Yapılama Dönüşüm YYD dizisi bulunuz ki MD1, MD2, …MDn model
dönüşümleri ile YD1 YD2, …YDn yazılım dönüşümlerini içersin ve yeniden
yapılanan yazılım sistemi S' = YYD ((MDn-1 (…MD1)) X (YDn-1 (…YD1),
P1,(S'), P2,(S'), … Pn,(S') özellikleri ile KÖ1,(S'), KÖ2,(S'), … KÖn,(S') kalite
ölçütlerini karşılasın.
Bu amaçla çalışmamızda, araştırma probleminin çözümüne yönelik olarak, Tasarım
Bilimi Araştırma Yöntemi (Design Science Research) (TBAY) [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] doğrultusunda
geliştirilen ve Şekil 1’de ana bileşenleri verilen bir YYY süreç modeli sunulmaktadır.
        </p>
        <sec id="sec-1-1-1">
          <title>Eski</title>
          <p>Sistem
MGM</p>
          <p>YYY
Etkinlikleri</p>
        </sec>
        <sec id="sec-1-1-2">
          <title>SQuaRE</title>
          <p>Standardı</p>
        </sec>
        <sec id="sec-1-1-3">
          <title>Yeni</title>
          <p>Sistem
Şekil 1. Çalışmanın Ana Bileşenleri
Makalenin sonraki bölümleri, çalışmanın kuramsal temellerini, araştırma yöntemini,
geliştirilen model ve sınırlıkları içermektedir.
2
2.1</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Kuramsal Çerçeve</title>
      <sec id="sec-2-1">
        <title>Yazılım Yeniden Yapılama</title>
        <p>
          Yeniden Yapılamayı (re-engineering), yapılanacak bir sistemi, mevcut sistemle aynı
ya da daha üst seviye bir soyutlama düzeyinde yeniden oluşturma ve yeni sistemi
uygulamalarla devam ettirme olarak tanımlamak mümkündür [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Aynı kapsamda
YYY sürecini ise (a) evrimleşebilen bir sistem oluşturmak, (b) mevcut yazılımın
işlevlerini geliştirmek, (c) ona yeni işlevler katarak (d) kalitesini iyileştirmek
amacıyla; (a) tersine mühendislik (reverse engineering), (b) yeniden düzenleme
(restructuring, refactoring) ve (c) ileriye mühendislik (forward engineering) ile
mevcut bir yazılımın iyileştirilmesi olarak tanımlamak mümkündür. Bu kapsamda
YYY, genel olarak program dönüştürme (program transformation) ve program
gösterimi (program representation) işlemlerinden oluştuğu söylenebilir. Program
dönüştürmede, çeşitli gereksinim ve ölçütlere (yazılım dili, hedef mimari, soyutlama
düzeyleri vb.) bağlı olarak, program çevirisi (translation), göçü (migration),
optimizasyonu vb. yazılım etkinlikleri gerçekleşebilmektedir. Program gösteriminde
ise, ayrıştırma ağaçları (parse tree), soyut söz dizim ağaçları (abstract syntax tree),
çizgeler (graph) vb gösterim yöntemlerinden bir veya birkaçı kullanılabilmektedir [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
Konu Alanı ve İş Modelleri
(Doküman, İş Akışı Çizenekleri)
        </p>
        <sec id="sec-2-1-1">
          <title>Analiz ve Tasarım Modelleri (UML Çizenekleri)</title>
        </sec>
        <sec id="sec-2-1-2">
          <title>Hesaplama Bağımsız Model</title>
        </sec>
        <sec id="sec-2-1-3">
          <title>Platform Bağımsız Model</title>
        </sec>
        <sec id="sec-2-1-4">
          <title>Detaylı Tasarım Modelleri</title>
          <p>(Java, C#, XML, vb.)</p>
        </sec>
        <sec id="sec-2-1-5">
          <title>Platform</title>
          <p>Spesifik Model</p>
        </sec>
        <sec id="sec-2-1-6">
          <title>Platform Spesifik Model Şekil 2. Model Güdümlü Mimari</title>
          <p>2.2</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>Model Güdümlü Mimari</title>
        <p>
          Modeller bir problem alanıyla ilgili karar alma ve ona yönelik bir çözüm
geliştirmek amacıyla kullanılmaktadır. Modelleme ve MGM, MGYG olarak bilinen
yazılım geliştirme yaklaşımının temelini oluşturmaktadır [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. Dolayısıyla, modeller
arasındaki ilişkiler, bir probleme yönelik çözümün yaratıldığı süreci kayıt altına alır
ve karşılıklı bağımlılıkları içeren yapıyı da oluştururlar. Bu ilişkiler aynı zamanda
sistem tasarlama ve geliştirme sürecinin herhangi bir noktasındaki değişikliklerin
anlaşılabilmesini, etkilerinin öngörülebilmesine de sağlamaktadırlar. MGM’de
yazılım geliştirme süreci, modeller arasında bir dizi dönüşüm olarak gerçekleşmekte,
çeşitli katman ve dönüşüm işlemlerinden oluşan bir mimari çerçeve doğrultusunda
evrilmektedir.
Şekil 2’de görüldüğü gibi MGM sistem tasarımına üç farklı bakış açısıyla
yaklaşmaktadır. İlk aşamada Hesaplama Bağımsız Modeller, teknolojiden bağımsız
konu alanıyla ilgili sistemin nasıl gerçekleştirileceğini belirlemektedir. Platform
Bağımsız Modeller, teknik detaylardan soyutlanmış ve yine platformdan bağımsız
olarak sistemle ilgili bir grup servisi tanımlamaktadır. Son olarak Platform Spesifik
Modeller, hedef platformu dikkate almakta ve sisteme yönelik teknik detayları
eklemektedir. Bu üç farklı model, çeşitli model dönüşüm kuralları doğrultusunda
birbirlerine dönüştürülmektedir. Yazılımın analiz, tasarım veya kodlama
aşamasındaki herhangi bir değişiklik diğer aşamalara kolayca yansıtılabilmektedir.
2.3
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Yazılım Kalitesi</title>
        <p>
          Yazılım mühendisliğiyle ilgili kalite standartları genel olarak McCall [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], Boehm
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], ISO-9126 ve ISO/IEC 2501n [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] olarak sınıflamak mümkündür. Bu standart ve
modellerin tanıtımı çalışmamızın kapsamı dışında olup MGKY_YYY süreç
modelinin bileşenlerinden olan ISO/IEC 2501n (Software Quality Requirements and
Evaluation (SQuaRE)) standardı temel alınmaktadır. Bu standart, yazılım kalite
İç
Kalite
Özellikler
Ölçütler
etkiler
bağlıdır
etkiler
bağlıdır
        </p>
        <p>
          Kullanım
Kalitesi
Özellikler
Ölçütler
ihtiyaçlarının tanımlanması, ölçülmesi ve değerlendirilmesine yönelik kalite modelini,
süreçleri ve ölçütleri belirlemektedir. Bu bağlamda yazılım kalitesi üç boyutta ele
alınmaktadır: (a) İç Kalite (internal quality): Karmaşıklık, satır sayısı, Nesneye
Yönelimli Programlama (NYP) metrikleri vb. ölçütler doğrultusunda yazılımın statik
yapısına ait kaliteyi ifade etmektedir. (b) Dış Kalite (external quality): İlgili yazılımın
işlevsel olarak test ortamında ihtiyaçları ne kadar karşıladığının ölçüsüdür. (c)
Kullanım Kalitesi (quality in use), geliştirilen yazılımın gerçek kullanım ortamında
kullanıcı ihtiyaçlarına ne kadar cevap verebildiğini ölçmektedir [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. Bu standart, bir
yazılım sisteminin kalitesini üç farklı bileşenle ortaya koymakla birlikte bu boyutlar
aynı zamanda birbirlerine karşılıklı olarak bağımlıdırlar. Bir başka ifadeyle, yazılımın
tasarım ve geliştirme aşamalarını ilgilendiren iç kalite özellikleri yazılımın dış
kalitesini belirlemekte, dış kalite özellikleri ise söz konusu yazılımın kullanım
kalitesini doğrudan etkilemektedir (Şekil 3).
        </p>
        <p>
          Şekil 3. SQuaRE Standardında Yazılım Kalite Bileşenleri [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]
2.4
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>Tasarım Bilimi Araştırma Yöntemi</title>
        <p>
          Fen ve Sosyal Bilimler, genel olarak doğa ve toplumda yer alan varlık, olgu ve
kavramları tanımlamaya veya bunlar arasındaki ilişkileri açıklamaya çalışmaktadır.
Bunlardan farklı olan Tasarım Biliminde, pratik amaçlara yönelik, belirli işlev ve
özelliklere sahip araç, sistem ve modelleri, bunların analiz, tasarım, geliştirme ve
değerlendirme aşamalarını da kapsayan ve bilimsel verilere dayalı bilgi birikimi
oluşturulmaktadır [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. Bilgi teknolojileri (BT) endüstrisinde tasarım ve geliştirme
projelerinin temel amaç ve kaygısı, mevcut ve onaylanmış standartları, bilgiyi, rutin
süreç ve modelleri kullanarak ürünleri maliyet etkin biçimde ve verimli geliştirmektir.
TBAY’de ise bu ürünlerin daha iyi geliştirilmesini sağlayacak bilimsel bilgi
birikimine katkıda bulunmak amaçlanmaktadır. TBAY dayalı bir projede, çevre ve
gerçek hayat problemlerinden hareket edilerek araştırma yapar gibi BT araç, yöntem,
model veya kuramları geliştirilir, iyileştirilir ya da ve sınanır [
          <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
          ]. Şekil 4’te
gösterildiği gibi TBAY’de içinde çeşitli yinelemeli etkinliklerin bulunduğu; (a)
Çevre, (b) Tasarım Bilimi Araştırması ve (c) Bilgi Tabanı aşamalarından oluşan üç
ana bileşen bulunmaktadır.
        </p>
        <p>Dış
Kalite
Özellikler
Ölçütler
Çevre</p>
        <p>Tasarım Bilimi Araştırması</p>
        <p>Bilgi Tabanı
 Uygulama Alanı
-İnsan
-Teknik sistemler
-Kurumsal sistemler
 Problem ve Fırsatlar
Ürün Tasarım
ve Geliştirme
Süreçleri
Değerlendirme
 Bilimsel kuram ve</p>
        <p>yöntemler
 Deneyimler ve</p>
        <p>
          uzmanlıklar
 Tasarım, araçları
Şekil 4. TBAY Temel Bileşenleri, ([
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]’den uyarlanmıştır).
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Yöntem</title>
      <p>
        Bu araştırma, TBAY [
        <xref ref-type="bibr" rid="ref7 ref8">7,8</xref>
        ] çerçevesinde yürütülmüş, sistematik haritalama (SH)
yöntemiyle desteklenmiştir. Çalışmanın TBAY doğrultusunda kuramsal temellerini ve
ana bileşenlerini MGM, YYY bilgi alanı ve ISO/IEC 2500n SQuaRE yazılım kalite
standartları oluşturmuştur. Yazılım mühendisliği problem alanıyla olan ilişkiyi,
endüstrideki uygulamalar ile SH sonucunda ortaya konulan bulgular belirlemiştir. SH
ile taramaya başlamadan önce çalışmanın sistematikliği, yansızlığı, geçerlilik ve
güvenirliğini sağlayacak bir protokol geliştirilmiştir. Bu protokol, araştırma
problemiyle ilgili arama deyimlerini, yayınların seçim ölçütleri ile ulaşılan kaynaklara
nasıl uygulanacağını, veri kayıt ve tasnif yöntemini, hangi veri ve bulguların alınacağı
gibi konuları içermiştir [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Taramada, YYY ve MGM temelini oluşturan süreçler,
modeller, aktörler, teknoloji, etkinlik vb. yapılar; YYY ile bu yapılar arasındaki
ilişkileri ortaya koyan modeller; söz konusu YYY yapılarını hayata geçiren çeşitli
kuram, yöntem, model ve uygulamalar incelenmiştir. Böylece, YYY ve MGM
arasındaki olası dolaylı ve doğrudan ilişkiler araştırılarak MGKY_YYY’nin temelleri
ve modelin süreç yapısı oluşturulmaya çalışılmış ve aşağıda detaylı olarak
açıklanmıştır:
3.1
      </p>
      <sec id="sec-3-1">
        <title>Model Güdümlü ve Kaliteye Yönelimli YYY Süreç Modeli</title>
        <p>Literatürde önerilen YYY çözümlerinde modelleme etkinlikleri genellikle, yazılım
geliştirme süreçleri içine gömülü ve sınırlı biçimde, modelleme ise yazılımı
görselleştirmek, anlaşılırlığı sağlamak ve yazılım süreci desteklemek amacıyla
kullanılmaktadır. Çalışmamızda önerilen MGKY_YYY modelinde geleneksel YYY
faaliyetleri, model güdümlü olarak yürütülmekte, kalite gereksinimleri yine MGM
doğrultusunda SQuaRE ölçütleriyle ifade edilmektedir. Şekil 5’te gösterildiği gibi
önerilen modelde YYY ve MGM olmak üzere bütünleşik iki yazılım ve sistem
tasarım /geliştirme süreç alanı bulunmaktadır. Modelleme ve YYY etkinlikleri bu iki
alan arasında gidiş-dönüşlü olmakta, yazılım modülleri ve modeller farklı soyutlama
düzeylerinde detaylandırılarak model dönüşümleri gerçekleştirilmektedir.
Şekil 5. Model Güdümlü ve Kaliteye Yönelimli YYY Süreç Modeli</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.1.1 İhtiyaç Analizi, Hesaplama ve Platform Bağımsız Model Aşaması</title>
        <p>Bu aşama, YYY sürecinin ihtiyaç analizi, MGM kapsamında hesaplama ve
platform-bağımsız modellerin oluşturulduğu, etkinliklerin bütünleştirilerek paralel
yürütüldüğü aşamadır. En genel anlamda kaynak ve hedef yazılımlarının
modellenmesi ve hedef yazılıma dönüştürülme süreci aşağıdaki gibi ifade edilebilir:
t : M1 (S1)│F1 → M2 (S2)│F2
(1)
t, YYY sürecindeki t1, t2…tn sıralı model dönüşümlerini, S1 yeniden
yapılandırılacak kaynak yazılımı, S2 hedef yazılımı, M1 kaynak yazılıma ait
modelleri, M2 hedef yazılıma ait modelleri, F1 ile F2 ise kaynak ve hedef yazılım
model dönüşümlerinde kullanılan formal gösterim yöntemlerini simgelemektedir.</p>
        <p> Öncelikle ihtiyaç analizine, işlevsel olan ve olmayan gereksinimlerin
belirtimi ile başlanılmaktadır. Doküman incelemesi, tersine mühendislik ve kaynak
kod analizi ile iyileştirilecek yazılımın incelemesi yapılır. Mevcut yazılıma ait varsa
doküman incelenmesi ya da tersine mühendislik ile iş akış çizenekleri Hesaplama
Bağımsız Modeller olarak oluşturulmaktadır.</p>
        <p> MGM çerçevesinde, mevcut yazılım kaynak kodlarından platform bağımsız
model olarak Soyut Söz Dizim Ağaçları (Abstract Syntax Tree) (SSDA)
çıkarılmaktadır. Daha sonra bu modeller, modelden modelle dönüşüm kuralları,
işlevsel ve kalite gereksinimleri de dikkate alınmak suretiyle hedef yazılımda aynı
soyutlama düzeyinde yine SSDA’ları olarak gösterilmektedir. Böylece mevcut
yazılıma ait bütün gereksinimler ile anlam bilimsel yapının hedef yazılıma olduğu
gibi aktarılabilmesi sağlanmaktadır:</p>
        <p>Ms → Ms a → Mt a → Mt (2)
 Ms mevcut yazılıma ait modeller, Ms a yine mevcut yazılımın SSDA’ları
olarak dönüştürülmüş platform bağımsız modelleri, Mt a ise gerekli düzenleme, kalite
ve eklemeler yapılıp aynı soyutlama düzeyinde gerçekleştirilen hedef yazılımın
SSDA’larını, son olarak Mt ise hedef yazılıma ait dönüştürülmüş modelleri
simgelemektedir.</p>
        <p> UML (Unified Modelling Language) çizenekleri de kaynak ve hedef
yazılımda platform bağımsız modelleri temsil etmektedirler. Bu çizeneklerde mevcut
sistemle ilgili yazılım mimarisi, yapısal ve işlevsel hatalar belirlenerek
düzeltilmektedir.</p>
        <p> SQuaRE çerçevesinde uygun metrik ve ölçütlerle hedef yazılımın kalite
gereksinimleri ortaya konulmaktadır. Böylece, hedef yazılımın sahip olması istendiği
P1, P2, …Pn özellikleri ve KÖ1, KÖ2, …KÖn kalite ölçütleri MGM çerçevesinde
platformdan bağımsız modellenmektedir.
3.1.2</p>
      </sec>
      <sec id="sec-3-3">
        <title>Hedef Yazılım ve Platform Spesifik Model Aşaması</title>
        <p>Bu aşamada, ihtiyaç analizinde belirlenmiş işlevsel/işlevsel olmayan ihtiyaçlar,
yazılım kalite ihtiyaçları ve hedef programlama dili dikkate alınır, hedef yazılım
mimarisi ve model dönüşüm kuralları belirlenir. Başka bir ifadeyle, farklı
seviyelerdeki MD1, MD2, …MDn model dönüşümlerini içerecek YD1 YD2, …YDn
yazılım dönüşümleri sırasıyla yinelemeli ve artırımsal olarak gerçekleştirilmektedir.</p>
        <p> Hedef programlama dili ve çalıştırma platformu dikkate alınır, bir önceki
aşamadaki platform-bağımsız model olarak oluşturulan SSDA’ları, UML çizenekleri,
ve NYP metrikleri, SQuaRE İç Kalite ölçütleri doğrultusunda hedef yazılım
mimarisini belirlenmektedir. Aslında bunların MGYG’deki karşılığı düzenleme
dönüşümleri (refactoring transformation) ya da modelden modele (model-to-model
transformation) dönüşümlerdir. Model dönüşüm yöntemleri ve yazılım desenleri
(pattern) bu dönüşümlerde yol gösterici ilkeleri ortaya koyarak model geliştirme ve
iyileştirme sürecine de formalizm kazandırmaktadır.</p>
        <p> Daha sonra hedef programlama dili ve yazılım mimarisinden hareket
edilerek iyileştirilmiş platform-bağımsız modeller (UML), platform-spesifik
modellere dönüştürülürler. Diğer bir ifadeyle geliştirilen modeller hedef programla
diliyle (Java, C#, XML vb.) gösterilmektedir. Bu yazılım dönüşümleri, elle veya
otomatik, UML profili ve yazılım desenleri kullanılarak gerçekleştirilmektedir.</p>
        <p> SSDA’ları ile anlamsal bütünlük, NYP metrikleri ile yapısal bütünlük ve iç
kalite, SQuaRE ölçütleri ile hedef yazılımın dış ve kullanım kalite ölçütleri
karşılanmaktadır.
3.1.3</p>
      </sec>
      <sec id="sec-3-4">
        <title>Uygulama Spesifik Model, Yazılım Dönüşümleri, Test ve Değerlendirme Aşaması</title>
        <p> YYY sürecinde, mevcut ve iyileştirilen yazılıma ait platform-spesifik
modeller, hedef platforma yönelik olarak daha da detaylandırılmakta, MGM
çerçevesinde uygulama-spesifik model olarak ifade edilen bilgisayar kodlarına
dönüştürülmektedir (model-to-code transformation).</p>
        <p> Birim ve entegrasyon testleriyle yeniden yapılanan yazılım sistemi S',
geçerleme ve doğrulama süreçlerinden geçirilmekte, P1,(S'), P2,(S'), …, Pn,(S') yazılım
özellikleri ile KÖ1,(S'), KÖ2,(S'), …, KÖn,(S') kalite ölçütlerinin ne kadar karşıladığı
bu aşamada değerlendirilmektedir.</p>
        <p> Değerlendirme sürecinde yapılan güncellemeler ve düzenlemeler,
uygulama ve platform-spesifik modellere tekrar aktarılmakta, böylece model geri
dönüşüm ve soyutlama ile platform ve hesaplama bağımsız modellere söz konusu
değişiklikler yansıtılmaktadır.
4</p>
        <p>Çalışmanın Sınırlılıkları</p>
        <p>
          Bu araştırma, bilişim ve bilgi sistemleri alanında son yıllarda kullanılmakta olan
TBAY çerçevesinde yürütülmüştür. Bu yöntemde özellikle çalışmanın kuramsal
temeli ile yeni bilgi olarak ilgili alana nasıl katkıda bulunduğu esas alınmakta,
araştırmalarda geliştirilen sistem, model veya yöntem, araştırma teknikleriyle test
edilerek geliştirilmektedir [
          <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
          ]. Ancak, TBAY’nin önemli bir bileşeni test ve
değerlendirme süreci olup bu araştırmada geliştirilen modelin, durum çalışması vb.
yöntemlerle sahada sınanması mümkün olmamıştır. Dolayısıyla, çalışma sonuçlarının
genellenebilirliği bu yönüyle sınırlı düzeydedir. Çalışmanın geçerliliğini tehdit
edebilecek unsurlar SH ve uzman görüşlerine başvurularak giderilmeye çalışılmıştır.
Araştırmamızdaki bir diğer sınırlılık ise geliştirilen modelin nesneye yönelimli
yazılım sistemlerine yönelik olması ve bu bağlamda yapısal programlamayla
geliştirilmiş sistemlerin YYY ihtiyaçlara cevap verebilecek nitelikte olmamasıdır.
5
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuç ve Öneriler</title>
      <p>Araştırmamızın temel yaklaşımı, yoğun kaynak kullanımını gerektiren YYY süreç
ve etkinliklerinin otomatik hale getirilmesi gerektiği, kalite ve diğer yazılım
gereksinimlerinin MGYG doğrultusunda ele alınabileceği yönündedir. Bu amaçla
çalışmamızda, TBAY doğrultunda geliştirilen “Model Güdümlü ve Kaliteye
Yönelimli YYY Süreç Modeli” tanıtılmış, ana bileşenleri ve kuramsal temelleri ortaya
konulmuştur. Nitel, deneysel/yarı deneysel araştırma yöntemleri ve yazılım
mühendisliği teknikleriyle önerilen modelin yazılım kalitesi, etkililik ve verimlikle
ilgili beklentileri ne kadar karşıladığı belirlenmelidir. Dolayısıyla makalemiz, ilgili
modelin test ve değerlendirildiği ve TBAY doğrultusunda yürütülecek yeni
çalışmaların önerisiyle son bulmaktadır.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Editorial: “
          <source>A Retrospective View of Software Maintenance and Reengineering Research- A Selection of Papers From 2010 European Conference on Software Maintenance and Reengineering.” Journal of Software Maintenance and Evolution</source>
          ,
          <year>2011</year>
          , DOI: 10.1002/smr.548 (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Tahvildari</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kontogiannis</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Mylopoulos</surname>
          </string-name>
          J.: “
          <string-name>
            <surname>Quality-Driven Software</surname>
          </string-name>
          Reengineering.”
          <source>The Journal of Systems and Software</source>
          ,
          <volume>66</volume>
          ,
          <fpage>225</fpage>
          -
          <lpage>239</lpage>
          (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Uysal</surname>
            ,
            <given-names>M.P.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Mergen</surname>
            ,
            <given-names>E.: A</given-names>
          </string-name>
          <string-name>
            <surname>Quality-Oriented Approach</surname>
          </string-name>
          To Software Reengineering.
          <source>Proceedings of the Northeast Decision Sciences 2013 Annual Conference</source>
          , Brooklyn,
          <string-name>
            <surname>NY</surname>
          </string-name>
          , USA, April 5-
          <issue>7</issue>
          ,
          <year>2013</year>
          ,
          <fpage>971</fpage>
          -
          <lpage>979</lpage>
          (
          <year>2013</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Wagner</surname>
            <given-names>C.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Driven Software Migration: A Methodology</surname>
          </string-name>
          , Reengineering,
          <source>Recovery and Modernization of Legacy System</source>
          . Springer Vieweg (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Swithinbank</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chessell</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gardner</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Griffin</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Man</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wylie</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Yusuf</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          : Patterns:
          <string-name>
            <surname>Model-Driven Development Using IBM Rational Software</surname>
            <given-names>Architect</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Redbooks</surname>
          </string-name>
          (
          <year>2005</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Beydeda</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,·
          <string-name>
            <surname>Book</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gruhn</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Driven Software</surname>
          </string-name>
          Development. Springer-Verlag Berlin Heidelberg (
          <year>2004</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Hevner</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Chatterjee</surname>
            <given-names>S.</given-names>
          </string-name>
          :
          <source>Design Research In Information Systems, Integrated Series in Information Systems</source>
          ,
          <volume>22</volume>
          , DOI 10.1007/978-
          <fpage>1</fpage>
          (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Vaishnavi</surname>
            ,
            <given-names>V.K.</given-names>
          </string-name>
          &amp;
          <string-name>
            <surname>Kuechler</surname>
            <given-names>W.J.</given-names>
          </string-name>
          :
          <source>“Design Science Research Methods and Patterns: Innovating İnformation And Communication Technology”. Auerbach Publications</source>
          , Taylor &amp; Francis Group,
          <string-name>
            <surname>NW</surname>
          </string-name>
          , USA (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Elliot</surname>
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Chikofsky</surname>
          </string-name>
          and
          <string-name>
            <surname>James H. C.</surname>
          </string-name>
          <article-title>: Reverse Engineering and Design Recovery: A Taxonomy</article-title>
          .
          <source>IEEE Software</source>
          ,
          <volume>7</volume>
          (
          <issue>1</issue>
          ),
          <fpage>13</fpage>
          -
          <lpage>17</lpage>
          (
          <year>1990</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Object Management Group.
          <source>MDA Guide Version 1.0.1. Technical Report omg/2003-06- 01</source>
          , OMG (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>McCall</surname>
            ,
            <given-names>J. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Richards</surname>
            ,
            <given-names>P. K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Walters</surname>
            ,
            <given-names>G. F.</given-names>
          </string-name>
          :
          <article-title>Factors in Software Quality</article-title>
          .
          <source>Nat'l Tech. Information Service</source>
          , Vol.
          <volume>1</volume>
          ,
          <issue>2</issue>
          and 3 (
          <year>1977</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Boehm</surname>
            ,
            <given-names>B. W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brown</surname>
            ,
            <given-names>J. R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kaspar</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lipow</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McLeod</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merritt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Characteristics of Software Quality</article-title>
          . North Holland, (
          <year>1978</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. ISO/IEC 2501n.
          <article-title>Quality model division</article-title>
          . Retrieved from “http://www.iso.
          <source>org” on April 4</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kitchenham</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Charters</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Guidelines for Performing Systematic Literature Reviews in Software Engineering</article-title>
          , Keele University and Durham University
          <source>Technical Report EBSE 2007-001</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>