个人阅读&个人总结
个人阅读作业+总结
助教推荐的那些文章都是软件工程上的经典文章,阅读后感受到软件工程本身的深度,之前学习的软件工程都只是皮毛之中的皮毛而已。随着软件规模的越来越庞大,软件工程已经成为了软件开发中的必备知识。在软件工程中有很多前人的思考和经历在其中,细细品读下来还是十分有趣、有用的。
No Silver Bullet - Essence and Accidents of Software Engineering - Brooks
所有的软件在构建过程中都会遇到根本性的任务:组成抽象软件实体的复杂概念,防不胜防的意外以及在一定的时间和空间限制下,从抽象的软件概念到具体的编程语言乃至机器语言的编码过程。作者提到几乎大部分高效的软件生产性的获得需要人为的想一些方法将意外的任务尽可能减少。他将软件比喻成西方神话中可怕的狼人,将一劳永逸的解决方案比喻成为唯一对狼人有效的银弹,并在文中叙述软件工程中并没有这样的一个“银弹”,能让人高效管理软件工程而不出半点差错。但他也提出了一些方法,虽然不能达到“银弹”的级别,但多多少少对软件的管理有较大的帮助:
- 积极探索巨大的市场以避免重新制造可以买到的轮子;
- 将快速的原型作为迭代计划中的一部分来满足软件的要求;
- 增量开发,对于软件的新功能、测试等等需求做增量开发,向系统中添加新的过程和函数。
- 物尽其用,善用人才。
big ball of mud
虽然高度关注高级软件架构模式,但事实上标准的软件架构实际上很少被讨论。一个大球泥是一个随便的,即使是随意的,结构化的系统。在实际开发中,我们往往为了追求更多的功能不加设计的添加代码使得软件整个结构越来越臃肿最终导致成为一个完美的大泥球,使得在上面开发或者维护的成本极其高,任谁也不想也不能在上面进行有效的开发。
- 大教堂模型中,每个软件版本都提供了源代码,但在两个发行版之间开发的代码仅限于一组独立的软件开发人员。以GNU Emacs和GCC为例。
- 集市模型,在该代码开发了互联网鉴于公众。Raymond 称Linux内核项目的领导者Linus Torvalds是这个过程的发明者。雷蒙德还提供了他自己实现这个模型的Fetchmail项目的传闻。
在我们的开发中,目前使用的开发过程更合适的模型描述是大教堂模型。开发软件过程中并没有使用互联网进行“集市”一般的开发,一般都是自己或者几个人固定进行开发。
Worse?Better?
有了正确的事情,设计师同样关心简单性,正确性,一致性和完整性。随着越来越好,设计人员几乎完全关注实现的简单性和性能,并且只在正确性,一致性和完整性方面工作,只是为了完成工作,为了简单起见而牺牲了其他任何品质。然而,这个论点是,使用越差越好的程序设计和实现的程序可以比正确的版本更快地写出来,可以运行在更广泛的计算机上,容易携带,如果足够好,将被接受得更快,最终将得到改善,并且一般来说,比右派方案表现出更好的生存特征。更糟糕的是程序就像病毒一样迅速传播,很快普及。随着时间的推移,如果他们成功了,
他们会得到改善。
具体来想我认为作者提出的更加糟糕的软件指的就是软件首先不论质量怎样需要尽可能快速的实现需求并发布,并进行快速的迭代更新以达到最后的好的质量。这样可以在市场上占有先机更容易获得成功。而正确的就进入市场晚可能获取成功需要的努力就更大。
敏捷!
- 敏捷方法是适应性的而不是预测性的。 工程方法倾向于在很长一段时间内详细规划软件过程的大部分内容,直到事情发生变化,这种方法运行良好。 所以他们的本性就是抵制变化。 敏捷方法,但是,欢迎改变。 他们试图成为适应和改变的过程,甚至改变自己。
- 敏捷方法是以人为本而不是以过程为导向的。 工程方法的目标是定义一个恰当地使用它的流程。 敏捷方法断言,没有一个过程能够弥补开发团队的技能,所以一个过程的作用是支持开发团队的工作。
我们在实际开发过程中其实使用到了敏捷的一些思想,比如快速迭代,在每一轮迭代之间收集用户反馈以达到一个方向的修正;是事情驱动的,刚开始做完初步的设计后随着事情的变化快速修改设计并再开发。
个人阅读&个人总结的更多相关文章
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- 【原】AFNetworking源码阅读(六)
[原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...
- 【原】AFNetworking源码阅读(五)
[原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...
- 【原】AFNetworking源码阅读(四)
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...
- 【原】AFNetworking源码阅读(三)
[原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...
- 【原】AFNetworking源码阅读(二)
[原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...
- 【原】AFNetworking源码阅读(一)
[原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...
- [PHP源码阅读]count函数
在PHP编程中,在遍历数组的时候经常需要先计算数组的长度作为循环结束的判断条件,而在PHP里面对数组的操作是很频繁的,因此count也算是一个常用函数,下面研究一下count函数的具体实现. 我在gi ...
随机推荐
- bzoj2564 集合的面积
Description 对于一个平面上点的集合P={(xi,yi )},定义集合P的面积F(P)为点集P的凸包的面积. 对于两个点集A和B,定义集合的和为: A+B={(xiA+xjB,yiA+yjB ...
- Django中表单的用法深探
[转载说明:原文排版不是很好,为方便阅读,改进了排版] django的表单设计真的很棒,涉及非常多的功能,今天介绍django较为主流的几种表单使用方法.注:本文中表单与form通用.模型与model ...
- Codeforces 937 D. Sleepy Game(DFS 判断环)
题目链接: Sleepy Game 题意: Petya and Vasya 在玩移动旗子的游戏, 谁不能移动就输了. Vasya在订移动计划的时候睡着了, 然后Petya 就想趁着Vasya睡着的时候 ...
- 图解SSH原理
1. 初见SSH SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务. SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案.使用范围最广泛的当然 ...
- Flutter - 创建横跨所有页面的侧滑菜单
前一篇博客讲到了如何创建侧滑菜单,但是再实际使用过程中,会发现,这个策划菜单只能在首页侧滑出来. 当导航到其他页面后,侧滑就不管用了.这也有点不符合良好的用户体验设计.Google Play就是很好的 ...
- linux(模糊批量删除文件)删除指定文件夹中某个文件除外的其他文件
# shopt -s extglob# rm -fr !(file1)如果是多个要排除的,可以这样:# rm -rf !(file1|file2)首先科普下shopt -s extglobBash S ...
- OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor
在python用cv2.imread()读取图片的时候一直报错,检查了图片的绝对路径是存在的. 报错的图片用skimage.io.imread()是可以读的. 查了一下,有可能是原图片文件有什么嵌入错 ...
- RSA详解
RSA RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作.RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥 ...
- krkr基础篇(一)
krkr基础篇是我根据krkr的官方教程总结而来 推荐代替记事本的工具:editplus,点我下载 激活码:Vovan 3AG46-JJ48E-CEACC-8E6EW-ECUAW 一:创建新工程 1: ...
- 关于IPointerEnterHandler和IpointerExitHandler的简单说明
自己在学习UGUI背包系统时用到了,而且遇到一些问题,所以在这里写一下这两个接口的简单说明. 继承IPointerEnterHandler和IpointerExitHandler这两个接口后可以实现两 ...