17 research outputs found

    Metric and Tool Support for Instant Feedback of Source Code Readability

    Get PDF
    In the software maintenance phase, comprehending the legacy source code is inevitable, which consumes most of the time of the phase. The better the code is readable, the easier it is for code readers to comprehend the system based on the source code. This paper proposes an enhanced source code readability metric to quantitatively measure the extent of code readability. In addition, we developed a tool support named Instant R. Gauge to update the code on the fly based on the readability feedback of the current code. The tool also provides the history of the readability change so that developers recognize the more readable code and gradually change their coding habit without any annoying advice. The suggested readability metric achieves 75.74% of explanatory power, and our experiment showed that readability of most of the methods authored in our tool is higher than that of the methods without our approach

    A large-scale comparative analysis of Coding Standard conformance in Open-Source Data Science projects

    Full text link
    Background: Meeting the growing industry demand for Data Science requires cross-disciplinary teams that can translate machine learning research into production-ready code. Software engineering teams value adherence to coding standards as an indication of code readability, maintainability, and developer expertise. However, there are no large-scale empirical studies of coding standards focused specifically on Data Science projects. Aims: This study investigates the extent to which Data Science projects follow code standards. In particular, which standards are followed, which are ignored, and how does this differ to traditional software projects? Method: We compare a corpus of 1048 Open-Source Data Science projects to a reference group of 1099 non-Data Science projects with a similar level of quality and maturity. Results: Data Science projects suffer from a significantly higher rate of functions that use an excessive numbers of parameters and local variables. Data Science projects also follow different variable naming conventions to non-Data Science projects. Conclusions: The differences indicate that Data Science codebases are distinct from traditional software codebases and do not follow traditional software engineering conventions. Our conjecture is that this may be because traditional software engineering conventions are inappropriate in the context of Data Science projects.Comment: 11 pages, 7 figures. To appear in ESEM 2020. Updated based on peer revie

    Metodyka tworzenia oprogramowania a jakość kodu – analiza porównawcza dwóch przypadków

    Get PDF
    Code quality is strongly dependent on using best coding practices during it’s development. This paper presents various code quality metrics in object oriented programming and computer tools to it automatic measurement. Two cases of software development by two different teams were considered. Code quality was analyzed in five following program versions. This study shows better value of almost (but not all) code quality metrics developed using agile methodology. It raises the conclusion about agile methodology advantage.Jakość kodu zależy od stosowania dobrych praktyk jego wytwarzania. W artykule przedstawiono metryki pomiaru jakości kodu tworzonego zgodnie z paradygmatem obiektowym i narzędzia informatyczne wyznaczające ich wartości. Rozpatrzono dwa przypadki rozwoju oprogramowania przez różne zespoły w różny sposób zarządzane. Przeanalizowano jakość kodu w kolejnych pięciu wersjach programów. Rezultaty badań pozwoliły na sformułowanie wniosku o przewadze metodyki lekkiej, na co wskazują lepsze wartości większości metryk.J

    Open source software in quantum computing

    Full text link
    Open source software is becoming crucial in the design and testing of quantum algorithms. Many of the tools are backed by major commercial vendors with the goal to make it easier to develop quantum software: this mirrors how well-funded open machine learning frameworks enabled the development of complex models and their execution on equally complex hardware. We review a wide range of open source software for quantum computing, covering all stages of the quantum toolchain from quantum hardware interfaces through quantum compilers to implementations of quantum algorithms, as well as all quantum computing paradigms, including quantum annealing, and discrete and continuous-variable gate-model quantum computing. The evaluation of each project covers characteristics such as documentation, licence, the choice of programming language, compliance with norms of software engineering, and the culture of the project. We find that while the diversity of projects is mesmerizing, only a few attract external developers and even many commercially backed frameworks have shortcomings in software engineering. Based on these observations, we highlight the best practices that could foster a more active community around quantum computing software that welcomes newcomers to the field, but also ensures high-quality, well-documented code.Comment: 22 pages, 4 figure

    Spring Academy 2017

    Get PDF

    The Evolution of C Programming Practices: A Study of the Unix Operating System 1973-2015

    Get PDF
    Tracking long-term progress in engineering and applied science allows us to take stock of things we have achieved, appreciate the factors that led to them, and set realistic goals for where we want to go. We formulate seven hypotheses associated with the long term evolution of C programming in the Unix operating system, and examine them by extracting, aggregating, and synthesising metrics from 66 snapshots obtained from a synthetic software configuration management repository covering a period of four decades. We found that over the years developers of the Unix operating system appear to have evolved their coding style in tandem with advancements in hardware technology, promoted modularity to tame rising complexity, adopted valuable new language features, allowed compilers to allocate registers on their behalf, and reached broad agreement regarding code formatting. The progress we have observed appears to be slowing or even reversing prompting the need for new sources of innovation to be discovered and followed

    Data-intensiivisen ohjelmiston refaktorointi Python-ympäristössä : Tapaustutkimus

    Get PDF
    Python-ympäristöön on viimeisen vuosikymmenen aikana kehitetty monipuolinen kattaus tehokkaita ja suosittuja data-analyysityökaluja. Python on saavuttanut perinteisiä data-analyysityökaluja, kuten ohjelmointikieli-R:ää, niin suosiossa kuin toiminnallisuuden kattavuudessa. Työn tarkoitus on tutkia Pythonia data-analyysityökaluna ja löytää uusien data-analyysikirjastojen käyttötarkoituksia sekä hyviä ja huonoja puolia. Kerättyä tietoa hyväksi käyttäen tehdään tapaustutkimus, jossa kirjoitetaan uudelleen Pythonilla toteutettu vanha data-analyysisovellus. Vanha sovellus kaipaa uudelleentoteutusta, sillä sen ylläpito on työlästä ja sen suorituskyky on heikko. Näihin ongelmiin etsitään ratkaisua kirjoittamalla data-analyysi uudelleen uusia kirjastoja hyödyntäen. Tapaustutkimuksen data-analyysisovellus analysoi testattavalta kosketuspaneelilta saatua dataa ja vertaa sitä robotilta saatuun referenssidataan. Datasta analysoidaan erilaisia virhearvoja, kuten lineaarivirhettä. Sovellus käyttää tiedon tallennukseen relaatiotietokantaa. Uusi toteutus vastaa vanhan toteutuken toiminnallisuutta. Toteutuksia vertaillaan niiden suorituskyvyn ja ylläpidettävyyden perusteella. Suorituskykyä mitataan Python-profiloijalla ja ylläpidettävyyttä verrataan rivimäärällä ja huonoon lähdekoodiin viittaavia rakenteita etsimällä. Uuden toteutuksen pääasiallisiksi työkaluiksi valikoituivat NumPy ja Pandas, jotka auttoivat ongelmakohtien ratkaisemisessa merkittävästi. Uusi toteutus on näiden työkalujen käytön myötä reilusti tehokkaampi ja tiiviimpi. Suorituskykyparannukset saavutettiin hyödyntäen NumPyn:n ja Pandasin optimoituja metodeja natiivien Python-metodien sijaan ja suurin syy koodikannan pienenemiselle on vastuunsiirto uusille kirjastoille monen toiminnallisuuden kohdalla.Python environment has received a versatile, efficient and popular set of tools for data-analysis in the past decade. Python has reached more traditional data-analysis tools, such as the programming language R, in popularity and functionality. In this thesis, Python is researched as a data-analysis tool. The goal is to find the most efficient new libraries to develop data-analysis. The libraries are studied for their intented uses and in order to find their pros and cons. Based on the literature review, a case study is conducted. An old Python based data-analysis application is rewritten with new tools. The old application is in need of a reimplementation since it is troublesome to maintain and the performance is poor. The maintainability and performance issues are the two main problems that the thesis aims to solve. The application studied in this case study analyses performance of touchpanels. Coordinates reported by the touchpanel are compared to reference values from a robot-drawn line. Error values such as linearity-error are calculated from the data. The application uses relational database for data storage. The functionality of the new implementation is made to correspond the old application. Implementations are compared based on their maintainability and performance. Performance is measured with a profiler and maintainabilites are compared based on lines of code and structures that implicate poor design. NumPy and Pandas were selected as the main tools for the new implementation. These libraries played a major role in solving the performance and maintainability issues. The new implementation has greatly improved performance and requires a lot smaller code base in comparison to the old implementation. Most of the performance improvement was achieved by utilizing optimized methods of NumPy and Pandas over native Python methods. Smaller code base is mainly due to the transfer of liability to NumPy and Pandas
    corecore