Developing and maintaining large software systems is notoriously difficult and expensive. One source of difficulty is that such projects involve large amounts of disparate knowledge about the domain, the hardware platform, the existing software architecture, the technical personnel and resources, etc. A critical problem is that a great deal of relevant knowledge is "folklore": it is not documented and remains accessible only through human experts. We propose to use knowledge-based technology to manage this kind of knowledge to increase productivity and product quality. To do so, we address three central issues. First, knowledge must be acquired from human experts. Second, the knowledge must be adequately represented and made accessible to users. Third, and most important, the knowledge must be maintained: just as code evolves, so will this knowledge. This paper addresses these issues in the context of providing relevant advice to developers during software design. It then describes an implemented design knowledge tool, augmenting an existing organizational design process, that provides such advice about a limited domain for a large-scale software development project.