5,312 research outputs found
The mystery of the writing that isnāt on the wall: differences in public representations in traditional and agile software development
This paper considers the use of public displays, such as whiteboards and papers pinned to walls, by different software development teams, based on evidence from a number of empirical studies. This paper outlines differences in use observed between traditional and agile teams and begins
to identify the implications that they may have for software
development
Happy software developers solve problems better: psychological measurements in empirical software engineering
For more than 30 years, it has been claimed that a way to improve software
developers' productivity and software quality is to focus on people and to
provide incentives to make developers satisfied and happy. This claim has
rarely been verified in software engineering research, which faces an
additional challenge in comparison to more traditional engineering fields:
software development is an intellectual activity and is dominated by
often-neglected human aspects. Among the skills required for software
development, developers must possess high analytical problem-solving skills and
creativity for the software construction process. According to psychology
research, affects-emotions and moods-deeply influence the cognitive processing
abilities and performance of workers, including creativity and analytical
problem solving. Nonetheless, little research has investigated the correlation
between the affective states, creativity, and analytical problem-solving
performance of programmers. This article echoes the call to employ
psychological measurements in software engineering research. We report a study
with 42 participants to investigate the relationship between the affective
states, creativity, and analytical problem-solving skills of software
developers. The results offer support for the claim that happy developers are
indeed better problem solvers in terms of their analytical abilities. The
following contributions are made by this study: (1) providing a better
understanding of the impact of affective states on the creativity and
analytical problem-solving capacities of developers, (2) introducing and
validating psychological measurements, theories, and concepts of affective
states, creativity, and analytical-problem-solving skills in empirical software
engineering, and (3) raising the need for studying the human factors of
software engineering by employing a multidisciplinary viewpoint.Comment: 33 pages, 11 figures, published at Peer
Pair programming and the re-appropriation of individual tools for collaborative software development
Although pair programming is becoming more prevalent in software development, and a number of reports have been written about it [10] [13], few have addressed the manner in which pairing actually takes place [12]. Even fewer consider the methods used to manage issues such as role change or the communication of complex issues. This paper highlights the way resources designed for individuals are re-appropriated and augmented by pair programmers to facilitate collaboration. It also illustrates that pair verbalisations can augment the benefits of the collocated team, providing examples from ethnographic studies of pair programmers 'in the wild'
The Dynamics of Creativity in Software Development
Software is primarily developed for people by people and human factors must
be studied in all software engineering phases. Creativity is the source to
improvise solutions to problems for dominating complex systems such as software
development. However, there is a lack of knowledge in what creativity is in
software development and what its dynamics are. This study describes the
current state of the research plan towards a theory on creativity in software
development. More specifically, it (1) states the motivation for studying
creativity in software development under a multidisciplinary view; it (2)
provides a first review of the literature identifying the shortcomings in the
field; it (3) proposes a research design, which includes rarely employed
methods in software engineering. To understand creativity in software
development will provide a better knowledge of the software construction
process and how individuals intellectually contribute to the creation of
better, innovative products.Comment: 6 Pages. To be presented in the 14th International Conference on
Product-Focused Software Process Improvement (PROFES 2013) - Doctoral
Symposium, 12 June 2013, Paphos, Cyprus. This is the final, accepted version
(after peer review
Coordinating Knowledge Work in Multi-Team Programs: Findings from a Large-Scale Agile Development Program
Software development projects have undergone remarkable changes with the
arrival of agile development methods. While intended for small, self-managing
teams, these methods are increasingly used also for large development programs.
A major challenge in programs is to coordinate the work of many teams, due to
high uncertainty in tasks, a high degree of interdependence between tasks and
because of the large number of people involved. This revelatory case study
focuses on how knowledge work is coordinated in large-scale agile development
programs by providing a rich description of the coordination practices used and
how these practices change over time in a four year development program with 12
development teams. The main findings highlight the role of coordination modes
based on feedback, the use of a number of mechanisms far beyond what is
described in practitioner advice, and finally how coordination practices change
over time. The findings are important to improve the outcome of large
knowledge-based development programs by tailoring coordination practices to
needs and ensuring adjustment over time.Comment: To appear in Project Management Journa
Rationale in Development Chat Messages: An Exploratory Study
Chat messages of development teams play an increasingly significant role in
software development, having replaced emails in some cases. Chat messages
contain information about discussed issues, considered alternatives and
argumentation leading to the decisions made during software development. These
elements, defined as rationale, are invaluable during software evolution for
documenting and reusing development knowledge. Rationale is also essential for
coping with changes and for effective maintenance of the software system.
However, exploiting the rationale hidden in the chat messages is challenging
due to the high volume of unstructured messages covering a wide range of
topics. This work presents the results of an exploratory study examining the
frequency of rationale in chat messages, the completeness of the available
rationale and the potential of automatic techniques for rationale extraction.
For this purpose, we apply content analysis and machine learning techniques on
more than 8,700 chat messages from three software development projects. Our
results show that chat messages are a rich source of rationale and that machine
learning is a promising technique for detecting rationale and identifying
different rationale elements.Comment: 11 pages, 6 figures. The 14th International Conference on Mining
Software Repositories (MSR'17
Boundary Objects and their Use in Agile Systems Engineering
Agile methods are increasingly introduced in automotive companies in the
attempt to become more efficient and flexible in the system development. The
adoption of agile practices influences communication between stakeholders, but
also makes companies rethink the management of artifacts and documentation like
requirements, safety compliance documents, and architecture models.
Practitioners aim to reduce irrelevant documentation, but face a lack of
guidance to determine what artifacts are needed and how they should be managed.
This paper presents artifacts, challenges, guidelines, and practices for the
continuous management of systems engineering artifacts in automotive based on a
theoretical and empirical understanding of the topic. In collaboration with 53
practitioners from six automotive companies, we conducted a design-science
study involving interviews, a questionnaire, focus groups, and practical data
analysis of a systems engineering tool. The guidelines suggest the distinction
between artifacts that are shared among different actors in a company (boundary
objects) and those that are used within a team (locally relevant artifacts). We
propose an analysis approach to identify boundary objects and three practices
to manage systems engineering artifacts in industry
āComputingā Requirements for Open Source Software: A Distributed Cognitive Approach
Most requirements engineering (RE) research has been conducted in the context of structured and agile software development. Software, however, is increasingly developed in open source software (OSS) forms which have several unique characteristics. In this study, we approach OSS RE as a sociotechnical, distributed cognitive process where distributed actors ācomputeā requirementsāi.e., transform requirements-related knowledge into forms that foster a shared understanding of what the software is going to do and how it can be implemented. Such computation takes place through social sharing of knowledge and the use of heterogeneous artifacts. To illustrate the value of this approach, we conduct a case study of a popular OSS project, Rubiniusāa runtime environment for the Ruby programming languageāand identify ways in which cognitive workload associated with RE becomes distributed socially, structurally, and temporally across actors and artifacts. We generalize our observations into an analytic framework of OSS RE, which delineates three stages of requirements computation: excavation, instantiation, and testing-in-the-wild. We show how the distributed, dynamic, and heterogeneous computational structure underlying OSS development builds an effective mechanism for managing requirements. Our study contributes to sorely needed theorizing of appropriate RE processes within highly distributed environments as it identifies and articulates several novel mechanisms that undergird cognitive processes associated with distributed forms of RE
- ā¦