个人作业—week1

### 阅读《构建之法》提问

1. 做软件测试必须有哪些的知识储备?

2. 在开发一款应用之前,怎样精准地了解到用户是否真的有这方面的需求?

3. 结对编程的过程中,如果两者出现分歧,难以达成一致的时候,应该如何解决?

4. 我们经常会觉得阅读别人的代码十分困难。那么我们自己写代码的时候,应该注意些什么,来尽可能的避免别人阅读自己代码时的反感呢?

5. 如果我们在代码实现的过程中发现架构的实现并不是最优的,还可以用更有效率的方式满足需求。但修改架构将会影响大量之前的代码实现。此时应该如何取舍?

6. 在软件的测试阶段,我们可能遇到的问题可能比开发过程中遇到的问题还要多,怎么处理好在测试阶段的问题?怎么运用不同的测试方法进行测试?

 

###请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?

- 软件:第一个写软件的人是Ada(Augusta Ada Lovelace),在1860年代她尝试为 Babbage(Charles Babbage)的机械式计算机写软件。尽管他们的努力失败了,但他们的名字永远载入了计算机发展的史册。20世纪50年代,软件伴随着第一台电子计算机的问世诞生了。以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师。1960年代美国大学里开始出现授予计算机专业的学位,教人们写软件。

- 软件工程:随着计算机技术的发展和计算机应用的日益普及,软件系统的规模越来越庞大,高级编程语言层出不穷,应用领域不断拓宽,开发者和用户有了明确的分工,社会对软件的需求量剧增。但软件开发技术没有重大突破,软件产品的质量不高,生产效率低下,从而导致了“软件危机”的产生。
自1970年起,软件开发进入了软件工程阶段。由于“软件危机”的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件产生进入了软件工程时代。此阶段的特点是:硬件已向巨型化、微型化、网络化和智能化四个方向发展,数据库技术已成熟并广泛应用,第三代、第四代语言出现;第一代软件技术:结构化程序设计在数值计算领域取得优异成绩;第二代软件技术:软件测试技术、方法、原理用于软件生产过程;第三代软件技术:处理需求定义技术用于软件需求分析和描述。

###上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

- Git:具有分布式的特点,开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的Git仓库。适合分布式开发,速度快,灵活。缺点是代码保密性差,一旦开发者把整个仓库克隆下来,就可以完全公开所有代码和版本信息。
- Microsoft TFS:优点:对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。缺点:能应用起来的团队、公司的数量极少,多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。
- Apple XCode:优点:编译速度极快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。缺点:更新版本后,某个插件可能会失效。

posted @ 2017-09-24 12:13  LiuSD  阅读(136)  评论(1编辑  收藏  举报