软工第1次个人作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2019春BUAA SCSE软件工程 |
这个作业的要求在哪里 | 第1次个人作业 |
我在这个课程的目标是 | 学习团队开发项目,为以后的工作提供经验 |
这个作业在哪个具体方面帮助我实现目标 | 阅读了《构建之法》,了解到了软件工程的思想 |
1.快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。
1.关于结对编程的效率
既然代码复审能发现这么多问题,有这么好的效果,如果我们每时每刻都处在代码复审的状态,那不是很好么?事实上,极限编程(Extreme Programming)正是这一思想的体现——为什么不把一些卓有成效的开发方法用到极致(Extreme),让我们无时不刻地使用它们?
-- 引用自《构建之法》4.5 结对编程 P78
在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档,等等。
-- 引用自《构建之法》4.5 结对编程 P79
这样的结对编程真的是有效率的方法吗?它和普通的两人团队效率会更好吗?最初的结对编程可能是因为资源的不足,但是现如今可能除了时间以外的资源都是充足的,这种传统意义上的结对编程是不是会太过于消耗时间?赛车和飞机里驾驶员和领航员是不能同时开飞机,但对于代码的撰写可以两人同时撰写,再抽出一定的时间进行审查,是否会比这种纯粹的结对编程效率高?
2. 关于goto语句
函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。
-- 引用自《构建之法》4.3 代码设计规范 P69
在我最开始学习C语言(《C Primer Plus》)的时候,我记得很清楚,书上关于goto语句的态度就是不建议使用,我也经常听说不建议使用goto语句,因为goto语句确实可能存在着一定的问题,而且很难被自己发现,尽管goto语句在某些情况非常好用,比如在上学期的编译课程设计里对于各种各样的错误处理,使用goto语句会非常的简单,但是我最终还是没有采用,而是使用了大量的if-else和return语句来进行处理。我个人还是不太喜欢使用。
3. 迷思之四: 创新者都是一马当先
的确,如书中所提到的有些行业的先行者到了后来并不是该行业的领导者,但是我觉得这正是因为该行业的后来者的创新而导致的,由于后来者的创新,他们有了新功能,有了更加吸引消费者的地方,因此他们才能成为领导者,创新也才能一马当先。
4. 用户体验之不让用户犯简单的错误
我觉得在现在,让用户犯简单的错误却成了一种设计——现在很多的常见的软件总是将广告塞在巧妙的地方,不仔细看都不会发现那小小的“广告”两个字,比如微博中经常就有这种广告,配以诱惑性的图片和文字,当手指移过去才反应过来这是个广告。这种广告一定程度上影响了用户的体验,却可能提高了广告的效应同时可能增大了企业的利益,那么该如何平衡项目受益以及用户体验呢?同时,提高用户的体验势必要付出更多的代价,这里又该如何平衡呢?
5. 迷思之五:要成为领域的专家,才能创新
70%的创新者说,他们最成功的的创新,是在他们的那首领域之外发现的。
-- 引自《构建之法》16.1创新的迷思 P347
我认为这的确是个迷思,我觉得其中的原因可能是当一个人成为了某一行业的专家,那么他肯定是有着一定的研究方向,其产生创新的概率就比那些刚入门的人小,因为他很有可能会坚持这自己的方向去钻研。那我们又该如何避免这一问题出现呢?毕竟我们也是要一直研究、一直学习的,是不是意味着,我们到后来也将无法产生创新?被后人所追赶?
2. 请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
-
根据维基百科,“软件”这一概念最早是Richard R. Carhart在出版于1953年8月的兰德公司研究备忘录(Rand Corporation Research Memorandum)里出现的。
-
“软件工程”这个词在1965年6月就在计算机与自动化的期刊被提出了(来源维基),但玛格丽特·汉密尔顿则在1968年北约的科学家们所开的一届会议上比较正式的提出了这一个概念,使之成为一种专业术语。
3. 大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
- 最开始的电脑的操作员都是女性,因为她们被认为更加细心(这个可能已经不算是冷知识了)。
- 前段时间火爆的产品经理和程序员打架,网络传言是产品经理要求APP主题跟随用户手机壳颜色改变(其实已经被证实为谣言),引起了网友的大量讨论,比如采用瞳孔反射来判断用户手机壳等等奇妙的想法,也引起了许多程序员类似的抱怨。
4. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
软件 | 优点 | 缺点 |
---|---|---|
Microsoft TFS | 强大 集成了多种功能,适合团队使用 |
搭建起来复杂,难以维护 |
Git | 分布式版本控制 易于控制,非常灵活 |
命令太多,学习起来难度略大 |
Mercurial | 命令行 简洁 服务器部署相对容易 |
执着于向后兼容 |
GitHub | 免费 开源 基于Git |
依赖于网络 |
Bitbucket | 支持hg(Mercurial?)和Git 免费闭源 |
限制人数 |
来源: