Requirements Engineering:
Ignorance Hiding and the Importance of Ignorance

Daniel M. Berry

Cheriton School of Computer Science
University of Waterloo
Waterloo, ON, Canada


This two-part talk observes that very often the requirements engineer is totally ignorant of a client's domain. The first part discusses techniques for conducting quality requirements engineering despite this ignorance, namely ignorance hiding. It describes an experience by the authors as a programmer and a client respectively. The programmer applied the concepts of abstract data typing, in the form of ignorance hiding, and strong typing to arrive at complete, consistent specifications of the client's program. Amazingly, these specifications did not undergo the usual modifications as the program itself was being designed, implemented, tested, debugged, and accepted. The experience suggests a possible method for arriving at requirements based on the above-mentioned concepts.

The second part observes that this very ignorance that is being hidden is essential for doing a thorough job of requirements elicitation. Specifically, it describes some more recent confirmation of the effectiveness of the method described in the first part and suggests the importance of having a person who is ignorant about the application area on the requirements engineering team.