Abstract: This paper presents an approach to the design of information-systems software in which alternative designs can be created, as necessary, until specified requirements are met and specific objectives achieved. This approach takes advantage of, and in fact complements, the abstraction process that characterizes the abstraction-synthesis methodology of information-systems development. A broad concept of function support, as provided by the information system, and a design-independent specification of information-systems requirements, are basic features of this methodology. The view of design presented here takes advantage of these features by providing the necessary flexibility. Design itself is viewed as a search on the space of possible software-system structures until one which satisfies the requirements of the information system and achieves the project's objectives is found. The design space is defined on four dimensions that correspond to important layers of information-system software implementation.