本文参考:没有银弹
'没有银弹'的含义:
没有任何一种单纯的技术或管理上的进步,能够独立地承诺在十年内大幅度地提高生产率、可靠性和简洁性。
软件工程中的根本问题和次要问题
根本任务-设计:打造构成抽象软件实体的复杂概念结构
次要任务-实现:使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言
没有银弹更多的是指设计上的困难(也就是架构师的工作)
根本问题为什么那么困难?
- 抽象与复杂性:‘抽象方法’的存在使复杂度成为了软件的根本属性。做好抽象后,我们很难再使用某一个模型或方法来进一步降低软件的复杂度。
- 对维护的需求:软件需要紧跟需求,持续不断地维护和变更
解决这些问题的一些尝试
- 少开发,多复用:从业务层面来看,就是多购买/复用现成的优秀软件,而不是自己去从头开发。因为软件的复制成本远低于开发成本。
- 快速原型,增量开发,敏捷开发
- 重视设计:培养卓越的设计人员可以大大降低软件的开发成本。