Design Decay during Software Evolution. Hassaine, S. Ph.D. Thesis, Universit� de Montr�al, December, 2012. 141 pages.Paper abstract bibtex 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-so-rare 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 \emphfirst 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 \emphsecond 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, \ie how far a change propagation will proceed from a ``changed class'' to other classes. The \emphthird contribution concerns design defects 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 of 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: \beginitemize \item Design decay metrics, \emphTunnel Triplets Metric ($TTM$) and \emphCommon 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. \item 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. \item 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. \enditemize
@PHDTHESIS{Hassaine12-PhD,
AUTHOR = {Salima Hassaine},
SCHOOL = {Universit� de Montr�al},
TITLE = {Design Decay during Software Evolution},
YEAR = {2012},
OPTADDRESS = {},
MONTH = {December},
NOTE = {141 pages.},
OPTTYPE = {},
KEYWORDS = {Evolution patterns, Code and design smells},
URL = {http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.doc.pdf},
PDF = {http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.ppt.pdf},
ABSTRACT = {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-so-rare 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 \emph{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 \emph{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, \ie{} how far a
change propagation will proceed from a ``changed class'' to other
classes. The \emph{third contribution} concerns design defects
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
of 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:
\begin{itemize} \item Design decay metrics, \emph{Tunnel Triplets
Metric} ($TTM$) and \emph{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. \item 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. \item 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. \end{itemize}}
}
Downloads: 0
{"_id":"Xx5mSBw8nZ5zvCSyE","bibbaseid":"hassaine-designdecayduringsoftwareevolution-2012","downloads":0,"creationDate":"2018-02-22T19:07:02.805Z","title":"Design Decay during Software Evolution","author_short":["Hassaine, S."],"year":2012,"bibtype":"phdthesis","biburl":"http://ptidej.polymtl.ca/yann-gael/Work/Publications/Biblio/complete-bibliography.bib?","bibdata":{"bibtype":"phdthesis","type":"phdthesis","author":[{"firstnames":["Salima"],"propositions":[],"lastnames":["Hassaine"],"suffixes":[]}],"school":"Universit� de Montr�al","title":"Design Decay during Software Evolution","year":"2012","optaddress":"","month":"December","note":"141 pages.","opttype":"","keywords":"Evolution patterns, Code and design smells","url":"http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.doc.pdf","pdf":"http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.ppt.pdf","abstract":"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-so-rare 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 \\emphfirst 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 \\emphsecond 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, \\ie how far a change propagation will proceed from a ``changed class'' to other classes. The \\emphthird contribution concerns design defects 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 of 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: \\beginitemize \\item Design decay metrics, \\emphTunnel Triplets Metric ($TTM$) and \\emphCommon 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. \\item 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. \\item 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. \\enditemize","bibtex":"@PHDTHESIS{Hassaine12-PhD,\r\n AUTHOR = {Salima Hassaine},\r\n SCHOOL = {Universit� de Montr�al},\r\n TITLE = {Design Decay during Software Evolution},\r\n YEAR = {2012},\r\n OPTADDRESS = {},\r\n MONTH = {December},\r\n NOTE = {141 pages.},\r\n OPTTYPE = {},\r\n KEYWORDS = {Evolution patterns, Code and design smells},\r\n URL = {http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.doc.pdf},\r\n PDF = {http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.ppt.pdf},\r\n ABSTRACT = {Software systems evolve, requiring continuous \r\n maintenance and development. They undergo changes throughout their \r\n lifetimes as new features are added and bugs are fixed. As these \r\n systems evolved, their designs tend to decay with time and become \r\n less adaptable to changing users' requirements. Consequently, \r\n software designs become more complex over time and harder to \r\n maintain; in some not-so-rare cases, developers prefer redesigning \r\n from scratch rather than prolonging the life of existing designs, \r\n which causes development and maintenance costs to rise. Therefore, \r\n developers must understand the factors that drive the decay of their \r\n designs and take proactive steps that facilitate future changes and \r\n slow down decay. Design decay occurs when changes are made on a \r\n software system by developers who do not understand its original \r\n design. On the one hand, making software changes without \r\n understanding their effects may lead to the introduction of bugs and \r\n the premature retirement of the system. On the other hand, when \r\n developers lack knowledge and--or experience in solving a design \r\n problem, they may introduce design defects, which are conjectured to \r\n have a negative impact on the evolution of systems, which leads to \r\n design decay. Thus, developers need mechanisms to understand how a \r\n change to a system will impact the rest of the system and tools to \r\n detect design defects. In this dissertation, we propose three \r\n principal contributions. The \\emph{first contribution} aims to \r\n evaluate design decay. Measuring design decay consists of using a \r\n diagram matching technique to identify structural changes among \r\n versions of a design, such as a class diagram. Finding structural \r\n changes occurring in long-lived, evolving designs requires the \r\n identification of class renamings. Thus, the first step of our \r\n approach concerns the identification of class renamings in evolving \r\n designs. Then, the second step requires to match several versions of \r\n an evolving design to identify decaying and stable parts of the \r\n design. We propose bit-vector and incremental clustering algorithms \r\n to match several versions of an evolving design. The third step \r\n consists of measuring design decay. We propose a set of metrics to \r\n evaluate this design decay. The \\emph{second contribution} is related \r\n to change impact analysis. We present a new metaphor inspired from \r\n seismology to identify the change impact. In particular, our approach \r\n considers changes to a class as an earthquake that propagates through \r\n a long chain of intermediary classes. Our approach combines static \r\n dependencies between classes and historical co-change relations to \r\n measure the scope of change propagation in a system, \\ie{} how far a \r\n change propagation will proceed from a ``changed class'' to other \r\n classes. The \\emph{third contribution} concerns design defects \r\n detection. We propose a metaphor inspired from a natural immune \r\n system. Like any living creature, designs are subject to diseases, \r\n which are design defects. Detection approaches are defense mechanisms \r\n of designs. A natural immune system can detect similar pathogens with \r\n good precision. This good precision has inspired a family of \r\n classification algorithms, Artificial Immune Systems (AIS) \r\n algorithms, which we use to detect design defects. The three \r\n contributions are evaluated on open-source object-oriented systems \r\n and the obtained results enable us to draw the following conclusions: \r\n \\begin{itemize} \\item Design decay metrics, \\emph{Tunnel Triplets \r\n Metric} ($TTM$) and \\emph{Common Triplets Metric} ($CTM$), provide \r\n developers useful insights regarding design decay. If $TTM$ \r\n decreases, then the original design decays. If $TTM$ is stable, then \r\n the original design is stable, which means that the system is more \r\n adapted to the new changing requirements. \\item Seismology provides \r\n an interesting metaphor for change impact analysis. Changes propagate \r\n in systems, like earthquakes. The change impact is most severe near \r\n the changed class and drops off away from the changed class. Using \r\n external information, we show that our approach helps developers to \r\n locate easily the change impact. \\item Immune system provides an \r\n interesting metaphor for detecting design defects. The results of the \r\n experiments showed that the precision and recall of our approach are \r\n comparable or superior to that of previous approaches. \\end{itemize}}\r\n}\r\n\r\n","author_short":["Hassaine, S."],"key":"Hassaine12-PhD","id":"Hassaine12-PhD","bibbaseid":"hassaine-designdecayduringsoftwareevolution-2012","role":"author","urls":{"Paper":"http://www.ptidej.net/publications/documents/Thesis+of+Salima+Hassaine.doc.pdf"},"keyword":["Evolution patterns","Code and design smells"],"downloads":0},"search_terms":["design","decay","during","software","evolution","hassaine"],"keywords":["evolution patterns","code and design smells"],"authorIDs":[],"dataSources":["ascnA6qYXirdFSqqy"]}