1,533 research outputs found

    EMPIRICAL ASSESSMENT OF THE IMPACT OF USING AUTOMATIC STATIC ANALYSIS ON CODE QUALITY

    Get PDF
    Automatic static analysis (ASA) tools analyze the source or compiled code looking for violations of recommended programming practices (called issues) that might cause faults or might degrade some dimensions of software quality. Antonio Vetro' has focused his PhD in studying how applying ASA impacts software quality, taking as reference point the different quality dimensions specified by the standard ISO/IEC 25010. The epistemological approach he used is that one of empirical software engineering. During his three years PhD, he's been conducting experiments and case studies on three main areas: Functionality/Reliability, Performance and Maintainability. He empirically proved that specific ASA issues had impact on these quality characteristics in the contexts under study: thus, removing them from the code resulted in a quality improvement. Vetro' has also investigated and proposed new research directions for this field: using ASA to improve software energy efficiency and to detect the problems deriving from the interaction of multiple languages. The contribution is enriched with the final recommendation of a generalized process for researchers and practitioners with a twofold goal: improve software quality through ASA and create a body of knowledge on the impact of using ASA on specific software quality dimensions, based on empirical evidence. This thesis represents a first step towards this goa

    The 9th Conference of PhD Students in Computer Science

    Get PDF

    Modularity and Architecture of PLC-based Software for Automated Production Systems: An analysis in industrial companies

    Full text link
    Adaptive and flexible production systems require modular and reusable software especially considering their long term life cycle of up to 50 years. SWMAT4aPS, an approach to measure Software Maturity for automated Production Systems is introduced. The approach identifies weaknesses and strengths of various companie's solutions for modularity of software in the design of automated Production Systems (aPS). At first, a self assessed questionnaire is used to evaluate a large number of companies concerning their software maturity. Secondly, we analyze PLC code, architectural levels, workflows and abilities to configure code automatically out of engineering information in four selected companies. In this paper, the questionnaire results from 16 German world leading companies in machine and plant manufacturing and four case studies validating the results from the detailed analyses are introduced to prove the applicability of the approach and give a survey of the state of the art in industry

    Supporting web programming assignment assessment with test automation and RPA

    Get PDF
    Automated software solutions to support and assist in assessment of student implemented applications are not a rarity, but often need to be custom engineered to fit a specific learning environment or a course. When such a system can be fielded in use properly, it has a tremendous potential to lighten the workload of course personnel by automating the repetitive manual tasks and testing student submissions against assignment requirements. Additionally, these support systems are often able to shorten the feedback loop which is seen to have a direct impact on student learning. In this thesis test automation and robotic process automation are researched to discover how they can be used to support web programming assignment assessment. The background on software testing, automation and feedback related pedagogy are researched mainly by the methods of literature review and expert interview. A third methodology – design science – is then applied for the purpose of verifying and extending the learnt theory in an empirical manner. A research artifact is created in the form of a prototype capable of supporting in assessment tasks. Performance of the prototype is measured by recording set execution metrics while assessing anonymized case study student submissions from a web development course arranged by University of Turku: DTEK2040 Web and Mobile Programming. Thesis concludes that to support assessment through test automation is to focus on unit and system level testing of functionalities while assuming the exact implementation at code level cannot be fully known. Suggestion is made that relying on assignment descriptions as basis for test design is not enough, but rather requirements engineering should be done together with course personnel to take advantage of their experience in what sort of errors are to be tolerated in student submissions. Thesis also concludes that automation can perform interaction with student submissions, file manipulation, record keeping and tracking tasks at a satisfactory level. The potential to shorten the feedback loop and summarizing quantitative feedback for the student is recognized, however, to build an automated system to identify, gather and summarize formative, pedagogically more valuable feedback was noted to be out of scope for this thesis and suggested as future work to possibly extend the prototype with.Automatisoidut ohjelmistoratkaisut, jotka tukevat ja avustavat opiskelijoiden toteuttamien sovellusten arvioinnissa, eivĂ€t ole harvinaisia, mutta ne useimmiten joudutaan rakentamaan tiettyyn oppimisympĂ€ristöön tai opintosisĂ€ltöön sopiviksi. TĂ€llaiset jĂ€rjestelmĂ€t omaavat kuitenkin valtavan potentiaalin keventÀÀ kurssihenkilöstön työtaakkaa automatisoimalla toistuvia manuaalisia työtehtĂ€viĂ€ ja automaatiotestaamalla opiskelijoiden palauttamia tuotoksia asetettuja tehtĂ€vĂ€vaatimuksia vastaan. JĂ€rjestelmĂ€t johtavat varsin usein myös opiskelijan nĂ€kökulmasta nopeampaan palautesykliin, jolla kyetÀÀn todeta olevan suora vaikutus oppimiseen. TĂ€ssĂ€ opinnĂ€ytetyössĂ€ tutkitaan testiautomaatiota sekĂ€ robottiprosessiautomaatiota pyrkimyksenĂ€ selvittÀÀ kuinka nĂ€itĂ€ teknologioita voitaisiin hyödyntÀÀ tukemaan web-ohjelmointitehtĂ€vien arviointia. Ohjelmistotestauksen, automaation ja palautteen pedagogiikan taustoja tutkitaan pÀÀasiassa kirjallisuuskatsauksen ja asiantuntijahaastattelun menetelmin. LisĂ€ksi sovelletaan kolmatta metodologiaa, suunnittelutiedettĂ€, jonka tavoitteena on vahvistaa teoriaosuuden havaintoja sekĂ€ pyrkiĂ€ empiirisesti laajentamaan niitĂ€. Suunnittelutieteen kautta tutkimusartifaktina syntyy prototyyppi, jonka suorituskykyĂ€ ja hyötyjĂ€ mitataan kerÀÀmĂ€llĂ€ dataa hyödyntĂ€en aitoja, anonymisoituja opiskelijapalautuksia Turun yliopiston jĂ€rjestĂ€mĂ€n DTEK2040: Web and Mobile Programming -kurssin tiimoilta. OpinnĂ€ytetyön johtopÀÀtöksenĂ€ on, ettĂ€ arvioinnin tukeminen testiautomaation avulla on keskittymistĂ€ yksikkö- ja jĂ€rjestelmĂ€tason toiminnallisuuksien testaukseen. Testaukseen on liitettĂ€vĂ€ myös oletus, ettĂ€ arvioitavan kohteen tarkkaa toteutusta kooditasolla ei voida tĂ€ysin tuntea. TehtĂ€vĂ€kuvausten kĂ€yttö testitapausten suunnittelun perustana todetaan riittĂ€mĂ€ttömĂ€ksi, ja vaatimussuunnittelu ehdotetaan tehtĂ€vĂ€n yhdessĂ€ kurssin henkilökunnan kanssa, jotta heidĂ€n kokemuksiaan voidaan hyödyntÀÀ yleisimpien opiskelijapalutuksissa ilmenevien virhetapausten kartoittamiseksi sekĂ€ testitapausten tarkkuuden ja arvioinnin jyrkkyyden sÀÀtĂ€miseksi. Prosessiautomaation osalta todetaan, ettĂ€ automaatio kykenee suorittamaan vuorovaikutusta opiskelijoiden palautusten, tiedostojen kĂ€sittelyĂ€, kirjanpito- ja seurantatehtĂ€viĂ€ tyydyttĂ€vĂ€llĂ€ tasolla. Mahdollisuus palautesilmukan lyhentĂ€miseen ja summaavan palautteen yhteenvetoon opiskelijalle tunnustetaan myös empiirisesti. Laadullisen, pedagogisesti arvokkaamman palautteen kokoaminen ja jalostaminen todettiin tĂ€mĂ€n opinnĂ€ytetyön mittakaavassa liian suureksi projektiksi ja sen empiiristĂ€ toteutusta ehdotettiin yhtenĂ€ mahdollisena jatkotutkimusaiheena

    Jolie Microservices: An Experiment

    Get PDF
    Os microsserviços estĂŁo cada vez mais presentes no mundo das tecnologias de informação, por providenciarem uma nova forma construir sistemas mais escalĂĄveis, ĂĄgeis e flexĂ­veis. Apesar disto, estes trazem consigo o problema da complexidade de comunicação entre microsserviços, fazendo com que o sistema seja difĂ­cil de manter e de se perceber. Linguagens de programação especĂ­ficas a microsserviços como Jolie entram em cena para tentar resolver este problema e simplificar a construção de sistemas com arquiteturas de microsserviços. Este trabalho fornece uma visĂŁo ampla do estado da arte da linguagem de programação Jolie onde Ă© primeiramente detalhado o porquĂȘ de surgirem linguagens especĂ­ficas a microsserviços e como a linguagem Jolie estĂĄ construĂ­da de maneira a coincidir com as arquiteturas de microsserviços atravĂ©s de recursos nativos. Para demonstrar todas as vantagens de usar esta linguagem em comparação com as abordagens mais mainstream Ă© pensado um experimento de desenvolvimento de um sistema de microsserviços no Ăąmbito de uma aplicação de e-commerce. Este sistema Ă© construĂ­do de forma igual usando duas bases tecnolĂłgicas – Jolie e Spring Boot. O Spring Boot Ă© considerado a tecnologia mais usada para desenvolver sistemas de microsserviços sendo o candidato ideal para comparação. É pensada toda a anĂĄlise e design deste experimento. Em seguida, a implementação da solução Ă© detalhada a partir das configuraçÔes do sistema, escolhas arquitetĂłnicas e como elas sĂŁo implementadas. Componentes como API gateway, mediadores de mensagens, bases de dados, orquestração de microsserviços, e conteinerização para cada microsserviço e outros componentes do sistema. Pol Ășltimo as soluçÔes sĂŁo comparadas e analisadas com base na abordagem Goals, Questions, Metrics (GQM). SĂŁo analisadas relativamente a atributos de qualidade como manutenção, escalabilidade, desempenho e testabilidade. ApĂłs esta anĂĄlise pode-se concluir que a solução construĂ­da com Jolie apresenta diferenças na manutenção sendo significativamente superior Ă  solução baseada em Spring Boot e apresenta diferenças em termos de performance sendo ligeiramente inferior Ă  solução construĂ­da com Spring Boot. O trabalho termina com a indicação das conquistas, dificuldades, ameaças Ă  validade, possĂ­veis trabalhos futuros e observaçÔes finais.Microservices are increasingly present in the world of information technologies, as they provide a new way to build more scalable, agile, and flexible systems. Despite this, they bring with them the problem of communication complexity between microservices, making the system difficult to maintain and understand. Microservices-specific programming languages like Jolie come into play to try to solve this problem and simplify the construction of systems with microservices architectures. This work provides a broad view of the State of Art of the Jolie programming language, where it is first detailed why microservices-specific languages emerge and how the Jolie language is built to match microservices architectures through native resources. To demonstrate all the advantages of using this language compared to more mainstream approaches, an experiment is designed to develop a microservices system within an e-commerce application. This system is built equally using two technological foundations – Jolie and Spring Boot. Spring Boot is considered the most used technology to develop microservices systems and is an ideal candidate for comparison. The entire analysis and design of this experiment are thought through. Then the implementation of the solution is detailed from system configurations, architectural choices, and how they are implemented. Components such as API gateway, message brokers, databases, microservices orchestration, and containerization for each microservice and other components of the system. Finally, the solutions are compared and analyzed based on the Goals, Questions, Metrics (GQM) approach. They are analyzed for quality attributes such as maintainability, scalability, performance, and testability. After this analysis, it can be concluded that the solution built with Jolie presents differences in maintenance being significant superior to the solution based on Spring Boot, and it presents differences in terms of performance being slightly inferior to the solution built with Spring Boot. The work ends with an indication of the achievements, difficulties, threats to validity, possible future work, and final observations

    Mikropalveluiden testauskÀytÀnnöt julkisen sektorin projekteissa

    Get PDF
    Online services are constantly evolving, which makes service maintainability challenging. This has led to micro service architecture, where big applications are split into smaller services in order to improve applications' maintainability, scalability, and flexibility. However, splitting a single process application into multiple services causes the testing process to be more challenging. This Master's thesis is exploring these testing problems in a micro service context and finding practical guidance for the test implementation. Moreover, this Master's thesis focuses on public sector software projects. Public sector software projects are clearly predefined and the provider has open information about the project's needs. Thus, the project has a clear goal and known boundaries right from the beginning. The research approach for this study is an exploratory multiple case study consisting of three case projects. The data of the case projects were collected through semi-structural interviews and version history commit analysis. The results of this study present a set of successful practices and recommendations for taking testing into account during a micro service oriented agile development process. Successful testing requires monitoring of the project's maturity level to focus testing resources at the right time. Additionally, the case projects brought up practical testing guidance, such as understanding of the common testing responsibility, the importance of peer review, and the value of assigning a specific tester after the project has reached its end-to-end testing phase.Web-palvelut kehittyvÀt jatkuvasti, mikÀ vaikeuttaa palveluiden yllÀpitoa. YhtenÀ ratkaisuna on palvelun pilkkominen osiin mikropalveluiksi. Palvelun pilkkominen edistÀÀ palvelun yllÀpitoa, skaalattavuutta ja joustavuutta. Toisaalta palvelun pilkkominen mikropalveluiksi vaikeuttaa testausprosessia. TÀmÀ diplomityö tutkii mikropalveluiden testausprosessiin liittyviÀ ongelmia ja etsii kÀytÀnnönlÀheistÀ ohjeistuista testien toteuttamiseen mikropalveluympÀristössÀ. Diplomityö keskittyy julkisen sektorin mikropalveluprojekteihin, koska kaikki tÀssÀ diplomityössÀ kÀytetyt tutkimusprojektit ovat julkisen sektorin hallinnoimia. Julkisen sektorin ohjelmistoprojektit ovat selkeÀsti esimÀÀriteltyjÀ ja projektien aineisto on avoimesti saatavilla. TÀmÀn takia projekteilla on selkeÀ pÀÀmÀÀrÀ ja tunnetut rajat heti projektin alussa. TutkimusmenetelmÀnÀ kÀytettiin tutkivaa case study -menetelmÀÀ. Tutkimus sisÀlsi kolme tutkimuskohdetta. Tutkimusdata kerÀttiin osittain jÀsennetyillÀ kontekstuaalisilla haastatteluilla ja ohjelmistokoodin versiohallinnan historian analyysillÀ. Tuloksena syntyi kokoelma hyvÀksi todettuja kÀytÀntöjÀ ja suosituksia, jotka auttavat ottamaan testauksen huomioon mikropalvelun iteratiivisessa ohjelmistokehitysprosessissa. Suositeltaviksi testauskÀytÀnnöiksi havaittiin projektin maturiteetin tarkkaileminen, ettÀ testauksen resursointi voidaan tehdÀ oikeaan aikaan. LisÀksi, projekteista nousi esiin muita suosituksia, kuten kehitystiimin yhteisen testaamisvastuun ymmÀrtÀminen, koodikatselmoinnin merkitys ja erillisen testaajan tÀrkeys, kun projektin maturiteetti on kasvanut riittÀvÀsti

    State of Refactoring Adoption: Towards Better Understanding Developer Perception of Refactoring

    Get PDF
    Context: Refactoring is the art of improving the structural design of a software system without altering its external behavior. Today, refactoring has become a well-established and disciplined software engineering practice that has attracted a significant amount of research presuming that refactoring is primarily motivated by the need to improve system structures. However, recent studies have shown that developers may incorporate refactoring strategies in other development-related activities that go beyond improving the design especially with the emerging challenges in contemporary software engineering. Unfortunately, these studies are limited to developer interviews and a reduced set of projects. Objective: We aim at exploring how developers document their refactoring activities during the software life cycle. We call such activity Self-Affirmed Refactoring (SAR), which is an indication of the developer-related refactoring events in the commit messages. After that, we propose an approach to identify whether a commit describes developer-related refactoring events, to classify them according to the refactoring common quality improvement categories. To complement this goal, we aim to reveal insights into how reviewers develop a decision about accepting or rejecting a submitted refactoring request, what makes such review challenging, and how to the efficiency of refactoring code review. Method: Our empirically driven study follows a mixture of qualitative and quantitative methods. We text mine refactoring-related documentation, then we develop a refactoring taxonomy, and automatically classify a large set of commits containing refactoring activities, and identify, among the various quality models presented in the literature, the ones that are more in-line with the developer\u27s vision of quality optimization, when they explicitly mention that they are refactoring to improve them to obtain an enhanced understanding of the motivation behind refactoring. After that, we performed an industrial case study with professional developers at Xerox to study the motivations, documentation practices, challenges, verification, and implications of refactoring activities during code review. Result: We introduced SAR taxonomy on how developers document their refactoring strategies in commit messages and proposed a SAR model to automate the detection of refactoring. Our survey with code reviewers has revealed several difficulties related to understanding the refactoring intent and implications on the functional and non-functional aspects of the software. Conclusion: Our SAR taxonomy and model, can work in conjunction with refactoring detectors, to report any early inconsistency between refactoring types and their documentation and can serve as a solid background for various empirical investigations. In light of our findings of the industrial case study, we recommended a procedure to properly document refactoring activities, as part of our survey feedback

    Self-Organizing Software Architectures

    Get PDF
    Looking at engineering productivity is a source for improving the state of software engineering. We present two approaches to improve productivity: bottom-up modeling and self-configuring software components. Productivity, as measured in the ability to produce correctly working software features using limited resources is improved by performing less wasteful activities and by concentrating on the required activities to build sustainable software development organizations. Bottom-up modeling is a way to combine improved productivity with agile software engineering. Instead of focusing on tools and up-front planning, the models used emerge, as the requirements to the product are unveiled during a project. The idea is to build the modeling formalisms strong enough to be employed in code generation and as runtime models. This brings the benefits of model-driven engineering to agile projects, where the benefits have been rare. Self-configuring components are a development of bottom-up modeling. The notion of a source model is extended to incorporate the software entities themselves. Using computational reflection and introspection, dependent components of the software can be automatically updated to reflect changes in the dependence. This improves maintainability, thus making software changes faster. The thesis contains a number of case studies explaining the ways of applying the presented techniques. In addition to constructing the case studies, an empirical validation with test subjects is presented to show the usefulness of the techniques.Itseorganisoituvat ohjelmistoarkkitehtuurit Ohjelmistokehityksen tuottavuus on monen ohjelmistokehitysorganisaation huolenaihe. Erityisesti yllÀpitovaiheessa ohjelmistojen heikko muokattavuus tuottaa turhia kustannuksia ja pettymyksiÀ asiakassuhteissa, kun vaikeasti muokattavaan ohjelmistoon tulisi tehdÀ muutoksia. TÀssÀ työssÀ esitetÀÀn kaksi menetelmÀÀ ohjelmistojen muokattavuuden parantamiseksi: kokoava mallinnuskielten kÀyttÀminen sekÀ itseorganisoituvat ohjelmistokomponentit. Mallipohjaisessa ohjelmistotuotannossa ohjelmistoille kehitetÀÀn soveltuvat mallinnuskielet ja -työkalut, joiden pohjalta kehitettÀvÀ ohjelmisto voidaan automaattisesti tuottaa. Uuden mallinnuskielen kehittÀminen ja sitÀ tukevan vÀlineistön rakentaminen on kuitenkin aikaaviepÀÀ ja vaikeaa. Vaarana on, ettÀ kehitetty kieli on valmistuessaan vanhentunut. Niin kutsutuissa ketterissÀ ohjelmistomenetelmissÀ yritetÀÀn vÀlttÀÀ perinteisten, suunittelupainotteisten kehitysmenetelmien tuottamia sudenkuoppia. Liiallinen ketteryys voi kuitenkin kostautua heikkona tuottavuutena, kun kehitysvÀen kaikki aika kuluu nÀppÀryysharjoituksiin varsinaisen tuottavan työn sijaan. Kokoava mallipohjainen tuotanto keskittyy kehittÀmÀÀn vain riittÀvÀn hyviÀ malleja, joiden perusteella voidaan yhdistÀÀ mallipohjaisen ohjelmistotuotannon ja ketterien prosessimallien tuomat edut. Ulkoisten, erikseen kehiteltyjen mallikielten lisÀksi työssÀ esitellÀÀn ajatus ohjelmakoodin itsensÀ kÀyttÀmisestÀ mallipohjaisen ohjelmistotuotannon työkaluna. NÀin syntyy itseorganisoituva ohjelmistoarkkitehtuuri. TÀllÀ tavoin kehitystyön tuottavuus paranee, sillÀ ohjelmakoodin sisÀisten riippuvuuksien mÀÀrÀ laskee, ja nÀin ollen muokkausten tekeminen on helpompaa. TyössÀ esitellÀÀn tapaustutkimuksia ohjelmakoodiin perustuvasta mallipohjaisen ohjelmistotuotannon ohjelmistokehyksistÀ sekÀ empiirinen validointi itseorganisoituvuuden hyödyllisyydestÀ tuottavuusnÀkökulmasta katsoen
    • 

    corecore