Abstract:I am extremely pleased to have been able to organize the assembly of the set of papers contained in this special issue of the International Journal of Software and Informatics, honoring the career of Prof. Barry W. Boehm. The papers contained in this special issue were all contributed by friends, colleagues, and admirers of Prof. Boehm, and were presented during a special Symposium held in Beijing, China on April 26 and 27, 2011, under the sponsorship of the Institute of Software, Chinese Academy of Sciences and the International Journal of Software and Informatics. The range of the subjects of these papers matches the extraordinary breadth of interests and influences of Prof. Boehm and his work. The natures of the papers range from those that make very specific technical contributions to those that are conceptual and analytical, to those that are visionary. The subject matter of the papers addresses software measurement, software management, specific software development phases, and software processes, among other topics. All cite the specific influences, inspirations, and contributions of Prof. Boehm to the work, thereby serving as documented testimony to the far ranging influence that Prof. Boehm has had upon software engineering thought and software development practice. In "Measuring Agility and Architectural Integrity", a paper that focuses on measurement, a longstanding interest of Prof. Boehm's, Walker Royce tackles the difficult issue of how to quantify agility that nevertheless does not jeopardize the structural integrity of software. Ross Jeffery's paper, "Software Development Cost Modeling and Estimation Through a UNSW Lens", focuses on the measurement and estimation of a different software issue, namely cost, an area in which Prof. Boehm has made some of his most fundamental and long-lasting contributions (e.g. with his COCOMO models). Neil G. Siegel's paper, "Organizing Projects Around the Mitigation of Risks Arising from System Dynamic Behavior", shows how appropriate use of software measurement can help to mitigate risk. Risk mitigation is another issue that has been a strong and central focus of Prof. Boehm and his work, as it is a core issue behind his famous Spiral Model of software development. Another set of papers addresses the ways in which Prof. Boehm and his ideas have been broadly inspirational. In my own paper, "A Process Programmer Looks at the Spiral Model: A Tribute To the Deep Insights of Barry W. Boehm", I demonstrate how Prof. Boehm, through the Spiral Model, elucidates some profound insights about the fundamental nature of software and its development. The paper suggests that the community may have only scratched the surface of the important implications that could be drawn from the ideas behind the Spiral Model. Lori A. Clarke, in her paper, "Environment Support for Improving Software Development Processes: A Vision Influenced by the Work of Barry W. Boehm", similarly indicates how papers and ideas presented by Prof. Boehm have provided inspiration and foundations for her own work in the development and integration of software analysis tools. The application of these tools to new software domains, such as process software, is further evidence of the far-reaching impact of Prof. Boehm's work. Two papers provide further development of Prof. Boehm's long-held interest in the importance of software and system requirements and the difficulty of eliciting them. In "Attentiveness: Design for Reactivity at Scale", Gregory S. Hartman and William L. Scherlis explore these themes. Their paper suggests that better, more complete requirements specifications might result from focusing on attentiveness, a type of requirement whose importance has been overlooked. In "On 'The Right' Software", Dines Bjorner presents a rigorous approach to developing software and system requirements tied directly to a correspondingly rigorous approach to domain specification. Bjorner draws a strong and important parallel to Prof. Boehm's own insights about requirements, thereby strengthening both views, and attesting to the profundity of Prof. Boehm's views on this crucial area of software engineering. Finally, two papers take philosophical and visionary views of software engineering, each in its own way, indicating how Prof. Boehm's ideas and work stimulated and nourished the visionary thinking. Dieter Rombach's paper, Empirical Software Engineering Models: Can They Become the Equivalent of Physical Laws in Traditional Engineering?" suggests the possibility of developing a solid conceptual foundation for software engineering. He suggests that this more solid conceptual foundation could derive from a focus on empirical software models, an area pioneered by Prof. Boehm. In "Polyphonic Aspects of Software Process: Looking for Philosophical Foundation of Software Engineering", Kouichi Kishida's thoughts range broadly across Western and Eastern literature and philosophy in search of the proper philosophical foundation for software engineering. Along the way Kishida touches often upon how Prof. Boehm's ideas helped to provide guidance for his search. This paper is an eloquent treatise on how effectively grappling with deep and difficult problems, as Prof. Boehm has done, can lead to improvements in practice, the discovery of deeper issues and truths, and to stimulating the imaginations and visions of others. Ultimately, this volume can only hint and suggest at the breadth and depth of the ideas and work of our colleague, Prof. Barry W. Boehm. It is offered in the hope that the papers themselves will educate and stimulate, but also in the hope that they will also encourage the reader to follow the many references in these papers to explore in more depth the work of Prof. Boehm. I would like to thank the authors of these papers for their excellent contributions to this Special Issue of the International Journal of Software and Informatics. In addition I would like to express my sincere thanks to Prof. Ruqian Lu, the Editor-in-Chief of the International Journal of Software and Informatics, for giving me the great honor of serving as the Editor of this Special Issue. I would also like to express my very sincere thanks to Ms. Mei Fang for her outstanding leadership of the editorial work needed to prepare these papers for publication, which has allowed the publication of this volume on a very demanding schedule. Finally, on behalf of a very grateful software engineering community, I would like to thank our friend, colleague, and leader, Prof. Barry W. Boehm, for his tireless work and amazing contributions to the formation, nurturing, and maturation of our community. This Special Issue is a small, but very earnest measure of our esteem for Prof. Boehm and his work. Leon J. Osterweil
Abstract:Most organizations that depend on software are pursuing more flexible architectures and more agile life-cycle processes to increase business flexibility. What does agility look like, and how do we measure it? A truly agile project or organization should experience changes that are more straightforward and more predictable. Consequently, improvements are best measured by gauging the change trends in software baselines. A well-accepted tenet of software engineering states, "The later you are in the life cycle, the more expensive things are to fix." This iron law, an artifact of a waterfall culture, should not apply if you have transformed to agile software delivery with a well-architected system. This bold assertion is the root of the metric patterns presented in this paper.
Abstract:This paper investigates the manner in which Barry Boehm and his work have had an influence upon the research at UNSW into software development cost modeling and estimation. During the period 1979 to the present, faculty and students have investigated cost models for the commercial software development environment, project elapsed time compression, software sizing, estimation accuracy, and analysis of project history databases. This investigation reveals the foresight contained within the Boehm publications and the significant contribution made by these over the last three decades.
Abstract:Many of the key products and services used by modern societies are the result of large-scale engineering projects. Despite decades of theoretical and practical work in the art of systems engineering and project management, project execution results remain somewhat inconsistent, in the sense that many projects fail to produce a product that meets the original specifications, and many more projects achieve some measure of technical success only after taking significantly more time and/or money than originally expected. One source of such failures is the occurrence of unplanned and adverse dynamic behavior in the resulting system. This paper summarizes research being conducted to look at the potential of design-phase actions that centralize control of the eventual system's dynamic behavior as a potential solution to some instances of this problem. This approach could lead to increased chances of success on future major system development projects, through a new method for instituting better control of the dynamic behavior of such a system.
Abstract:This paper elaborates on implications of Barry W. Boehm's Spiral Model of software development. The paper notes that the Spiral Model presents a compelling view of software development, evocatively represented by a visual image that appeals strongly to intuition, and notes that the view and image have motivated and justified a range of important views of how software development should be done. This paper enhances and elaborates on the intuitions by supplementing them with a definition of the Spiral Model that is enunciated in terms of a rigorously defined language. The rigorous enunciation and accompanying alternative visual depiction are then used to provide clarification and formalization of some of the clearly-indicated elaborations of the Spiral Model. Both the Waterfall Model of software development and the Scrum agile method are presented as possible elaborations of the Spiral Model. Still other elaborations are indicated. Similarities in the visualizations of these development approaches suggest some underlying similarities in the approaches themselves, suggesting the potential value of effective process visualizations. The breadth of these elaborations is also used to suggest how the Spiral Model seems to provide a strong focus on some of the quintessential aspects of what comprises effective software development.
Abstract:Throughout his career, Barry Boehm has advocated the importance of understanding software development processes, measuring their performance, and using those measurements to guide the development of improved process models. In this paper, we describe PIE, a Process Improvement Environment, which supports that vision. PIE supports the definition of process models that can be analyzed and executed. The analysis is used to detect errors and vulnerabilities in the process models. Validated process models can then be simulated to detect inefficiencies and bottlenecks. Future work includes executing these process models, monitoring their performance, and then using that information to drive further process improvements.
Abstract:Clients of reactive systems often change their priorities. For example, a human user of an email viewer may attempt to display a new message while a large attachment is already downloading. To the user, an email viewer that delayed display of the message would exhibit a failure analogous to priority inversion in real-time systems. We propose a new quality attribute, attentiveness, intended to provide a unified way to model the forms of redirection offered by application-level reactive systems to accommodate the changing priorities of their clients. Modeling attentiveness as a quality attribute provides systems designers with a single modeling framework for policy and architectural decisions to address trade-offs among criteria such as responsiveness, overall performance, behavioral predictability, and state consistency. Clients of the reactive system could be human users or system components. This latter possibility suggests that the modeling framework must support an appropriate kind of composability, which would enable it to support architectural design of attentive systems at scale. At the policy level, the framework models a diverse set of familiar redirection options including cancel, undo, defer, suspend/preempt, and ignore. At the architectural level, the framework includes a suite of concepts to support the design of attentive systems and the refactoring of existing systems to enhance attentiveness. These concepts include: (1) Distinguishing "short" operations (such as an event notification) from "long" operations (such as an unbounded data transfer over a network). (2) Technical means to encapsulate long operations to prevent interference with redirection. (3) Technical means to enable use of light-weight checkpoints to support redirection while executing "long" operations. (4) Consolidation of responsibility for redirection to a relatively small group of components in the system. Policy and architecture come together in the form of a set of positive and negative patterns for realizing attentive systems. These patterns are derived from case studies of attentiveness failures and successes. This paper summarizes the key concepts of attentiveness, including modeling and architecture. The concepts are assessed against a variety of case studies, including refactoring experiments and new development projects involving both human-system interaction (in a document editor) and system-system interaction (in a client-server application). A principal goal is to develop a modeling framework and set of associated practices that can guide incremental improvements in enhancing the attentiveness of both existing and new reactive systems.
Abstract:Boehm[13,37] is credited to have formulated the "Two Rights" of software: the problem of getting the right software and the problem of getting the software right. The development processes needed to achieve software that is right, to us, requires that a proper study of the application domain be done before a serious requirements study is attempted; and to achieve the right software, that is, software that is correct, to us, requires that a proper engineering degree of formalism be applied to the entire development process; that is, that we re-interpret classical development processes. We shall in this paper focus only on the issue of obtaining the right software. In this paper talk we shall outline what we mean by a proper study of the application domain and how it influences the requirements development.
Abstract:Traditional engineering disciplines such as mechanical and electrical engineering are guided by physical laws. They provide the constraints for acceptable engineering solutions by enforcing regularity and thereby limiting complexity. Violations of physical laws can be experienced instantly in the lab. Software engineering is not constrained by physical laws. Consequently, we often create software artifacts which are too complex to be understood,tested or maintained. As too complex software solutions may even work initially, we are tempted to believe that no laws apply. We only learn about the violation of some form of "cognitive laws" late during development or during maintenance, when too high complexity inflicts follow-up defects or increases maintenance costs. Initial work by Barry Boehm (e.g., CoCoMo) aimed at predicting and controlling software project costs based on estimated software size. Through innovative life cycle process models (e.g., Spiral model) Barry Boehm also provided the basis for incremental risk evaluation and adjustment of such predictions. The proposal in this paper is to work towards a scientific basis for software engineering by capturing more such time-lagging dependencies among software artifacts in the form of empirical models and thereby making developers aware of so-called "cognitive laws" that must be adhered to. This paper attempts to answer the questions why we need software engineering laws and how they could look like, how we have to organize our discipline in order to build up software engineering laws, what such laws already exist and how we could develop further laws, how such laws could contribute to the maturing of science and engineering of software in the future, and what the remaining challenges are for teaching, research, and practice in the future.
Abstract:This retrospective essay summarizes 50 years experience of a first-generation programmer in Japan focusing on his thoughts on software process issues. It started from strong concern of the structure of program execution processes inside computer hardware, then went out of digital box to think about software development and maintenance processes, namely how to deal with issues between people and software. Finally his main concern turned to the social issues of software evolution processes in the Internet society. The concept of "immaterial labor" seems to be important to think about today's process issues outside of digital boxes.