
One of the main dilemmas with which software development teams face is how to choose a software development method that suits the team as well as the organization. This short paper suggests an approach that may help in this process. Specifically, Extreme Programming (XP) is analyzed from a cognitive perspective. We suggest that such an analysis can support software development processes.
The conventional ways of building software are accepted to produce rigid systems that impede the processes of change typical for contemporary organisations. In this paper, we propose that software can be made more adaptable and tuned to the needs of changing organisations, if it is built using organisation-inspired principles and software structures such as Virtual Organisations, roles and norms. Agent-based software engineering is already using these principles, and we extend the state of the art in that domain by proposing an "open systems" approach, where agents can join and leave Virtual Organisations at will, taking on different roles as needed. Reasoning on organisational roles and norms is facilitated by formalised contract templates and automatic conflict resolution strategies. In terms of overall lifecycle, a system is initiated to satisfy a set of formalised requirements. Agents respond to bids for joining a Virtual Organisation, where each bid is for a contract-based coalition. In this paper, we describe our approach and outline a set of research challenges.
WISER is a series of international workshops that focus on identifying and transferring techniques from other disciplines that might usefully be applied to software engineering research and practice.The workshops address this topic through presentations and discussions of both actual case studies and of ways in which potentially useful approaches can be identified, adapted and adopted within software engineering.
A relatively unexplored area in the field of software management is the implementation or release decision, deciding whether or not a software product can be transferred from its development phase to operational use. Many software manufacturers have difficulty in determining the 'right' moment to release their software products. It is a trade-off between an early release, to capture the benefits of an earlier market introduction, and the deferral of product release, to enhance functionality, or improve quality. In this research project software release decisions are researched from three perspectives: economics, decision-making and software management. All perspectives are reviewed, explored in-depth, both from a theoretical and from an empirical point of view, by studying practical examples. The results are used in a proposed methodology to improve strategic software release decisions, characterized by the existence of large prospective financial loss outcomes, including the presence of high costs for reversing a decision. The methodology identifies the critical factors for a high quality decision outcome, being the sum of quality of the decision inputs and the quality of the decision-making process.
Development of intelligent systems to support biomedical applications differs for traditional approaches to systems development. A large number of features needs to be extracted from data and processing of these is not satisfactory by conventional approaches and individuals. Development of such systems greatly changes the amount and nature of information available to physicians, and also the work involved in treating patients. Intelligent systems are learning-based and that makes them easier to adapt when diseases evolve or viruses mutate. This paper presents the use of an electronic nose and a neural network for classification of bacteria. It demonstrates how physicians can utilise it, in order to target their limited resources to specific patients. It also discusses how this work can be generalized in other similar domains and the lessons to be learnt.
In this paper we present an approach for improving memory efficiency using genetic algorithms. More precisely, we improve the internal memory fragmentation by finding the optimal configuration of a segregated free lists data structure. We have used trace instrumentation to generate the workload of memory allocations and deallocations from significant scenarios.The genetic algorithm used the workload as input to generate the optimal configuration among the huge number of potential solutions by evolving an initial population (a set of potential solutions). In practice, memory configurations are created on the empirical evidence based on the fact that the system works. However, a more scientific and rational approach is possible by using genetic algorithms. The approach we have used was fast and effective in providing the configuration parameters for the segregated free lists. The result is based on the use of heuristics and provides an excellent choice when a brute force approach is not feasible. Moreover, the use of genetic algorithms shows that the software engineering discipline can benefit from different research areas where complexity, adaptation and evolution are involved.
Context: The success of the evidence-based paradigm in other domains, especially medicine, has raised the question of how this might be employed in software engineering.Objectives: To report the research we are doing to evaluate problems associated with adopting the evidence-based paradigm in software engineering and identifying strategies to address these problems.Method: Currently the experimental paradigms used in a selected set of domains are being examined along with the experimental protocols that they employ. Our aim is to identify those domains that have generally similar characteristics to software engineering and to study the strategies that they employ to overcome the lack of rigorous empirical protocols. We are also undertaking a series of systematic literature reviews to identify the factors that may limit their applicability in the software engineering domain.Conclusions: We have identified two domains that experience problems with experimental protocols that are similar to those occurring for software engineering, and will investigate these further to assess whether the approaches used to aggregate evidence in these domains can be adapted for use in software engineering. Our experiences from performing systematic literature reviews are positive, but reveal infrastructure problems caused by poor indexing of the literature.
Starting from the belief that software development is a human activity, this paper tries to conceptualize software development as a knowledge-intensive design and distributed cognitive activity. This conceptualization leads to the argument that providing support for software developers to engage in knowledge collaboration with external knowledge repositories and peers is essential for software development environments. Technical and social challenges in providing such support are identified, and an illustrative system support that we have been developing is briefly described.
For software vendors the processes of release, delivery, and deployment to customers are inherently complex. However, software vendors can greatly improve their product quality and quality of service by applying a model that focuses on customer interaction if such a model were available. This paper presents a model for customer configuration updating (CCU) that can evaluate the capabilities of a software vendor in these processes. Eight extensive case studies of medium to large product software vendors are presented and evaluated using the model, thereby uncovering issues in their release, delivery, and deployment processes.
Graph Theory, which studies the properties of graphs, has been widely accepted as a core subject in the knowledge of computer scientists. So is Object-Oriented (OO) software engineering, which deals with the analysis, design and implementation of systems employing classes as modules. The latter field can greatly benefit from the application of Graph Theory, since the main mode of representation, namely the class diagram, is essentially a directed graph. The study of graph properties can be valuable in many ways for understanding the characteristics of the underlying software systems. Representative examples for the usefulness of graph theory on OO systems based on recent research results are presented in this paper.
This paper outlines the content of the workshop keynote presentation on the use of theory derived from other disciplines in empirical software engineering research. This presentation uses three previous studies, two of which involved the author, to illustrate this usage and to explore the lessons learned from this work.
One of the main dilemmas with which software development teams face is how to choose a software development method that suits the team as well as the organization. This article suggests a theory that may help in this process. Specifically, Extreme Programming (XP) is analyzed within the well known framework of the prisoner dilemma. We suggest that such an analysis may explain in what situations XP may fit for implementation and, when it is used, the way it may support software development processes.
This paper explores a theoretical linkage between software engineering and strategic management. Software engineering is now faced with two dynamic innovation streams: technological innovation and market innovation. Harshly shook by rapid technological development and highly volatile market environments, today's software development is under the constant necessity for swift and reliable development practices and market launch in appropriate timing. In short, software development has to be more and more strategic. Based on a brief review of the existing strategic management frameworks, the paper suggests that Eisenhardt's framework of 'Strategy as Simple Rules' is highly applicable to software development practices. Through a short case study of internet service development in Japan, the paper also suggests that dual roles of beta versions, as a product and media, would play a critical role in making strategic decisions in internet service development.
We review the literature on Free/Libre Open Source Software (FLOSS) development and on software development, distributed work and teams more generally to develop a theoretical model to explain the performance of FLOSS teams. The proposed model is based on Hackman's [34] model of effectiveness of work teams, with coordination theory [52] and collective mind [79] to extend Hackman's model by elaborating team practices relevant to effectiveness in software development. We propose a set of propositions to guide further research.
Aikido is a martial art whose core philosophy is about conflict resolution and taking care of our opponents and ourselves. My experience, and the experience of fellow aikidoists who work in software development, is that the practice and philosophy of aikido enhance our ability to be effective in the workplace. This paper discusses why this may be.
Article Share on Introduction to WISER'04 Authors: Nikolay Mehandjiev The University of Manchester, Manchester, UK The University of Manchester, Manchester, UKView Profile , Pearl Brereton Keele University, Keele, Staffordshire, UK Keele University, Keele, Staffordshire, UKView Profile Authors Info & Claims WISER '04: Proceedings of the 2004 ACM workshop on Interdisciplinary software engineering researchNovember 2004Pages 1–3https://doi.org/10.1145/1029997.1029998Published:05 November 2004Publication History 1citation271DownloadsMetricsTotal Citations1Total Downloads271Last 12 Months1Last 6 weeks0 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access
Much work in software architecture has been inspired by work in physical architecture, in particular Alexander's work on 'design patterns'. By contrast, Alexander's work is little-used in town planning and architecture. In this paper, we examine some of the reasons that this is so, describe some parallels and differences between the fields of physical and software architecture, and identify areas in which future collaboration may be fruitful. The notion of 'participatory design' is important in software engineering and in urban regeneration, but the participatory mechanisms in each field are quite different.
At present, system development in the automotive industry is characterized by increasing complexity and frequent changes caused by frequent innovations, fast-growing system complexity, expanding role of software, and changing business relationships. This dynamical environment demands flexible system development processes. The application of an inflexible process would usually result in the project team ignoring the process and performing development based on their own implicit knowledge and experience. Therefore practitioners are looking for development processes that strike a balance between project control, desired by project managers, and process flexibility, desired by developers. This paper presents an analysis of the suitability of existing system development methods for the style of interdisciplinary system development found in the automotive industry. Based on the results from the analysis, a plan for future research is derived from identified deficiencies of existing approaches.
A successful discipline of software engineering will, over time, incorporate within its own borders those theories and techniques from other disciplines which are relevant in and helpful to software development. Since both software engineering and its cognate disciplines will change over time, it must not only incorporate external theories and techniques, but establish active coordination with other disciplines. Having explicit models and plans for achieving this coordination is preferable to leaving it to chance. This paper outlines a model for coordinating software engineering and cognitive support research through theory transfer by applied theoreticians. Ongoing work on incorporating cognitive support theories into software engineering processes and education are cast as an example effort falling under this discipline coordination model. The model is conservative in that it does not suggest a radical transformation of software engineering, but our application to cognitive support does highlight a need for more directed theory application, and generates proposals for non-trivial additions to the accepted body of knowledge.