David M. Weiss

Learn More
An effective data collection method for evaluating software development methodologies and for studying the software development process is described. The method uses goal-directed data collection to evaluate methodologies with respect to the claims made for them. Such claims are used as a basis for defining the goals of the data collection, establishing a(More)
April–June 2000 169 Copyright 2000. Lucent Technologies Inc. All rights reserved. Introduction Software development proceeds as a series of changes to a base set of software. For new projects the base set may be initially empty. In most projects, however, there are incremental changes to an existing, perhaps large, set of code and documentation. Developers(More)
Although many new software design techniques have emerged in the past 15 years, there have been few changes to the procedures for reviewing the designs produced using these techniques. This paper describes an improved technique, based on the following ideas, for reviewing designs. <list><item>The efforts of each reviewer should be focussed on those aspects(More)
A software product line is a family of products that share common features to meet the needs of a market area. Systematic processes have been developed to dramatically reduce the cost of a product line. Such product-line engineering processes have proven practical and effective in industrial use, but are not widely understood. The Family-Oriented(More)
N o v e m b e r / D e c e m b e r 1 9 9 8 I E E E S o f t w a r e 3 7 ncreasingly, software engineers spend their time creating software families consisting of similar systems with many variations. While developers are pressed to build these families, they have no effective means for doing so. They are asked to create and reuse libraries of components but(More)
0 7 4 0 7 4 5 9 / 0 1 / $ 1 0 . 0 0 © 2 0 0 1 I E E E In this article, we look for technical solutions to accommodate the business needs for distributed software development. In doing so, we investigate quantitative approaches to distributing work across geographic locations to minimize communication and synchronization needs. Our main premise is inspired(More)
This paper discusses the organization of software that is inherently complex because there are very many arbitrary details that must be precisely right for the software to be correct. We show how the software design technique known as information hiding or abstraction can be supplemented by a hierarchically-structured document, which we call a module guide.(More)
Software engineers today are often asked to do both rapid production and careful engineering at the same time. One way to help resolve the tension between these often conflicting goals is to develop families of software and to invest in facilities for rapidly producing family members. Success in such an endeavor requires that the software engineers be able(More)