软工-第一次博客作业
项目 | 内容 |
---|---|
这个作业属于那个课程 | 班级博客 |
这个作业的要求在哪里 | 作业要求 |
我在这个课程的目标是 | 学习软件工程相关知识,锻炼软件开发能力。 |
这个作业在哪个具体方面帮我实现目标 | 阅读教材,大体理解软件工程 |
作业正文 | 作业正文 |
一、阅读教材并提出问题
1.对第二章中单元测试标准的疑问
作者在书中只以一个简单类的单元测试为例,但实际的软件工程中往往涉及到GUI/数据库等情况,每种类型的单元测试具体如何分析?是否每个项目的每个part都要做到代码路径全覆盖?
我查了资料,以下的回答比较有启发性:
回答1针对单元测试具体内容做出了一些解答。
回答2则给出了单元测试的5个级别,以及常用场景的级别划分。
2. 关于第四章结对编程的疑问
在目前的网络授课环境下,结对编程的沟通成本更高了,会不会导致效率下降?在初学入门与空间隔离的条件下,如何保证结对编程的效率呢?
3. 关于第六章敏捷编流程的疑问
6.2节中对敏捷流程各部分会碰到的问题做了总结。但似乎并没有给出部分问题的解法。若团队成员基本都是初见软件工程,一个最直观的问题是:在之后的团队流程中,如何得到各个流程的量化评价?
注意到书中链接10提供了Scrum视频培训,但限于时间因素,还没来得及全部观看。
(注:阅读后续章节发现有部分解释,但仍偏理论,并且也并未给出具体量化)
4.关于第9章项目经理的疑问
PM做开发和测试之外的所有事情。
书中对PM的职责进行了详细的描述,并对如何做好PM给出了一定的建议。但实际情况下,初入门的PM是否真的能完成这么多的职责?这个职位在课设中是否真的有意义,而不是沦为一个挂名职位呢?另外,作为组内程序员,在出现问题甚至矛盾时,如何配合PM完成各项工作?
5.关于第16章迷思之六
迷思之六,技术是创新的关键。
书中以铱星计划为例,说明科研技术不等于创新。我在查看铱星计划的相关资料后,发现其失败是建立在跨国家,组织,技术和多个管理层面的,巨型的,复杂的技术创新管理体系的失败,一系列复杂的原因导致了铱星计划的破产,不能仅仅将其归咎于创新。作者在后续内容中以用户体验一节的茶壶案例说明了类似的观点。但我认为科技的发展很大程度标志着创新,比如目前的手机行业,摄像头设计均为挖孔与升降式结构,此时在摄像头隐藏上取得突破,让用户取得更高的屏占比,就可以引导行业进一步发展。
二、请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
软件一词,由John Tukey在于1958年发表的论文“The Teaching of Concrete Mathematics”中提出。
软件工程,则由Margaret Hamilton于阿波罗11号软件开发周期内提出。
地点则均为美国。
三、大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
分享一则关于菜单的冷知识,世上第一个游戏彩蛋由Warren Robinett(沃伦·宾耐特)在开发第一个动作冒险游戏《adventure》时完成。因雅达利公司时任管理者不允许将制作人名字印在游戏卡带上,沃伦设计并制作了下图的隐藏关卡。
四、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
用户数目列表
管理软件名 | 用户数 | 项目数 |
---|---|---|
GitHub | 31,000,000 | 100,000,000 |
Bitbucket | 5,000,000 | Unknown |
Launchpad | 3,965,288 | 40,881 |
SourceForge | 3,700,000 | 500,000 |
GitLab | 100,000 | 546,000 |
GNU Savannah | 93,346 | 3,848 |
OSDN | 54,826 | 6,294 |
优缺点分析:
管理软件名 | 优点 | 缺点 |
---|---|---|
Microsoft TFS | 是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。 | 能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。 |
GitHub | GitHub提供Git存储库服务,基于web,允许你使用Git的源代码管理功能,或者其特性。 | 如果有不公开的专案的话,需要付费,没有一个很清楚的图表可以看清楚所有专案的milestone due day顺序,没有甘特图可以看,只有英文界面 |
Trac | 非常灵活,可以随心所欲控制可以和SVN集成,权限设置比较完善,且是一个SCM配置管理平台,意味着它有良好的扩充,权限体系完善 | 不支持多项目,需求和缺陷没有分,用 Wiki 来替代 Word 等工具编写文档提高了学习成本,中文支持不好,核心功能很少,需要配合插件使用。 |
Bugzilla | 检索功能强大,后端数据库支持好,中文化支持完整。 | 快速搜索结果不准确,只能管理缺陷 |
Mercurial | 有revset,扩展性,append only的存储结构,易于掌握,对新手友好 | 只允许两个分支进行合并。 |
Apple XCode | 编译速度极快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。 | 更新版本后,某个插件可能会失效。 |
五、调查完目前流行的源程序版本管理软件和项目管理软件后,请你选择其中至少2个软件来进行动手实践,对每个软件的要求如下:
- 下载和安装软件。
- 使用软件中的某个功能(例如,创建一个 bug,然后关闭这个bug),并进行屏幕截图。
- 把屏幕截图的照片放到博客中,要求该照片能够证明 是你在使用这个软件,比如在旁边放一下自己的博客首页。
- 简要谈一下你使用该软件后的看法。
查找后发现上述管理软件大部分都使用Git,因此下面用了Github和Gitee举例,
Github
gitee码云
此前利用gitee搭建了一个静态的个人博客(原本仓库在github上,但访问速度过慢,因此搬运到了gitee),仓库如下
相类似的Bitbucket、Gitlab等都是采用Git管理,总体用户体验较为一致。