1979年,美国出版了一本《软件工程与设计原理》(Principles of software engineering and design)。书里有一张图,给出了大型软件整个生命周期里面,程序员投入的时间比例。
- 需求分析:3%
- 系统分析:3%
- 系统设计:5%
- 编码:7%
- 模块测试:8%
- 集成测试:7%
- 维护:67%
软件项目和其他工程项目有一个重要区别,就是项目执行期间可能发生重大变更。举例来说,如果你正在建造一架民航飞机,没人会在造到一半时告诉你,他们希望这架飞机能够飞出大气层,进入太空。但在软件项目中,这是可能的,IT 公司的特点就是业务逻辑一切皆有可能,如果你建造的东西会飞,那么需求方就会觉得,它应该能飞到任何想去的地方。