软件工程_第一次阅读做业

项目 内容
此做业属于北航软件工程课程 班级博客连接
做业要求见右方连接 做业要求
我在这门课程的目标是 培养专业的软件开发能力
这个做业在哪一个具体方面帮助我实现目标 反思本身的大学生活和学习,对本身有一个更加清晰的认识

1、快速阅读完《构建之法》以后的一些小问题

一、书2.1章节——单元测试 中:

最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义,……程序员

​ 提早写好单元测试应该能够算做提早作好规划设计的一项具体要求,正如大二下OO课程中要提早写好规格同样;编程

​ 然而对于编程经验并非特别丰富的大部分人来讲,这个过程每每困难重重,由于实际的编码和提早的设计会存在不小的差别;服务器

​ 那么,如何解决这样的问题,是不是经验不够的缘由?或是设计的不合理?或是有什么其余的诀窍呢?分布式

二、书3.2章节——软件工程师的思惟误区 中:

分析麻痹:一种极端状况是想弄清楚全部细节、全部依赖关系以后再动手,心理上过于悲观,……函数

不分主次,想解决全部依赖问题:……单元测试

过早优化:……学习

过早扩大化/泛化:……测试

这些思惟误区是确实是咱们常常遇到的问题,有时候每每是陷入其中不知所措时才知道本身陷入了误区,可是下一次可能仍是会“不禁自主”地陷进去……优化

书中这一章节具体地阐述了这样地问题,可是并无说明应该如何避免或是当发生这样地问题时怎样解决;在实践中,咱们应该如何在这些极端中寻找一个合适的平衡点?编码

三、书4.3章节——代码设计规范 中:

关于函数,最重要的原则:只作一件事,而且要作好。

这是一种我一直在追求的编码规范(虽然在稍大一点的项目中一直作得很差)…

常规的作法,就是按照本身的设计不断地把大函数细化;

可是实践中经常有一些函数代码和功能不够简练,却没法再进行分离细化,遇到这种状况应该怎么作?

寻求其余的函数设计?

或者能够容许项目中少数函数出现这样的状况?

四、书4.4章节——代码复审 中:

代码复审的形式

……

团队复审……全体人员都要到会

这种当面开会的形式有助于更好的实时交流,可是是否会影响到审查的效率?尤为是一个问题须要冷静思考的时候。是否能够将工做分为多个阶段,好比先进行各自思考审查,而后分两次讨论,一次初步汇总,方便你们提出各自的问题,第二次进行最终汇总。

代码复审的目的在于:

……

书中列举了6条代码复审的目的,除了代码规范的审查外,这一部分工做与单元测试是否有重合的地方?可否进行更高效的改进?

五、书12.1——用户体验的要素 中:

程序员则以为本身开发的功能必须有几个高级选项,才显得有水平。

这样的心理可能确实是存在的,固然实际并不可取,由于是否实现某一个功能应该看用户的需求,可是对于某一些软件中的“高级功能”,的确有必定需求;

可是也带来一些反作用:

一、需求不是很明显,可是却须要耗费大量的时间;

二、部分“高级功能”不免会存在用户使用困难的状况,这在某些时候反而影响用户体验;

针对第一点,开发时应该如何拿捏这样的度?

针对第二点,或许能够经过添加使用说明这样的方式解决一些用户使用的困难,可是仍然带来了一些不便利的因素,可否有更简单易行的方案(占在用户的角度)?

2、“软件” 和 “软件工程” 这些词汇是如何出现的?

  • “软件”一词最先是由John Turkey在1958年发表的“The Teaching of Concrete Mathematics”这篇文章中提出的。
  • “软件工程”一词最先是在美国阿波罗11号研制期间由科学家Margaret Hamilton提出。

3、关于软件工程的轶事

  • 马化腾的轶事

    QQ最初诞生时就很受欢迎,用户几何级疯狂增加,但从商业上说,QQ在至关长时间内,带给腾讯和马化腾的,只是麻烦,主要的麻烦就是这玩意儿费钱却不挣钱,由于采起免费模式,QQ用户的增加不但没能为其带来收入,并且还不断加剧其运营负担。

    当时的市场也尚未意识到用户的商业价值,马化腾他们也没有意识,能够去找风投融资,既不能本身挣钱,也无人看好与投资,QQ没干多久,马化腾他们手里那点老本就快花光了,严峻时刻,落魄到连服务器托管费用都负担不起,开工没多久,马化腾和其余几个创始人,天天睁开眼睛,就要为钱操心。

4、简述目前流行的源程序版本管理软件和项目管理软件的优缺点

  • 从维基百科中能够查询到目前主要的版本控制软件的使用状况:

  • 对比几个主流版本控制软件的优缺点以下:
软件 优势 缺点
GIT 一、快速且灵活,不一样分支不一样版本之间能够灵活的切换;
二、工做时本地与服务器相互分离,不易发生冲突致使出错;
三、比较适合分布式的开发。
使用有必定难度,若要熟练使用须要对其有充分的了解,故不易上手。
Microsoft TFS 一、适合小团队开发;
二、使用者能比较高效的掌握项目进度、BUG追踪等状况。
速度相对较慢,对于硬件有必定的要求。
Trac 1.有较好的扩展性;
二、有较好的灵活性;
三、有着完备的权限体系。
核心功能较少,还须要一系列复杂的插件;
Mercurial 一、扩展性较好;
二、使用方便,上手简单;
功能不够齐全;分支管理不方便。
相关文章
相关标签/搜索