3 research outputs found

    Cognitive-support code review tools : improved efficiency of change-based code review by guiding and assisting reviewers

    Get PDF
    Code reviews, i.e., systematic manual checks of program source code by other developers, have been an integral part of the quality assurance canon in software engineering since their formalization by Michael Fagan in the 1970s. Computer-aided tools supporting the review process have been known for decades and are now widely used in software development practice. Despite this long history and widespread use, current tools hardly go beyond simple automation of routine tasks. The core objective of this thesis is to systematically develop options for improved tool support for code reviews and to evaluate them in the interplay of research and practice. The starting point of the considerations is a comprehensive analysis of the state of research and practice. Interview and survey data collected in this thesis show that review processes in practice are now largely change-based, i.e., based on checking the changes resulting from the iterative-incremental evolution of software. This is true not only for open source projects and large technology companies, as shown in previous research, but across the industry. Despite the common change-based core process, there are various differences in the details of the review processes. The thesis shows possible factors influencing these differences. Important factors seem to be the process variants supported and promoted by the used review tool. In contrast, the used tool has little influence on the fundamental decision to use regular code reviews. Instead, the interviews and survey data suggest that the decision to use code reviews depends more on cultural factors. Overall, the analysis of the state of research and practice shows that there is a potential for developing better code review tools, and this potential is associated with the opportunity to increase efficiency in software development. The present thesis argues that the most promising approach for better review support is reducing the reviewer's cognitive load when reviewing large code changes. Results of a controlled experiment support this reasoning. The thesis explores various possibilities for cognitive support, two of these in detail: Guiding the reviewer by identifying and presenting a good order of reading the code changes being reviewed, and assisting the reviewer through automatic determination of change parts that are irrelevant for review. In both cases, empirical data is used to both generate and test hypotheses. In order to demonstrate the practical suitability of the techniques, they are also used in a partner company in regular development practice. For this evaluation of the cognitive support techniques in practice, a review tool which is suitable for use in the partner company and as a platform for review research is needed. As such a tool was not available, the code review tool "CoRT" has been developed. Here, too, a combination of an analysis of the state of research, support of design decisions through scientific studies and evaluation in practical use was employed. Overall, the results of this thesis can be roughly divided into three blocks: Researchers and practitioners working on improving review tools receive an empirically and theoretically sound catalog of requirements for cognitive-support review tools. It is available explicitly in the form of essential requirements and possible forms of realization, and additionally implicitly in the form of the tool "CoRT". The second block consists of contributions to the fundamentals of review research, ranging from the comprehensive analysis of review processes in practice to the analysis of the impact of cognitive abilities (specifically, working memory capacity) on review performance. As the third block, innovative methodological approaches have been developed within this thesis, e.g., the use of process simulation for the development of heuristics for development teams and new approaches in repository and data mining

    T茅cnicas para la Estimaci贸n y Planificaci贸n de Proyectos de Software con Ciclos de Vida Incremental y Paradigma Orientado a Objetos

    Full text link
    La estimaci贸n de costos y esfuerzos sigue siendo una de las tareas m谩s dif铆ciles en la gesti贸n de un proyecto de software. Esta actividad es realizada por el jefe de proyecto, quien es responsable de hacer dichas estimaciones lo m谩s precisas posible. En la actualidad existen t茅cnicas que permiten realizar esta labor aunque, lamentablemente, a煤n no hay t茅cnicas maduras espec铆ficas para enfoques de desarrollo como la orientaci贸n a objetos o los sistemas expertos. A ello se suma el problema de la escasa informaci贸n proporcionada por las t茅cnicas de estimaci贸n existentes para su aplicaci贸n a ciclos de vida de desarrollo de software diferentes al de cascada, como, por ejemplo, los ciclos de vida incremental o iterativo. Debido a la problem谩tica existente, se dise帽贸 Tupuy que es un conjunto de t茅cnicas que apoya en la estimaci贸n y planificaci贸n basada en Puntos de funci贸n para proyectos de desarrollo de software orientados a objetos que empleen un modelo de ciclo de vida incremental. Esta propuesta est谩 conformada por tres t茅cnicas: UML2FP, Use Case Precedence Diagram (UCPD) e Incremental-FP. UML2FP es una t茅cnica que permite realizar el c谩lculo de Puntos de funci贸n con modelos orientados a objetos y UCPD apoya en la priorizaci贸n o definici贸n de la secuencia de construcci贸n considerando la perspectiva o punto de vista del desarrollador en t茅rminos de facilidad de construcci贸n. Con los resultados que se obtienen con UML2FP y UCPD, la t茅cnica Incremental-FP, permite definir qu茅 casos de uso se van a construir en cada incremento y estimar el esfuerzo que se requiere para desarrollar cada incremento. La evaluaci贸n de UML2FP y UCPD se realiz贸 mediante experimentos controlados con alumnos de pregrado, alumnos de posgrado y profesionales con experiencia en la industria, con resultados alentadores. En el caso de Incremental-FP, la evaluaci贸n se realiz贸 mediante proyectos de desarrollo de software con alumnos del cuarto a帽o del programa de pregrado en Ingenier铆a Inform谩tica de la Pontificia Universidad Cat贸lica del Per煤; habi茅ndose obtenido, generalmente, una diferencia menor al 20% entre el esfuerzo estimado y el esfuerzo real. Adicionalmente, en los experimentos controlados para evaluar UCPD, se pudo determinar que las relaciones propuestas por el Method Adoption Model de Moody s铆 se pueden confirmar con las muestras obtenidas con profesionales, pero no con alumnos de pregrado; a pesar de que los resultados cuantitativos fueron similares. Esto nos podr铆a sugerir que la evaluaci贸n cualitativa de t茅cnicas con alumnos de pregrado deben tomarse con precauci贸n, mas no la cuantitativa. Abstract The estimation of effort and cost is still one of the hardest tasks in software project management. This activity is performed by the project manager who is responsible for making such estimations as accurate as possible. Currently, there are techniques to do this work, but unfortunately there are no specific mature approaches to develop object-oriented software or expert systems. Also, there is limited information provided by the techniques to utilize them in nonwaterfall life cycle models such as incremental or iterative. To address this situation, it was designed Tupuy which is a set of techniques that supports Function Point-based estimation and planning for software development projects that utilize object-oriented and incremental life cycle models. Tupuy consists of three techniques named UML2FP, Use Case Precedence Diagram (UCPD) and Incremental-FP. UML2FP is a technique that allows Function Points counting based on object-oriented models, and UCPD is a technique that addresses the problem of determining the construction sequence or prioritization of a software product from the developer's perspective in terms of ease of construction. With the results obtained through the application of UML2FP and UCPD, Incremental-FP defines which use case has to be constructed in which increment, and estimates the effort required to develop each increment. UML2FP and UCPD evaluation was performed using controlled experiments with undergraduate students, graduate students and practitioners with experience in the industry. The results obtained were satisfactory. The Incremental-FP evaluation was performed with undergraduate students from software development projects of a fourth-year course in Informatics Engineering at Pontificia Universidad Cat贸lica del Per煤. In this case, the difference between the estimated effort and actual effort was usually less than 20%. In addition, from the data obtained with the controlled experiments to evaluate UCPD, it was determined that the relationships proposed by the Moody鈥檚 Method Adoption Model could be confirmed with practitioners, but not with undergraduate students. These results may suggest that the qualitative assessments of techniques with undergraduate students should be taken with caution, but not the quantitative assesments

    Tool support for usage-based reading

    No full text
    Software inspection is an efficient method to increase the quality of software products. The main purpose of software inspections is to detect faults. In order to provide support to reviewers and inspection moderators, computer support can be used. Some computer-aided software engineering (CASE) tools have been developed. However, no tool provides support for the reading method, usage-based reading (UBR), together with fault content estimations and metrics collection. This paper describes a tool and experience from using UBR in software projects. The tool is named jInspect, and consists of two parts. The first part is aimed for an individual reviewer and the second part is aimed to support an inspection moderator. The individual reviewer is provided with prioritized use cases and follows the instructions of UBR. The inspection moderator is provided with support to merge faults and estimate the remaining faults. In addition, the paper compares the tool to other developed inspection tools, and outlines further work to be carried out
    corecore