[BUAA软工]第1次阅读
[BUAA软工]第1次阅读
本次作业所属课程: 2019BUAA软件工程
本次作业要求: 第1次个人作业
我在本课程的目标 熟悉和实践软件工程流程,适应团队开发
本次作业的帮助 帮助理解《构建之法》
Task 1:快速看完整部教材,列出你仍然不懂的5到10个问题
[PASS]: 《构建之法(第三版)》P22, 代码清单2-1 的注释 // user email as user id 应该改成 // use email as user id 吧。
Q1: 敏捷开发对于产品的可靠行要求不高?
P121, 表6-3: 表格中指出在产品可靠性要求不高容忍经常出错的时候最适用的方式是敏捷开发
我觉得没有软件会容忍经常出错,这个说法尚且值得商榷,敏捷开发同样要保证软件的基础功能的可靠性,敏捷开发确实适用于开发经常变动的软件,比如说文中提到的微博,微博对于可靠性的要求并不低,用户的信息丢失同样是很大的问题。我觉得敏捷开发最适合的是功能性经常变动的软件,而不是可靠性,像微博这种经常需要添加新的功能的应用,用敏捷能够保证可靠性的同时实现快速迭代。
Q2: 这本书适合作为教材吗?
书中多数是描述性的内容,我实在不好找问题,这个问题先凑个数
翻了半本书,觉得这本书确实有价值,但总给我感觉不是在看教材,是一本更加适合个人项目提升或者小组boss管理技能提升的书。粗略浏览就想要找问题实在是不科学,都第三个版本了,要仔细思考才会有有价值的题目可以提出啊。
Q3: 大学生如何创新?
P340, 迷思之一: 灵光一闪现,伟大的创新就紧随其后.
文中的观点是在相关学科打下深厚的基础,同时对于问题进行了长时间的思考,那些看似神奇的时刻才会光顾。但是在所谓大众创新的时代,学校、学院一直都是大力鼓励,甚至推着大学生去创新创业的,大学生本科的积累本身并不深厚,多数还是要靠学校的资源来推动好的想法,而创新创业的项目,能成功的屈指可数。
Q4: 如何评价软件的道德与否
P410, 问题6.刷课软件和刷票软件
软件本身是工具,道德与否在于使用者,但是对于开发者而言,很多时候并不能选择开发什么软件,开发完的软件最后被如何使用也是一个问题。
Q5: 软件说明书写的多详细为好?
> P214 , 规格说明书
做开发的时候,最烦的就是写文档了,但未来入职后肯定避免不了写文档,我希望在能表述清楚的情况下尽可能精简,不希望写很多很多无关紧要的内容。
Task 2 :请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
软件:1953年,Richard R.Carhart在公司的备忘录中首次使用这个词.
软件工程: 1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念。不过,据Margaret H.Hamilton,所说:
我致力于为软件以及那些发明者争取应有的正统性与尊重,所以我开始使用“软件工程”这样的字眼来将之与硬件还有其他工程学类做出区别。当我第一次使用这样的语词时,大家都觉得有些好笑,甚至有很长一段时间被当作笑话。他们常笑我极端的想法。但最终,软件学科确实得到了应有的尊重!
可以得知她认为她在阿波罗计划期间发明了软件工程一词。
Task 3:请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
找了好久终于找到一个我觉得比较有趣的(pass: 这种题目真的费时费力),故事如下:
有人在github上给linux提交代码,linus回答说,不要在这里提交,我不接受github上提交的代码。然后他就解释了为什么他不接受github上提交代码,用一句话来说就是:github做的太差了,我已经向github说明了这个情况,但是github的人不听,我已经放弃了,你们可以给他们提bug了。然后呢,github巨搞笑,他们给Linus发了一份说明书,教他如何使用git,人家git这个软件就是linus写的,你发个说明书告诉作者应该怎么用,这就相当于让鲁迅做他写的文章的阅读理解,最后鲁迅把中心思想选错了一样。
摘自github和git当年被忘却的争吵,推荐一下绿帽子大学的栋哥,他有个网易云音乐的电台叫软件那些事儿,会讲一些软件相关的故事。
Task 4: 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
4.1 目前流行的版本管理系统可以参考下图:(链接)(缩小界面,图片有点大)

4.2 而就人数来说的话,可以参考18年stack overflow 的开发者调查链接


4.3 下面讨论各种不同的版本控制系统的特点
参考 2019 Version Control Software Comparison: SVN, Git, Mercurial
CVS
CVS自80年代以来就已存在,并且一直受到商业和开源开发人员的欢迎。它是在GNU许可下发布的,并使用一个系统让用户“检查”他们将要处理的代码并“检入”他们的更改。
优点:
- 已经使用多年并被认为是成熟的技术
缺点:
- 移动或重命名文件不包括版本更新
- 符号链接到文件的安全风险
- 没有原子操作支持,导致源损坏
- 分支操作很昂贵,因为它不是为长期分支而设计的
Apache Subversion(SVN)
SVN是作为CVS的替代品创建的,它可以修复CVS系统中的一些错误,同时保持与它的高度兼容性。与CVS一样,SVN是免费的开源软件,不同之处在于Apache许可证而不是GNU。为了防止数据库中的损坏被破坏,SVN采用了一种称为原子操作的概念。要么应用对源进行的所有更改,要么不应用任何更改,这意味着没有部分更改将破坏原始源。许多开发人员已经切换到SVN,因为它是一种新技术,它采用了CVS的最佳功能并对其进行了改进。
优点:
- 基于CVS的较新系统
- 包括原子操作
- 更便宜的分公司运营
- 适用于IDE的各种插件
- 不使用点对点模型
缺点:
- 仍然包含与重命名文件和目录相关的错误
- 存储库管理命令不足
- 较慢的比较速度
GIT
最初由Linux的Linus Torvalds开发,Git采用了一种与CVS和SVN大不相同的激进方法.Git的最初概念是制作一个更快速的分布式版本控制系统,该系统将公开违反CVS中使用的约定和惯例。它主要是为Linux开发的,并且具有最高的速度。它也可以在其他类Unix系统上运行,而Git的本机端口可以作为msysgit用于Windows。
优点:
- 非常适合那些讨厌CVS / SVN的人
- 运行速度大幅提升
- 廉价分公司运营
- 完整的历史树可离线使用
- 分布式,点对点模型
缺点:
- 用于SVN的学习曲线
- 不适合单个开发人员
- 与Linux相比,Windows支持有限
[BUAA软工]第1次阅读的更多相关文章
- [BUAA软工]第一次博客作业---阅读《构建之法》
[BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
- [BUAA软工]第一次结对作业
[BUAA软工]结对作业 本次作业所属课程: 2019BUAA软件工程 本次作业要求: 结对项目 我在本课程的目标: 熟悉结对合作,为团队合作打下基础 本次作业的帮助:理解一个c++ 项目的开发历程 ...
- [BUAA软工]第零次博客作业---问题回答
[BUAA软工]第0次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第0次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
- [BUAA软工]第二次博客作业---结对编程
[BUAA软工]结对作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 2019年软件工程基础-结对项目作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能 ...
- [BUAA软工]第0次个人作业
[BUAA软工]第0次个人作业 本次作业所属课程 : 2019BUAA软件工程 本次作业要求: 第0次个人作业 我在本课程的目标: 熟悉软件工程流程,规范开发习惯 本次作业的帮助: 熟悉课程流程 Pa ...
- [2021BUAA软工助教]个人第一次阅读作业小结
BUAA个人阅读作业小结 一.作业要求 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2021_LR/homework/11776 二.评分规则 言之有物,按 ...
- [BUAA 软工]提问回顾与个人总结
项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪个具体方面帮助我实现目标 督 ...
- 【BUAA软工】第一次团队作业——团队介绍
项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:团队介绍与采访往届团队 团队作业-团队介绍和采访 Part I 团队成员介绍 有图有真(jia)相 大名 个人介绍 角色意向 李PX 来 ...
- BUAA软工第0次作业
第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 我在大学之前甚至连一个萌新都算不上,根本没有任何一点计算机专业的基础. 因此在进入大学之前,计算机对于我 ...
随机推荐
- ES5数组的遍历方式
/* 遍历数组 */ var arr=[1,2,3,43,55,66,77,99]; /* 遍历数组 function(item,index) */ arr.forEach(function(item ...
- POI生成Web版Word文件
POI生成Web版Word文件 1 通过URL的输入流实现 2 直接把Html文本写入到Word文件 所谓的使用POI生成Web版Word文件是指利用POI将Html代码插入到 ...
- swift的@objc总结
One can explicitly write @objc on any Swift declaration that can be expressed in Objective-C. @objc相 ...
- HTTP 请求方法
一.HTTP中定义了以下几种请求方法: 1.GET:2.POST:3.PUT:4.DELETE; 5.HEAD:6.TRACE:7.OPTIONS: 二.各个方法介绍: 1.GET方法: 对这个资源的 ...
- CF848C:Goodbye Souvenir(CDQ分治)
Description 给定长度为$n$的数组, 定义数字$X$在$[l,r]$内的值为数字$X$在$[l,r]$内最后一次出现位置的下标减去第一次出现位置的下标给定$m$次询问, 每次询问有三个整数 ...
- Remainders Game (中国剩余定理)
题意:已知k和一个集合C={c1,c2,c3....cn},问是否有满足集合C的中国剩余定理的解x,使x%k的值唯一确定. 数学知识: #include<iostream> #includ ...
- WIN10安装时msxml4.0提示2502、2503解决办法
原文地址:https://jingyan.baidu.com/album/b87fe19e54535552183568f5.html?picindex=1 在Win10中,在安装msi安装包的时候常常 ...
- Omi框架学习之旅 - 插件机制之omi-finger 及原理说明
以前那篇我写的alloyfinger源码解读那篇帖子,就说过这是一个很好用的手势库,hammer能做的,他都能做到, 而且源码只有350来行代码,很容易看懂. 那么怎么把这么好的库作为omi库的一个插 ...
- wifidog源码分析 - 认证服务器心跳检测线程
引言 但wifidog启动时,会自动启动认证服务器心跳检测线程,此线程默认每隔60s与认证服务器交互一次,会将路由器的信息(系统启动时长,内存使用情况和系统平均负载)告知认证服务器,并通过一个&quo ...
- python---pandas.merge使用
merge 函数参数 ”’ merge: 合并数据集, 通过left, right确定连接字段,默认是两个数据集相同的字段 参数 说明 left 参与合并的左侧DataFrame right 参与合并 ...