Publication: Automated maintenance support for data-tier software
Institution Authors
Authors
Journal Title
Journal ISSN
Volume Title
Type
PhD dissertation
Access
info:eu-repo/semantics/restrictedAccess
Publication Status
Unpublished
Abstract
Data-tier software includes the data model and business logic of enterprise systems, and it is subject to long-term maintenance. Even though the user interface of these systems can be completely replaced, data-tier software usually evolves for decades. The number of domain experts with extensive knowledge about the overall software diminishes in time and applying extensions or changes becomes increasingly effort-consuming and error-prone for new developers. In this thesis, we introduce techniques and tools to provide automated maintenance support for data-tier software. These techniques and tools aim at reducing effort and the number of errors specifically for three challenging maintenance tasks: i) correct placement of a new object like a stored procedure in data-tier software, ii) evaluating the impact of changing database tables on software modules, and iii) evaluating the impact of table extensions on other tables of the same database. The first task is important because introducing a new object to data-tier software should not hamper its modular structure. This structure is defined by the allocation of objects among a set of schemas. Therefore, we introduce an approach and a tool to automatically predict the correct placement of new objects. We extract dependencies among various types of objects (database types, sequences, tables, procedures, functions, packages, and views) that are already placed in schemas. These dependencies are used for training an artificial neural network model, which is then used for prediction. Our industrial case studies show that our approach can reach an accuracy of 89%, whereas the baseline approach using coupling and cohesion metrics can reach 57.4% accuracy at most. There are already several techniques and tools for supporting the second task of analyzing the impact of changes in the data model on the source code. However, they fall short to analyze dynamically created SQL statements, queries on multiple tables, and other types of statements that allow data manipulation in PL/SQL, which is a commonly used language for developing data-tier software. We introduce techniques and a tool to parse both the data model and the source code (i.e., PL/SQL functions and procedures) taking part in all the schemas of a given database. Then, a dependency model is created based on queries and manipulation of database tables. Unlike prior studies, our tool can analyze queries that are created dynamically and that involve multiple tables as well as PL/SQL-specific features. We use the derived dependency model to estimate effort for two different common refactoring types on real systems. We observe high consistency between the automated estimations and manual estimations. The third task is concerned with the impact of changing tables on other tables of the same database. There are only a few studies that focus on this concern. Moreover, these studies consider the impact of deletion and modification of columns in database tables only. To address this limitation, we introduce an approach and a tool for automatically detecting the impact of data model extensions on the data model itself. We employ Siamese networks to detect similarities among database tables and such, to learn implicit relations among them. Table similarities are used as the basis for identifying potential impact. We develop another tool as the baseline, which employs the cosine similarity metric to measure similarity among database tables. Results obtained with Siamese networks turned out to be better than the baseline, achieving the mean F1 score of 96.1%.
Yazılımların veri katmanları, kurumsal sistemlerin veri modeli ile iş mantığını içermekte olup, bu katmanlar uzun süreli bakıma ihtiyaç duymaktadır. Sistemlerin kullanıcı arayüzü tamamen değiştirilse de, veri katmanı yazılımı genellikle uzun yıllar boyunca geliştirilmeye devam etmektedir. Yazılım hakkında kapsamlı bilgiye sahip olan alan uzmanlarının sayısı zamanla azalmaktadır. Bu durum yazılıma yeni özellikler eklemeyi veya mevcutta olan yazılımı değiştirmeyi özellikle yeterli tecrübeye sahip olmayan geliştiriciler için zorlaştırmakta ve daha fazla efor gerektiren bir çalışma haline gerektirmektedir. Bu durum aynı zamanda hata eğilimini de arttırmaktadır. Bu tezde, veri katmanı yazılımı için otomatik bakım desteği sağlamak üzere teknikler ve araçlar tanıtılmaktadır. Bu teknikler ve araçlar, özellikle üç zorlu bakım ihtiyacı için eforu ve hata sayısını azaltmayı amaçlamaktadır: i) veri katmanı yazılımında prosedür gibi yeni bir nesnenin doğru modül ile ilişkili olarak konumlandırılması, ii) veritabanı tablolarının değiştirilmesinin yazılım modülleri üzerindeki etkisinin belirlenmesi, ve iii) veritabanı tablolarının genişletilmesinin aynı veritabanındaki diğer tablolar üzerindeki etkisinin belirlenmesi. Yukarıda listelenen ilk bakım ihtiyacı önemlidir, çünkü veri katmanı yazılımına yeni bir nesne eklemek modüler yapıyı bozmamalıdır. Bu yapı, nesnelerin veritabanı şemaları arasında doğru konumlandırılmasıyla sağlanmakta-dır. Bu bakım ihtiyacı ile ilgili olarak, yeni nesnelerin doğru yerleşimini otomatik olarak tahmin etmeyi amaçlayan bir yaklaşım ve araç sunmaktayız. Şemalar üzerinde yer alan çeşitli nesne türleri (veri tipleri, sekans, tablolar, prosedürler, fonksiyonlar, paketler ve görünümler) arasındaki bağımlılıkları çıkarıp, bu bağımlı-lıkları daha sonra doğru modülün tahmini için kullanılan bir yapay sinir ağı modelinin eğitimi için kullanmaktayız. Endüstriyel örnek vaka çalışmalarımız, yaklaşımımızın 89% düzeyine kadar bir doğruluğa ulaşabileceğini, buna karşın birleştirme ve uyum metriklerini temel alan yaklaşımın en fazla 57.4% düzeyinde bir doğruluğa ulaşabildiğini göstermektedir. Veri modelindeki değişikliklerin kaynak kodu üzerindeki etkisini analiz etmeye yönelik ikinci bakım ihtiyacını desteklemek için halihazırda birkaç teknik ve araç bulunmaktadır. Ancak, bu teknik ve araçlar dinamik olarak oluşturulmuş SQL deyimlerini, birden çok tablo ile bağlantılı sorguları ve veri katmanı yazılımı geliştirmek için yaygın olarak kullanılan bir dil olan PL/SQL'de veri işlemeye izin veren diğer deyim türlerini analiz etmekte yetersiz kalmaktadırlar. Bu nedenle belirli bir veritabanının tüm şemalarında yer alan hem veri modelini hem de kaynak kodunu (PL/SQL fonksiyonları ve prosedürleri vb.) elde edip, ardından sorgulara ve veritabanı tablolarını güncelleyen komutlara dayalı bir bağımlılık modeli oluşturan bir araç sunmaktayız. Önceki çalışmalardan farklı olarak, aracımız dinamik olarak oluşturulan ve birden çok tablonun yanı sıra PL/SQL'e özgü özellikleri içeren sorguları analiz edebilmektedir. Gerçek bir sistem üzerinde iki farklı yeniden yapılandırma çalışması ile ilgili gerekli olan eforu tahmin etmek için araç tarafından oluşturulan bağımlılık modelini kullanmaktayız. Bağımlılık modeli kullanılarak hesaplanan otomatik tahminler ile alan uzmanları tarafından yapılan manuel tahminler arasında yüksek tutarlılık gözlemlenmektedir. Üçüncü bakım ihtiyacı, genişletilen tabloların aynı veritabanındaki diğer tablolar üzerindeki etkisiyle ilgilidir. Bu ihtiyaca odaklanan sadece birkaç çalışma bulunmaktadır. Ayrıca, bu çalışmalar yalnızca veritabanı tablolarındaki sütunların silinmesi ve değiştirilmesinin etkisini dikkate almaktadır. Bu çalışmada, veri tabanı tablolarının genişletilmesinin veri modelinde hali hazırda mevcut olan diğer tablolar üzerindeki olası etkisini otomatik olarak tespit eden bir yaklaşım ve araç sunulmaktadır. Veritabanı tablolarının benzerliklerini tespit etmek, aralarındaki örtük ilişkileri öğrenmek için Siyam ağlarını kullanmaktayız. Temel bir yöntem olarak, veritabanı tabloları arasındaki benzerliği ölçmek için kosinüs benzerlik metriğini kullanan başka bir araç daha sağlıyoruz. Siyam ağlarıyla 96.1% F1 skoruna ulaşılarak, temel yönteme göre daha iyi sonuç elde edildiği görülmektedir.
Yazılımların veri katmanları, kurumsal sistemlerin veri modeli ile iş mantığını içermekte olup, bu katmanlar uzun süreli bakıma ihtiyaç duymaktadır. Sistemlerin kullanıcı arayüzü tamamen değiştirilse de, veri katmanı yazılımı genellikle uzun yıllar boyunca geliştirilmeye devam etmektedir. Yazılım hakkında kapsamlı bilgiye sahip olan alan uzmanlarının sayısı zamanla azalmaktadır. Bu durum yazılıma yeni özellikler eklemeyi veya mevcutta olan yazılımı değiştirmeyi özellikle yeterli tecrübeye sahip olmayan geliştiriciler için zorlaştırmakta ve daha fazla efor gerektiren bir çalışma haline gerektirmektedir. Bu durum aynı zamanda hata eğilimini de arttırmaktadır. Bu tezde, veri katmanı yazılımı için otomatik bakım desteği sağlamak üzere teknikler ve araçlar tanıtılmaktadır. Bu teknikler ve araçlar, özellikle üç zorlu bakım ihtiyacı için eforu ve hata sayısını azaltmayı amaçlamaktadır: i) veri katmanı yazılımında prosedür gibi yeni bir nesnenin doğru modül ile ilişkili olarak konumlandırılması, ii) veritabanı tablolarının değiştirilmesinin yazılım modülleri üzerindeki etkisinin belirlenmesi, ve iii) veritabanı tablolarının genişletilmesinin aynı veritabanındaki diğer tablolar üzerindeki etkisinin belirlenmesi. Yukarıda listelenen ilk bakım ihtiyacı önemlidir, çünkü veri katmanı yazılımına yeni bir nesne eklemek modüler yapıyı bozmamalıdır. Bu yapı, nesnelerin veritabanı şemaları arasında doğru konumlandırılmasıyla sağlanmakta-dır. Bu bakım ihtiyacı ile ilgili olarak, yeni nesnelerin doğru yerleşimini otomatik olarak tahmin etmeyi amaçlayan bir yaklaşım ve araç sunmaktayız. Şemalar üzerinde yer alan çeşitli nesne türleri (veri tipleri, sekans, tablolar, prosedürler, fonksiyonlar, paketler ve görünümler) arasındaki bağımlılıkları çıkarıp, bu bağımlı-lıkları daha sonra doğru modülün tahmini için kullanılan bir yapay sinir ağı modelinin eğitimi için kullanmaktayız. Endüstriyel örnek vaka çalışmalarımız, yaklaşımımızın 89% düzeyine kadar bir doğruluğa ulaşabileceğini, buna karşın birleştirme ve uyum metriklerini temel alan yaklaşımın en fazla 57.4% düzeyinde bir doğruluğa ulaşabildiğini göstermektedir. Veri modelindeki değişikliklerin kaynak kodu üzerindeki etkisini analiz etmeye yönelik ikinci bakım ihtiyacını desteklemek için halihazırda birkaç teknik ve araç bulunmaktadır. Ancak, bu teknik ve araçlar dinamik olarak oluşturulmuş SQL deyimlerini, birden çok tablo ile bağlantılı sorguları ve veri katmanı yazılımı geliştirmek için yaygın olarak kullanılan bir dil olan PL/SQL'de veri işlemeye izin veren diğer deyim türlerini analiz etmekte yetersiz kalmaktadırlar. Bu nedenle belirli bir veritabanının tüm şemalarında yer alan hem veri modelini hem de kaynak kodunu (PL/SQL fonksiyonları ve prosedürleri vb.) elde edip, ardından sorgulara ve veritabanı tablolarını güncelleyen komutlara dayalı bir bağımlılık modeli oluşturan bir araç sunmaktayız. Önceki çalışmalardan farklı olarak, aracımız dinamik olarak oluşturulan ve birden çok tablonun yanı sıra PL/SQL'e özgü özellikleri içeren sorguları analiz edebilmektedir. Gerçek bir sistem üzerinde iki farklı yeniden yapılandırma çalışması ile ilgili gerekli olan eforu tahmin etmek için araç tarafından oluşturulan bağımlılık modelini kullanmaktayız. Bağımlılık modeli kullanılarak hesaplanan otomatik tahminler ile alan uzmanları tarafından yapılan manuel tahminler arasında yüksek tutarlılık gözlemlenmektedir. Üçüncü bakım ihtiyacı, genişletilen tabloların aynı veritabanındaki diğer tablolar üzerindeki etkisiyle ilgilidir. Bu ihtiyaca odaklanan sadece birkaç çalışma bulunmaktadır. Ayrıca, bu çalışmalar yalnızca veritabanı tablolarındaki sütunların silinmesi ve değiştirilmesinin etkisini dikkate almaktadır. Bu çalışmada, veri tabanı tablolarının genişletilmesinin veri modelinde hali hazırda mevcut olan diğer tablolar üzerindeki olası etkisini otomatik olarak tespit eden bir yaklaşım ve araç sunulmaktadır. Veritabanı tablolarının benzerliklerini tespit etmek, aralarındaki örtük ilişkileri öğrenmek için Siyam ağlarını kullanmaktayız. Temel bir yöntem olarak, veritabanı tabloları arasındaki benzerliği ölçmek için kosinüs benzerlik metriğini kullanan başka bir araç daha sağlıyoruz. Siyam ağlarıyla 96.1% F1 skoruna ulaşılarak, temel yönteme göre daha iyi sonuç elde edildiği görülmektedir.