Many automated programming environments construct software by integrating predefined components from a software library. A fundamental challenge in this process is to match the programmer’s specified requirements against the stated capabilities of the components. We explain how the chances of successfully achieving a match can be increased by taking the program context surrounding each requirement into consideration. Formal rules, based on program refinement theory, are defined for context-based matching. The rules allow properties that can be proven to hold at a particular point in the program to justify matching with components that operate correctly only in such a context.
Colin J. Fidge