阅读作业2--韦昀

No Silver Bullet: Essence and Accidents of Software Engineering

  本文是比喻性质的,软件工程比作狼人,在不经意间可能变成可怕的怪物,而银弹则是在传说中是对付狼人的唯一有效的武器,但是软件开发由于自身存在Complexity,Conformity,Changeability,Invisibility四大困难的存在很难找到银弹。同时作者分析了许多希望成为银弹的解决方法,包括高级语言,面向对象,人工智能,专家系统,自动编程,图形化编程,程序验证,环境工具以及工作站等。但他们解决的都是偶然性的问题,对于软件复杂性本质却都没有魔术般的效果。高级语言提供了与硬件无关的抽象层,面向对象则更容易描述问题与现实世界的联系,但上述4个问题却并没有得到解决。而后文章讲述了一些策略可以提高开发速度的,如购买一些其他公司开发完成的库。或者精简需求,快速设计原型,以及需要好的设计师等。

 

The Big Ball of Mud

  “大泥球”是指不追求设计而只追求可以使用的结构杂乱的系统。这种结构本不该出现,但在实际中经常使用,有可能是时间,成本,程序员水平的各种因素影响。结构优秀的代码往往花费更多时间和成本,但却不能马上得到效益。对于一个小型项目来说,或者只是用于验证自己的一个想法的时候,我认为使用这类一次性代码是可以的,但是要在这基础上设计大型软件时,这些代码都需要重新设计,而不要为了省事就直接粘贴,否则对于后续的开发就是一个灾难。

The Cathedral and the Bazaar

  这也是一种比喻,以大教堂和集市比喻软件开发的两种模式,教堂是封闭式的,而集市是开放的。对于集市模式来说,他提出在所有人的注目下,bug就会更容易被发现。同时也提出了12条软件开发中的方法。

Lost In CatB

本文主要讲述的就是开源软件中的过度依赖问题,这个问题在实际问题中我也遇到过,有的程序包含了各种库,包括图片库png,jpg等,压缩库zlib,其中图片库中又包含了压缩库zlib,主程序中光zlib这一部分代码就有3个版本,非常混乱。而有一天看到了一个游戏依赖的运行库竟然有十多个,既有C++运行时库,又有.net,而且还需要各种不同的版本,给用户安装造成了很大困难。而我们项目的上一版本中的开发存在一些问题,上一个版本的文件格式非常混乱,同时使用了纯文本,xml,二进制文件和数据库4种不同的方式存储数据,这不但增加了复杂度,同时也是一种浪费,文件加载的代码就非常多,也增加了运行时开销。

你可能感兴趣的:(作业)