项目 | 内容 |
---|---|
本次作业所属课程 | 北航2019软件工程 |
本次作业要求 | 要求详情 |
我在本课程的目标 | 提升编程能力,了解软件工程 |
本次作业的帮助 | 对软件工程有了基本的理解 |
一、快速看完整部教材,列出你仍然不懂的5到10个问题
1.
4.5.2:在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一 对程序员中各方面水平较高的那一位。这样,程序中的错误就会少得多,程序的初始质量会高很 多,这样会省下很多以后修改、测试的时间。
在看书之前我以为结对作业是两人分工各写一部分代码,但是读书之后我才知道是两个人面对同一台电脑一起编程。虽然书中列出种种好处,但我仍认为当两人思路想法不同时,讨论争执可能要花更多的时间。而且实际公司运作中,真正执行结对编程的比例也少之又少。
2.
8.3:深入面谈(In-depth Interview) 通过详细的面谈,广泛而深入地了解用户的背景、心理、需求等。
如果用户,也就是甲方,不是很清楚自己的需求怎么解决?一会儿不要这个一会儿要这个,导致程序员在编程之外还要浪费大量心力于用户沟通,并且编的程序也要随之反复修改。
3.
16.5:真正做好服务,不管用户有多少。保护用户 的数据和隐私,就像你希望别人保护你的隐私一 样,不要找借口。
作为刚进入职场的程序员,多数人很难决定自己要做什么,一般都是服从上级命令。这时和自己的想法如何调和?
4.
迷思之三:好的想法会赢
关于此处提到的键盘案例,我只是想问:为什么法国的键盘和其它所有国家的键盘都不一样却能在这个国家一直使用呢?如果说因为法语字母上标有音调,可其它很多语言也是这样的,甚至更复杂。所以法语键盘流传下来的原因是什么?
5.
图16-8 高科技被炒作的规律
为什么第二轮/三轮风投融资会出现于迷茫期?投资方为什么会选择一项高科技出现负面报道和失败的低谷时期对其投资?我不能理解其中的道理。
二、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
软件:1958年,John Tukey(维基百科-John Tukey),在其论文"The Teaching of Concrete Mathematics"中提出
John Wilder Tukey, one of the most influential statisticians of the last 50 years and a wide-ranging thinker credited with inventing the word ''software''.
软件工程:由Margaret Hamilton(维基百科-Margaret Hamilton)首次使用。她曾致力于阿波罗任务,是一位在工程上取得杰出成绩的女性。
Margaret Hamilton is the person who came up with the idea of naming the discipline, “software engineering”, as a way of giving it legitimacy.
三、【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
Ada Lovelace在19世纪为将要制成的分析机写了算法流程图,虽然最后没能做出实物,但她被视为第一个“写计算机软件的一部分”的人。
四、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
平台 |
用户数量 |
优点 |
缺点 |
Microsoft TFS |
|
任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用,集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM,能与 VS 无缝接合。
|
搭建、维护tfs比较复杂,硬件要求也比较高。[1]
|
Git |
|
1、 适合分布式开发,强调个体。 2、公共服务器压力和数据量都不会太大。 3、速度快、灵活。 4、任意两个开发者之间可以很容易的解决冲突。 5、 离线工作。
|
1、资料少(起码中文资料很少)。 2、学习周期相对而言比较长。 2、 不符合常规思维。 4、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。[2]
|
Mercurial |
|
1、 更轻松的管理——分布式的模型。 2、更健壮的系统——分布式系统比集中式的单服务器系统更健壮[3]
|
不支持针对单个文件夹的分支[33]
|
GitHub |
24,000,000 |
1、分布式,每个参与开发的人的电脑上都有一个完整的仓库,不担心硬盘出问题;
|
权限管理不是很方便,需要安装插件gitolite,配置有点麻烦,或者直接使用gitlab管理[4]
|
Bitbucket |
5,000,000 |
免费支持私有仓库 |
不提供在线的jekyll,python,php等在线服务[5] |
Trac |
|
1、Trac做一个SCM配置管理平台,意味着它有良好的扩充性 2、Trac的权限体系是比较完备的设计 3、非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
|
1、不支持多项目,需求和缺陷没有分离, 2、用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,中文化不完整,美术人员接触起来困难重重,不显示中文名,本地化做得很差,核心功能很少,不安装插件基本上没法用。[6]
|
Bugzilla |
|
BUGZILLA不收费,支持中文 |
BUGZILLA只能管理缺陷[7] |
Rational |
|
|
|
AppleXCode |
|
1、可以自动创建分类图表。 2、自动提供撤消、重做和保存功能,无需编写任何编码。
|
更新版本后,某个插件可能会失效[9]
|
[1]:https://www.cnblogs.com/yuyue1216/p/5281544.html
[2]:https://www.cnblogs.com/bgwhite/p/9403233.html
[3]:https://baike.baidu.com/item/Mercurial/6615059?fr=aladdin
[33]:http://velep.com/archives/502.html
[4]:https://blog.csdn.net/zhezhebie/article/details/82563568
[6]:https://www.cnblogs.com/yuyue1216/p/5281544.html