1,643 research outputs found

    The Impact Of Design Patterns In Refactoring Technique To Measure Performance Efficiency

    Get PDF
    Designing and developing software application has never been an easy task. The process is often time consuming and requires interaction between several different aspects. It will be harder in re-engineering the legacy system through refactoring technique, especially when consider to achieve software standard quality. Performance is one of the essential a quality attribute of software quality. Many studies in the literature have premise that design patterns improve the quality of object-oriented software systems but some studies suggest that the use of design patterns do not always result in appropriate designs. There are remaining question issues on negative or positive impacts of pattern refactoring in performance. In practice, refactoring in any part or structure of the system may take effect to another related part or structure. Effect of the process using refactoring technique and design patterns may improve software quality by making it more performable efficiency. Considerable research has been devoted in re-designing the system to improve software quality as maintainability and reliability. Less attention has been paid in measuring impact of performance efficiency quality factor. The main idea of this thesis is to investigate the impact, demonstrate how design patterns can be used to refactor the legacy software application in term of performance efficiency. It is therefore beneficial to investigate whether design patterns may influence performance of applications. In the thesis, an enterprise project named SIA (Sistem Informasi Akademik) is designed by applying Java EE platform. Some issues related to design patterns are addressed. The selection of design pattern is based on the application context issue. There are three kind of parameters measure, time behavior, resource utilization and capacity measures that based on standard guideline. We use tools support in experimentation as Apache JMeter and Java Mission Control. These tools provide convenient and generate appropriate result of performance measurement. The experiment results shown that the comparison between the legacy and refactored system that implemented design pattern indicates influence on application quality, especially on performance efficiency. ================================================================================================== Merancang dan mengembangkan aplikasi perangkat lunak bukan merupakan pekerjaan yang mudah karena membutuhkan waktu dan interaksi antara beberapa aspek. Proses desain pada rekayasa ulang akan lebih sulit meskipun melalui teknik refactoring, terutama untuk mencapai standar kualitas perangkat lunak. Kinerja merupakan salah satu atribut terpenting kualitas perangkat lunak. Banyak penelitian menjelaskan pola desain memperbaiki kualitas sistem perangkat lunak berorientasi objek, namun beberapa penelitian juga menunjukkan bahwa penggunaan pola desain tidak selalu menghasilkan desain yang sesuai. Masih ada pertanyaan tentang dampak negatif atau positif dari kinerja pola refactoring. Pada praktiknya, melakukan refactoring pada suatu bagian atau struktur sistem akan berpengaruh pada bagian atau struktur lain yang terkait. Penggunaan teknik refactoring dan pola desain dapat meningkatkan kualitas perangkat lunak dengan kinerja lebih efisien. Sudah banyak penelitian yang berfokus untuk merancang ulang sistem untuk meningkatkan kualitas perangkat lunak sebagai kemampuan rawatan dan keandalan. Tetapi masih kurang penelitian perhatian dalam mengukur dampak faktor kualitas efisiensi kinerja. Tujuan utama dalam tesis ini adalah untuk mengetahui dampaknya, menunjukkan bagaimana pola desain dapat digunakan untuk refactor aplikasi perangkat lunak terdahulu dalam hal efisiensi kinerja. Oleh karena itu, akan bermanfaat untuk menyelidiki apakah pola desain dapat mempengaruhi kinerja aplikasi. Dalam tesis ini, sebuah proyek perusahaan bernama SIA (Sistem Informasi Akademik) dirancang dengan menerapkan platform Java EE. Beberapa masalah yang terkait dengan pola desain diketahui. Pemilihan pola desain berdasarkan pada isu konteks aplikasi. Tiga jenis ukuran parameter dipakai untuk penilitian ini, perilaku waktu, pemanfaatan sumber daya dan ukuran kapasitas yang berdasarkan pada pedoman standar. Kami menggunakan Apache JMeter dan Java Mission Control sebagai alat bantu dalam eksperimen. Hasil percobaan menunjukkan bahwa perbandingan antara sistem terdahulu dengan penelitian ini yang menerapkan pola desain menunjukkan bahwa hasilnya berpengaruh terhadap kualitas aplikasi terutama pada efisiensi kinerja

    Handling High-Level Model Changes Using Search Based Software Engineering

    Full text link
    Model-Driven Engineering (MDE) considers models as first-class artifacts during the software lifecycle. The number of available tools, techniques, and approaches for MDE is increasing as its use gains traction in driving quality, and controlling cost in evolution of large software systems. Software models, defined as code abstractions, are iteratively refined, restructured, and evolved. This is due to many reasons such as fixing defects in design, reflecting changes in requirements, and modifying a design to enhance existing features. In this work, we focus on four main problems related to the evolution of software models: 1) the detection of applied model changes, 2) merging parallel evolved models, 3) detection of design defects in merged model, and 4) the recommendation of new changes to fix defects in software models. Regarding the first contribution, a-posteriori multi-objective change detection approach has been proposed for evolved models. The changes are expressed in terms of atomic and composite refactoring operations. The majority of existing approaches detects atomic changes but do not adequately address composite changes which mask atomic operations in intermediate models. For the second contribution, several approaches exist to construct a merged model by incorporating all non-conflicting operations of evolved models. Conflicts arise when the application of one operation disables the applicability of another one. The essence of the problem is to identify and prioritize conflicting operations based on importance and context – a gap in existing approaches. This work proposes a multi-objective formulation of model merging that aims to maximize the number of successfully applied merged operations. For the third and fourth contributions, the majority of existing works focuses on refactoring at source code level, and does not exploit the benefits of software design optimization at model level. However, refactoring at model level is inherently more challenging due to difficulty in assessing the potential impact on structural and behavioral features of the software system. This requires analysis of class and activity diagrams to appraise the overall system quality, feasibility, and inter-diagram consistency. This work focuses on designing, implementing, and evaluating a multi-objective refactoring framework for detection and fixing of design defects in software models.Ph.D.Information Systems Engineering, College of Engineering and Computer ScienceUniversity of Michigan-Dearbornhttp://deepblue.lib.umich.edu/bitstream/2027.42/136077/1/Usman Mansoor Final.pdfDescription of Usman Mansoor Final.pdf : Dissertatio

    Search based software engineering: Trends, techniques and applications

    Get PDF
    © ACM, 2012. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version is available from the link below.In the past five years there has been a dramatic increase in work on Search-Based Software Engineering (SBSE), an approach to Software Engineering (SE) in which Search-Based Optimization (SBO) algorithms are used to address problems in SE. SBSE has been applied to problems throughout the SE lifecycle, from requirements and project planning to maintenance and reengineering. The approach is attractive because it offers a suite of adaptive automated and semiautomated solutions in situations typified by large complex problem spaces with multiple competing and conflicting objectives. This article provides a review and classification of literature on SBSE. The work identifies research trends and relationships between the techniques applied and the applications to which they have been applied and highlights gaps in the literature and avenues for further research.EPSRC and E

    Towards using fluctuations in internal quality metrics to find design intents

    Full text link
    Le contrôle de version est la pierre angulaire des processus de développement de logiciels modernes. Tout en construisant des logiciels de plus en plus complexes, les développeurs doivent comprendre des sous-systèmes de code source qui leur sont peu familier. Alors que la compréhension de la logique d'un code étranger est relativement simple, la compréhension de sa conception et de sa genèse est plus compliquée. Elle n'est souvent possible que par les descriptions des révisions et de la documentation du projet qui sont dispersées et peu fiables -- quand elles existent. Ainsi, les développeurs ont besoin d'une base de référence fiable et pertinente pour comprendre l'historique des projets logiciels. Dans cette thèse, nous faisons les premiers pas vers la compréhension des motifs de changement dans les historiques de révision. Nous étudions les changements prenant place dans les métriques logicielles durant l'évolution d'un projet. Au travers de multiples études exploratoires, nous réalisons des expériences quantitatives et qualitatives sur plusieurs jeux de données extraits à partir d'un ensemble de 13 projets. Nous extrayons les changements dans les métriques logicielles de chaque commit et construisons un jeu de donnée annoté manuellement comme vérité de base. Nous avons identifié plusieurs catégories en analysant ces changements. Un motif en particulier nommé "compromis", dans lequel certaines métriques peuvent s'améliorer au détriment d'autres, s'est avéré être un indicateur prometteur de changements liés à la conception -- dans certains cas, il laisse également entrevoir une intention de conception consciente de la part des auteurs des changements. Pour démontrer les observations de nos études exploratoires, nous construisons un modèle général pour identifier l'application d'un ensemble bien connu de principes de conception dans de nouveaux projets. Nos résultats suggèrent que les fluctuations de métriques ont le potentiel d'être des indicateurs pertinents pour gagner des aperçus macroscopiques sur l'évolution de la conception dans l'historique de développement d'un projet.Version control is the backbone of the modern software development workflow. While building more and more complex systems, developers have to understand unfamiliar subsystems of source code. Understanding the logic of unfamiliar code is relatively straightforward. However, understanding its design and its genesis is often only possible through scattered and unreliable commit messages and project documentation -- when they exist. Thus, developers need a reliable and relevant baseline to understand the history of software projects. In this thesis, we take the first steps towards understanding change patterns in commit histories. We study the changes in software metrics through the evolution of projects. Through multiple exploratory studies, we conduct quantitative and qualitative experiments on several datasets extracted from a pool of 13 projects. We mine the changes in software metrics for each commit of the respective projects and manually build oracles to represent ground truth. We identified several categories by analyzing these changes. One pattern, in particular, dubbed "tradeoffs", where some metrics may improve at the expense of others, proved to be a promising indicator of design-related changes -- in some cases, also hinting at a conscious design intent from the authors of the changes. Demonstrating the findings of our exploratory studies, we build a general model to identify the application of a well-known set of design principles in new projects. Our overall results suggest that metric fluctuations have the potential to be relevant indicators for valuable macroscopic insights about the design evolution in a project's development history

    Technical Debt Decision-Making Framework

    Get PDF
    Software development companies strive to produce high-quality software. In commercial software development environments, due to resource and time constraints, software is often developed hastily which gives rise to technical debt. Technical debt refers to the consequences of taking shortcuts when developing software. These consequences include making the system difficult to maintain and defect prone. Technical debt can have financial consequences and impede feature enhancements. Identifying technical debt and deciding which debt to address is challenging given resource constraints. Project managers must decide which debt has the highest priority and is most critical to the project. This decision-making process is not standardized and sometimes differs from project to project. My research goal is to develop a framework that project managers can use in their decision-making process to prioritize technical debt based on its potential impact. To achieve this goal, we survey software practitioners, conduct literature reviews, and mine software repositories for historical data to build a framework to model the technical debt decision-making process and inform practitioners of the most critical debt items

    Technical Debt Decision-Making Framework

    Get PDF
    Software development companies strive to produce high-quality software. In commercial software development environments, due to resource and time constraints, software is often developed hastily which gives rise to technical debt. Technical debt refers to the consequences of taking shortcuts when developing software. These consequences include making the system difficult to maintain and defect prone. Technical debt can have financial consequences and impede feature enhancements. Identifying technical debt and deciding which debt to address is challenging given resource constraints. Project managers must decide which debt has the highest priority and is most critical to the project. This decision-making process is not standardized and sometimes differs from project to project. My research goal is to develop a framework that project managers can use in their decision-making process to prioritize technical debt based on its potential impact. To achieve this goal, we survey software practitioners, conduct literature reviews, and mine software repositories for historical data to build a framework to model the technical debt decision-making process and inform practitioners of the most critical debt items
    corecore