Spelling suggestions: "subject:"design decay"" "subject:"1design decay""
1 |
[pt] EXPLORANDO OS ASPECTOS SOCIAIS DO DECAIMENTO DE DESIGN / [en] EXPLORING THE SOCIAL ASPECTS OF DESIGN DECAYCAIO BARBOSA VIEIRA DA SILVA 01 July 2021 (has links)
[pt] O desenvolvimento de código vem sendo executado de forma colaborativa há
muito tempo. Plataformas, como o GitHub, contribuem para esse processo
com vários mecanismos. Pull Request é um deles, e permite aos desenvolvedores
enviarem suas contribuições para um repositório, onde essas mudanças
podem ser discutidas e revisadas antes de serem integradas ao código principal.
Um dos objetivos desse processo é evitar um fenômeno chamado design
decay, que ocorre quando estruturas de pobres de design são introduzidas
no código fonte. Como resultado, o projeto pode se tornar difícil de manter
e evoluir. As técnicas existentes usam sintomas de código fonte (e.g., mal
cheiros de código) para identificar a manifestação de design decay. No entanto,
esses sintomas só podem identificar design decay que já se ocorreu.
Assim, nesta dissertação, investigamos três aspectos sociais para prever a
manifestação de design decay em projetos de código aberto. Dinâmica de
comunicação representa informações sobre os papéis dos contribuidores e
aspectos temporais das discussões. Conteúdo da discussão é a informação
sendo trocada entre participantes de uma contribuição. Finalmente, dinâmica
organizacional representa as características da equipe. A manifestação
desses aspectos sociais ao longo do desenvolvimento de software pode induzir
comportamentos que possivelmente afetam a qualidade do código. No
entanto, nenhum estudo anterior investigou a sua influência no design decay.
Assim, buscamos evidências sobre como esses três aspectos influenciam
na manifestação de design decay. Para atingir esse objetivo, nós introduzimos
um conjunto de métricas para caracterizar aspectos sociais num modelo
de desenvolvimento baseado em pull requests. Então, nós analisamos sete
projetos, extraindo seus commits e pull requests. Nossos resultados revelam
que: (i) métricas sociais podem ser usadas para discriminar as pull requests
que impactam na manifestação de design decay daquelas que não impactam;
(ii) vários fatores da dinâmica da comunicação estão relacionados ao design
decay. No entanto, os fatores temporais superam os fatores dos papéis dos
participantes como indicadores de design decay; e (iii) aspectos relacionados
à dinâmica organizacional, como o número de novatos, surpreendentemente,
não estão associados a manifestação de design decay. / [en] Code development has been performing collaboratively for a long time. Platforms,
such as GitHub, contribute to this process with various mechanisms.
Pull Request is a mechanism that allows developers to submit their contributions
to a project. Then, these changes can be discussed, analyzed, and
reviewed before being integrated into the repository. One of the goals of this
process is to avoid a phenomenon called design decay. It occurs when poor
design structures are introduced in a project. As a result, the project may
become difficult to maintain and evolve. Existing techniques use source code
symptoms (e.g., code smells) to identify the manifestation of design decay.
Nevertheless, such symptoms can only be used to identify design decay that
is already present in the project. Thus, in this dissertation, we investigated
the exploration of three social aspects to predict the manifestation of design
decay on open-source projects as follows. Communication Dynamics represents
information about contributor s roles and temporal aspects of their
discussions. Discussion Content is the information being exchanged among
participants of a contribution. Finally, Organizational Dynamics represents
characteristics of the team organization. The manifestation of these social
aspects along software development can induce behaviors that possibly affect
the design quality. However, no previous study has investigated the
influence of such social aspects on the manifestation of design decay. Thus,
we aim to shed light on how these three aspects influence the design decay.
To achieve this goal, we introduced a suite of metrics for characterizing social
aspects in pull-based software development. Then, we analyzed seven
open-source projects, mining both their commits and pull requests. Our results
reveal that: (i) many social metrics, e.g., Discussion Length, can be
used to discriminate between pull requests that impact on the manifestation
of design decay from the ones that do not impact; (ii) various factors
of communication dynamics, such as Number of Users, are related to design
decay. Nevertheless, temporal factors of communication dynamics outperform
the participant roles as indicators of design decay; and (iii) aspects
related to organizational dynamics, such as the number of newcomers, are
surprisingly not associated with design decay manifestation.
|
2 |
Evaluating Design Decay during Software EvolutionHassaine, Salima 08 1900 (has links)
Les logiciels sont en constante évolution, nécessitant une maintenance et un développement continus. Ils subissent des changements tout au long de leur vie, que ce soit pendant l'ajout de nouvelles fonctionnalités ou la correction de bogues
dans le code. Lorsque ces logiciels évoluent, leurs architectures ont tendance à se dégrader avec le temps et deviennent moins adaptables aux nouvelles spécifications
des utilisateurs. Elles deviennent plus complexes et plus difficiles à maintenir. Dans certains cas, les développeurs préfèrent refaire la conception de ces architectures à partir du zéro plutôt que de prolonger la durée de leurs vies, ce qui engendre une augmentation importante des coûts de développement et de maintenance. Par conséquent, les développeurs doivent comprendre les facteurs qui conduisent à la dégradation des architectures, pour prendre des mesures proactives qui facilitent les futurs changements et ralentissent leur dégradation.
La dégradation des architectures se produit lorsque des développeurs qui ne comprennent pas la conception originale du logiciel apportent des changements au logiciel. D'une part, faire des changements sans comprendre leurs impacts peut conduire à l'introduction de bogues et à la retraite prématurée du logiciel. D'autre part, les développeurs qui manquent de connaissances et–ou d'expérience dans la résolution d'un problème de conception peuvent introduire des défauts de conception. Ces défauts ont pour conséquence de rendre les logiciels plus difficiles à maintenir et évoluer. Par conséquent, les développeurs ont besoin de mécanismes
pour comprendre l'impact d'un changement sur le reste du logiciel et d'outils pour détecter les défauts de conception afin de les corriger. Dans le cadre de cette thèse, nous proposons trois principales contributions.
La première contribution concerne l'évaluation de la dégradation des architectures logicielles. Cette évaluation consiste à utiliser une technique d’appariement de diagrammes, tels que les diagrammes de classes, pour identifier les changements structurels entre plusieurs versions d'une architecture logicielle. Cette étape nécessite l'identification des renommages de classes. Par conséquent, la première étape de
notre approche consiste à identifier les renommages de classes durant l'évolution de l'architecture logicielle. Ensuite, la deuxième étape consiste à faire l'appariement de plusieurs versions d'une architecture pour identifier ses parties stables et celles qui sont en dégradation. Nous proposons des algorithmes de bit-vecteur et de clustering pour analyser la correspondance entre plusieurs versions d'une architecture.
La troisième étape consiste à mesurer la dégradation de l'architecture durant l'évolution du logiciel. Nous proposons un ensemble de m´etriques sur les parties stables du logiciel, pour évaluer cette dégradation. La deuxième contribution est liée à l'analyse de l'impact des changements dans un logiciel. Dans ce contexte, nous présentons une nouvelle métaphore inspirée de la séismologie pour identifier l'impact des changements. Notre approche considère un changement à une classe comme un tremblement de terre qui se propage dans le logiciel à travers une longue chaîne de classes intermédiaires. Notre approche combine l'analyse de dépendances structurelles des classes et l'analyse de leur historique (les relations de co-changement) afin de mesurer l'ampleur de la propagation du changement dans le logiciel, i.e., comment un changement se propage à partir de
la classe modifiée è d'autres classes du logiciel. La troisième contribution concerne la détection des défauts de conception. Nous proposons une métaphore inspirée du système immunitaire naturel. Comme toute créature vivante, la conception de systèmes est exposée aux maladies, qui sont des défauts de conception. Les approches de détection sont des mécanismes de défense pour les conception des systèmes. Un système immunitaire naturel peut détecter des pathogènes similaires avec une bonne précision. Cette bonne précision a inspiré une famille d'algorithmes de classification, appelés systèmes immunitaires artificiels (AIS), que nous utilisions pour détecter les défauts de conception.
Les différentes contributions ont été évaluées sur des logiciels libres orientés objets et les résultats obtenus nous permettent de formuler les conclusions suivantes:
• Les métriques Tunnel Triplets Metric (TTM) et Common Triplets Metric (CTM), fournissent aux développeurs de bons indices sur la dégradation de l'architecture. La d´ecroissance de TTM indique que la conception originale de l'architecture s’est dégradée. La stabilité de TTM indique la stabilité de
la conception originale, ce qui signifie que le système est adapté aux nouvelles spécifications des utilisateurs.
• La séismologie est une métaphore intéressante pour l'analyse de l'impact des changements. En effet, les changements se propagent dans les systèmes comme les tremblements de terre. L'impact d'un changement est plus important autour de la classe qui change et diminue progressivement avec la distance à cette classe. Notre approche aide les développeurs à identifier l'impact d'un changement.
• Le système immunitaire est une métaphore intéressante pour la détection des défauts de conception. Les résultats des expériences ont montré que la précision et le rappel de notre approche sont comparables ou supérieurs à ceux des approches existantes. / Software systems evolve, requiring continuous maintenance and development.
They undergo changes throughout their lifetimes as new features are added and
bugs are fixed. As these systems evolved, their designs tend to decay with time and become less adaptable to changing users'requirements. Consequently, software
designs become more complex over time and harder to maintain; in some not-sorare
cases, developers prefer redesigning from scratch rather than prolonging the life of existing designs, which causes development and maintenance costs to rise. Therefore, developers must understand the factors that drive the decay of their designs and take proactive steps that facilitate future changes and slow down decay. Design decay occurs when changes are made on a software system by developers who do not understand its original design. On the one hand, making software changes without understanding their effects may lead to the introduction of bugs
and the premature retirement of the system. On the other hand, when developers lack knowledge and–or experience in solving a design problem, they may introduce design defects, which are conjectured to have a negative impact on the evolution of systems, which leads to design decay. Thus, developers need mechanisms to understand how a change to a system will impact the rest of the system and tools to detect design defects.
In this dissertation, we propose three principal contributions. The first contribution aims to evaluate design decay. Measuring design decay consists of using a diagram matching technique to identify structural changes among versions of a design, such as a class diagram. Finding structural changes occurring in long-lived, evolving designs requires the identification of class renamings. Thus, the first step of our approach concerns the identification of class renamings in evolving designs. Then, the second step requires to match several versions of an evolving design to identify decaying and stable parts of the design. We propose bit-vector and incremental clustering algorithms to match several versions of an evolving design. The third step consists of measuring design decay. We propose a set of metrics to evaluate this design decay. The second contribution is related to change impact analysis. We present a new metaphor inspired from seismology to identify the change impact. In particular, our approach considers changes to a class as an earthquake that propagates through a long chain of intermediary classes. Our approach combines static dependencies between classes and historical co-change relations to measure the scope of change propagation in a system, i.e., how far a change propagation will proceed from a “changed class” to other classes. The third contribution concerns design defect detection. We propose a metaphor inspired from a natural immune system. Like any living creature, designs are subject to diseases, which are design defects. Detection approaches are defense mechanisms if designs. A natural immune system can detect similar pathogens with good precision. This good precision has inspired a family of classification algorithms, artificial Immune Systems (AIS) algorithms, which we use to detect design defects. The three contributions are evaluated on open-source object-oriented systems and the obtained results enable us to draw the following conclusions:
• Design decay metrics, Tunnel Triplets Metric (TTM) and Common Triplets Metric (CTM), provide developers useful insights regarding design decay. If TTM decreases, then the original design decays. If TTM is stable, then the original design is stable, which means that the system is more adapted to the new changing requirements.
• Seismology provides an interesting metaphor for change impact analysis. Changes propagate in systems, like earthquakes. The change impact is most severe near the changed class and drops off away from the changed class. Using external information, we show that our approach helps developers to
locate easily the change impact.
• Immune system provides an interesting metaphor for detecting design defects. The results of the experiments showed that the precision and recall of our approach are comparable or superior to that of previous approaches.
|
3 |
Evaluating Design Decay during Software EvolutionHassaine, Salima 08 1900 (has links)
No description available.
|
Page generated in 0.0505 seconds