项目 | 内容 |
---|---|
这个作业属于哪个课程 | 班级博客 |
这个作业的要求在哪里 | 作业要求 |
我在这个课程的目标是 | 学好并应用好软件工程 |
这个作业在哪个具体方面帮助我实现目标 | 阅读教材快速了解软件工程,了解目前流行的源程序版本管理软件和项目管理软件 |
作业正文 | 如下 |
任务一
快速看完邹欣老师的博客园讲义,列出你仍然不懂的5到10个问题,发布在你的个人博客上。
问题一:现代软件工程讲义 3 结对编程和两人合作中提到:
结对编程有如下的好处:
(3)在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。
以及
结对编程的过程也是一个互相督促的过程,每个人的一举一动都在别人的视线之内,所
有的想法都要受到对方的评价。由于这种督促的压力,使得程序员更认真地工作。结对
编程“迫使”程序员必须频繁地交流,而且要提高自己的技术能力以免被别人小看。
书中的描述与我的直接经验矛盾,我对此产生了疑问;两个人中如果能力差距太大,可能会导致编程往往是能力强的人独立完成的,能力弱的人如果遇到问题经常提问的话,或许会影响编程的效率;而两个人能力差距不大的话,结对编程与单独编程所学到的东西以及效率可能是差不多的。
问题二:现代软件工程讲义 3 代码规范与代码复审中10.3.2提到:
在面对面的复审中,一般是开发者控制流程,讲述修改的前因后果。但是复审者有权在任何时候打断叙述,提出自己的意见。
书中的描述与我的直接经验矛盾,我对此产生了疑问;当我在腾讯课堂看到课件上的这句话时就产生了疑问,无论是别人,还是自己讲解代码时,有人打断的话可能会想不起下一步该讲什么,复审者在任何时候都能打断的话,会打乱开发者的思路,会不会影响复审的效率,可能开发者在下一步就会回答这个问题,我觉得复审者可以记录下来自己的问题,在合适的时机提问。
问题三:软件工程讲义 3 两人合作(2) 要会做汉堡包提到:
先来一片面包, 做好铺垫, 例如可以从双方的共同点, 团队共同的愿景讲起, 让对方觉得处于一个安全的环境。
这种方法在有些情况下或许不适应,两人合作,如果一人要反馈的话,要用什么样的方法来让另外一个人接受应该是因人而异的;谈双方的共同点, 团队共同的愿景,或许在另外一个人看来是浪费时间,降低效率,反而起了反作用。
问题四:现代软件工程讲义 5 项目经理第2节中提到:
Program Manager管事不管人
我觉得这句话没有表述清楚,PM不管人 在这句话中应该是和团队中的人是平等的关系,而当第一次看到时或许会有人觉得这句话表达的意思是不与团队中的人打交道,只和事打交道,引起误解。
问题五:现代软件工程讲义 6 用户调研中提到:
用户最需要的 > 用户表达出来的
这句话引起了我的疑问,如果用户最需要的都表达不出的话,那么我们或许可以认为PM没有能力和用户进行有效的沟通,如果用户表达不出最需要的话,我们也没必要做出这个软件了,我觉得这句话应该描述为 用户想要的>用户表达出来的。
任务二
请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
1958年,美国数学家Tukey在发表的论文"The Teaching of Concrete Mathematics"中,提到了“software”,发明了”软件“这个词汇(详见这篇文章)。
1969 年(阿波罗 11 号期间),“软件工程”在MIT Draper 实验室被Margaret Hamilton所发明,”软件工程“ 出现的背景:Margaret Hamilton坚信这项发明流着艺术与科学的血液,于是她开始使用“软件工程”这样的字眼来将之与硬件还有其他工程学类做出区别,致力于为软件以及那些发明者争取应有的正统性与尊重(详见这篇报道)。
任务三
大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
图灵不仅智力远超平常人,在体力上也极为强悍;14岁时,他上Sherborne寄宿高中的第一天,不巧遇上总罢工,所有公交工具停驶,图灵没有等公交恢复运行,索性从南安普敦骑车96公里到位于多塞特郡西北的学校上学,引起一阵轰动;图灵曾说过“我做的工作压力太大,我能把它从内心去除的唯一方式,就是使劲地跑。”,而且他有次仅以6秒之差,惜败于入选1948年伦敦奥运会5000米项目的英国选手。
https://www.sohu.com/a/4366767_115393
任务四
**上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? **
管理软件 | 优点 | 缺点 |
---|---|---|
Visual Source Safe | 如果开发工具是VS.NET,用VSS较合适,方便,安装配置和使用都简单,版本控制简单,打label后,要还原到这个版本较简单 | 基局域网,效率低,VSS自身安全性较差,只支持widows平台下 |
Concurrent Version System | 一度成为主流,不必担心数据流失,对中文路径名支持的较好,本地文件与库的对应可以多对多 | 不支持文件改名且只允许存储文件,管理员很难清楚地知道一个项目到底有多少个用户,各用户的权限和密码是什么,只能用分组的方式管理用户而且密码和权限还是不清晰 |
subversion | 支持文件重命名提交,系统会提示删除旧文件,创建新文件,删除本地文件提交,库中文件也被删除 | 要将权限控制文件保存为svn支持的UTF-8格式,一个库可以有多个工作目录但一个工作目录只能对应一个库,虽然可以更改库位置,但是要求很严格,看不到文件真正的内容 |
Microsoft TFS | 是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。 | 能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。 |
GitHub | GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能,或者其特性。 | 可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。 |
Trac | 非常灵活,可以随心所欲控制可以和SVN集成 | 功能不是很强大 |
Bugzilla | 免费,有中文版支持 | 快速搜索结果不准确,只能管理缺陷。 |
Apple XCode | 编译速度极快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。 | 更新版本后,某个插件可能会失效。 |
上面信息来源于这篇博客
请按照最近一两年使用人数的多少, 从多到少排序并说明各自有多少用户(估计)
以下数据来源于维基百科
从多到少排序:GitHub,Bitbucket,Launchpad,SourceForge,GitLab,GNU Savannah,OSDN,Ourproject.org
任务五
调查完目前流行的源程序版本管理软件和项目管理软件后,请你选择其中至少2个软件来进行动手实践
Git:
使用Git将修改添加到暂存区(git add .);
使用Git将暂存区里的改动给提交到本地的版本库(git commit -m '');
使用Git可以更好地管理程序,如果原来提交过内容,以后要是修改了,可以通过git把原来提交的内容恢复;能跨越地域的限制,只需push上去,然后clone下来就行。
GitHub:
创建一个仓库;
将仓库里面的内容拷贝到本地;
GitHub适合程序员交流,有着美观的界面。