Software Prototyping in Data and Knowledge Engineering / Edition 1

Software Prototyping in Data and Knowledge Engineering / Edition 1

ISBN-10:
0792360168
ISBN-13:
9780792360162
Pub. Date:
11/30/1999
Publisher:
Springer Netherlands
ISBN-10:
0792360168
ISBN-13:
9780792360162
Pub. Date:
11/30/1999
Publisher:
Springer Netherlands
Software Prototyping in Data and Knowledge Engineering / Edition 1

Software Prototyping in Data and Knowledge Engineering / Edition 1

Hardcover

$109.99 Current price is , Original price is $109.99. You
$109.99 
  • SHIP THIS ITEM
    Qualifies for Free Shipping
  • PICK UP IN STORE
    Check Availability at Nearby Stores

Overview

This monograph describes an innovative prototyping framework for data and knowledge intensive systems. The proposed approach will prove especially useful for advanced and research-oriented projects that aim to develop a traditional database perspective into fully-fledged advanced database approaches and knowledge engineering technologies.
The book is organised in two parts. The first part, comprising chapters 1 to 4, provides an introduction to the concept of prototyping, to database and knowledge-based technologies, and to the main issues involved in the integration of data and knowledge engineering. The second part, comprising chapters 5 to 12, illustrates the proposed approach in technical detail.
Audience: This volume will be of interest to researchers in the field of databases and knowledge engineering in general, and for software designers and knowledge engineers who aim to expand their expertise in data and knowledge intensive systems.

Product Details

ISBN-13: 9780792360162
Publisher: Springer Netherlands
Publication date: 11/30/1999
Series: Mathematics and Its Applications , #497
Edition description: 1999
Pages: 408
Product dimensions: 6.69(w) x 9.61(h) x 0.36(d)

Read an Excerpt


Chapter 1: The Prototyping Approach to Software Development

From the middle 1980s the topic of software prototyping has received an intensive and widespread attention in the literature, thus resulting in a correspondingly extensive and confusing terminology. In the 1990s, primarily thanks to object-oriented technology, prototyping has evolved from a requirement definition strategy into a mainstream approach to software development.

A prototype is a dynamic model of the software system under construction. From the implementation point of view, a prototype is either a throwaway or the core of an application system. In the first case, the prototype serves specification purposes, in the latter, it is the first delivered version of the final system, which, starting from the prototype, will grow in form and size through design, code, and test cycles.

Prototyping can be useful at various stages of design in order to fulfill many different goals. Conversely, different kinds of prototypes are appropriate for different stages of design. So, several distinct prototypes can be developed during the same project.

In the early stages of system development, prototyping can be used to gain a better understanding of the kind of product required and of the kind of support needed by the users in carrying out their tasks with computer aid. Later in the project, prototyping offers designers and developers an opportunity to try architecture and implementation alternatives. Moreover, prototyping plays an important role in testing out the proposed solutions: users can interactively experiment with application objects, behavior, data structure, or control mechanisms, while viewing familiar data being manipulated by the prototype.

Throughout the software project, a prototype can help to facilitate an effective communication between members of the design team, application domain experts, customers, and users.

The concepts hastily introduced above are delved into in more detail in the next sections of this chapter, which deals generically with the development of software systems, without classifying them into categories such as information systems or knowledge-based systems. The chapter is organized as follows: Section 1.1 deals with the waterfall model of the software life cycle and Section 1.2 introduces the concept of prototyping as an answer to its flaws. Section 1.3 describes two iterative software life cycle models, both including prototyping as a basic step. Iterative life cycles are the foundation of the continuous software development paradigm, which is discussed in Section 1.4, while Section 1.5 focuses on the user-centered paradigm, which is favored by prototyping. Section 1.6 introduces three prototyping approaches, Section 1.7 classifies four different kinds of prototypes, and Section 1.8 relates prototyping approaches to prototypes. Section 1.9 surveys the present main goals of software prototyping, and Section 1.10 investigates the use of prototyping in software evaluation. Section 1.11 stresses the importance and the difficulties of the involvement of end users in prototyping projects, and Section 1.12 highlights some major misconceptions about prototyping. Section 1.13 lists sixteen general rules for performing good prototyping. Section 1.14 highlights some requirements in order for CASE environments and tools to be adopted for prototyping. Finally, Section 1.15 emphasizes the appropriateness of object-oriented programming for prototyping, and Section 1.16 hints at some requirements of object-oriented development environments necessary to support prototyping projects.

1.1. Linear Software Development

In the 1980s, poor understanding of system requirements, and, by extension, the lack of adequate validation of the correctness of requirements, had proven a major cause of system failure and customer dissatisfaction. Statistical data testified that half of all bugs discovered in software projects could be traced to errors in requirements (Tavolato and Vincena, 1984).

An underlying cause of requirement difficulties was the reliance on idealized software life cycle models that fail to take into consideration the fact that requirements of large, complex systems are often not well understood prior to development and evolve over time. The classical model of the software life cycle was the waterfall model (Royce, 1970; Boehm, 1976; Agresti, 1986), according to which software development is organized into sequential phases. Requirements gathering and analysis is carried out first, being followed by the definition of specifications. The next phase is design, which precedes coding and testing. Clearly defined criteria are used in order to assess the completion of each phase: they basically specify that a given document or piece of software must be produced in order to successfully finalize the phase.

The waterfall model helps in project management by providing checkpoints to ensure that the product development can be effectively handled and that it remains on schedule. However, this organization is based on the tacit assumption that it is possible to produce complete and correct requirements and specifications before designing the system and developing any software. Instead, although it is important to specify the desired system behavior as much as possible at the start, it is almost always infeasible for users to accurately describe operational requirements prior to development since the human mind cannot foresee all the ramifications of the behaviors of a dynamic system. Moreover, users, being often unable to comment on technical design documents, approve paper specifications out of frustration with the lengthy specification process and lack of comprehensibility of the resulting product.

Conversely, in spite of the traditional developers' conviction that they know what the users really want, the more substantial the system, the more developers may fail to understand the users' statement of requirements and translate them into software specifications. So, many requirements errors are passed undetected to the later phases of the waterfall life cycle and their correction becomes progressively more and more expensive as it is delayed (Davis, 1990a). In addition, designers may misunderstand requirement specifications, as they are often expressed in natural language, and therefore they are liable to be ambiguous.

1.2. Software Prototyping

Prototyping was initially advocated by the software engineering community as a means for the early exploration and validation of system requirements (Gomaa and Scott, 1981; Rzepka and Daley, 1986) and as an answer to the need to reveal, understand, enforce and check user requirements within the ongoing design. A prototype was meant as a dynamic model that can be tested by developers and real operators so as that requirements can be validated, changed, or refuted. Paper documents representing requirements and design are static and passive, while a prototype is a dynamic visual model of the user requirements, which provides a far more effective basis for dialog between developers and users. The word `model' is intentionally vague: prototypes range from crude non-interactive, to realistic interactive systems that cannot, at a glance, be distinguished from the final product.

Various kinds of prototypes may be developed to elicit different kinds of requirements. Each group of requirements is then demonstrated in the dedicated software prototype, thereby allowing the assessment by users. This form of prototyping is sometimes called requirements animation (Preece et al., 1994).

Broadly speaking, depending on the `material' with which prototypes are built, two categories can be identified: paper-based and computer-based prototypes (Preece et al., 1994)...

Table of Contents

1 The Prototyping Approach to Software Development.- 1.1 Linear Software Development.- 1.2 Software Prototyping.- 1.3 Iterative Software Development.- 1.4 The Evolutionary Perspective of Software Development.- 1.5 User-Centered Software Design and Development.- 1.6 Software Prototyping Approaches.- 1.7 Classification of Software Prototypes.- 1.8 Software Prototyping and Prototypes..- 1.9 Goals of Software Prototyping..- 1.10 Prototyping and Software Evaluation..- 1.11 Involvement and Role of Users in Software Prototyping.- 1.12 Misconceptions about Software Prototyping.- 1.13 Rules of Software Prototyping.- 1.14 Requirements for Software Prototyping Environments.- 1.15 Object-Oriented Programming and Prototyping.- 1.16 Object-Oriented CASE Tools for Prototyping.- 2 Overview of Database Technology.- 2.1 Extended Relational Databases.- 2.2 Deductive Databases.- 2.3 Object Databases.- 2.4 Active Databases.- 2.5 Temporal Databases.- 2.6 Spatial Databases.- 2.7 Multimedia Databases..- 2.8 Data Warehousing..- 2.9 Data Mining.- 3 Overview of Knowledge-Based Technology.- 3.1 Knowledge-Based Systems..- 3.2 The Challenge of Knowledge-Based Systems..- 3.3 Knowledge-Based Technology: Techniques, Tools and Methodologies.- 3.4 KBS Techniques.- 3.5 KBS Tools.- 3.6 KBS Methodologies.- 3.7 Beyond Knowledge-Based Technology: A knowledge Management Perspective.- 4 Data and Knowledge Intensive Systems.- 4.1 Computer Problem-Solving.- 5 The Prototyping Hierarchy.- 5.1 Approach and Architecture.- 5.1.1 Star Architecture.- 5.2 Reference Application..- 6 The Relational Layer.- 6.1 Relational Paradigm.- 6.2 Relational Prototyping Language.- 6.3 Prototyping by Relational Techniques.- 6.4 Prototyping the Relational Layer.- 7 The Extended Relational Layer.- 7.1 Extended Relational Paradigm.- 7.2 Extended Relational Prototyping Language..- 7.3 Prototyping by Extended Relational Techniques.- 7.4 Prototyping the Extended Relational Layer.- 8 The Deductive Layer.- 8.1 Deductive Paradigm.- 8.2 Deductive Prototyping Language.- 8.3 Prototyping by Deductive Techniques.- 8.4 Prototyping the Deductive Layer.- 9 The Object Layer.- 9.1 Object Paradigm.- 9.2 Object Prototyping Language..- 9.3 Prototyping by Object Techniques.- 9.4 Prototyping the Object Layer..- 10 The Active Layer.- 10.1 Active Paradigm.- 10.2 Active Prototyping Language.- 10.3 Prototyping by Active Techniques.- 10.4 Prototyping the Active Layer.- 11 Prototyping Techniques Integration.- 11.1 Integrated Paradigm.- 11.2 Integrated Prototyping Language.- 12 Mapping Prototypes to Relational Databases.- 12.1 Transforming Passive Rules into Active Rules.- 12.2 Mapping Schemas..- 12.3 Mapping Declarative Expressions.- 12.4 Mapping Procedural Code.- 12.5 Mapping Nonrecursive Passive Rules.- 12.6 Mapping Active Rules.- References.
From the B&N Reads Blog

Customer Reviews