Prototyping: an approach to evolutionary system development

From MaRDI portal





This book is a monograph on prototyping as a software development paradigm. The first part, entitled `Software Development and Prototyping', begins with a short introduction to the concept of prototyping. Then the authors introduce a notation for software development processes and discusses traditional processes ('life cycle plans'). The next chapter investigates the different roles prototyping can play in systems development and gives examples. The rest of part one deals with evolutionary system development and evolutionary process models. The second part covers the `technical support of prototyping'. After an overview of the tool landscape, four concepts that support prototyping more in detail are discussed: screen generators, database-oriented development systems, very high level languages, and programming environments. The last two chapters are devoted to an assessment of the use of prototyping in practice and to the humans involved in prototyping. The book concludes with a summary. The book covers central aspects of prototyping. As the subtitle indicates, the focus lies on prototyping in a framework of evolutionary system development. The authors tackle both theory (primarily in part one) and prototyping in practice (chapter 12 in part two). The book is not only a compilation of facts. The authors also state their assessments of the major topics. Despite this positive general impression I am not quite happy with this book. In my opinion, there are several important omissions and weaknesses. I miss the following topics: -- development methods for prototypes -- configuration management (which is a key support concept for evolutionary system development in general and for prototyping in particular) -- an investigation of throwaway prototypes vs. pilot system prototypes with regard to both software engineering practices (part I) and technical support needs (part II) -- the use of prototypes as a mechanism for risk control in conventional software development processes (e.g. Boehm's spiral model) -- a study of the coexistence problems between prototypes and written specifications -- a discussion of the problems of contracts and acceptance tests in the absence of written requirements specifications. The following items are, in my opinion, weak points in the material presented: Two non-consecutive chapters on prototyping in part one are problematic. I miss clear and sound definitions of the terms prototyping, prototype, prototype proper, breadboard, and pilot system located together in one chapter. Moreover, there is no clear distinction between goals and application fields of prototyping (chapter 4.2). The net model used to characterize different development concepts is inadequate due to its neglect of the dimension of time. The examples of software development concepts in chapter 2 are questionable: the reconstruction of the \(V\)-model in terms of the net model employed by the authors contains errors. I have never seen before the models of Boar and Benington in a software engineering textbook. Moreover, to ``use these examples to check whether our terminology is sound may be adequate for a research paper, but not for a monograph. There seems to be a confusion between product and process, at least in terminology: Figures 13 to 16 all employ the same net notation showing the dependencies of worksteps and intermediate products. However, Fig. 13 is titled Prototyping (i.e. a process), whereas Figures 14 to 16 are titled Prototype, Breadboard, and Pilot System (i.e. products). In software engineering, it is important to differentiate between concepts (`what'), methods (`how to do') languages (`how to express'), and tools (`how to support'). The authors do not follow these distinctions: languages are tackled in a chapter on tools (chapter 7), concepts, languages, and tools are intermixed (e.g., in chapter 9), and methods are missing. The chapter on screen generators does not cover the important topic of languages and tools for building graphic user interfaces. From a software engineering standpoint, throwaway prototypes and pilot system prototypes have different technical support requirements. However, the authors do not elucidate these differences. Additionally, I criticise several details. For example: \(\bullet\) I doubt whether there is something like the prototype in the software development process (p. 34). \(\bullet\) I do not believe that ``each prototype serves as a basis for subsequent prototypes or for the application system (p. 35). \(\bullet\) I do not find it very helpful to read ``where necessary, prototypes are supplemented by written system specifications when I get no further information what ``where necessary means (p. 35). \(\bullet\) Chapters 12 and 13 on prototyping in practice and on the groups involved in prototyping do not fit into part two which is titled `Technical support of prototyping'. They should form a part of their own. The English style of the text is eloquent (an Englishman edited the draft manuscripts of the German speaking authors.) But alas, that eloquence makes the text difficult to read. The authors tend to use long, complex sentences (for example, a five-line paragraph consisting of one single sentence on p. 66). Frequently, I had to read a sentence at least twice in order to understand it properly. The existence of a monograph on prototyping is a positive fact as such. Despite of all its weak points, the book contains a lot of good material. However, due to the omissions and weaknesses mentioned above, I cannot recommend it for standalone reading. I would only use it as a course lecture, where its contents can be discussed in class and can be contrasted or augmented with additional material.











This page was built for publication: Prototyping: an approach to evolutionary system development

Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q4023868)