CS190 Essay --- Ning Ge (nige) In chapter four of The Mythical Man-month, Frederick P. Brooks, Jr. talked about conceptual integrity in software development. As he points out, conceptual integrity can be achieved by separating the archirectural effort from implementation. He said, "Conceptual integrity in turn dictates that the design must proceed from one mind, or from a very small number of agreeing resonant minds." I agree with him completely on this matter. I believe architecture--the detailed specification of the system--should not be completed by a large group. Having more people involved in this process increases neither efficiency, nor quality of the specification. And specification of a system is such an important part in a software develpment process that without a clear specification, the implementors will not know what exactly they should do. I did an internship last summer working on a driver program for a prototype machine. It was a really small system with only two programmers and two enginners working on it. I was not familiar with the field of engineering and machinery, I wanted to first find out about what exactly this program does. But there was no specification. I had to start from scratch to work out the requirements with the two engineers, who kept changing what they wanted in the program. The process was unefficient and time consuming. I do think that 'conceptual integrity' may not be such a problem if the target program is relatively small. Brooks said in chapter four that 'Architecture must be carefully distinguished from implementation'. It is true for large-scale systems, but not necessary for small projects, in which case implementors could also be involved in building architecture. During my CS32 project, architecture and implementation were not exactly separated and it worked out fine in a group of four. In the case of large-scale system developments, I think it's not neccesary, maybe even harmful to have a large group of people involved in design, because when too many ideas are proposed during an discussion, people natually try come up with more creative ideas. During this process, they sometimes forget about the most important base specification. It's easier to come up with new features, but not so easy to make a solid, expandable base.