第二次阅读作业--12061161 赵梓皓

阅读笔记之No Silver Bullet

本文中,作者的观点是没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍(1986)

作者列举的原因是 代码的完成分为两部分: 抽象(建模)和 代码实现。根据我个人的理解,就是 设计和实现的过程。作者认为实现过程的速度相对来说比较好的提高,但是 设计的过程很难提高。而根据设计过程在整个项目中占的比例要大于1/10,所以得出结论没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。

我认为,作者的见解相对来说是比较合理的。实现的过程是人与机器的交流,只要有很好的规范(并且人人都严格遵守),利用一些工具或者其他方法,实现的过程效率很好提高。

而设计的过程很难提高我认为原因有如下:

是人与人和人与现实世界之间的交流,而人的思维是很难描述的。

现实世界是非常复杂的,要理清现实世界的关系非常困难。

现实世界是变化的。

这些观点造成了提高的难度。

但是,我也认为由于作者10年的期限,使这篇文章过于悲观。作者认为难题在于设计,也就是说人类的思维。我们很明显的能感觉到计算机出现的不到70年时间对人的思维的改变,因此,作者很巧妙的说了时间的期限(10年),我认为,10年或许很难在设计方面取得突破,但是人类终将找到属于软件工程的Silver Bullet。

阅读笔记之big ball of mud

大泥球,是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码。

我觉得,造成大泥球的主要原因是设计的问题,程序的设计者在实现代码前没有对程序的整体有一个很好的理解,造成程序的很多细节没有办法统一。程序员不知道自己的每部分代码的详细的任务,不知道某些东西应该在什么地方处理。造成程序冗余,结构混乱。

有时候,代码的初学者会遇到这种问题(好吧,我承认就是我),写完程序以后调试很久都没有完成。到最后自己完全重新的码一次代码,不但非常快,而且很快就ac了。究其原因,是因为第一次写程序没有对程序有一个深刻的理解,所以第一次的代码混乱不堪,调试工作很难进行。而第二次写代码,明确知道了程序的结构,因此写起来称心应手,错误也非常少。

记得在面向对象课程的时候,老师非常强调程序的封装性。可以说,好的封装性和没有大泥球的要求相似。都是要求每个代码段(类)都能够准确的完成既定的任务,合理的分配程序的任务。

对于这个问题的解决,我觉得设计文档是一个很好的工具。有时候我们自己觉得设计完成便开始写代码,这样没有落实到纸上,我们就很难发现一些没有考虑的细节。而设计文档能够帮助我们理清思路,更好的规划自己的程序。同时,设计文档为我们的交流提供了很好的介质。在计算机组成原理大作业的时候,我就感觉到了设计文档的重要性。有时候,看似很难的问题,用设计文档一一说明,就能明确的知道自己要干什么,要达到什么目标。对于一些看似很简单的题目,设计文档能够帮助我们看清自己的设计还有什么不完善的地方。

从团队项目来看,设计文档的重要性更加明显,设计文档是交流的工具。在第一周写软工的时候,我根本不知道自己的输入是什么,该输出什么。无从下手。有一份设计文档,这些东西就轻而易举的解决掉了。

阅读笔记之Worse is Better

在IT世界,有很多现象很奇怪。VB绝对是个垃圾的语言,但是他战胜了Delphi;IE绝对是个垃圾的浏览器,却占据了国内浏览器的鳌头;MySQL的数据库特性绝对不如PostgreSQL,但是市场占有率遥遥领先;MacOSX操作系统的优秀毋庸置疑,但是Windows是绝对的霸主。(引子某学长博客,觉得写的很好)

个人认为,worse 和 better 这两个词描述的是两个方面。Worse是相对于设计者而言的,或者说是非常专业人士而言。而better是使用者的感受。Worse is better 这个理论反映的是设计者和使用者的代沟。这个代沟的产生有很多方面:

历史原因:无论MacOSX多么优越,但是他的出现年代远于windows,人们已经习惯了windows,觉得操作系统就应该是这样子。MacOSX就很难战胜windows。人们不愿意改变已经适应的事物,是这个现象的很重要的一个原因。

用户体验原因:很多设计者认为好就是利用好的技术。但是对于使用者而言,易用性的重要性要远远大于技术的重要性。有很多软件内部代码非常好,效率很高,但就是没有“成功”,究其原因在于没有理解用户的需要,用户觉得软件缺乏亲和度。软件自然就淘汰。

Money:个人认为360是个彻彻底底的垃圾软件。但是他的易用性非常好。并且,准确找到了人们对于好软件的定义:免费。。。。

综上,造成了很多Worse is Better的现象。

最后,鸣谢有道词典,英文阅读好难。。。。

时间: 2024-10-10 02:42:41

第二次阅读作业--12061161 赵梓皓的相关文章

读书问题之《编程之美》 -----12061161 赵梓皓

我阅读的书是<编程之美> 刚开始的时候阅读序,就觉得控制cpu利用率这个问题很好玩,所以重点看了这部分和解决办法,问题也都大部分是这部分的.那么问题就来了(挖掘机技术xxx?中国山东找蓝翔) 咳咳,问题在下面: 1.关于问题的提出.(也是一点点建议) 本书的主要内容是告诉读者如何思考问题和解决问题.但是提出问题也是很重要的,正如爱因斯坦所说“提出一个问题往往比解决一个问题更重要”,很多面试题(比如井盖为啥是圆的)我觉得正常人很少会想到.所以,这个问题是怎么想出来的...我很好奇.也希望作者能够

第二次阅读作业

一开始看到阅读作业的时候我感觉老师给的时间还是很充裕的,但是在阅读的过程中我还是感觉不是很充分,其中一个很重要的原因就是由于自己的英语水平有限,在阅读的过程中需要经常性的去查单词,造成阅读中的一些中断,以至于思维不是很连续.但是还好,由于时间较充分且我开始的较早,这一个问题还是被自己克服了,没有造成太大的影响.首先我先说一说自己对于这些文章的理解吧.第一篇文章是No Silver Bullet: Essence and Accidents of Software Engineering.在这篇文

关于第二次阅读作业中&quot;银弹&quot;“大泥球”等的个人理解

这几天时间比较充裕,就一点一点的借助英语翻译(毕竟英语不好)阅读了一下老师建议的论文作品.感觉他们的思维和我们的是不在一个角度上的,在我们看来,编写代码的任务仅仅就是实现了设计文档中的功能,而这些在课程设计中往往能满足要求,但是在长远方向看和软件优化的角度来思考,我们的设计都是极其糟糕的..... 大师的角度中,程序员实现软件最最本质的东西,就是软件在概念抽象和应用于电脑上的两个方面,软件在概念上的抽象性设计解决方案是很困难的,而软件施行与电脑上也是具有挑战性.在大师的启发下,我对4个方面的困难

软件工程M1/M2总结及阅读作业总结

一.软件工程M1/M2总结 写下这篇总结的时候,我们的软件项目尚未完工.虽然尝试申请了延期答辩,但最终未能成功.这意味着,我们的项目能否正常发布已经处于了一个微妙的状态.可能可以,也可能不可以.只能尽力而为了. 整个一学期的开发下来,我在软件工程方面体会最深的是成本问题以及技术债.以前写的项目往往没有特别严格的deadline,很多是个人的随兴而写的东西,写不动了就不写了.又或者是作业,最多也就那么一千行,怎么都是可以写完的.而软件工程这门课的团队项目,7个人,一个完整的网站,特别是对于我们这个

个人阅读作业 final

前两次阅读作业链接: http://www.cnblogs.com/SteelPillar/p/4027877.html http://www.cnblogs.com/SteelPillar/p/4096145.html 请说明哪些问题现在自己已经清楚了,请阐明一下,是如何通过看书,实践,或者讨论弄清楚的: 在实践过程中,我最终发现写成文档类的沟通是比较有效的.比如说,我和前端的负责人谈论她所需要的接口,如果少的话,在企鹅上一句两句就可以解释明白,但如果需求多的话,可能就要写一份需求的说明,我会

第二周阅读之内容

第二周阅读内容 在这周里,我阅读了邹欣老师的<构建之法>,刚开始看的时候说实话有点像看天书的感觉,可是一段话我反反复复的看了五遍,才明白其中一小节节的,我觉得这本书太神奇了,看了它之后,我才知道原来我两年里所学的那些是那么的浅薄.我会坚持把这本书看完看懂,不仅要看这本,还要看完<移山之道><代码大全><梦断代码>这几本有超越灵魂和思想的书.

个人阅读作业二

http://www.cnblogs.com/Coolio/p/4027701.html  以前的个人阅读作业,提出了一些问题. 一 如何提高代码开发的效率? 通过这个学期的学习和实验,我觉得要提高代码开发的效率,必须使代码变得流畅有组织,同时,团队合作也能提高代码效率. 二 什么是过程模型? 这是软件开发过程中的一种策略,遵循一定的过程模型路线有助于及时交付高质量的产品. 三 软件神话的害处 会使很多人受到误导,从而产生错误的管理和技术行为.会使人们把软件神话当作事实,开发软件的过程中忽略实际

软工个人阅读作业3

M1/M2阶段总结: 从M1阶段开始到现在已有几个月,不知不觉我参与这个高大上的团队完成app的工作已经有这么久了,从刚开始的手足无措到现在的完美结束,期间有任务压身的紧迫感,也有做出成果的激动和欣慰.下面分享一下这一段时间我的思想与感悟. 对于我自己: 1 这两次的团队作业我收获最大的就是又学会了另一种爬虫方法,相对我之前了解的另一种爬取网页的机制,这次学到的方法更加简洁易懂,学起来也很快,了解了其中的机制之后就觉得这种方法很神奇,很有趣. 2 软工课的团队作业也是我参加过的为数很少的多人合作

SDN第二次上机作业

SDN第二次上机作业 1.安装floodlight 参考链接:http://www.sdnlab.com/19189.html 2.生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 拓扑如图所示 提交要求:控制器floodlight所示可视化图形拓扑的截图,及主机拓扑连通性检测截图 3.利用字符界面下发流表,使得'h1'和'h2' ping 不通 参考链接:http://www.sdnlab.com/19394.html 提交要求:流表截图,及拓扑连通性截图