第一章 概论(1.25)
问题:什么是BUG?有没有没有BUG软件?没有BUG就代表软件完美吗?
答:一般人认为BUG就是软件的缺陷。而简单地说,软件的行为和用户期望值不一样就叫做BUG。比如聊天软件运行时崩溃,用户期望运行时不会崩溃等。很多人认为有BUG就是质量不及格,没有BUG就是质量完美,其实未必。有实际用处同时又是完美的软件并不存在。没有实际用处完美的软件也不存在。所谓很好的软件不是没有BUG而是能符合用户需求,“足够好”,而且能够通过数据和其他方式展现所开发的软件是可以维护和继续发展的。这才是有BUG却“足够好”的软件的要求。
第二章 个人技术和流程(2.1)
问题:什么是单元测试?为什么要进行单元测试?什么才是好的单元测试标准?
答:单元测试是指对软件中的最小可测试单元进行检查和验证。其目的是为了让程序员所负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。好的单元测试必须满足一下要求:
1单元测试应该在最低的功能、参数上验证程序的正确性
2单元测试必须由最熟悉的人来写
3单元测试过后,机器状态保持不变
4单元测试要快
5单元测试应该产生可重复、一致的结果
6独立性—单元测试的运行、通过。失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性
7单元测试应该覆盖所有代码路径
8单元测试应该集成到自动测试的框架中
9单元测试必须和产品代码一起保存和维护
第三章 软件工程师的成长(3.1)
问题:软件工程师的具体发展步骤是什么?每个阶段需要怎么做?
答:一、初级软件工程师的成长
1积累相关开发知识,提升技术技能
2积累问题领域的知识和经验
3对通用的软件设计思想和软件工程思想的理解
4提升职业技能:这里的技能区别与技术技能,指的是自我管理能力、表达和交流能力等
5实际成果
二、软件工程师的职业发展
1考级之路:既可以考国家认证的,比如计算机等级考试等,也可以考公司的职业认证项目,比如微软认证专家等。
2职业成长:每个人和公司都有不用的成长标准,我们要按照自己的实际情况和职业要求适当地借鉴和利用
第四章 两人合作(4.5)
问题:什么是结对编程?为什么要结对编程?如何结对编程?
答:一、结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。结对编程的好处:
1在开发层次,结对编程能提供更好的设计质量和代码质量,两个人合作解决问题的能力更强
2对开发人员来说,结对工作可以带来更多的信心,高质量的产出能带来更高的满足感
3在企业管理层上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。总之,如果运用得当,结对编程可以取得更高的投入和产出
二、有效率的结对编程不是一天能够做到的。结对编程是一个相互学习、相互磨合的渐进过程。开发人员需要时间来适应这种新的开发模式。一开始,结对编程很
可能比不上单独开发的效率,但是度过了学习阶段后,结对编程的开发质量、开发时间通常比两人单独开发有明显的改善
第五章 团队流程(5.2 5.3)
问题:典型的软件团队模式和开发流程有哪些?各有什么优缺点?
答:一、秘密团队:团队内有极大的自由,没有外界干扰,团队成员有极大的投入
交响乐团模式:当某个软件处于稳定状态的时候,公司团队就会采用这个模式,比如微软公司的Office软件的发展过程。
功能团队模式:具备不同能力的同时平等协作,共同完成一个功能
二、开发流程
瀑布模型: