77 research outputs found
Supporting feature-level software maintenance
Software maintenance is the process of modifying a software system to fix defects, improve performance, add new functionality, or adapt the system to a new environment. A maintenance task is often initiated by a bug report or a request for new functionality. Bug reports typically describe problems with incorrect behaviors or functionalities. These behaviors or functionalities are known as features. Even in very well-designed systems, the source code that implements features is often not completely modularized. The delocalized nature of features makes maintaining them challenging. Since maintenance tasks are expressed in terms of features, the goal of this dissertation is to support software maintenance at the feature-level. We focus on two tasks in particular: feature location and impact analysis via feature coupling.;Feature location is the process of identifying the source code that implements a feature, and it is an essential first step to any maintenance task. There are many existing techniques for feature location that incorporate various types of analyses such as static, dynamic, and textual. In this dissertation, we recognize the advantages of leveraging several types of analyses and introduce a new approach to feature location based on combining dynamic analysis, textual analysis, and web mining algorithms applied to software. The use of web mining for feature location is a novel contribution, and we show that our new techniques based on web mining are significantly more effective than the current state of the art.;After using feature location to identify a feature\u27s source code, maintenance can be completed on that feature. Impact analysis should then be performed to revalidate the system and determine which other features may have been affected by the modifications. We define three feature coupling metrics that capture the relationship between features based on structural information, textual information, and their combination. Our novel feature coupling metrics can be used for impact analysis to quantify the strength of coupling between pairs of features. We performed three empirical studies on open-source software systems to assess the feature coupling metrics and established three major results. First, there is a moderate to strong statistically significant correlation between feature coupling and faults. Second, feature coupling can be used to correctly determine about half of the other features that would be affected by a change to a given feature. Finally, we found that the metrics align with developers\u27 opinions about pairs of features that are actually coupled
Developing a catalogue of errors and evaluating its impact on software development
The development of quality software is of paramount importance, yet this has been and continues to be an elusive goal for software engineers. Delivered software often fails due to errors that are injected during its development. Correcting these errors early in the development or preventing them altogether can, therefore, be considered as one way to improve software quality. In this thesis, the development of a Catalogue of Errors is described. Field studies with senior software engineering students are used to confirm that developers using the Catalogue of Errors commit fewer errors in their development artifacts. The impact of the Catalogue of Errors on productivity is also examined
Software development process mining: discovery, conformance checking and enhancement
Context. Modern software projects require the proper allocation of human, technical and
financial resources. Very often, project managers make decisions supported only by their personal
experience, intuition or simply by mirroring activities performed by others in similar
contexts. Most attempts to avoid such practices use models based on lines of code, cyclomatic
complexity or effort estimators, thus commonly supported by software repositories which are
known to contain several flaws.
Objective. Demonstrate the usefulness of process data and mining methods to enhance the
software development practices, by assessing efficiency and unveil unknown process insights,
thus contributing to the creation of novel models within the software development analytics
realm.
Method. We mined the development process fragments of multiple developers in three
different scenarios by collecting Integrated Development Environment (IDE) events during their
development sessions. Furthermore, we used process and text mining to discovery developers’
workflows and their fingerprints, respectively.
Results. We discovered and modeled with good quality developers’ processes during programming
sessions based on events extracted from their IDEs. We unveiled insights from
coding practices in distinct refactoring tasks, built accurate software complexity forecast models
based only on process metrics and setup a method for characterizing coherently developers’
behaviors. The latter may ultimately lead to the creation of a catalog of software development
process smells.
Conclusions. Our approach is agnostic to programming languages, geographic location or
development practices, making it suitable for challenging contexts such as in modern global
software development projects using either traditional IDEs or sophisticated low/no code platforms.Contexto. Projetos de software modernos requerem a correta alocação de recursos humanos,
técnicos e financeiros. Frequentemente, os gestores de projeto tomam decisões suportadas
apenas na sua própria experiência, intuição ou simplesmente espelhando atividades executadas
por terceiros em contextos similares. As tentativas para evitar tais práticas baseiam-se em
modelos que usam linhas de código, a complexidade ciclomática ou em estimativas de esforço,
sendo estes tradicionalmente suportados por repositórios de software conhecidos por conterem
várias limitações.
Objetivo. Demonstrar a utilidade dos dados de processo e respetivos métodos de análise na
melhoria das práticas de desenvolvimento de software, colocando o foco na análise da eficiência
e revelando aspetos dos processos até então desconhecidos, contribuindo para a criação de
novos modelos no contexto de análises avançadas para o desenvolvimento de software.
Método. Explorámos os fragmentos de processo de vários programadores em três cenários
diferentes, recolhendo eventos durante as suas sessões de desenvolvimento no IDE. Adicionalmente,
usámos métodos de descoberta e análise de processos e texto no sentido de modelar o
fluxo de trabalho dos programadores e as suas caracterÃsticas individuais, respetivamente.
Resultados. Descobrimos e modelámos com boa qualidade os processos dos programadores
durante as suas sessões de trabalho, usando eventos provenientes dos seus IDEs. Revelámos factos
desconhecidos sobre práticas de refabricação, construÃmos modelos de previsão da complexidade
ciclomática usando apenas métricas de processo e criámos um método para caracterizar
coerentemente os comportamentos dos programadores. Este último, pode levar à criação de um
catálogo de boas/más práticas no processo de desenvolvimento de software.
Conclusões. A nossa abordagem é agnóstica em termos de linguagens de programação,
localização geográfica ou prática de desenvolvimento, tornando-a aplicável em contextos complexos
tal como em projetos modernos de desenvolvimento global que utilizam tanto os IDEs
tradicionais como as atuais e sofisticadas plataformas "low/no code"
GEANT4--a simulation toolkikt
Geant4 is a toolkit for simulating the passage of particles through matter. It includes a complete range of functionality including tracking, geometry, physics models and hits. The physics processes offered cover a comprehensive range, including electromagnetic, hadronic and optical processes, a large set of long-lived particles, materials and elements, over a wide energy range starting, in some cases, from 250 eV and extending in others to the TeV energy range. It has been designed and constructed to expose the physics models utilised, to handle complex geometries, and to enable its easy adaptation for optimal use in different sets of applications. The toolkit is the result of a worldwide collaboration of physicists and software engineers. It has been created exploiting software engineering and object-oriented technology and implemented in the C++ programming language. It has been used in applications in particle physics, nuclear physics, accelerator design, space engineering and medical physics
Recommended from our members
Information systems failure: A business-led knowledge requirements framework for modelling business requirements
This thesis was submitted for the degree of Doctor of Philosophy and awarded by Brunel University.Our work will be mainly concerned with improving the crucial first stage (the requirements stage) of any system development methodology in order to improve requirements. A framework has been developed, called "knowledge requirements framework (KRF)" to help customers and system developers bridge the knowledge and understanding gaps at the initial
requirements stage of the Information Technology System (ITS) development process.
Unclear business requirements, mismatch of knowledge and understanding are among the
major factors that contributes to some ITS failures worldwide. The aim is to capture
functional requirements at the initial stage of the system development process and to
integrate systems and people use them in the development process. Multi-surveys are conducted, capture and highlight the criteria of initial requirements exactness and executability. Knowledge and understanding gaps, which occur in the
development process, are described. These gaps constitute the problem at the invisible
architecture in the initial requirements stage, as they expose mismatch of both knowledge and understanding problems (Requirements/Specifications). A notation to describe this framework is elaborated, novel techniques and tools for the construction and application of customer requirements in systems development are developed and used in KRF to facilitate bridging these gaps. The resulting prototype KRF is developed and used against some example problems in retail organisations, and so shown to be sufficient in principle of handling all the negotiation problems at the initial requirements stage, singly and in combination. Also, it is shown how KRF sub-process can be combined and used to elicit information and knowledge mining between both the customer and the system developer using human communication and interaction capture as an example. Systems these days are living systems, changeable, in business and the human factor in developing them cannot be excluded. It is further shown how these techniques and tools can be augmented with established methodologies rather than inventing new ones and to enable management to react as quickly as possible to global changing market conditions. This proposed framework is also evaluated and tested against the original criteria of initial requirements, exactness and executability
An evaluation of Lolita and related natural language processing systems
This research addresses the question, "how do we evaluate systems like LOLITA?" LOLITA is the Natural Language Processing (NLP) system under development at the University of Durham. It is intended as a platform for building NL applications. We are therefore interested in questions of evaluation for such general NLP systems. The thesis has two, parts. The first, and main, part concerns the participation of LOLITA in the Sixth Message Understanding Conference (MUC-6). The MUC-relevant portion of LOLITA is described in detail. The adaptation of LOLITA for MUC-6 is discussed, including work undertaken by the author. Performance on a specimen article is analysed qualitatively, and in detail, with anonymous comparisons to competitors' output. We also examine current LOLITA performance. A template comparison tool was implemented to aid these analyses. The overall scores are then considered. A methodology for analysis is discussed, and a comparison made with current scores. The comparison tool is used to analyse how systems performed relative to each-other. One method, Correctness Analysis, was particularly interesting. It provides a characterisation of task difficulty, and indicates how systems approached a task. Finally, MUC-6 is analysed. In particular, we consider the methodology and ways of interpreting the results. Several criticisms of MUC-6 are made, along with suggestions for future MUC-style events. The second part considers evaluation from the point of view of general systems. A literature review shows a lack of serious work on this aspect of evaluation. A first principles discussion of evaluation, starting from a view of NL systems as a particular kind of software, raises several interesting points for single task evaluation. No evaluations could be suggested for general systems; their value was seen as primarily economic. That is, we are unable to analyse their linguistic capability directly
IDENTIFICATION AND QUANTIFICATION OF VARIABILITY MEASURES AFFECTING CODE REUSABILITY IN OPEN SOURCE ENVIRONMENT
Open source software (OSS) is one of the emerging areas in software engineering, and
is gaining the interest of the software development community. OSS was started as a
movement, and for many years software developers contributed to it as their hobby
(non commercial purpose). Now, OSS components are being reused in CBSD
(commercial purpose). However, recently, the use of OSS in SPL is envisioned
recently by software engineering researchers, thus bringing it into a new arena. Being
an emerging research area, it demands exploratory study to explore the dimensions of
this phenomenon. Furthermore, there is a need to assess the reusability of OSS which
is the focal point of these disciplines (CBSE, SPL, and OSS). In this research, a mixed
method based approach is employed which is specifically 'partially mixed sequential
dominant study'. It involves both qualitative (interviews) and quantitative phases
(survey and experiment). During the qualitative phase seven respondents were
involved, sample size of survey was 396, and three experiments were conducted. The
main contribution of this study is results of exploration of the phenomenon 'reuse of
OSS in reuse intensive software development'. The findings include 7 categories and
39 dimensions. One of the dimension factors affecting reusability was carried to the
quantitative phase (survey and experiment). On basis of the findings, proposal for
reusability attribute model was presented at class and package level. Variability is one
of the newly identified attribute of reusability. A comprehensive theoretical analysis
of variability implementation mechanisms is conducted to propose metrics for its
assessment. The reusability attribute model is validated by statistical analysis of I 03
classes and 77 packages. An evolutionary reusability analysis of two open source
software was conducted, where different versions of software are analyzed for their
reusability. The results show a positive correlation between variability and reusability
at package level and validate the other identified attributes. The results would be
helpful to conduct further studies in this area
Recommended from our members
An investigation into the feasibility, problems and benefits of re-engineering a legacy procedural CFD code into an event driven, object oriented system that allows dynamic user interaction
This research started with questions about how the overall efficiency, reliability and ease-of-use of Computational Fluid Dynamics (CFD) codes could be improved using any available software engineering and Human Computer Interaction (HCI) techniques. Much of this research has been driven by the difficulties experienced by novice CFD users in the area of Fire Field Modelling where the introduction of performance based building regulations have led to a situation where non CFD experts are increasingly making use of CFD techniques, with varying degrees of effectiveness, for safety critical research. Formerly, such modelling has not been helped by the mode of use, high degree of expertise required from the user and the complexity of specifying a simulation case. Many of the early stages of this research were channelled by perceived limitations of the original legacy CFD software that was chosen as a framework for these investigations. These limitations included poor code clarity, bad overall efficiency due to the use of batch mode processing, poor assurance that the final results presented from the CFD code were correct and the requirement for considerable expertise on the part of users.
The innovative incremental re-engineering techniques developed to reverse-engineer, re-engineer and improve the internal structure and usability of the software were arrived at as a by-product of the research into overcoming the problems discovered in the legacy software. The incremental reengineering methodology was considered to be of enough importance to warrant inclusion in this thesis. Various HCI techniques were employed to attempt to overcome the efficiency and solution correctness problems. These investigations have demonstrated that the quality, reliability and overall run-time efficiency of CFD software can be significantly improved by the introduction of run-time monitoring and interactive solution control. It should be noted that the re-engineered CFD code is observed to run more slowly than the original FORTRAN legacy code due, mostly, to the changes in calling architecture of the software and differences in compiler optimisation: but, it is argued that the overall effectiveness, reliability and ease-of-use of the prototype software are all greatly improved. Investigations into dynamic solution control (made possible by the open software architecture and the interactive control interface) have demonstrated considerable savings when using solution control optimisation. Such investigations have also demonstrated the potential for improved assurance of correct simulation when compared with the batch mode of processing found in most legacy CFD software. Investigations have also been conducted into the efficiency implications of using unstructured group solvers.
These group solvers are a derivation of the simple point-by-point Jaccobi Over Relaxation (JOR) and Successive Over Relaxation (SOR) solvers [CROFT98] and using group solvers allows the computational processing to be more effectively targeted on regions or logical collections of cells that require more intensive computation. Considerable savings have been demonstrated for the use of both static- and dynamic- group membership when using these group solvers for a complex 3-imensional fire modelling scenario. Furthermore the improvements in the system architecture (brought about as a result of software re-engineering) have helped to create an open framework that is both easy to comprehend and extend. This is in spite of the underlying unstructured nature of the simulation mesh with all of the associated complexity that this brings to the data structures. The prototype CFD software framework has recently been used as the core processing module in a commercial Fire Field Modelling product (called "SMARTFIRE" [EWER99-1]). This CFD framework is also being used by researchers to investigate many diverse aspects of CFD technology including Knowledge Based Solution Control, Gaseous and Solid Phase Combustion, Adaptive Meshing and CAD file interpretation for ease of case specification
An empirical investigation of knowledge management support for software projects.
Projects are unique by definition. Due to this novelty software development projects, in common with all other projects, require knowledge for effective implementation. Most
knowledge management frameworks reported in the literature address the organisational need to manage knowledge. The existing frameworks typically discuss the dichotomy between tacit and explicit knowledge, and lay an emphasis on managing the latter. However, software development projects rely upon the experience, creativity and intuition of individual team members to address unstructured situations typified by inherent uncertainty, ambiguity and change. Therefore software projects require the facilitation and interaction of tacit knowledge along with managing and leveraging explicit knowledge.This research examines how tacit and explicit knowledge generated while implementing a software development project can be leveraged and effectively reused in future software projects.
In order to address the need to provide knowledge management support to software projects an extended case study was conducted at one of the world's largest software
project-based organisations. The aim of the research was to identify and analyse the flow of knowledge, and the capabilities required to support this flow. The research design
utilised a combination of open-ended interviews, survey questionnaires, observations of team functioning, work methods and development practices, and a detailed examination of the knowledge management infrastructure and process capabilities. The extensive and exceptional access negotiated for this project enabled the research to focus on a single organisation and resulted in 100 hours of interviews and 340 hours of observations from 98 ongoing projects. Established case study protocols were used for data collection. The data analysis focused on determining categories from the different streams of activities and
assigning attributes using Nudist software for data reduction and displaying group-nodes, and conclusion drawing. This enabled the research to establish the 'processual' nature of
knowledge, and identify the capabilities required to mobilise and utilise knowledge assets.
The research critically analysed the three parallel themes of knowledge management, project management and software engineering, and the outcome of the conceptual synthesis and validation is a dynamic model which represents the knowledge processes that facilitate the flow of tacit and explicit knowledge between software projects. The model
depicts the relationships and interactions between the functional areas of the development effort, and presents a continuous and long-term view of supporting the implementation of software projects and developing knowledge practices. For software project-based
organisations this research has implications for their ability to manage context, provide feedback and facilitate interaction, and thus build upon their existing knowledge resources
and capabilities. The research provides such organisations with a perspective to achieve excellence not only through optimisation of software process improvement, but also
through learning, and, the creation and sharing of tacit and explicit knowledge as facilitated by the proposed model
- …