Read "The Myth of Man-Month"

"The Myth of the Moon"
32nd Anniversary Chinese Commemorative Edition
[US] Frederick Brooks,
UMLChina Translation Team Translated by Wang Ying


With the development of technology, some ideas are no longer applicable to the current environment. But the core idea still applies.
New technologies have solved many of the difficulties in implementing software systems, but the difficulties of designing systems still exist.

 

question

In the development of large-scale systems, very few projects meet the requirements of goals, schedules, and budgets.

 

reason

Unreasonable schedule

>  Lack of effective estimating techniques, lack of tracking and oversight, no ongoing estimating projects

False assumptions: everything will work well and each task only takes as much time as it "should" take

·  Project timing depends on sequence constraints

> Progress and workload are confused with each other , increase manpower to catch up

·  "Man-months are used as a measure of the size of a job" implying that staff numbers and hours are interchangeable

The  number and time exchange is only applicable to "a task can be broken down among the participants, and they do not need to communicate with each other"

The  increase in personnel leads to increased communication costs, and the maximum number of personnel depends on the number of independent subtasks

Communication costs: reassign tasks, train new people, additional mutual communication

 

solution

$ surgical team

Each part of a large project is tackled by a team assembled in a surgical-like fashion. It is up to one person to do the problem decomposition, and the others to give him the support he needs . Just coordinate the thinking of the "surgeons" in the various teams - determine the conceptual integrity of the entire system

Few people design system ( aristocratic despotism )

System design must be implemented by  one person or very few in agreement to ensure conceptual integrity

· Design and implementation division of labor

~ May lead to: too many features in the design, too little consideration for the cost in the actual situation

Solution: Thorough, discreet, harmonious communication between designer and implementer

Implement the system concept design

Documented Specifications

Formal definition (precisely define system design

Conferences at different levels

Multiple implementations (forces the definition to be more neatly specified)

Communication log (the designer records the implementer's inquiry, and distributes it to the implementer after sorting and merging)

Independent test groups test products according to system design

Improve team communication

Well-structured and up-to-date project workbook, well-organized)

Choose the right language, tools, documentation (to keep up with the times)

Adopt a design that is easy to eliminate bugs and strengthen testing

controls the size of each part of the system

Consider changes at various stages of the project (the only constant is the change itself)

Set appropriate milestones and track them

track maintenance project documentation

 

no silver bullet

没有任何技术或管理上的进展,能够独立地许诺在生产率、可靠性或简洁性上取得数量级的提高。

软件开发中困难的部分——固有的概念复杂性

困难是决定说什么,而不是怎么说

软件系统无法规避的内在特性:复杂度一致性(需要兼容各种场景)、可变性、不可见性(软件的客观存在不具有空间的形体特征)

$ 最有希望成为银弹的技术——快速原型化系统的方法和技术

把开发作为迭代需求过程的一部分

其它技术/方法:增量式开发(类似快速原型化)、直接购买软件、聘用培养优秀的设计人员

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=327038455&siteId=291194637