用房屋建筑方式理解软件构建

如果你是在建一栋房子,那么这个建造过程就会复杂得多,而糟糕的设计所引发的后果也更严重。

首先你要决定准备建一个什么类型的房子—在软件开发里的类似事项称为问题定义(problem definition)。

接下来,你必须和某个建筑师( architect)探讨这一总体设计,并得到批准。

这跟软件架构设计( architecturaldesign)十分相似。然后你画出详细的蓝图,雇一个承包人。

就像软件的详细设计。再然后,你要准备好建造地点,打好地基,搭建房屋框架,砌好边墙,盖好房顶,通好水、电、煤气等。这就如同是软件的构建(construction)一样。在房子大部分完成之后,庭院设计师、油漆匠和装修工还要来把你新盖的家以及里面的家什美化一番。

这就好比软件的优化(oprimization)过程。在整个过程中,还会有各种监查人员来检查工地、地基、框架、布线以及其他需要检查的地方。这相当于软件复查(评审,reviews)和审查( inspections)。

除此之外,这两种活动还有什么相似之处呢?建造一个房子的时候,你不会去试着建造那些能买得到的现成的东西。你会买洗衣机、烘干机、洗碗机、电冰箱以及冷藏柜。除非你是机电方面的巫师,否则你是不会考虑自己动手弄这些东西的。你还会购买预先造好的橱柜、餐桌、门窗以及浴具,等等。

当开发软件时,你也会这么做的。你会大量使用高级语言所提供的功能,而不会自己去编写操作系统层次的代码。你可能还要用些现成的程序库,比如说一些容器类( containerclasses)、科学计算函数、用户界面组件、数据库访问组件,等等。总之,自己编写那些能买得到的现成的代码通常是没有意义的。

用建筑房屋来类比软件构建,还有助于解释为什么不同的软件项目能从不同的开发方法中获益。

建筑业中,盖间仓库或者工具房,或是一座医院或者核反应站,你在规划、设计及质量保证方面所需达到的程度是不一样的。盖-座学校、--幢摩天大楼,或一座三居室的小别墅,所用的方法也不会相同。同理,在软件开发中,通常你只需要用灵活的、轻量级的( lightweight)方法,但有时你就必须得用严格的、重量级的开发方法,以达到所需的安全性目标或其他什么目标。

最后,建筑这一隐喻让人们对超大型的软件项目的认识更加深刻。

超大型的结构一旦出现问题,后果将非常严重,因此有必要对这样的结构进行超出常规的规划与建设(over-engineered)。建筑人员需要非常小心地制定并核查设计规划,在建设时留有余地以保障安全;宁可多花10%的成本买更坚固的材料,也比摩天大楼倒下来要划算得多。

还需要特别关注工作的时间。在建造帝国大厦(TheEmpire Building)的时候,每辆运料车运输时都留有15分钟的余地。如果某辆车没能在指定时间到位,则整个工期就会延误。

同理,对于超大型的软件项目,就需要比一般规模的项目有更高级别的规划设计。

Capers Jones发表的报告称,一套100万行代码的软件系统,平均需要69种文档( 1998)。其需求规格文档般有四五千页长,而设计文档常常是需求的两三倍长。

不太可能有哪个人能完全理解这种规模的项目的所有设计细节-—甚至只是通读遍都不那么容易。因此,更充分的准备工作也就理所应当了。

该文章知识作为个人笔记,大部分知识来源于书本或网络整理总结;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HappyGirl快乐女孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值