Capturing the rationale behind decision making in design plays an important role to explain a design, redesign and/or reuse an existing design. Existing design rationale models suffer from the lack of integrating rationale with the design process. The integration is crucial for the domain of software design due to its complexity. A model for design rationale capture and its related knowledge base is developed in this research. It provides method to decompose and organize design and reasoning information. A primary goal of this model is to enable the designer to analyze, capture and reuse different types of design knowledge. The proposed rationale model converts a design problem into a problem structure and a corresponding product structure. The problem and product structures are represented by linked aggregate hierarchies of instances of various classes which together encode the expert design knowledge and navigational indices of an arbitrary design problem. This allows problem space model to provide rationale at any level of the design and relates all these rationale classes to one another. The proposed rationale model has four contributions. First, it identifies different types of design knowledge that are generated during a design process and describes a framework to represent them. Second, it describes a mechanism by which the rationale of a decision can be provided at any time and at any level of the design. This allows the designer the flexibility to enter design rationale at the problem definition level, during problem solving, and/or after problem solution is complete. Third, it provides an evaluation and explanation facility enables the designer to judge the quality of the final design artifact based on the rationale used in the design. Fourth, the model incorporates the concept of design patterns into its definition, therefore enabling designers to use past proven experiences and expert knowledge in their design activities. This not only shortens the development time and eliminates design pitfalls, but it also ensures a high quality product design.