13 research outputs found
Améliorer la testabilité et les tests des systèmes à l'aide des patrons
Les activités de test sont très complexes et coûteuses mais elles restent cependant le moyen le plus répandu pour assurer la fiabilité des systèmes et augmenter notre confiance en eux. De nombreux travaux ont pour objectif la réduction de ces coûts et de cette complexité à travers diverses approches : critères de test plus efficaces, automatisation des activités de tests, augmentation de la testabilité. Cette dernière approche est intensivement explorée car pour de nombreux chercheurs, la testabilité peut permettre de réduire significativement les coûts de test surtout si elle est évaluée et exploitée tôt dans le cycle de développement du logiciel notamment à la phase de conception. C'est dans ce domaine très actif des conceptions testables que s'inscrit notre projet de recherche. Ce projet vise à contribuer à réduire les coûts de test et en augmenter l'efficacité en exploitant les microarchitectures, telles que les patrons de conceptions et les anti-patrons. Ces microarchitectures existent largement dans les systèmes orientés objets et sont reconnus comme ayant un impact sur plusieurs attributs de qualité. Notre objectif est donc, à travers ce projet de recherche et la méthodologie proposée dans le présent document, d'étudier l'impact des microarchitectures sur la testabilité des systèmes, d'exploiter les résultats de cette étude pour améliorer la testabilité des conceptions mais aussi exploiter directement les microarchitectures dans la phase de test
An exploratory study of the impact of software changeability
Antipatterns are poor design choices that make object-oriented systems hard to maintain by developers. In this study,
we investigate if classes that participate in antipatterns are
more change-prone than classes that do not. Specifically,
we test the general hypothesis: classes belonging to antipatterns are not more likely than other classes to undergo
changes, to be impacted when fixing issues posted in issue-
tracking systems, and in particular to unhandled exceptions-related issues - a crucial problem for any software system. We detect 11 antipatterns in 13 releases of Eclipse
and study the relations between classes involved in these
antipatterns and classes change-, issue-, and unhandled exception-proneness. We show that, in almost all releases of
Eclipse, classes with antipatterns are more change-, issue-,
and unhandled-exception-prone than others. These results
justify previous work on the specification and detection of
antipatterns and could help focusing quality assurance and
testing activities
An Empirical Study of the Relationships between Design Pattern Roles and Class Change Proneness
Analyzing the change-proneness of design patterns and the kinds of changes occurring to classes playing role(s) in some design pattern(s) during software evolution poses the basis for guidelines to help developers who have to choose, apply or maintain design patterns. Building on previous work, this paper shifts the focus from design patterns as wholes to the finer-grain level of design pattern roles. The paper presents an empirical study to understand whether there are roles that are more change-prone than others and whether there are changes that are more likely to occur to certain roles. The study relies on data extracted from the source code repositories of three different systems (JHotDraw, Xerces, and Eclipse-JDT) and from 12 design patterns. Results obtained confirm the intuitive behavior about changeability of many roles in design motifs, but also warns about properly designing parts of the motif subject to frequent changes.
Recommended from our members
An empirical investigation into contributory factors of change and fault propensity in large-scale commercial object-oriented software
This thesis was submitted for the degree of Doctor of Philosophy and was awarded by Brunel UniversityObject-Oriented design and development dominates both commercial and open source software projects. One of the principal goals of object-oriented design is to aid reuse, and hence, reduce future maintenance efforts of software systems. However, the on-going maintenance of large-scale software systems (both changes and faults) continues to be a significant proportion of the lifecycle of the system and the total investment cost. Understanding and thus being able to predict - or even reduce - the impact of the contributing factors of future maintenance efforts of a software system is thus highly beneficial to software practitioners. In this Thesis we empirically study a large, commercial software system with the principal aim to determine the contributing factors to the change and fault propensity over a three-year period. We consider the object-oriented design context of the software, specifically its inheritance characteristics, coupling and cohesion properties, object-oriented design pattern participation, and size. We also explore the effect of refactoring and test classes in the software. Our results show that several aspects of the design context of a class have an impact to the change and fault-proneness of the software. Specifically, we show that classes with high afferent or efferent coupling are more change and fault-prone; we also identify a number of design patterns whose participants tend to have a higher change and fault propensity than non-participants and we identify a range of inheritance characteristics (in terms of depth of inheritance and number of children) that result in an increase to change and fault-proneness. Furthermore we show that refactoring is a commonly occurring maintenance activity, although it is largely limited to simpler types of refactorings. Finally, we provide some insight into the co-evolution of production and test code during refactoring
Étude empirique sur l'utilisation des patrons JEE et leur impact sur la modifiabilité des applications JEE
Les patrons de conception décrivent des pratiques qui permettent la conception de logiciels de qualité. Beaucoup de patrons de conception fournissent des solutions qui visent à promouvoir la maintenabilité des logiciels et, plus précisément, la modifiabilité en facilitant la mise en oeuvre de futurs changements du logiciel, ce qui réduit considérablement les coûts de la maintenance.
Plusieurs travaux visent à supporter l’utilisation des patrons de conception ou à identifier des occurrences de ces patrons dans des systèmes existants. Cependant, peu d’études empiriques évaluent l’impact des patrons JEE sur la modifiabilité des applications.
Dans ce mémoire, nous présentons une étude empirique sur l'utilisation des patrons JEE et leur impact sur la modifiabilité des applications JEE. Nous avons analysé 17 applications JEE libres pour identifier les patrons JEE qui sont utilisés et qui supportent la modifiabilité. Puis, nous avons évalué leur impact sur la modifiabilité de ces applications en étudiant les corrélations possibles entre l'utilisation de ces patrons et un ensemble de métriques liées à la modifiabilité. De plus, nous avons analysé différentes versions de trois de ces applications JEE afin d'évaluer l'évolution de la distribution des patrons appliqués et aussi l'impact de cette évolution sur la modifiabilité de ces applications. Afin de combler le manque d’outils qui permettent de détecter les patrons JEE, nous avons adapté l’outil Ptidej et nous avons développé un parseur basé sur l’arbre syntaxique du code source analysé. Une analyse manuelle des applications est effectuée pour valider les occurrences des patrons identifiés.
Les résultats de notre étude confirment qu’un bon nombre de patrons JEE supportant la modifiabilité sont utilisés dans les applications JEE. Ces patrons sont généralement ceux qui reflètent les bonnes pratiques d’une architecture en couches. Nous avons aussi constaté qu’il y a très peu de corrélations entre l’utilisation de ces patrons et la modifiabilité des applications. Les quelques corrélations observés suggèrent que l’application de certains patrons complexifient l’application. Cependant, notre analyse manuelle des applications JEE étudiées a permis de constater que l’utilisation de ces patrons facilite la compréhension du code et la délimitation des couches de l’architecture de ces applications
Applying patterns in embedded systems design for managing quality attributes and their trade-offs
Embedded systems comprise one of the most important types of software-intensive systems, as they are pervasive and used in daily life more than any other type, e.g., in cars or in electrical appliances. When these systems operate under hard constraints, the violation of which can lead to catastrophic events, the system is classified as a critical embedded system (CES). The quality attributes related to these hard constraints are named critical quality attributes (CQAs). For example, the performance of the software for cruise-control or self-driving in a car are critical as they can potentially relate to harming human lives. Despite the growing body of knowledge on engineering CESs, there is still a lack of approaches that can support its design, while managing CQAs and their trade-offs with noncritical ones (e.g., maintainability and reusability). To address this gap, the state-of-research and practice on designing CES and managing quality trade-offs were explored, approaches to improve its design identified, and the merit of these approaches empirically investigated. When designing software, one common approach is to organize its components according to well-known structures, named design patterns. However, these patterns may be avoided in some classes of systems such as CES, as they are sometimes associated with the detriment of CQAs. In short, the findings reported in the thesis suggest that, when applicable, design patterns can promote CQAs while supporting the management of trade-offs. The thesis also reports on a phenomena, namely pattern grime, and factors that can influence the extent of the observed benefits