Tuesday, April 5, 2011

The Mythical Man-Month Ch 10-12

Reference Information
Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary
The need for documents was discussed, presenting the different kinds of documents that are needed for various jobs. These need to answer what, when, how much, where, and who. Generally, these include objectives (defining what needs to be met), specifications (including the manual), schedule, budget (forces decisions to be made), organization chart (describing those working on the project), and space allocations. Formal documentation is necessary to have decisions in writing for easier communication and to give the manager a way to see where he is and changes are needed.

The idea of planning to throw away a system was discussed, since the first system is generally only barely usable. Change must be accepted as a part of building a system, since many things can change, including the user's needs and requirements. As development proceeds, the number of changes necessary increases. To plan for changes, a system must have careful modularization, extensive subroutining, precise and complete definitions of intermodule interfaces, complete documentation, use of a high-level language, and version numbers. There needs to be a proper amount of management control in order to create an organization that allows for change in the program. Program maintenance is necessary once the product has been released, and bugs often reappear in later releases since fixing one defect has a good chance of creating a different one.
The first system should be planned to throw away. Source: blogs.bgsu.edu
Tools are required for creating programming projects, such as a computer facility, operating system, language, utilities, debugging aids, test-case generations, and text-processing system. There should be one toolmaker per team that masters the common tools to explain to others and builds special tools that are necessary. Target machines are those that the software is written for, and require a target facility and scheduling in order to properly test the program. Vehicle machines are those that provide services used in building the system, and require simulators for stability, compiler and assemblers, program libraries, program tools, and a documentation system. Finally, the importance of using a high-level language was discussed, since it increases productivity and debugging speed.



Discussion
I think these chapters presented some very good points about the actual building process of a programming project. Some of the suggestions and comments were outdated and the job hierarchy of managers and such that was constantly being used was a little difficult to understand since I have not had much experience in a work place. This made parts of the chapters confusing, but overall, the points made were useful. The importance of documentation, constantly changing and improving a system, and having the required tools for programming were good points, and I believe these could be applied to future projects to improve them, such as making sure to have structured documentation so that everyone in the group knows what is going on.

No comments:

Post a Comment