List price: US$39.95

Currently unavailable

Add to wishlist

AbeBooks may have this title (opens in new window).

Try AbeBooks


This book is intended to familiarise the reader with an interrelated cluster of concepts including data abstraction, abstract data types, information hiding, object-oriented design, and so forth within a specifically software engineering context. It is not intended as an exhaustive reference work in any of the subjects covered. Rather, it is intended to modify the "mind-set" of its intended readership, assumed to be undergraduates who have completed an introductory "programming methodology" course, probably based on the use of a language like Pascal. (A complementary readership is composed of practising software engineers who have imbibed some of these concepts "on the job" and who wish to see them explored and established within a coherent perspective). The motivation underlying its writing was the recognition of the difficulty that the average student (and the above average student for that matter) has in coming to terms with the concept of "programming in the large", or "architectural" software design.
This difficulty, which is endemic to the technology, is often exacerbated by the typical programming methodology course, with its emphasis on "programming in the small", or the detailed implementation of algorithms - providing a set of skills largely different from that involved in high-level, structural design. The importance of structure, of the separation of interface specification from implementation detail, with the primacy of the former over the latter, of data structures as the major structural features of software systems, are some of the priorities that the book attempts to justify and clarify, building from a base compounded of common sense and the technical knowledge that the intended readership might reasonably be expected to have. These issues are developed through a progression from a Pascal context, through recognisable developments of Pascal, to the fairly remote areas of algebraic specification and object-oriented programming environments, with the common, unifying theme of data abstraction.
show more

Product details

  • Paperback | 336 pages
  • London, United Kingdom
  • English
  • 0273032577
  • 9780273032571

Table of contents

Part 1 The design of large systems: large systems and complexity; abstraction and design; partitioning in software systems; programming in the large; evaluating design; in operational life; good high-level design. Part 2 Concepts of modularity: the nature of modules; module coupling; module cohesion; the principle and the benefits; summary. Part 3 Language structures and modularity: Pascal implementations of the stack; the data abstraction. Part 4 Languages and data abstraction - 1: MODULA-2; modules; library modules; abstract data types. Part 5 Languages and data abstraction - 2: Ada; Ada program units; review of Ada. Part 6 Information hiding - a case study: the problem; the algorithm; design - the conventional approach; analysis of the conventional design; improving the design by narrowing interface; Parnas' solution; the circular shifter interface; the sorter interface; the circular shifter revisited; information hiding. Part 7 Object-oriented design: conventional methodologies; software design; real world objects; object-oriented design; the methodology; object discovery by prototyping. Part 8 Reusability: criteria for reusability; data abstraction - the basis for reusability; genericity; design and reuse; extensibility. Part 9 Formal specification of abstract data types: a familiar example; an alternative semantics; a line editor; implementation bias; algebras and specifications; algebraic specification and implementation. Part 10 The object-oriented paradigm: objects and classes; inheritance. Part 11 Object-oriented languages; C++; statically and strongly-typed OOPLs; multiple inheritance.
show more