The Next Software Breakthrough
oftware development evolves less quickly than the industry's own hype would suggest: The basic issues surrounding the design and construction of software have remained unchanged throughout its history. Nevertheless, it is possible to identify five breakthroughs that have occurred since the time software development was recognized as a discipline in its own right: • Structured programming, in the early '70s. • The rise of the C culture (including make, pipes, shells, scripting languages), in the late '70s. • The PC revolution, in the mid '80s. • Object technology, in the early '90s. • The Internet upheaval, happening now. These approximate times do not indicate when the ideas were invented (object technology, for example, dates back to Simula in 1967) but rather when they started to affect a large segment of the industry. Also, the list does not imply a personal judgment that these events were intellectually the most important (although I do think they were all beneficial); they are simply the ones that had the most effect on the industry. Using another criterion would have resulted in a different list (Lisp, for example, is not a breakthrough in the sense used here but was an intellectual milestone). Also note that the third and fifth items are not strictly software advances: As Niklaus Wirth remarked many years ago, our field remains driven in large part by progress in hardware. So what will be the sixth break-through? To predict what might come next, it is useful to consider two breakthroughs that did not happen. Software reuse did not happen. Although some reusable software elements have achieved a remarkable degree of success, especially in the Windows world, we have failed so far to realize the vision of refounding the software field as a components-based industry. The common explanation for the failure of reuse is that it requires a better management infrastructure. I disagree with this conclusion , because I think the major issues are in fact technical (see " The Reusability Challenge, " Feb. 1996, pp. 76-78). Adoption of formal methods did not happen. Here too we have seen some isolated successes (not to mention incessant discussions in the pages of Computer and IEEE Software), but the effect on the industry as a whole has been little more than a scratch on the surface. To explain the failure of formal methods, many point to the typical programmer's lack of mathematical training and to …

title: Library Design

title: Concurrent object-oriented programming on .NET
abstract: The SCOOP model (Simple concurrent object-oriented programming) offers a comprehensive approach to building high-quality concurrent and distributed systems. The model takes advantage of the inherent concurrency implicit in object-oriented programming to provide programmers with a simple extension enabling them to produce concurrent applications with little more effort than sequential ones. In the paper, the authors discuss the basic concepts of the model, such as processors and separate objects. They also present SCOOPLI, a library implementation of SCOOP for the .NET platform. They show how SCOOP concepts are mapped to .NET constructs, and discuss distributed programming with SCOOPLI, with a focus on .NET Remoting capabilities. Several programming examples illustrate the discussion.

title: Providing Trusted Components to the Industry
abstract: The software industry stands on feet of clay. However carefully we may strive to build correct and reliable software, we have no way of guaranteeing the quality of the result. Building correct and reliable software depends on the quality of so much else, from the hardware and the operating system to the compiler and the runtime libraries. And any significant software system has so many details and components of its own that we can hardly expect to get everything right if we do it all by ourselves. We describe an ambitious but realistic project that combines the ideas of reuse and formality with other more pragmatic techniques. The goal is to provide the entire software industry with a powerful set of reusable components deserving a high degree of trust.

title: Dependable Software
abstract: Achieving software reliability takes many complementary tech-niques, directed at the process or at the products. This survey summarizes some of the most fruitful ideas.

title: A Note on Computing Multiple Sums
abstract: In a recent paper, 1 ~:method was given for computing multidimensional sums in FORTRAN in a particular case •. We show that the general problem of computing mUltidimensional sums is best expressed by a recursive definition which can then be translated into a programming language. The method is applied to an example optimization"problem. ' "

title: Issues in practical application of an adaptive interface
abstract: The authors have been developing a prototype sys[em for installation in an operationat business environment. During the development, a number of issues have been encountered. These include: ● constraints arising from placing prototypes in operational environments . lack of guidelines for selecting types of adaptation ● difficulty determining adaptation criteria ● difficulty obtaining necessary data from users ● lack of guidelines for making information display decisions ● problems in testing ‘real world’ interfaces These issues are not readily solved with more sophisticated adaptation algorithms; rather. they point out the need for CO1Iect ing more information from attempts to bring intelligent interfaces to complex business environments.

title: Design and evaluation of an adaptive icon toolbar
abstract: As information systems become increasingly important in many different domains, the potential to adapt them to individual users and their needs also becomes more important. Adaptive user interfaces offer many possible ways to adjust displays and improve procedures for a user's individual patterns of work. This paper describes an attempt to design an adaptive user interface in a computer environment familiar to many users. According to one classification of adaptive user interfaces, the adaptive bar described in this paper would be classified as a user-controlled self-adaptation system.At the user's convenience, the adaptive bar offers suggestions for adding or removing command icons, based on the frequency and probability of specific commands. It also implements these changes once the user has agreed to them. Beyond the adaptive bar, the general behavior of the whole user interface does not change, thereby allowing the user to maintain a clear general model of the system. This paper describes the decision-making algorithm implemented in the bar. It also describes the bar's self-adaptive behavior of displaying the frequency of each icon's use through the icon's size. Finally, we present some encouraging preliminary results of evaluations by users.

title: Age group differences in world wide web navigation
abstract: In this study, we examined the effects of age and training on efficiency and preferences in a World Wide Web search activity. Older participants were able to complete most of the tasks, but took more steps to find the information than did younger adults. Factors in this inefficiency were patterns of returning to the home page and revisiting pages that had been seen before during a search. Interactive training improved efficiency and altered preferences. We discuss implications for training and design.