5 research outputs found

    Database Auto Awesome: Enhancing Database-Centric Web Applications through Informed Code Generation

    Get PDF
    Database Auto Awesome is an approach to enhancing web applications comprised of forms used to interact with stored information. It was inspired by Google\u27s Auto Awesome tool, which provides automatic enhancements for photos. Database Auto Awesome aims to automatically or semi-automatically provide improvements to an application by expanding the functionality of the application and improving the existing code. This thesis describes a tool that gathers information from the application and provides details on how the parts of the application work together. This information provides the details necessary to generate new portions of an application. These enhancements are directed by the web application administrator through specifying what they would like to have generated, in terms of functionality. Once the administrator has provided this direction, the new application code is generated and put in updated or new files. Using this approach, Database Auto Awesome provides a viable solution for semi-automatically generating enhancements to an existing web application

    Genetic Improvement of Software (Dagstuhl Seminar 18052)

    Get PDF
    We document the program and the immediate outcomes of Dagstuhl Seminar 18052 “Genetic Improvement of Software”. The seminar brought together researchers in Genetic Improvement (GI) and related areas of software engineering to investigate what is achievable with current technology and the current impediments to progress and how GI can affect the software development process. Several talks covered the state-of-the-art and work in progress. Seven emergent topics have been identified ranging from the nature of the GI search space through benchmarking and practical applications. The seminar has already resulted in multiple research paper publications. Four by participants of the seminar will be presented at the GI workshop co-located with the top conference in software engineering - ICSE. Several researchers started new collaborations, results of which we hope to see in the near future

    Implementation of an automatic extract method refactoring

    Get PDF
    Software quality is an important aspect to guarantee maintainability and comprehensibility of developed source code. Modern software projects use static code analysis tools to continuously monitor the software quality. Based on findings from these tools, developers refactor their code with the aim to remove detected code smells. Refactorings can use up a lot of resources when done manually and a lot of authors suggest semi-automated solutions to improve the refactoring experience for developers. One of the most applied refactorings is the extract method refactoring which is often used to improve long and complex methods. Recent studies showed, that existing semi-automated tools for this refactoring are not preferred by developers. We propose an approach to fully automate the extract method refactorings based on findings from static code analysis tools. Our approach finds refactoring opportunities in a selected method and ranks these candidates according to a scoring function. The highest ranked candidate will be automatically refactored using the extract method refactoring. We implement our approach using the existing Refactoring Bot framework, a software development bot which seamlessly integrates into the build pipeline of existing projects.Software Qualität ist ein wichtiger Faktor um Wartbarkeit und Verständlichkeit von entwickeltem Programmcode zu garantieren. Moderne Software Projekte benutzen statische Programmcode Analyse Tools, um Software Qualität kontinuierlich zu überwachen. Basierend auf erkannten problematischen Stellen im Programmcode durch diese Tools, können Entwickler ihren Programmcode, mit dem Ziel diese problematischen Stellen zu entfernen, verbessern. Solches "Refactoring" braucht viele Ressourcen wenn es manuell durchgeführt wird und viel Autoren schlagen halb automatisierte Lösungen vor, um den Refactoring Prozess zu verbessern. Eine der meist genutzten Refactoring ist das "Methode extrahieren" Refactoring, welches oft genutzt wird um lange und komplexe Methoden zu verbessern. Aktuelle Studien zeigten, dass existierende halb automatisierte Tools für Refactoring von Entwicklern nicht bevorzugt werden. Wir schlagen eine Methode vor um das "Methode extrahieren" Refactoring voll automatisiert, basierend auf erkannten problematischen Stellen im Programmcode durch statische Analyse Tools, durchzuführen. Unsere Method findet Refactoring Optionen in einer ausgewählten Methode und bewertet diese Kandidaten mithilfe einer Bewertungsfunktion. Der Kandidat mit der höchsten Punktzahl wird dann benutzt um automatisch ein "Methode extrahieren" Refactoring durchzuführen. Wir implementieren die vorgeschlagene Herangehensweise in dem existierenden Refactoring Bot Framework, ein Softwareentwicklungs Bot, welcher nahtlos in die Infrastruktur existierender Projekte integriert werden kann

    Identifying Extract Class and Extract Method Refactoring Opportunities Through Analysis of Variable Declarations and Uses

    Get PDF
    For small software systems, with perhaps a few thousand lines of code, software structure is largely an esthetic issue. When software systems grow large, including perhaps a million or more lines of source code, their structures become much more important. Developing a large system requires teams of developers working in concert to provide a finished product in a reasonable amount of time. That means that many people will read each component to use, test or modify towards accomplishing new features. In the software development life cycle, the maintenance phase is a dominant stage that impacts production cost of the system dramatically. This is mainly because, for a successful system, the maintenance phase lasts until the system\u27s retirement and includes crucial operations such as enhancing performance, fixing newly discovered bugs and adopting/expending the software to meet new user requirements. Moreover, a software component may be modified or fixed by someone who is not the original author of that component. In this case, all the operations conducted during maintenance or initial development may lead to insertion of code into a unit that may be unrelated to the original design concept of that unit. As software systems become large and complex they grow too long to read and understand completely by a single person. After their initial implementations, maintenance operations tend to make the system even less maintainable, increasing the time and effort needed for future maintenance. In this research, we are interested in finding ways to successfully detect code defects and propose solutions to increase the overall maintainability of software systems that are larger than any one person can completely comprehend from its code alone. This process of refactoring software impacts the total production cost of the system positively by improving the quality of software code such as its comprehensibility and readability. To reduce the total development cost for a system, we suggest three main re-factorings. These novel forms of refactoring techniques aim to eliminate code defects such as large classes and long methods. The main goal of these re-factorings is to create smaller and cohesive software units with clear intentions to improve the maintainability of software. We provide analysis and visualization tools to help a user identify candidate code fragments to be extracted as separate unites. With these automation tools, developers do not have to manually inspect a foreign code base to detect possible refactoring opportunities. Through the visual representations we provide, one can observe all suggested re-factorings effectively on large scale software systems and decide whether a particular refactoring needs to be applied. To show the effectiveness of our techniques, we also provide some experiments conducted using these tools and techniques both on our own project\u27s source code and other open-source projects
    corecore