software construction.
Publisher: Prentice-Hall
Published: 1988
Place of publication: Englewood Cliffs, NJ; London
Language: eng
First sentence: The principal aim of software engineering is to help produce quality software.
Description: Object-Oriented Software Construction presents the methods and techniques of object-oriented design, based on a careful assessment of the underlying software-engineering issues. The book reviews both the techniques needed to obtain the full extent of the approach and object-oriented systems design, with emphasis on effective module-interface design.  Numerous examples of reusable software components are presented covering many of the important everyday programming structures.  The ideas and concepts are made concrete by realizing them in the Eiffel object-oriented programming language. (Back cover copy)
Table of contents: title: Preface, viii; title: Syntax notation, xvii; title: . Part 1 Issues and Principles, 1; title: . 1 Aspects of software quality, 3; title: 1.1 External and internal factors, 3; title: 1.2 External quality factors, 4; title: 1.3 About software maintenance, 7; title: 1.4 The key qualties, 9; title: 1.5 Key concepts, 10; title: 1.6 Bibliographical notes, 10; title: . 2 Modularity, 11; title: 2.1 Five criteria, 12; title: 2.2 Five principles, 18; title: 2.3 The open-closed principle, 23; title: 2.4 Key concepts, 25; title: 2.5 Bibliographical notes, 26; title: Exercises, 26; title: . 3 Approaches to reusability, 27; title: 3.1 Repetition in programing, 27; title: 3.2 Simple approaches, 30; title: 3.3 Five requirements on module structures, 31; title: 3.4 Routines, 35; title: 3.5 Packages, 36; title: 3.6 Overloading and genericity, 37; title: 3.7 Key concepts, 39; title: 3.8 Bibliographical notes, 40; title: . 4 The road to object-orientedness, 41; title: 4.1 Process and data, 41; title: 4.2 Functions, data and continuity, 42; title: 4.3 The top-down functional approach, 43; title: 4.4 Why use the data?, 49; title: 4.5 Object-oriented design, 50; title: 4.6 Finding the objects, 51; title: 4.7 Describing objects: abstract data types, 52; title: 4.8 A precise definition, 59; title: 4.9 Seven steps towards object-based happiness, 60; title: 4.10, Key concepts, 63; title: 4.11 Bibliographical notes, 63; title: Exercises, 64; title: . Part 2 Techniques of Object-Oriented Design and Programming, 65; title: . 5 Basic elements of Eiffel programming, 67; title: 5.1 Objects, 67; title: 5.2 A first view of classes, 71; title: 5.3 Using classes, 73; title: 5.4 Routines, 79; title: 5.5 Reference and value semantics, 86; title: 5.6 From classes to systems, 90; title: 5.7 Classes vs. objects, 94; title: 5.8 Discussion, 94; title: 5.9 Key concepts, 101; title: 5.10 Syntactical symmary, 102; title: . 6 Genericity, 105; title: 6.1 Parameterizing classes, 105; title: 6.2 Arrays, 108; title: 6.3 Discussion, 109; title: 6.4 Key concepts, 110; title: 6.5 Syntactical summary, 110; title: 6.6 Bibliographical notes, 110; title: . 7 Systematic approaches to program construction, 111; title: 7.1 The notion of assertion, 112; title: 7.2 Preconditions and postconditions, 113; title: 7.3 Contracting for software reliability, 115; title: 7.4 Class invariants and class correctness, 123; title: 7.5 Some theory, 129; title: 7.6 Representation invariants, 131; title: 7.7 Side-effects in functions, 132; title: 7.8 Other constructs involving assertions, 140; title: 7.9 Using assertions, 143; title: 7.10 Coping with failure: disciplined exceptions, 144; title: 7.11 Discussion, 155; title: 7.12 Key concepts, 161; title: 7.13 Syntactical summary, 162; title: 7.14 Bibliographical notes, 163; title: Exercises, 163; title: . 8 More aspects of Eiffel; title: 8.1 Style standards, 165; title: 8.2 Lexical conventions, 168; title: 8.3 External routines, 169; title: 8.4 Argument passing, 170; title: 8.5 Instructions, 172; title: 8.6 Expressions 176; title: 8.7 Strings, 179; title: 8.8 Input and output, 180; title: 8.9 Key concepts, 181; title: 8.10 Syntactical summary, 181; title: . 9 Designing class interfaces, 183; title: 9.1 Lists and list elements, 184; title: 9.2 Objects as machines, 191; title: 9.3 Dealing with abnormal cases, 199; title: 9.4 Selective exports, 203; title: 9.5 Documenting a class, 204; title: 9.6 Discussion, 210; title: 9.7 Key concepts, 214; title: 9.8 Syntatical summary, 215; title: 9.9 Bibliographical notes, 215; title: Exercises, 215; title: . 10 Introduction to inheritance, 217; title: 10.1 Polygons and rectangles, 218; title: 10.2 The meaning of inhertance, 228; title: 10.3 Deferred classes, 234; title: 10.4 Multiple inheritance, 241; title: 10.5 Discussion, 250; title: 10.6 Key concepts, 251; title: 10.7 Syntatical summary, 251; title: 10.8 Bibliographical notes, 253; title: Excercises, 253; title: . 11 More about inheritance, 255; title: 11.1 Inheritance and assertions, 255; title: 11.2 Redefinition vs. renaming, 259; title: 11.3 The Eiffel type system, 261; title: 11.4 Declaration by association, 266; title: 11.5 Inheritance and information hiding, 272; title: 11.6 Repeated inheritance, 274; title: 11.7 Key concepts, 279; title: 11.8 Syntactical summary, 280; title: 11.9 Bibliographical note, 280; title: Exercises, 280; title: . 12 Object-oriented design: case studies, 281; title: 12.1 Outline of a window system, 281; title: 12.2 Undoing and redoing, 285; title: 12.3 Full-screen entry systems, 291; title: Exercises, 304; title: . 13 Constants and shared objects, 305; title: 13.1 Constants of simple types, 306; title: 13.2 Use of constants, 306; title: 13.3 Constants of class types, 308; title: 13.4 Constants of string type, 314; title: 13.5 discussion, 316; title: 13.6 Key concepts, 321; title: 13.7 Syntactical summary, 321; title: 13.8 Bibliographical notes, 322; title: Exercises, 322; title: . 14 Techniques of object-oriented design, 323; title: 14.1 Design philosophy, 323; title: 14.2 Finding the classes, 326; title: 14.3 Interface techniques, 328; title: 14.4 Inheritance techniques, 329; title: 14.5 Woudl you rather buy or inherit?, 332; title: 14.6 Bibliographical notes, 334; title: Exercises, 334; title: . 15 Implementation: the Eiffel programming environment, 335; title: 15.1 The implementation, 335; title: 15.2 Compilation and configuration management, 336; title: 15.3 Generating C packages, 341; title: 15.4 Performance issues, 343; title: 15.5 Other aspects of the environment, 345; title: . 16 Memory management, 353; title: 16.1 What happens to objects, 353; title: 16.2 The casual approach, 358; title: 16.3 Reclaiming memory: the issues, 359; title: 16.4 Programmer-controlled deallocation, 359; title: 16.5 The self-management approach, 360; title: 16.6 Automatic storage management, 365; title: 16.7 The Eiffel approach 367; title: 16.8 Key concepts, 369; title: 16.9 Bibliographical notes, 370; title: Exercises, 370; title: . Part 3 Applying Object-Oriented Techniques in Other Environments, 373; title: . 17 Object-oriented programming in classical languages, 375; title: 17.1 Levels of language support, 375; title: 17.2 Object-oriented programming in Pascal?, 376; title: 17.3 Fortran, 376; title: 17.4 Object-oriented programming in C, 379; title: 17.5 Bibliographical notes, 383; title: Exercises, 383; title: . 18 Object-oriented programming and Ada, 385; title: 18.1 Packages, 386; title: 18.2 A stack implementation, 386; title: 18.3 Hiding the representation: the private story, 390; title: 18.4 Exceptions, 392; title: 18.5 Tasks, 396; title: 18.6 Key concepts, 397; title: 18.7 Bibliographical notes, 398; title: Exercises, 398; title: . 19 Genericity versus inheritance, 399; title: 19.1 Genericity, 400; title: 19.2 Inheritance, 406; title: 19.3 Simulating inheritance with genericity, 409; title: 19.4 Simulating genericy with inheritance, 410; title: 19.5 Genericity and inheritance in Eiffel, 418; title: 19.6 Discussion, 420; title: 19.7 Key concepts, 421; title: 19.8 Bibliographical notes, 421; title: Exercises, 422; title: . 20 Other object-oriented languages, 423; title: 20.1 Simula, 243; title: 20.2 Smalltalk, 437; title: 20.3 C extensions, 440; title: 20.4 Lisp extensions, 442; title: 20.5 Other languages, 443; title: 20.6 Bibliographical notes, 443; title: Exercises, 444; title: . 21 Further issues, 445; title: 21.1 Implementing reusability, 445; title: 21.2 Persistency, 446; title: 21.3 Concurrency, 447; title: 21.4 Bibliographical notes, 448; title: . Part 4 Appendices; title: . Appendix A Extracts from the Eiffel library, 451; title: A.1 Arrays, 451; title: A.2 General lists, 453; title: A.3 Array lists, 455; title: A.4 Linkable elements, 455; title: A.5 Linked lists, 463; title: A.6 Two-way lists, 469; title: A.7 Trees and nodes, 471; title: . Appendix B Eiffel: a quick overview, 475; title: B.1 Design principles, 475; title: B.2 Classes, 476; title: B.3 Assertions, 479; title: B.4 Exceptions, 480; title: B.5 Generic classes, 482; title: B.6 Multiple inheritance, 482; title: B.7 Polymorphism, 493; title: B.8 Deferred classes, 485; title: B.9 The implementation, 487; title: B.10 The environment, 488; title: . Appendix C Eiffel grammar, 489; title: C.1 Lexical conventions, 489; title: C.2 Syntactical specification, 490; title: C.3 Operator precedence, 494; title: . Appendix D Reserved words and special symbols, 495; title: D.1 Reserved words, 495; title: D.2 Special symbols, 495; title: . Appendix E Input, output and strings, 497`