The C programming language
A rational design process: How and why to fake it
IEEE Transactions on Software Engineering
Systematic software development using VDM
Systematic software development using VDM
Understanding Z: a specification language and its formal semantics
Understanding Z: a specification language and its formal semantics
Trace Specifications: Methodology and Models
IEEE Transactions on Software Engineering
Communications of the ACM
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Solution of a problem in concurrent programming control
Communications of the ACM
C Programming in the Berkeley UNIX Environment
C Programming in the Berkeley UNIX Environment
A procedure for designing abstract interfaces for device interface modules
ICSE '81 Proceedings of the 5th international conference on Software engineering
Models and languages for component description and reuse
ACM SIGSOFT Software Engineering Notes
Open implementation design guidelines
ICSE '97 Proceedings of the 19th international conference on Software engineering
Introducing API design principles in CS2
Journal of Computing Sciences in Colleges
Library unit development fundamentals
Proceedings of the 48th Annual Southeast Regional Conference
Hi-index | 0.00 |
While the benefits of modular software development are widely acknowledged, there is little agreement as to what constitutes a good module interface. Computational complexity techniques allow evaluation of algorithm time and space costs but offer no guidance in the design of the interface to an implementation. Yet, interface design decisions often have a critical effect on the development and maintenance costs of large software systems. Criteria that have led to simple, elegant interfaces are presented in detail. These criteria have been developed and refined through repeated practical application. The use of the criteria is illustrated with concrete examples.