12 research outputs found

    Understanding, Analysis, and Handling of Software Architecture Erosion

    Get PDF
    Architecture erosion occurs when a software system's implemented architecture diverges from the intended architecture over time. Studies show erosion impacts development, maintenance, and evolution since it accumulates imperceptibly. Identifying early symptoms like architectural smells enables managing erosion through refactoring. However, research lacks comprehensive understanding of erosion, unclear which symptoms are most common, and lacks detection methods. This thesis establishes an erosion landscape, investigates symptoms, and proposes identification approaches. A mapping study covers erosion definitions, symptoms, causes, and consequences. Key findings: 1) "Architecture erosion" is the most used term, with four perspectives on definitions and respective symptom types. 2) Technical and non-technical reasons contribute to erosion, negatively impacting quality attributes. Practitioners can advocate addressing erosion to prevent failures. 3) Detection and correction approaches are categorized, with consistency and evolution-based approaches commonly mentioned.An empirical study explores practitioner perspectives through communities, surveys, and interviews. Findings reveal associated practices like code review and tools identify symptoms, while collected measures address erosion during implementation. Studying code review comments analyzes erosion in practice. One study reveals architectural violations, duplicate functionality, and cyclic dependencies are most frequent. Symptoms decreased over time, indicating increased stability. Most were addressed after review. A second study explores violation symptoms in four projects, identifying 10 categories. Refactoring and removing code address most violations, while some are disregarded.Machine learning classifiers using pre-trained word embeddings identify violation symptoms from code reviews. Key findings: 1) SVM with word2vec achieved highest performance. 2) fastText embeddings worked well. 3) 200-dimensional embeddings outperformed 100/300-dimensional. 4) Ensemble classifier improved performance. 5) Practitioners found results valuable, confirming potential.An automated recommendation system identifies qualified reviewers for violations using similarity detection on file paths and comments. Experiments show common methods perform well, outperforming a baseline approach. Sampling techniques impact recommendation performance

    Assessing Comment Quality in Object-Oriented Languages

    Get PDF
    Previous studies have shown that high-quality code comments support developers in software maintenance and program comprehension tasks. However, the semi-structured nature of comments, several conventions to write comments, and the lack of quality assessment tools for all aspects of comments make comment evaluation and maintenance a non-trivial problem. To understand the specification of high-quality comments to build effective assessment tools, our thesis emphasizes acquiring a multi-perspective view of the comments, which can be approached by analyzing (1) the academic support for comment quality assessment, (2) developer commenting practices across languages, and (3) developer concerns about comments. Our findings regarding the academic support for assessing comment quality showed that researchers primarily focus on Java in the last decade even though the trend of using polyglot environments in software projects is increasing. Similarly, the trend of analyzing specific types of code comments (method comments, or inline comments) is increasing, but the studies rarely analyze class comments. We found 21 quality attributes that researchers consider to assess comment quality, and manual assessment is still the most commonly used technique to assess various quality attributes. Our analysis of developer commenting practices showed that developers embed a mixed level of details in class comments, ranging from high-level class overviews to low-level implementation details across programming languages. They follow style guidelines regarding what information to write in class comments but violate the structure and syntax guidelines. They primarily face problems locating relevant guidelines to write consistent and informative comments, verifying the adherence of their comments to the guidelines, and evaluating the overall state of comment quality. To help researchers and developers in building comment quality assessment tools, we contribute: (i) a systematic literature review (SLR) of ten years (2010–2020) of research on assessing comment quality, (ii) a taxonomy of quality attributes used to assess comment quality, (iii) an empirically validated taxonomy of class comment information types from three programming languages, (iv) a multi-programming-language approach to automatically identify the comment information types, (v) an empirically validated taxonomy of comment convention-related questions and recommendation from various Q&A forums, and (vi) a tool to gather discussions from multiple developer sources, such as Stack Overflow, and mailing lists. Our contributions provide various kinds of empirical evidence of the developer’s interest in reducing efforts in the software documentation process, of the limited support developers get in automatically assessing comment quality, and of the challenges they face in writing high-quality comments. This work lays the foundation for future effective comment quality assessment tools and techniques

    Model analytics and management

    Get PDF

    Model analytics and management

    Get PDF

    Laadunvalvontametodologian ja –järjestelmän käyttö teollisessa sovelluskehityksessä – Soveltuvuustutkimus

    Get PDF
    Ensuring software quality is important for achieving a competitive advantage in the market. Also, it is essential in critical systems, where a computer program cannot fail under any circumstances. In software projects, the best way to accomplish quality is to continuously monitor the state of the product and the development process. This means, that measurements on the software have to be done. However, as it is not adequate to measure everything, the relevant quality characteristics have to be defined. This is very context-specific and should thus be done for each project separately. In this thesis, the deployment of quality monitoring in software development projects was studied. This included defining a quality model and designing, deploying and using a quality monitoring program. These activities were facilitated by the U-QASAR methodology and platform that provide guidance and support for quality monitoring by measurement data integration. The study consisted of two parts: a multiple case study and constructive research. The case study was conducted to explore the case project members’ experiences on quality monitoring. Observations, interviews and questionnaires were used as research instruments. A constructive research method was used to evaluate the data integration in the U-QASAR platform. Data integration adapters were explored and developers were interviewed and finally a new adapter was implemented. In both parts, thematic analysis was used to process the data. The case study results showed that quality monitoring can be deployed even in small-scale software projects, but there are certain challenges. For example, it is difficult to connect objective software measurements to more abstract quality objectives. Moreover, practitioners’ knowledge on the terminology of software measurement and software quality is not something that can be assumed. However, it is important that the semantic structure is taken care of in order to achieve common understanding. The constructive research revealed needs for further development regarding the data integration architecture of the U-QASAR platform.Ohjelmistokehityksessä laadunvarmistus on tärkeää, sillä sen avulla voidaan saavuttaa parempi markkina-asema. Ohjelmiston laatu on tärkeää myös kriittisissä systeemeissä, joiden vikaantuminen voi johtaa esimerkiksi mittaviin taloudellisiin menetyksiin. Ohjelmistokehitysprojekteissa laadukas tuote voidaan parhaiten saavuttaa jatkuvasti tarkkailemalla projektin tilaa, mikä edellyttää mittauksia. Kaikkea ei kuitenkaan ole kustannustehokasta mitata, joten on tärkeää määrittää kyseiselle tuotteelle ja projektille tärkeät laatuominaisuudet. Tässä työssä tutkittiin laadunvalvonnan käyttöönottoa ohjelmistokehitysprojekteissa. Siihen liittyviä aktiviteetteja olivat laatumallin määrittely sekä laadunvalvontaohjelman suunnittelu, käyttöönotto ja käyttö. Toiminnot toteutettiin käyttäen U-QASAR-metodologiaa ja -alustaa, jotka tarjoavat ohjausta ja tukea mittausdataintegraatiolla toteutettavaan laaduntarkkailuun. Tutkimus koostui kahdesta osiosta: monitapaustutkimuksesta ja konstruktiivisesta tutkimuksesta. Tapaustutkimus tehtiin, jotta laadunvalvonnasta saatavia kokemuksia voitaisiin tutkia. Tutkimusinstrumentteina käytettiin havainnointia, haastatteluja sekä kyselyitä. Konstruktiivisessa tutkimuksessa kohteena oli U-QASAR-alustan dataintegraation toteutus. Jo kehitettyjen integraatioadaptereiden rakennetta tutkittiin ja kehittäjiä haastateltiin. Lopuksi uusi adapteri kehitettiin. Molemmissa tutkimusosioissa temaattista analyysiä käytettiin datan käsittelyyn. Työn tulokset osoittivat, että laadunvalvontaa voidaan tehdä pienissäkin ohjelmistoprojekteissa, mutta tietyt haasteet on otettava huomioon. Esimerkiksi objektiivisten mittausten yhdistäminen abstraktimpiin laatuominaisuuksiin todettiin vaikeaksi. Lisäksi havaittiin, että laatuterminologian ei voida olettaa olevan hallussa kaikilla projektin sidosryhmillä. On kuitenkin tärkeää, että semanttinen konsensus säilytetään yhteisen ymmärryksen takaamiseksi. Konstruktiivisen tutkimuksen tulokset osoittivat, että U-QASAR-alustan dataintegraatioarkkitehtuuri vaatii jatkokehitystä

    FORMALIZATION AND DETECTION OF COLLABORATIVE PATTERNS IN SOFTWARE

    Get PDF
    Ph.DDOCTOR OF PHILOSOPH

    Introduction of static quality analysis in small- and medium-sized software enterprises: experiences from technology transfer

    Get PDF
    Today, small- and medium-sized enterprises (SMEs) in the software industry face major challenges. Their resource constraints require high efficiency in development. Furthermore, quality assurance (QA) measures need to be taken to mitigate the risk of additional, expensive effort for bug fixes or compensations. Automated static analysis (ASA) can reduce this risk because it promises low application effort. SMEs seem to take little advantage of this opportunity. Instead, they still mainly rely on the dynamic analysis approach of software testing. In this article, we report on our experiences from a technology transfer project. Our aim was to evaluate the results static analysis can provide for SMEs as well as the problems that occur when introducing and using static analysis in SMEs. We analysed five software projects from five collaborating SMEs using three different ASA techniques: code clone detection, bug pattern detection and architecture conformance analysis. Following the analysis, we applied a quality model to aggregate and evaluate the results. Our study shows that the effort required to introduce ASA techniques in SMEs is small (mostly below one person-hour each). Furthermore, we encountered only few technical problems. By means of the analyses, we could detect multiple defects in production code. The participating companies perceived the analysis results to be a helpful addition to their current QA and will include the analyses in their QA process. With the help of the Quamoco quality model, we could efficiently aggregate and rate static analysis results. However, we also encountered a partial mismatch with the opinions of the SMEs. We conclude that ASA and quality models can be a valuable and affordable addition to the QA process of SMEs

    OZONE: Layer Identification in the presence of Cyclic Dependencies

    Get PDF
    International audienceA layered software architecture helps understanding the role of software entities (e.g., packages or classes) in a system and hence, the impact of changes on these entities. However, the computation of an optimal layered organization in the presence of cyclic dependencies is difficult. In this paper, we present an approach that (i) provides a strategy supporting the automated detection of cyclic dependencies, (ii) proposes heuristics to break cyclic dependencies, and (iii) computes an organization of software entities in multiple layers even in presence of cyclic dependencies. Our approach performs better than the other existing approaches in terms of accuracy and interactivity, it supports human inputs and constraints. In this paper, we present this approach and compare it to existing solutions. We applied our approach on two large software systems to identify package layers and the results are manually validated by software engineers of the two systems

    Compliance between Architecture and Design Models of Component-Based Systems

    Get PDF
    The design of software systems and the models describing it are usually constrained by the intended software architecture. The intended software architecture defines, for example, how components may be grouped or how they may interact. For the sake of maintenance, evolvability, and smooth operation of software systems, it is of great importance to check and guarantee the architectural compliance of the design and the implementation. Due to size and complexity of modern software systems such checks cannot be done manually but require adequate tool support. Unfortunately, current tool support is not flexible enough to cover easily different aspects of architectural compliance checking.This paper outlines an approach to architectural compliance checking in component-based systems based on logic formalisms. Furthermore, the paper describes a prototypical tool that realizes the approach, and its application in a case study
    corecore