软件工程阅读作业二---by 谢永青

   之前和同学聊天,讨论为什么越来越觉得自己不会写代码了。得出的结论大多数都是--之前我们写的是题目,现在我们写的是工程。工程文件的代码量一般 会比题目多。但是,量变引起质变。当代码进行组合,交叉的时候,一切都不一样了。以前读到软件工程四个字,重点是在软件,现在重点是在工程。现在软件开发 的各种理论和模型的核心都是在解决软件开发的工程性问题。

  big ball of mud,"泥团"问题是很多同学,包括我都遇到的问题。当没有进行充分的准备就开始写代码后,迟早有一天,自己会被杂乱的bug,混乱的逻辑搞的心烦意 乱。这种情况会随着用户需求的改变变得更加头痛。可是,这很大程度上不就是自己不良的工程习惯所导致的么。首先,在不同的开发模式中,工程设计会在不同的 阶段进行,但是,有一条是不会改变的,那就是文档。文档,到现在对于我都是一个不太熟悉的名词。因为,说实话,到现在,我都没有养成良好的写文档的习惯。 于是,各种突发的想法临时用代码实现。一旦外部需求发生改变,或者当编程进入中间阶段,前面的代码变成了混杂的泥团了。

    而Royce介绍的瀑布模型,也着重强调了文档的重要性。当然,瀑布模型需要比较长和“顺畅”的工作状态,写文档对于这种流程性的开发是很重要的。它着重 放在软件系统的设计,需求分析,以及反馈。正如其名:Managing The Development Of Large Software Systems。这种比较高层次的开发模式很适合大型软件开发,代码反而是比较居于次要的。就我个人感觉而言,起码我所进行作业开发可能也只是停留在 analysis and design->codig->testing->coding的过程中,类似于敏捷吧。这种瀑布模型对于大型公司的稳定运作很有帮 助。毕竟作者经历过那么多大世面。

   下面就是比较有意思的大教堂与集闹市的开发模式以及Poul-Henning Kamp对这种开发模式的批判。首先,关于大教堂的开发模式,我想,这是一种很自然的开发模式。毕竟,工匠们的精雕细琢往往给他们带来丰沛的利润。而闹市 则是为了迅速方便的满足大家的需求。Raymond的观点有种“光天化日之下,怎会有bug”的味道。利用大规模的用户参与,使用,数量级的bug检测与 完善来提升一个软件的performance吧。个人感觉这种模式所开发的产品多数会是具有“补充性”的软件,会出现一部分大型的软件,但是估计会很少。 因为这种开发需要很多有兴趣参加其中的人,因此会有人需要它,才会去寻找它,参与它。当然,如果能够找到合格的successor.软件会成为经典。说上 面一部分可能是因为我读的时候对open source project印象比较深刻吧。但是,这种提出用户参与开发的思想很具有启发性。让使用者适度的参与进来,可以提高软件开发的效率。但是,这种“外部人 员”的设计对于软件这种满足需求的工程会不会是一种拖累呢。他们往往会根据自己的需求来设计,提出问题。会不会阻碍了软件设计层次的“前瞻性”,不会太 “引领潮流”。我个人感觉这还是要更持续的参与来提升其性能。让软件有需求就立刻改。这是大规模敏捷么?(开个玩笑。)

    象牙塔毕竟是象牙塔,住惯了的人到了鱼龙混杂的集市上毕竟会“掩鼻而蹙”。Kamp对于Raymond的意见主要在于专业性的问题上。相对于精雕细琢,频 繁的加工难免会对程序的质量造成影响。“反正只要改成我要的样子就行了”。这两种观点的交流让我想起了看过的Ted演讲上关于维基百科的大规模协商运作模 式。作为和开源代码类似的网络百科全书,它的运作当然需要数以万计的网友的参与。由此,怎么保持其专业性?维基百科采用精英民主制,由网络上的精英决定词 条的质量是否应该采纳。而闹市模式就缺少这种高效专业的“联邦政府”来管理。这是一种行政上的措施。就个人感觉,自由的分享与参与正是闹市的特色。

    最后一个“No Sliver”文章给我的感触很大。刚开始读对作者的观点就一种感觉,“IT就是苦,认命吧”。关accidents 方面的问题与改进。我个人的感悟就是这些改进是必要的和必需的,但是,这不能成为软件工程发展的目的,而应该是手段。而改进软件开发,从本质上来讲,就是 要调用人的积极性和工作效率。这才是关键。我想,作者把great designer放在文章末尾就是要强调这一点。工程性的东西,就是需要人的思维去设计和创造,最终实现。

   文章更多的还是从工程技术性角度强调设计者的重要性。作为一个菜鸟级别的计算机学生,我的感觉就是个人素质的重要性。包括Kamp对闹市的批判,泥团模型 的产生原因,很大程度上都是对开发者本身素质的要求。到了我们,就是编程的良好习惯,开发过程中的负责程度等。只有优良素质的参与者,才会把一个开发模式 的效率发挥到最大。很多开发模式其实就是用来规避我们个人身上的缺点。

   啰里啰嗦的写了很多废话。总之,优秀而又负责任的开发者才是整个工程的关键。

  ps:不得不说,英语在一定程度上的确是帮助了印度的IT行业吧。看这些阅读材料,有很多都是似是而非的东西,所以个人的理解肯定和原文表达的思想有出入。以英语为母语对信息的交流互换真的很有帮助。好好学英语。

posted @ 2012-11-14 02:53  CodingCook  阅读(256)  评论(3编辑  收藏  举报