ABSTRACT
As software projects continue to grow in scale, being able to maximize the work that developers can carry out in parallel as a set of concurrent development tasks, without incurring excessive coordination overhead, becomes increasingly important. Prevailing design models, however, are not explicitly conceived to suggest how development tasks on the software modules they describe can be effectively parallelized. In this paper, we present a design rule hierarchy based on the assumption relations among design decisions. Software modules located within the same layer of the hierarchy suggest independent, hence parallelizable, tasks. Dependencies between layers or within a module suggest the need for coordination during concurrent work. We evaluate our approach by investigating the source code and mailing list of Apache Ant. We observe that technical communication between developers working on different modules within the same hierarchy layer, as predicted, is significantly less than communication between developers working across layers.
Index Terms
- Design Rule Hierarchies and Parallelism in Software Development Tasks
Recommendations
Critical Decisions in Software Development: Updating the State of the Practice
This article focuses on how to choose the "right" software development process, how to structure global software design chains, how to manage the interaction of project structure and software design, and how to balance innovation and efficiency in a ...
Teaching software architectures and aspect-oriented software development using open-source projects
ITiCSE '09The complexity and the big size of current software systems are challenges to be faced in software development. In the last few years, these challenges have increased the effort required to develop such large software systems. As a result, students must ...
Software development: what it is, what it should be, and how to get there
Developing large software systems is notoriously difficult and unpredictable. Software projects are often canceled, finish late and over budget, or yield low quality results --- setting software engineering apart from established engineering ...
Comments