This paper describes a methodology for designing Open Implementations -- software modules that can adapt or change their internals to accommodate the needs of different clients. Analysis techniques are used for capturing domain knowledge, user requirements, and domain properties that influence the module's eventual implementation. Design techniques are used for determining and refining the interfaces by which clients control the modules implementation strategies. The methodology has evolved over the past two years in several pilot projects.
Chris Maeda, Arthur Lee, Gail C. Murphy, Gregor Ki