In "Moon Myth", the author brooks starts with the development and management of the "tar" class, from the development and management of large software projects experienced by itself, and discusses the problems faced in software engineering. With solutions. This book does not involve any technical details, as the author is said in the chapter of "20 years later, the Mythical Man-Month After 20 Years" said that the book is still not last time. The reason is that "people moon myth" is about the book of people and teams, so the level of elimination will be so slow. Hereinafter, the essence in the following "Moon Myth" will be discussed below.
Conceptual integrity and structural workers are the core view or core concept of "Moon Myth". A neat, elegant software product must provide a complete concept model to his users, and this concept model enables users to understand the functional structure, use, and interface of the product. Conceptual integrity is the most important factor related to the ease of use of software products, and is also an important factor in software development processes and product success or failure. Who is responsible for the conceptual integrity of software products? There is no doubt that the structural system is responsible for the conceptual integrity of all aspects of the product. Therefore, it is the most important actions to delegate a system architecture.
The construction of the struct is to design the system architecture model or product concept model, including detailed description of all functions and methods of calling and controlling. For the conceptual model of the design, the structural division will use the document to describe and explain, and everyone's development team will have such a document description. Of course, everyone in the team can express personal opinions in the discussion meeting. After absorbing useful opinions, adjusting documents to ensure that the design is perfect in all aspects, and each A developer has the latest documentation, which will run through the entire development process. At the same time, the structural staff has absolute authority, which is resolutely excluded for the idea or new features that affect the integrity of the system concept, and involving technology Aspects, the project manager also has to completely observe the views of the structure. If some functions have to be added, it will affect the conceptual integrity of the system, then the structural staff have to consider adjusting or overthrowing existing design.
Conceptual integrity is well controlled in a small-scale development team. For large project development, it must pass the tree tissue structure, layer control, in addition to the summary of the group, can design a struct teacher, The summary teacher can communicate the concept integrity of the concept integrity in the group, and the organizational structure of the entire team can be tissue in surgery teams.
In addition, during software development, time delay is also a problem that cannot be ignored. Brooks proposed a famous argument in "Moon Myth": (blindly) "increasing people in the project backward project, only make progress more backward." . The relationship between the number of developers and the time used for development is not linear, including the presence of subjective factors such as communication and training. So, how should I solve the time delay? First, we must use the project manager before the project, make a bold estimate of each step in the system development process, even if it is an unprecedented estimate, it is better than the estimate. many. On this basis, the project schedule is developed, and everything in the schedule - "Milestone" must be specific, specific, measurable events, and definitions of cleaning. In addition, the Plan and Control Panel can be set up in the development team, the main responsibility of the group is to ask the product line manager when setting and change the milestone, and whether the milestone is arrived. As a supervisor, the Plan and Control Panel, clearly pointed out that it is not easy to detect, and emphasizes key factors. They are early warning systems to prevent projects from falling behind one day. System testing is also the point we need to pay attention. During the development process, the system test begins with the beginning of the development team. Before writing the code, the test team should test the specifications to test the integrity and clearness of the description. Developers will not complete this work: "They won't tell you that they don't understand. On the contrary, they are willing to explore the problem and clarify the problem." With the development process, the first part of the part is required. The component unit test is performed so that the problem remains within a smaller range, which is relatively easy to handle. Finally, it is the system integration debugging. If you do not test in this way, you will be fatal in any of the problems that appear in the final system integration debug. This means that the previous efforts have been wasted in white.
Brooks believes that traditional waterfall development models are wrong. "The basic fallacy of the waterfall model is that it assumes that the project only experiences a process, and the architecture is excellent and easy to use. The design is reasonable and reliable. As the test is carried out, the coding implementation can be modified and adjusted. In other words, the waterfall model Suppose all errors occur at the coding implementation phase, so their repair can be smoothly inserted in units and system tests. "And propose a relatively advanced development model - incremental development model," to discard it. " The essence of the iterative development process, the prototype system is constantly negative and perfect, and ultimately achieve development goals. I think this is a deep touch of any developers, any system, even genius, it is impossible to successfully complete the development.
Finally, there is no "silver bomb" in the software engineering, that is, the so-called monk sword, so far, even if the software engineering theory has made great progress, it is impossible to keep up with the inner, inevitable in software development. Problem: complexity, consistency, variability, invisibility. The current many technologies can only solve some edge problems, and for these essential issues, it is still nothing. There are still many arguments for this point.
The software engineering theory contained in "Moon Myth" is very excellent, and the above is only the project development of himself, and the understanding and experience after reading this book. If you have an improper, you will not say that you don't finish!