[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次阅读的更多相关文章

  1. [BUAA软工]第一次博客作业---阅读《构建之法》

    [BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  2. [BUAA软工]第一次结对作业

    [BUAA软工]结对作业 本次作业所属课程: 2019BUAA软件工程 本次作业要求: 结对项目 我在本课程的目标: 熟悉结对合作,为团队合作打下基础 本次作业的帮助:理解一个c++ 项目的开发历程 ...

  3. [BUAA软工]第零次博客作业---问题回答

    [BUAA软工]第0次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第0次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  4. [BUAA软工]第二次博客作业---结对编程

    [BUAA软工]结对作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 2019年软件工程基础-结对项目作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能 ...

  5. [BUAA软工]第0次个人作业

    [BUAA软工]第0次个人作业 本次作业所属课程 : 2019BUAA软件工程 本次作业要求: 第0次个人作业 我在本课程的目标: 熟悉软件工程流程,规范开发习惯 本次作业的帮助: 熟悉课程流程 Pa ...

  6. [2021BUAA软工助教]个人第一次阅读作业小结

    BUAA个人阅读作业小结 一.作业要求 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2021_LR/homework/11776 二.评分规则 言之有物,按 ...

  7. [BUAA 软工]提问回顾与个人总结

    项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪个具体方面帮助我实现目标 督 ...

  8. 【BUAA软工】第一次团队作业——团队介绍

    项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:团队介绍与采访往届团队 团队作业-团队介绍和采访 Part I 团队成员介绍 有图有真(jia)相 大名 个人介绍 角色意向 李PX 来 ...

  9. BUAA软工第0次作业

    第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 我在大学之前甚至连一个萌新都算不上,根本没有任何一点计算机专业的基础. 因此在进入大学之前,计算机对于我 ...

随机推荐

  1. 【PAT】B1053 住房空置率(20 分)

    #include<cstdio> #include<string.h> #include<algorithm> using namespace std; int m ...

  2. WPFのclipToBounds与maskToBounds的区别

    UIView.clipsToBounds : 让子 View 只显示父 View 的 Frame 部分,子视图超出frame的部分不显示,默认为NO,设置为YES就会把超出的部分裁掉: maskToB ...

  3. centos7下安装docker(7docker base command 命令词典)

    上一章中我总结了学习docker 镜像时所用过的命令,今天先来将docker base command 记录一下,参考:https://docs.docker.com/edge/engine/refe ...

  4. 转://SQL PROFILE

    我们经常会碰到一些线上的SQL问题,因为执行计划不对,可能需要添加HINT才能解决.但是添加HINT就意味着需要修改应用代码.一般一个应用代码的修改.测试及发布,可能需要两三个工作日才可完成.咱们数据 ...

  5. Vue:渲染、指令、事件、组件、Props

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 如果要我用一句话描述使用 Vue 的经历,我可能会说“它如此合乎常理”或者“它提供给我需要的工 ...

  6. fibonacci数列的性质和实现方法

    fibonacci数列的性质和实现方法 1.gcd(fib(n),fib(m))=fib(gcd(n,m)) 证明:可以通过反证法先证fibonacci数列的任意相邻两项一定互素,然后可证n>m ...

  7. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

    PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是 ...

  8. nodejs写入json文件,格式化输出json的方法

    假如我需要把data序列化成json字符串,然后写入data.json文件中,代码如下: let str = JSON.stringify(data) fs.writeFile('data.json' ...

  9. Cesium学习1:如何在本机的Apache tomcat9.0.8服务器中打开cesium的index.html页面

    Cesium的官方网站:https://cesiumjs.org/ 点击这个按钮来获取最新的Cesium:下载Cesium. 下载完成之后将zip文件解压到你选择的新目录,解压之后文件目录类似于下图. ...

  10. Struts 2.5.20 在Eclipse IDE中的配置和开发实例

    零.参考博客1.Struts框架入门教程2.Struts 2.5.10.1配置 3.eclipse中搭建Struts2.5.16 4.Struts2.5+eclipse+tomcat8.5配置 注意: ...