个人阅读&个人总结

个人阅读作业+总结

助教推荐的那些文章都是软件工程上的经典文章,阅读后感受到软件工程本身的深度,之前学习的软件工程都只是皮毛之中的皮毛而已。随着软件规模的越来越庞大,软件工程已经成为了软件开发中的必备知识。在软件工程中有很多前人的思考和经历在其中,细细品读下来还是十分有趣、有用的。

No Silver Bullet - Essence and Accidents of Software Engineering - Brooks

链接

所有的软件在构建过程中都会遇到根本性的任务:组成抽象软件实体的复杂概念,防不胜防的意外以及在一定的时间和空间限制下,从抽象的软件概念到具体的编程语言乃至机器语言的编码过程。作者提到几乎大部分高效的软件生产性的获得需要人为的想一些方法将意外的任务尽可能减少。他将软件比喻成西方神话中可怕的狼人,将一劳永逸的解决方案比喻成为唯一对狼人有效的银弹,并在文中叙述软件工程中并没有这样的一个“银弹”,能让人高效管理软件工程而不出半点差错。但他也提出了一些方法,虽然不能达到“银弹”的级别,但多多少少对软件的管理有较大的帮助:

  • 积极探索巨大的市场以避免重新制造可以买到的轮子;
  • 将快速的原型作为迭代计划中的一部分来满足软件的要求;
  • 增量开发,对于软件的新功能、测试等等需求做增量开发,向系统中添加新的过程和函数。
  • 物尽其用,善用人才。

big ball of mud

链接

虽然高度关注高级软件架构模式,但事实上标准的软件架构实际上很少被讨论。一个大球泥是一个随便的,即使是随意的,结构化的系统。在实际开发中,我们往往为了追求更多的功能不加设计的添加代码使得软件整个结构越来越臃肿最终导致成为一个完美的大泥球,使得在上面开发或者维护的成本极其高,任谁也不想也不能在上面进行有效的开发。

  • 大教堂模型中,每个软件版本都提供了源代码,但在两个发行版之间开发的代码仅限于一组独立的软件开发人员。以GNU Emacs和GCC为例。
  • 集市模型,在该代码开发了互联网鉴于公众。Raymond 称Linux内核项目的领导者Linus Torvalds是这个过程的发明者。雷蒙德还提供了他自己实现这个模型的Fetchmail项目的传闻。

在我们的开发中,目前使用的开发过程更合适的模型描述是大教堂模型。开发软件过程中并没有使用互联网进行“集市”一般的开发,一般都是自己或者几个人固定进行开发。

Worse?Better?

有了正确的事情,设计师同样关心简单性,正确性,一致性和完整性。随着越来越好,设计人员几乎完全关注实现的简单性和性能,并且只在正确性,一致性和完整性方面工作,只是为了完成工作,为了简单起见而牺牲了其他任何品质。然而,这个论点是,使用越差越好的程序设计和实现的程序可以比正确的版本更快地写出来,可以运行在更广泛的计算机上,容易携带,如果足够好,将被接受得更快,最终将得到改善,并且一般来说,比右派方案表现出更好的生存特征。更糟糕的是程序就像病毒一样迅速传播,很快普及。随着时间的推移,如果他们成功了,

他们会得到改善。

具体来想我认为作者提出的更加糟糕的软件指的就是软件首先不论质量怎样需要尽可能快速的实现需求并发布,并进行快速的迭代更新以达到最后的好的质量。这样可以在市场上占有先机更容易获得成功。而正确的就进入市场晚可能获取成功需要的努力就更大。

敏捷!

  • 敏捷方法是适应性的而不是预测性的。 工程方法倾向于在很长一段时间内详细规划软件过程的大部分内容,直到事情发生变化,这种方法运行良好。 所以他们的本性就是抵制变化。 敏捷方法,但是,欢迎改变。 他们试图成为适应和改变的过程,甚至改变自己。
  • 敏捷方法是以人为本而不是以过程为导向的。 工程方法的目标是定义一个恰当地使用它的流程。 敏捷方法断言,没有一个过程能够弥补开发团队的技能,所以一个过程的作用是支持开发团队的工作。

我们在实际开发过程中其实使用到了敏捷的一些思想,比如快速迭代,在每一轮迭代之间收集用户反馈以达到一个方向的修正;是事情驱动的,刚开始做完初步的设计后随着事情的变化快速修改设计并再开发。

原文地址:https://www.cnblogs.com/jefhq/p/8283183.html

时间: 2024-11-14 07:11:51

个人阅读&个人总结的相关文章

微信小程序(5)--阅读器

最近用微信小程序写了一个图书阅读器,可以实现左右滑动翻页,按钮翻页,上下滚动,切换背景,控制字体大小.以及记住设置好的状态,如页面再次进来保留上次的背景色和字体大小. 由于暂时没有真实的数据接口,所以我用了静态数据. <!-- 文本 --> <view class="container" style="background:{{bodyColor}}"> <!-- 中间层,点击,头部底部显示 --> <view class=

阅读笔记二2017.1.27

之前看了前三章对软件工程有了大致认识,对个人开发的流程及软件工程师的成长过程有了比以前更清晰的了解. 这一周重点阅读了第四章,本章讲了两人合作的前提是代码要规范(包括代码风格规范及代码设计规范)及代码复审,然后才能结对开发. 大学一年交了很多代码作业,但质量仅仅是完成了而已,对于缩进.行宽.括号.与大括号.分行等都没太注意过,觉着有了结果就好了.而对于命名更是越短越好,过后也就知道写过的代码是什么意思了.以前,写代码时,很多时候是上手就写,一个大括号包含所有内容,虽然大一时学过函数.类等知识,

如何阅读源代码(7)

第七章: 编码规范和约定 +++++++++++++++++++ 137.了解了给定代码库所遵循的文件组织方式后, 就能更有效率地浏览它的源代码. 138.阅读代码时, 首先要确保您的编辑器或优美打印程序的tab设置, 与代码遵循的风格规范一致. 139.可以使用代码块的缩进, 快速地掌握代码的总体结构. 140.对编排不一致的代码, 应该立即给予足够的警惕. 141.分析代码时, 对标记为XXX, FIXME和TODO的代码序列要格外注意: 错误可能就潜伏在其中. 142.常量使用大写字母命名

第一篇阅读笔记

编写有效用例,首先要清楚用例是什么.用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约,描述了在不同条件下,系统对某一项目相关人员的请求所做出的响应.一个好的用例很容易阅读,但是要写出一个好的用例很不容易.而且用例不是要写的多正式.完整.漂亮,而是尽可能得充分,就足够了.还有在书写用例之前最好弄清楚客户真正需求是什么?是安全,还是使用等,弄清楚客户的真正的需求有助于自己尽可能的写出满足客户并且足够充分的用例,还能增加客户对你的信任感.我一直认为信任感是与他人沟通最重要的.  用例编写的

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

Adobe阅读器漏洞(adobe_cooltype_sing)学习研究

实验环境:Kali 2.0+Windows XP sp3+Adobe Reader 9.0.0 类别:缓冲区溢出 描述:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名为uniqueName的参数造成缓冲区溢出. 参考资料:<Metasploit魔鬼训练营>p286-p298 Adobe漏洞渗透过程: kali上使用windows/fileformat/adobe_cooltype_sing,载荷为windows/meterpreter/reverse_http

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.

《编写有效用例》阅读笔记之二

基 于数据库操作的小用力称为CRUD用例,每个小用例都表达了单独需求,在处理这种用例是会有两种不同的方法,可以将其分离或者先使用单个管理实体用例对其 处理.在提取系统用例时或有许多用例大致相同,对此可能会建立一种通用搜索机.用例每个目标步骤的命名类似于编程语言中的子过程调用,而且用例是有人而不 是计算机使用.搜索任何东西都会有相同的步骤,对此为了方便操作我们可以建立一个参数化用例,为每个用例起一个别名.然后将别名数据值划分为三个不同的精 度级别,可以在一定程度上简化用例描述. 当对业务过程进行建

《代码阅读方法与实践》阅读笔记之二

时间过得真快,一转眼,10天就过去了,感觉上次写阅读笔记的场景仿佛还历历在目.<代码阅读方法与实践>这本书真的很难写笔记,本来我看这本书的名字还以为书里大概写的都是些代码阅读的简易方法,心想着这就好写笔记了,没想到竟然好多都是我们之前学过的东西,这倒让我有点无从下手了.大概像我们这些还没有太多经历的大学生,总是习惯于尽量避免自己的工作量,总是试图找到一些完成事情的捷径吧.总之,尽管我不想承认,但我自己心里很清楚,我就是这种人.下面开始言归正传,说说接下来的几章内容归纳. 这本书在前面已经分析了

C# DataGridView 对指定行文字加粗实现阅读标记

在使用DataGridView控件放置通知等信息时,会遇到标记"已读"."未读"的问题.通过SQL语句查询出的结果中,"已读"."未读"会被放在一个专门的字段(DataGridView的列)中用来标记这个 条目的阅读情况.本文的目标就是要做到在显示上区分当前用户已读和未读的条目. 1.准备工作 建立一个C#窗体应用程序,里面放置一个Dock属性设置为Full的DataGridView 2.程序代码 在Load函数中,模拟生成了