Communications of the ACM
A technique for software module specification with examples
Communications of the ACM
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Program development by stepwise refinement
Communications of the ACM
Designing software for ease of extension and contraction
ICSE '78 Proceedings of the 3rd international conference on Software engineering
The use of abstract data types to simplify program modifications
Proceedings of the 1976 conference on Data : Abstraction, definition and structure
The design of data type specifications
ICSE '76 Proceedings of the 2nd international conference on Software engineering
Gypsy: A language for specification and implementation of verifiable programs
Proceedings of an ACM conference on Language design for reliable software
Report on the programming language Euclid
ACM SIGPLAN Notices
Chapter I: Notes on structured programming
Structured programming
Programming-in-the-Large Versus Programming-in-the-Small
IEEE Transactions on Software Engineering
On the Design and Development of Program Families
IEEE Transactions on Software Engineering
An Introduction to the Construction and Verification of Alphard Programs
IEEE Transactions on Software Engineering
Chief programmer team management of production programming
IBM Systems Journal
Specification techniques for data abstractions
IEEE Transactions on Software Engineering
Proceedings of the workshop on Rapid prototyping
Hi-index | 0.00 |
This paper describes a program design discipline that has successfully produced well-modularized programs. The basic approach is to apply, in a uniform way, the concepts of data and procedural abstraction in a top-down decomposition during the initial programming-in-the-large phase of construction. This combination of data and procedural abstraction, called hybrid abstraction, views the system as composed almost entirely of abstract objects. The resulting structural design is partially expressed as a syntactic specification for a set of modules (a module being a set of objects) having no directly shared global data. In addition to the syntactic specification, the design expresses the abstract type decomposition and the structural relationships of the modules. Three relations on the set of modules define the hierarchies is called by, implements, and obtains resources from. These relations define the discipline and characterize the class of designs possible. Modules in practice are used in two different ways: single-instance use and multiple-instance use. Abstract objects can be of two different kinds: collection objects and singular objects. The relationships of these variations in module construction are illustrated. Three moderately large examples are shown. euclid is used to illustrate the discipline.