Skip to main content
main-content

Über dieses Buch

Prototyping is an approach used in evolutionary system development. In this book, the authors show which forms of prototyping can be employed to tackle which problems. They take a look at the tools used in everyday software development with a view to determining their suitability for prototyping, and attempt to elucidate prototyping as a methodological concept. Part I of the book looks at prototyping as an approach for constructing and evaluating models. Traditional approaches and phase-oriented life cycle plans are discussed. Prototyping overcomes fundamental problems associated with life cycle plans. The authors present their own concept of evolutionary system development. Part II shows to what extent technical support of evolutionary system development is possible. Various tools for supporting prototyping are discussed and prospective trends are indicated. Criteria are listed to help the reader choose between the various development environments currently available or likely to become available in the near future. Case studies are used to illustrate how prototype construction can be integrated in software projects.

Inhaltsverzeichnis

Frontmatter

Introduction

Introduction

Abstract
Software engineers are invariably confronted with the question of which development methods to use in order to produce good software. If we ask how exactly software development is to be organized, we come up against a wide variety of different concepts. But there is not only an abundance of concepts, there is even greater diversity in the terms used to describe them. What one software engineer chooses to call “process model” is termed by another “project strategy”; and there are “system requirements”, “requirements analyses”, “user needs analyses” and “software models”. How we can make practical use of the proposed concepts remains a mystery. At any rate, it would seem impossible to draw any sort of comparison between them.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

Software Development and Prototyping

Frontmatter

1. What is Prototyping?

Abstract
Software development has undergone drastic changes in recent years. New development strategies, methods and tools have become available to the practitioner, among them numerous tools supporting program specification, construction and testing. Such tools are no longer used individually, in an uncoordinated manner, but are instead embedded in an overall development strategy. Development strategies provide guidelines for constructing software systems in a project situation. They offer procedural suggestions covering all activities in the so-called software life cycle, or prescribe a particular method for use during these activities (e.g., structured programming, SADT, etc.).
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

2. Basic Elements of System Development

Abstract
System development is the extension of information system development. The term information system is used to denote the interaction between people whose working and communication activities are considered from the point of view of the exchange and processing of information within an organization, together with the relevant organizational arrangements. Our interest focusses on information systems in which computers form the technical core, along with their relevant application software. When we speak of software development in the present book, we invariably mean the process of manufacturing application software for use in an information system. Developing software involves drawing up models and encoding some of them in a machine-interpretable language. Software development is embedded in system development. The introduction of new or changed software in an information system results in changes in working and communication activities.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

3. Traditional Life Cycle Plans

Abstract
In the literature, models serving the same purpose as our model in Chapter 2, i.e., the description of the software development process, are known as life cycle models because they relate to the development, use and “discarding” of a software product. In life cycle models, the basic elements are in most cases merely put in sequence, the cycle being degenerate in the sense that it is, ideally, run through only once in the life of a software product.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

4. Prototyping

Abstract
In the previous chapter, we discussed the limitations of traditional life cycle plans. One fact which emerged clearly was that the major problems facing software developers today cannot be solved using life cycle plans. Equally clear, though, is the fact that prototyping can, in principle, solve these problems. The question that remains unanswered is that concerning the practical handleability of prototyping, and it is to this question that we now set out to provide an answer.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

5. Evolutionary System Development

Abstract
Prototyping is one approach existing alongside a number of others, such as the life cycle plan based on the “waterfall model”. In our discussion of the different approaches, we have highlighted the benefits to be had from using prototyping to support project work as compared with classical project management strategies. So far, though, we have confined ourselves to looking at the individual software project, without mapping out a global view of software development. This is precisely what we set out to do in the following sections.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

6. Evolutionary Process Models

Abstract
So far, we have looked at system development analytically in order to highlight the problems associated with software construction and their proposed solutions. We now go on to translate the results of this critical analysis into constructive development strategies. Here, a number of ideas have been put forward by computer scientists, all of them designed to avoid the weaknesses of traditional life cycle plans (see [FloyReisSchm89, Boehm88, BjerEhnKyng87]). We attempt to integrate these ideas into our own process model of evolutionary system development which emphasizes the conscious process of changing a user organization. Like any other model, our process model is based not only on technical and task-related considerations, but also on the personal values and views of those involved as to what software development is all about:
  • Software developers should base their design decisions on the wishes and conceptions of the future users of an application system.
  • Since it is impossible to completely anticipate the requirements and implications of a software system, design must focus on the modifiability and integratability of a system as well as the reusability of the parts already developed.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

Technical Support of Prototyping

Frontmatter

7. The Tool Landscape

Abstract
In Part II of our book, we consider how the construction of prototypes can be supported by tools. The tools currently in use are divided up into distinct classes. The following four chapters take a detailed look at each of these groups. The subsequent two chapters of Part II report on experience gained with prototype construction in software engineering projects conducted in industry and research. We also examine the interplay between the software development strategy, the groups affected and the tools used. Finally, we summarize the essentials of the book.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

8. Screen Generators

Abstract
In this chapter, we discuss the suitability of screen generators for prototype construction. To begin with, we outline the goals generally pursued when using these tools for designing and implementing user interfaces for interactive systems. We then specify some of the requirements for screen generators with a view to their use for prototyping. To conclude, we present tool components of generators currently in use and evaluate them with respect to their usability in conjunction with prototype-oriented development strategies.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

9. Database-Oriented Development Systems

Abstract
This chapter gives an overview of database-oriented development systems which we discuss in relation to prototype construction. We begin by clarifying the terms and concepts used, and then consider the various system components, illustrating their use by means of an example. To conclude, we undertake an assessment of the systems with respect to their suitability for prototyping.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

10. Very High Level Languages

Abstract
This chapter gives an overview of Very High Level Languages, insofar as they are of interest for the construction of functional prototypes. We consider VHLLs from two different angles, examining whether they are used to gain a better understanding of
  • design (i.e., the construction process) or
  • implementation (i.e., the constructed product).
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

11. Programming Environments

Abstract
In this chapter, we discuss the concept of programming environments as a technical framework for prototype construction. To begin with, we explain what we mean by a programming environment, and then go on to discuss the types of languages needed in a programming environment and the demands made on them. This is followed by an outline of what we consider to be an “ideal” programming environment for supporting prototyping, along with the set of tools it should provide. In the final sections, we assess the importance of available programming environments for prototyping.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

12. Prototyping in Practice

Abstract
In this chapter we look at the role already being played by prototyping in industrial software practice. This involves going beyond the examples considered in Section 4.5 and combining discussion of the concepts examined so far and our own assessment of the relevant tools with practical experience in this field. The purpose of this chapter is to provide a sort of guide to the typical approaches and problems associated with prototyping. To this end, we draw not only on first-hand reports from the literature, but also on our own experience with the construction of large software systems as well as with teaching groups of students (see [BaeBudKuhlSylZue88, GrycKaut90]). Another important source was our analysis of a number of industrial software projects which we conducted in the context of a GI working group.52
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

13. The Groups Involved in Prototyping

Abstract
In the course of this book, it should have become clear that, whatever form it takes, prototyping invariably means a departure from traditional ways of thinking and working in software development. And this has — as we have repeatedly seen in the previous chapter — repercussions for the groups involved. Following the division adopted so far, we now go on to consider what the effects are on the three main groups involved in the design of prototyping processes:
  • the developers,
  • the users, and
  • the management (a distinction being made in specific cases between user management and DP management).
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

14. Summary

Abstract
This final chapter summarizes the main points made in the previous chapters. It thus recapitulates, for the benefit of the reader, on the ideas and arguments put forward by us and the approaches we have chosen to adopt in our work. In addition, it provides a series of cross-references and may thus serve the reader as a sort of detailed index to the topics treated in the book.
Reinhard Budde, Karlheinz Kautz, Karin Kuhlenkamp, Heinz Züllighoven

Backmatter

Weitere Informationen