Some important issues in engineering the requirements of a distributed software system and methods that facilitate software system design for distributed or parallel implementations are discussed. The issues are presented from a knowledge engineering perspective and divided into four levels: acquisition; representation; structuring; and design. The acquisition level entails the methods for eliciting system requirements data (attributes and relationships of software entities) from the end-user group using a model of context classes. A context class is a domain of a software system in which software objectdentities have similar attributes or relationships. The representation level deals with the language paradigm for representing the attributes and relationships of the software entities. The structuring level addresses methods for rearranging and grouping the software objects of the context classes into related clusters. The design level deals with methods for mapping or transforming the clusters of software objects into specification modules to facilitate distributed design. To this end, the design level employs an object-based paradigm for specifying the attributes and abstract behavior of the objects within the modules.K e y w o r d s : clusters of specifications, data clustering, distributed object-oriented design (DOOD), distributed representation and implementation, frame-based systems, knowledge acquisition, PROLOG, requirements elicitation.