软工个人博客作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 个人博客作业 |
我在这个课程的目标是 | 学习敏捷开发的流程,对软件工程有一个系统的认识和实践 |
这个作业在哪个具体方面帮助我实现目标 | 阅读教材《构建之法》,对软件工程的含义初步了解 |
阅读讲义后的疑问
1.在Personal Software Process中谈到
我个人比较重视一个程序员原创的博客, 在面试的时候, 我们别空口吹思想, 一起来看看你写的原创博客吧
我想知道博客对于软件开发人员的重要性很大吗?哪些东西需要写在博客上呢?很多时候写的博客之后自己就不会看了,写出来的博客仅仅是给他人提供参考吗?
2.在结对编程中谈到了结对编程的种种好处,但我有个问题:
如果两人的代码风格习惯有较大差异,例如程序模块的划分、命名习惯差异等,还能保证较高的编码效率吗?
3.在测试的计划和执行 中谈到
测试不是在所有的开发工作完成之后才进行,而是与开发几乎同步进行的。一个软件项目的各个功能都可以有自己的测试计划,它们可以在不同的阶段发挥作用。
而在前面章节又提到了代码自审这一环节,我理解的是开发人员和测试人员要同步的对代码进行测试检查,如果开发人员审查后交给测试人员进行测试,会不会存在工作重复从而导致软件开发效率变低的问题?或者说,开发人员和测试人员的测试任务划分有没有具体的原则和标准?
4.第4章写道
函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰题现,什么方法都可以使用,包括goto
在我之前的印象中,goto语句因为易导致程序的结构混乱所以不推荐使用,而且一般goto语句可以用其他循环语句来实现。因此这里提到的可以使用goto让我感到疑惑,而且我认为使用goto一般也很容易导致程序bug。
5.在软件工程师的职业道德关于软件工程师需要遵循的原则中提到
综合考虑软件工程师,雇主,客户,用户与公众的利益
当雇主、客户、用户和公众之间存在利益冲突时,作为软件工程师一般都会收到来自雇主方面的压力,这个时候应该如何抉择呢?之前爆出的各种app盗取用户隐私信息的新闻都间接反映出这个问题,所以很多时候软件工程师并没有多大权利决定什么。而现在很多大互联网企业中都是产品经理来决定用户需求,这使得程序员变成了一个只负责代码实现的岗位。。。
软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人
在工程环境中,最早的“软件”一词的发表是在1953年8月,Richard R. Carhart在RAND Corporation的研究备忘录中发表的。http://en.wikipedia.org/wiki/John_Tukey
“软件工程”最早是由玛格丽特.汉密尔顿在1965年6月发布的computers and automation的服务清单中提出。
目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点
按用户数从多到少排序如下(源自wikipedia)
各版本管理软件优缺点:
SVN
- 优点
- 不必担心有什么数据损失
- 统一控制访问权限控制,利用代码安全管理
- SVN会关心所有的文件类型,不需要你来手工操作
- 缺点:
- SVN服务器管理复杂
- 不是本地化操作,如果要删除分支,也是需要将远程的分支进行删除,这会导致大家都得同步
- 所有操作都需要通过服务端进行同步,这会导致服务器性能要求比较高。如果服务器宕机了就无法提交代码了
Microsoft TFS
- 优点
- 与VS契合
- 任务版上能将需求、项目进度一览无余
- 对于小团队而言,比甘特图更有用
- 缺点
- 搭建、维护tfs比较复杂
- 整个系统是用 asp 实现的,用浏览器访问相当慢
Gitlab
- 优点
- 同样是基于web的git仓库,易于代码的版本管理
- 相比于github,提供免费的私有仓库
- 缺点
- 相比于图形界面,命令行操作更流行,因而有一定的学习成本
Github
- 优点
- 有着海量的代码资源
- 上手快,设计简洁,代码托管、版本控制比较方便
- 提供免费的公有仓库
- 缺点:
- 国内访问速度较慢
- 因为是分布式的,每台机器都commit的时候,有的时候忘记了push到远程服务器
Trac
- 优点
- 非常灵活,可定制自由度高
- 权限体系比较完备
- 缺点
- 用户偏少
- 中文化不完整
- 核心功能少,不装插件没法用
Bugzilla
- 优点
- 开源
- 有中文版本支持
- 网络用户界面友好
- 缺点
- 只能管理缺陷