|
From: Robert C. <rob...@it...> - 2002-05-28 07:00:55
|
> -----Original Message----- > From: rea...@li... > [mailto:rea...@li...] On Behalf > Of Jason Filby > > Scott proposed we do a clean room > implementation... but how do you do that with header files? Same way as anything else. The person in the 'dirty room' reads *everything* that they can without entering NDA's. They also document everything that can be documented via reverse engineering. They then produce a formal specification from that. i.e. "image helper functions are to be defined in a C and C++ parseable header file called imagehlp.h. The following structures must be defined foo, bar and aleph. foo must contain exactly 5 members, with the following symbolic names: a,b and c. a must be represented by an unsigned 16 bit small-endian integral value... The following symbols must be defined: beta, gamma and delta. beta must evaluate to the integral value 16. gamma must evaluate to the integral value 45. " And so on. Someone in the 'clean room' then reads the formal spec and creates a set of headers. If the dirty room documenter did their job well, those headers will interoperate for both compilation and binary use immediately. If they didn't.... then you tell the dirty roomer that they got something wrong, and they revise the documentation. What happens is that the clean room person is deprived of the implementation tricks that made the headers compact/maintable etc, whilst still getting the interoperation information legitimatly. Rob |