Spelling suggestions: "subject:"[een] SOFTWARE EVOLUTION"" "subject:"[enn] SOFTWARE EVOLUTION""
31 |
A Hybrid Model for Object-Oriented Software MaintenanceDong, Xinyi 17 September 2008 (has links)
An object-oriented software system is composed of a collection of
communicating objects that co-operate with one another to achieve some desired
goals. The object is the basic unit of abstraction in an OO program; objects
may model real-world entities or internal abstractions of the system. Similar
objects forms classes, which encapsulate the data and operations performed on
the data. Therefore, extracting, analyzing, and modelling classes/objects and
their relationships is of key importance in understanding and maintaining
object-oriented software systems. However, when dealing with large and complex
object-oriented systems, maintainers can easily be overwhelmed by the vast
number of classes/objects and the high degree of interdependencies among them.
In this thesis, we propose a new model, which we call the Hybrid Model, to
represent object-oriented systems at a coarse-grained level of abstraction. To
promote the comprehensibility of objects as independent units, we group the
complete static description of software objects into aggregate components. Each
aggregate component logically represents a set of objects, and the components
interact with one other through explicitly defined ports.
We present and discuss several applications of the Hybrid Model in reverse
engineering and software evolution.
The Hybrid Model can be used to support a divide-and-conquer comprehension
strategy for program comprehension. At a low level of abstraction, maintainers
can focus on one aggregate-component at a time, while at a higher level, each
aggregate component can be understood as a whole and be mapped to
coarse-grained design abstractions, such as subsystems.
Based on the new model, we further propose a set of dependency analysis
methods. The analysis results reveal the external properties of aggregate
components, and lead to better understand the nature of their
interdependencies.
In addition, we apply the new model in software evolution analysis. We identify
a collection of change patterns in terms of changes in aggregate components and
their interrelationships. These patterns help to interpret how an evolving
system changes at the architectural level, and provides valuable information to
understand why the system is designed as the way it is.
|
32 |
Model Synchronization for Software EvolutionIvkovic, Igor 26 August 2011 (has links)
Software evolution refers to continuous change that a software system endures from inception to retirement. Each change must be efficiently and tractably propagated across models representing the system at different levels of abstraction. Model synchronization activities needed to support the systematic specification and analysis of evolution activities are still not adequately identified and formally defined.
In our research, we first introduce a formal notation for the representation of domain models and model instances to form the theoretical basis for the proposed model synchronization framework. Besides conforming to a generic MOF metamodel, we consider that each software model also relates to an application domain context (e.g., operating systems,
web services). Therefore, we are addressing the problems of model synchronization by focusing on domain-specific contexts.
Secondly, we identify and formally define model dependencies that are needed to trace and propagate changes across system models at different levels of abstraction, such as from design to source code. The approach for extraction of these dependencies is based on Formal Concept Analysis (FCA) algorithms. We further model identified dependencies
using Unified Modeling Language (UML) profiles and constraints, and utilize the extracted dependency relations in the context of coarse-grained model synchronization.
Thirdly, we introduce modeling semantics that allow for more complex profile-based dependencies using Triple Graph Grammar (TGG) rules with corresponding Object Constraint Language (OCL) constraints. The TGG semantics provide for fine-grained model synchronization, and enable compliance with the Query/View/Transformation (QVT) standards.
The introduced framework is assessed on a large, industrial case study of the IBM Commerce system. The dependency extraction framework is applied to repositories of business process models and related source code. The extracted dependencies were evaluated by IBM developers, and the corresponding precision and recall values calculated with results
that match the scope and goals of the research. The grammar-based model synchronization and dependency modelling using profiles has also been applied to the IBM Commerce system, and evaluated by the developers and architects involved in development of the system. The results of this experiment have been found to be valuable by stakeholders, and a patent
codifying the results has been filed by the IBM organization and has been granted. Finally, the results of this experiment have been formalized as TGG rules, and used in the context of fine-grained model synchronization.
|
33 |
Enhancing symbolic execution using memoization and incremental techniquesYang, Guowei, active 2013 20 September 2013 (has links)
The last few years have seen a resurgence of interest in the use of symbolic execution--program analysis technique developed more than three decades ago to analyze program execution paths. However, symbolic execution remains an expensive technique and scaling it remains a key technical challenge. There are two key factors that contribute to its cost: (1) the number of paths that need to be explored and (2) the cost of constraint solving, which is typically required for each path explored. Our insight is that the cost of symbolic execution can be reduced by an incremental approach, which uses static analysis and dynamic analysis to focus on relevant parts of code and reuse previous analysis results, thereby addressing both the key cost factors of symbolic execution. This dissertation presents Memoized Incremental Symbolic Execution, a novel approach that embodies our insight. Using symbolic execution in practice often requires several successive runs of the technique on largely similar underlying problems where successive problems differ due to some change, which may be to code, e.g., to fix a bug, to analysis parameters, e.g., to increase the path exploration depth, or to correctness properties, e.g., to check against stronger specifications that are written as assertions in code. Memoized Incremental Symbolic Execution, a three-fold approach, leverages the similarities in the successive problems to reduce the total cost of applying the technique. Our prototype tool-set is based on the Symbolic PathFinder. Experimental results show that Memoized Incremental Symbolic Execution enhances the efficacy of symbolic execution. / text
|
34 |
An empirical study on software quality : developer perception of quality, metrics, and visualizationsWilson, Gary Lynn 09 December 2013 (has links)
Software tends to decline in quality over time, causing development and maintenance costs to rise. However, by measuring, tracking, and controlling quality during the lifetime of a software product, its technical debt can be held in check, reducing total cost of ownership. The measurement of quality faces challenges due to disagreement in the meaning of software quality, the inability to directly measure quality factors, and the lack of measurement practice in the software industry. This report addresses these challenges through both a literature survey, a metrics derivation process, and a survey of professional software developers. Definitions of software quality from the literature are presented and evaluated with responses from software professionals. A goal, question, metric process is used to derive quality-targeted metrics tracing back to a set of seven code-quality subgoals, while a survey to software professionals shows that despite agreement that metrics and metric visualizations would be useful for improving software quality, the techniques are underutilized in practice. / text
|
35 |
Management Aspects of Software Clone Detection and Analysis2014 June 1900 (has links)
Copying a code fragment and reusing it by pasting with or without minor modifications is a common practice in software development for improved productivity. As a result, software systems often have similar segments of code, called software clones or code clones. Due to many reasons, unintentional clones may also appear in the source code without awareness of the developer. Studies report that significant fractions (5% to 50%) of the code in typical software systems are cloned. Although code cloning may increase initial productivity, it may cause fault propagation, inflate the code base and increase maintenance overhead. Thus, it is believed that code clones should be identified and carefully managed. This Ph.D. thesis contributes in clone management with techniques realized into tools and large-scale in-depth analyses of clones to inform clone management in devising effective techniques and strategies.
To support proactive clone management, we have developed a clone detector as a plug-in to the Eclipse IDE. For clone detection, we used a hybrid approach that combines the strength of both parser-based and text-based techniques. To capture clones that are similar but not exact duplicates, we adopted a novel approach that applies a suffix-tree-based k-difference hybrid algorithm, borrowed from the area of computational biology. Instead of targeting all clones from the entire code base, our tool aids clone-aware development by allowing focused search for clones of any code fragment of the developer's interest.
A good understanding on the code cloning phenomenon is a prerequisite to devise efficient clone management strategies. The second phase of the thesis includes large-scale empirical studies on the characteristics (e.g., proportion, types of similarity, change patterns) of code clones in evolving software systems. Applying statistical techniques, we also made fairly accurate forecast on the proportion of code clones in the future versions of software projects. The outcome of these studies expose useful insights into the characteristics of evolving clones and their management implications.
Upon identification of the code clones, their management often necessitates careful refactoring, which is dealt with at the third phase of the thesis. Given a large number of clones, it is difficult to optimally decide what to refactor and what not, especially when there are dependencies among clones and the objective remains the minimization of refactoring efforts and risks while maximizing benefits. In this regard, we developed a novel clone refactoring scheduler that applies a constraint programming approach. We also introduced a novel effort model for the estimation of efforts needed to refactor clones in source code.
We evaluated our clone detector, scheduler and effort model through comparative empirical studies and user studies. Finally, based on our experience and in-depth analysis of the present state of the art, we expose avenues for further research and development towards a versatile clone management system that we envision.
|
36 |
STUDYING THE IMPACT OF DEVELOPER COMMUNICATION ON THE QUALITY AND EVOLUTION OF A SOFTWARE SYSTEMBettenburg, Nicolas 22 May 2014 (has links)
Software development is a largely collaborative effort, of which the actual encoding of program logic in source code is a relatively small part. Software developers have to collaborate effectively and communicate with their peers in order to avoid coordination problems. To date, little is known how developer communication during software development activities impacts the quality and evolution of a software.
In this thesis, we present and evaluate tools and techniques to recover communication data from traces of the software development activities. With this data, we study the impact of developer communication on the quality and evolution of the software through an in-depth investigation of the role of developer communication during software development activities. Through multiple case-studies on a broad spectrum of open-source software projects, we find that communication between developers stands in a direct relationship to the quality of the software. Our findings demonstrate that our models based on developer communication explain software defects as well as state-of-the art models that are based on technical information such as code and process metrics, and that social information metrics are orthogonal to these traditional metrics, leading to a more complete and integrated view on software defects. In addition, we find that communication between developers plays a important role in maintaining a healthy contribution management process, which is one of the key factors to the successful evolution of the software. Source code contributors who are part of the community surrounding open-source projects are available for limited times, and long communication times can lead to the loss of valuable contributions.
Our thesis illustrates that software development is an intricate and complex process that is strongly influenced by the social interactions between the stakeholders involved in the development activities. A traditional view based solely on technical aspects of software development such as source code size and complexity, while valuable, limits our understanding of software development activities. The research presented in this thesis consists of a first step towards gaining a more holistic view on software development activities. / Thesis (Ph.D, Computing) -- Queen's University, 2014-05-22 12:07:13.823
|
37 |
Model Synchronization for Software EvolutionIvkovic, Igor 26 August 2011 (has links)
Software evolution refers to continuous change that a software system endures from inception to retirement. Each change must be efficiently and tractably propagated across models representing the system at different levels of abstraction. Model synchronization activities needed to support the systematic specification and analysis of evolution activities are still not adequately identified and formally defined.
In our research, we first introduce a formal notation for the representation of domain models and model instances to form the theoretical basis for the proposed model synchronization framework. Besides conforming to a generic MOF metamodel, we consider that each software model also relates to an application domain context (e.g., operating systems,
web services). Therefore, we are addressing the problems of model synchronization by focusing on domain-specific contexts.
Secondly, we identify and formally define model dependencies that are needed to trace and propagate changes across system models at different levels of abstraction, such as from design to source code. The approach for extraction of these dependencies is based on Formal Concept Analysis (FCA) algorithms. We further model identified dependencies
using Unified Modeling Language (UML) profiles and constraints, and utilize the extracted dependency relations in the context of coarse-grained model synchronization.
Thirdly, we introduce modeling semantics that allow for more complex profile-based dependencies using Triple Graph Grammar (TGG) rules with corresponding Object Constraint Language (OCL) constraints. The TGG semantics provide for fine-grained model synchronization, and enable compliance with the Query/View/Transformation (QVT) standards.
The introduced framework is assessed on a large, industrial case study of the IBM Commerce system. The dependency extraction framework is applied to repositories of business process models and related source code. The extracted dependencies were evaluated by IBM developers, and the corresponding precision and recall values calculated with results
that match the scope and goals of the research. The grammar-based model synchronization and dependency modelling using profiles has also been applied to the IBM Commerce system, and evaluated by the developers and architects involved in development of the system. The results of this experiment have been found to be valuable by stakeholders, and a patent
codifying the results has been filed by the IBM organization and has been granted. Finally, the results of this experiment have been formalized as TGG rules, and used in the context of fine-grained model synchronization.
|
38 |
Unifying abstractions and code with concern mapsCooney, Patrick January 2006 (has links)
People trying to understand, develop and maintain software have faced greater challenges as the complexity of software systems has increased. These challenges include the difficulty of cleanly separating different intertwined parts of a system, or relating parts of the system spread across many modules. This makes it difficult to neatly identify an area of interest, which in turn makes it difficult to understand or edit that area. The ability to separate these areas of interest, called concerns, into their own modules has been shown to improve the situation. Several approaches have been developed to enable this separation: aspect-oriented programming allows program code to be divided into smaller modules that better match areas of interest; reverse engineering tools help programmers extract information from an existing system; requirements traceability tools track individual requirements through the development process. This thesis describes a technique that works in a wide variety of circumstances. This technique allows users to create simple diagrams that describe the concern and then annotate this diagram with query expressions which link the diagram to related development artefacts like source code or documents. This research has used the tool in a set of common scenarios and compared the results to those achieved using other approaches.
|
39 |
Avaliando a relação existente entre os escopos de requisitos e código: um estudo envolvendo sistemas em evoluçãoSilva Filho, José Renato da 25 August 2017 (has links)
Submitted by Lara Oliveira (lara@ufersa.edu.br) on 2018-03-20T20:55:57Z
No. of bitstreams: 1
JoséRSF_DISSERT.pdf: 953765 bytes, checksum: cfa6e9ab2efbc54639a0e33a50b01261 (MD5) / Approved for entry into archive by Vanessa Christiane (referencia@ufersa.edu.br) on 2018-06-18T17:00:58Z (GMT) No. of bitstreams: 1
JoséRSF_DISSERT.pdf: 953765 bytes, checksum: cfa6e9ab2efbc54639a0e33a50b01261 (MD5) / Approved for entry into archive by Vanessa Christiane (referencia@ufersa.edu.br) on 2018-06-18T17:01:05Z (GMT) No. of bitstreams: 1
JoséRSF_DISSERT.pdf: 953765 bytes, checksum: cfa6e9ab2efbc54639a0e33a50b01261 (MD5) / Made available in DSpace on 2018-06-18T17:01:14Z (GMT). No. of bitstreams: 1
JoséRSF_DISSERT.pdf: 953765 bytes, checksum: cfa6e9ab2efbc54639a0e33a50b01261 (MD5)
Previous issue date: 2017-08-25 / Coordenação de Aperfeiçoamento de Pessoal de Nível Superior / Software systems are constantly changing during their evolution. These changes are
directly linked with the management of their product requirements. When requirements
are well managed, they evolve more accurately and development costs are reduced,
which includes avoiding unnecessary changes to evolving code. It is known that much
of the changes demanded during the evolution of the code is associated with the scope
of its elements. However, there are no studies investigating whether variations in the
scope of requirements are correlated with variations in the scope of code compositions.
The main purpose of this master’s thesis is to provide means to requirements engineers
to monitor variation in the scope of software requirements and to correlate them with
the scope of evolving code elements, which has a proven negative impact on the number
of changes demanded in evolving code artifacts. In this context, a metric was formulated
to quantify the scope of requirements and based on it a plug-in, called MeRS, was
developed. MeRS provides means to automate this quantification. Using MeRS, an
exploratory study was conducted to correlate the scopes at the requirements and code
levels. To do so, we analyze the evolution of the requirements and code, focusing on the
scope of two applications in evolution: NotePad and Mobile Media. The results showed
that the requirements scope values are correlate with the scope of the code / Sistemas de software estão em constantes mudanças durante sua evolução, essas
mudanças estão diretamente ligadas com a gestão de requisitos de seus produtos.
Quando requisitos são bem gerenciados, eles evoluem de forma mais precisa e os custos
de desenvolvimento são reduzidos, isso inclui evitar mudanças desnecessárias no código
em evolução. Sabe-se que boa parte das mudanças demandadas durante a evolução
do código está associada ao escopo dos seus elementos. Porém, não há estudos que
investiguem se variações no escopo dos requisitos estão correlacionadas com variações
no escopo das composições de código.Oobjetivo principal desta dissertação de mestrado
é prover aos engenheiros de requisitos meios de monitorar a variação do escopo dos
requisitos de software e correlacioná-los com o escopo dos elementos de código em
evolução, o qual possui impacto negativo comprovado sobre o número de mudanças
demandadas em artefatos de código em evolução. Neste contexto, foi formulado uma
métrica para quantificar o escopo de requisitos e com base nela foi desenvolvido um
plug-in, denominado MeRS, que fornece meios para automatizar esta quantificação. Por
meio do MeRS foi conduzido um estudo exploratório com o objetivo de correlacionar
os escopos nos níveis de requisitos e código. Para tanto, analisamos a evolução dos
requisitos e código, com foco em escopo, de duas aplicações em evolução: NotePad e
Mobile Media. Os resultados mostraram que os valores do escopo dos requisitos estão
correlacionados com o escopo do código / 2018-03-20
|
40 |
Understanding And Guiding Software Product Lines Evolution Based On Requirements Engineering ActivitiesOliveira, Raphael Pereira de 10 September 2015 (has links)
Submitted by Kleber Silva (kleberbs@ufba.br) on 2017-06-01T20:36:17Z
No. of bitstreams: 1
2015_Thesis_Final_v01.pdf: 25381943 bytes, checksum: cf9b5a7ab05c5f433c6abe06c7c8815e (MD5) / Approved for entry into archive by Vanessa Reis (vanessa.jamile@ufba.br) on 2017-06-07T11:38:56Z (GMT) No. of bitstreams: 1
2015_Thesis_Final_v01.pdf: 25381943 bytes, checksum: cf9b5a7ab05c5f433c6abe06c7c8815e (MD5) / Made available in DSpace on 2017-06-07T11:38:56Z (GMT). No. of bitstreams: 1
2015_Thesis_Final_v01.pdf: 25381943 bytes, checksum: cf9b5a7ab05c5f433c6abe06c7c8815e (MD5) / Software Product Line (SPL) has emerged as an important strategy to cope with the increasing demand of large-scale products customization. SPL has provided companies with an efficient and effective means of delivering products with higher quality at a lower cost, when compared to traditional software engineering strategies. However, such benefits do not come for free.
There is a necessity in SPL to deal with the evolution of its assets to support changes within the environment and user needs. These changes in SPL are firstly represented by requirements. Thus, SPL should manage the commonality and variability of products by means of a “Requirements Engineering (RE) - change management” process. Hence, besides dealing with the reuse and evolution of requirements in an SPL, the RE for SPL also needs an approach to represent explicitly the commonality and variability information (e.g., through feature models and use cases).
To understand the evolution in SPL, this Thesis presents two empirical studies within industrial SPL projects and a systematic mapping study on SPL evolution. The two empirical studies evaluated Lehman’s laws of software evolution in two industrial SPL projects,demonstrating that most of the laws are supported by SPL environments. The systematic mapping study on SPL evolution identified approaches in the area and revealed gaps for researching, such as, that most of the proposed approaches perform the evolution of SPL requirements in an ad-hoc way and were evaluated through feasibility studies.
These results led to systematize, through guidelines, the SPL processes by starting with the SPL requirements. Thus, it was proposed an approach to specify SPL requirements called Feature-Driven Requirements Engineering (FeDRE). FeDRE specifies SPL requirements in a systematic way driven by a feature model. To deal with the evolution of FeDRE requirements, a new approach called Feature-Driven Requirements Engineering Evolution (FeDRE2) was presented. FeDRE2 is responsible for guiding, in a systematic way, the SPL evolution based on activities from RE.
Both proposed approaches, FeDRE and and FeDRE2, were evaluated and the results, besides being preliminaries, shown that the approaches were perceived as easy to use and also useful, coping with the improvement and systematization of SPL processes.
|
Page generated in 0.0698 seconds