Software Engineering with Ada, Third Edition

Authors: Grady Booch, Doug Bryan and Charles Petersen Software Engineering with Ada, Third Edition by Grady Booch, Doug Bryan and Charles Petersen ISBN: 0-8053-30608-0, 1994, 224 pages, Softcover Available April, 1994 Published by Addison-Wesley Publishing Co. <awbook@aw.com> Posted on the Internet 05 May 94 PREFACE Ada is a general-purpose programming language with considerable expressive power. It was developed at the initiative of the United States Department of Defense in response to the crisis in software development. Ada was designed specifically for the domain of large, real-time, embedded computer systems, although it will certainly have an impact on many other application areas. Unlike most other production high-order languages, such as FORTRAN, COBAL or even Pascal, Ada not only embodies may modern software development principles but also enforces them. The greatest benefits in this common high-order language effort will thus be gained from the application of good software development methods that are facilitated by using Ada as the language of expression. As a result, the introduction of Ada represents a tremendous opportunity for improvement in the clarity, reliability, efficiency, and maintainability of software systems. Ada is more than just another programming language, however. Along with the Ada Programming Support Environment, it represents a very powerful facility that helps us understand problems and express their solutions in a manner that directly reflects the multidimensional real world. THE THIRD EDITION OF SOFTWARE ENGINEERING WITH ADA Ada has truly entered the mainstream of computer science. The third edition of this book was written in response to the language's growing use and to reflect the changing methods of problem solving. The third edition is, if you will excuse the pun, a repackaging of the second edition. Chapters have been combined, rewritten, and rearranged to better reflect today's way of thinking. This edition includes expanded code segments with more complete programs written in a more modern style. Most importantly, this third edition retains an emphasis on Ada's effective use in a software engineering context. This book thus serves as a complete ADA reference that is appropriate for the programmer who wishes to create Ada systems and the manager who needs to understand how to apply this powerful tool. The book presumes an understanding of the basic principles of programming. GOALS This book is not just another introduction to Ada. It has been written to satisfy three specific goals: * To provide an intensive study of Ada's features * To motivate and provide examples of good Ada design and programming * To introduce an object-oriented development method that exploits the power of Ada and, in addition, helps manage the complexity of large software systems In short, this book not only describes the details of Ada programming, but also suggests ways in which to best apply the features of the language in the creation of software systems. CONTENT FEATURES Structure Many texts present the detail of a programming language only from a syntactic or semantic perspective. In this book, we start with a software design approach and then introduce Ada from the top down in the context of good programming methods. The book is divided into six packages, each of which contains three to four logically related chapters. The first package begins with a brief look at the Ada problem domain, and includes an examination of Ada's development history to provide a perspective on some of the features on the language. The primary objective of this package is to discuss the principles of software engineering as it relates to object-oriented development. Package 1 concludes with an overview of the language. The second package contains the first two of five design problems (one of which is revisited and expanded later), as well as a discussion of abstract data types, and details of the data types provided in the Ada language. The third through the sixth packages provide a detailed presentation of Ada built around five complete design examples. Each problem is increasingly more complex, and together they require the application of almost every Ada feature. In addition, these problems provide a vehicle for demonstrating the object-oriented development method, along with a programming style that emphasizes understandability. The chapters encompassing these five large examples present a detailed discussion of Ada's constructs. The sixth package also includes a discussion of the problems associated with very large programming systems and presents the last of the design problems. Resources A set of exercises for students is provided at the end of most of the chapters. Difficult problems are marked with a star (*). In addition, the book concludes with six appendices that provide further technical details of Ada. The lettering of the appendices is arranged to more closely align with LRM (Language Reference Manual) The first three describe the predefined elements of the language, and the specification for all predefined packages including those associated with all aspect of input and output. The next two appendices contain a summary style guide and comprehensive, easy-to-read, alphabetized syntax charts. The last appendix previews Ada 9X, including the major proposed changes to the language, such as: * Full implementation of object-oriented run-time polymorphism * Tree structure subunit library for easier management of large programming systems * Improvements in real-time problem-solving mechanisms * Annexes to the language for special problem areas. Course Organization This is a "generic" book in the sense that it can be used at a number of levels. Using the second edition, the material has been taught in a one-semester course (40 one-hour lessons), as a five-day seminar, and as a four-week, all-day intensive program. The following outline represents the organization of materials from this third edition with the same goals in mind. Lesson 1 Chapter 1: Introduction Lessons 2-3 Chapter 2: Software Engineering Lessons 4-5 Chapter 3: Object-Oriented Design Lessons 6-8 Chapter 4: An Overview of the Language Lesson 9 Chapter 5: The First Design Problem: Document Concordance Lessons 10-12 Chapter 6: Data Abstraction and Ada's Types Lesson 13 Chapter 7: The Second Design Problem: Database Problem Lessons 14-16 Chapter 8: Subprograms Lessons 17-18 Chapter 9: Expressions and Statements Lessons 19 Chapter 10: The Second Design Problem Lessons 20-21 Chapter 11: Packages Lessons 22-23 Chapter 12: Generic Program Units Lesson 24 Chapter 13: The Third Design Problem: Generic Tree Package Lessons 25-27 Chapter 14: Tasks Lessons 28-29 Chapter 15: Exception Handling Lessons 30-31 Chapter 16: Machine Representations Lesson 32 Chapter 17: The Fourth Design Problem: Lessons 33-34 Chapter 18: Input/Output Lessons 35-36 Chapter 19: The Software Life Cycle with Ada Lessons 37-38 Chapter 20: Programming in the Large Lesson 39 Chapter 21: The Fifth Design Problem: Heads-Up Display Lesson 40 Appendix F: Ada 9X In addition, the following structure is appropriate as a brief introduction to the application of Ada for program managers: Block 1 Chapter 1: Introduction Block 2 Chapter 2: Software Engineering Chapter 19: The Software Life Cycle with Ada Block 3 Chapter 3: Object-Oriented Design Chapter 4: An Overview of the Language Block 4 Chapter 21: The Fifth Design Problem Chapter 20: Programming In the Large Appendix F: Ada 9X Reliability The Reference Manual for the Ada Programming Language was issued jointly by The Department of Defense as a military standard and by the American National Standards Institute as ANSI/MIL-STD-1815A, on February 17, 1983. All material in this book meets that standard. To ensure their accuracy, all of the design examples and code fragments in the book have been tested using a validated Ada computer. THE AUTHOR TEAM This edition is the result of the cooperative efforts of three people: Grady Booch, Doug Bryan, and Charles G. Petersen. The combined efforts of these three authors and teachers have influenced many thousands of programmers and managers over the past 10 years. Grady Booch, a recognized expert in Ada, has taught at the United States Air Force Academy and has conducted seminars throughout the United States and in Europe. He has presented the technical details of the language to groups at a number of levels - undergraduates, graduate students, nonprogrammers, professional programmers, and program managers. Through this experience, he has tested various methods of presenting language features, observed their successes and failures, and heard the real needs of practicing software developers. Doug Bryan, from Stanford University, has become a household name in the Ada community and is considered an "Ada lawyer" by many. He has gained his notoriety through the "Dear Ada" column that is a regular feature of Ada letters, published bimonthly by the Association of Computer Machinery's Special Interest Group for Ada (SIGADA). Charles G. Petersen, a professor at Mississippi State University with degrees in engineering and computer science, has 10 years of engineering experience and 20 years of teaching experience at the university level. He has been involved in teaching Ada for 10 years and has published three other Ada textbooks, including Ada: Introduction to the Art and Science of Programming with Walter J. Savitch, and File Structures with Ada with Nancy E. Miller. ACKNOWLEDGMENTS We wish to thank a number of people who helped us during the preparation of this manuscript. Charles Petersen has played a very valuable role in bringing this project to a close and in preparing the manuscript for production, and we wish to especially acknowledge his contribution. We also want to thank the many reviewers who provided us with guidance during this edition as well as in the earlier editions. They include Russell Abbott, Gayle Adams, Christine Ausnit, Jack Beidler, Ben Brosogol, Kenneth Bowles, Doug Bryan, Luwanna Clever, John Cupak, Larry Druffel, Michael Feldman, Gerry Fisher, John Foreman, Ray Ford, Dean Gonzalez, John Goodenough, Samuel S. Harbaugh, Hal Hart, Edward Lamie, Akhtar Lodger, Charles McKay, Mike Murphy, Elliott Organick, Carol Righini, Bryan Scharr, James Schnelker, Larry Schwartz, Sally Shepherd, Robert Shock, John Showalter, and John Warner. * Available wherever fine technical books are sold. Please consult the bookstore listing for a location near you. * For direct orders to Addison-Wesley, please call 1-800-822-6339 and have your credit card handy. * To be included on the Addison-Wesley on-line information server, please send an email message to awbook@aw.com. The subject line should be 'information' and the body of the message should be 'send information'. Adding your name to this listing will enable us to keep you informed of all new titles.