构建之法读书笔记

读书笔记

思维导图

笔记明细

第一章:概论

1.1什么是软件?

软件=程序+软件工程

1.2什么是软件工程?

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

第二章:个人技术和流程

2.1单元测试

 单元测试验证标准:

 1单元测试应该在最低的功能/参数上验证程序的正确性

 2单元测试必须由最熟悉代码的人(程序的作者)来写

 3单元测试过后,机器状态保持不变

 4单元测试要快(一个测试的运行时间是几秒,而不是几分钟)

 5单元测试应该产生可重复,一致的结果

 6独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。

 7单元测试应该覆盖所有的代码路径

 8单元测试应该集成到自动测试的框架中

 9单元测试必须和产品代码一致保存和维护

2.2回归测试

目的:

1验证新的代码的确改正了缺陷

2同时要验证新的代码有没有破坏模块的现有功能

2.3效能分析工具

抽样

代码注入

2.4个人开发流程

第三章:软件工程师的成长

3.1初级软件工程师如何成长?

1积累软件开发相关的知识

2积累问题领域的知识和经验

3对通用的软件设计思想和软件工程思想的理解

4提升职业技能

5实际成果

3.2职业发展——考级

第四章:两人合作

4.1两人合作的不同阶段

1萌芽阶段(Forming)

2磨合阶段(Storming)

3规范阶段(Norming)

4创造阶段(Performing)

5解体阶段(Deforming)

4.2代码风格规范

原则是:简明,易读,无二义性

4.3代码设计规范

1函数:只做一件事,并且做好

2goto

3错误出来

4处理好c++做的类

5代码复审

4.4结对编程

第五章:团队和流程

5.1开发流程

瀑布模型…

5.2典型软件团队模式

5.3MVP,MBP

5.4 Rational统一流程(RUP

业务建模、需求、分析和设计、实现、测试、部署、配置和变更管理、项目管理、环境

第六章:敏捷流程

6.1敏捷的原则

1尽早并持续地交付有价值的软件以满足顾客需求

2敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势

3经常发布可用的软件,发布间隔可以从几周到几个月,能短则短

4业务人员和开发人员在项目开发过程中应该每天共同工作

5以有进取心的人为项目核心,充分支持信任他们

6无论团队内外,面对面的交流始终是最有效的沟通方式

7可用软件是衡量项目进展的主要指标

8敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去

9只有不断关注技术和设计,才能越来越敏捷

10保持简明——尽可能简化工作量的技艺——极为重要

11时时总结如何提高团队效率,并付诸行动

 

6.2敏捷流程的经验教训

第七章:MSF

7.1MSF基本原则

1 推动信息共享与沟通(Foster open communications)

2 为共同的远景而工作(Work toward a shared vision)

3 充分授权和信任(Empower team members)

4 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)

5 交付增量的价值(Deliver incremental value)

6 保持敏捷,预期和适应变化(Stay agile, expect and adapt change)

7 投资质量(Invest in quality)

8 学习所有的经验(Learn from all experiences)

9与顾客合作(Partner with internal and external customers)

7.2MSF敏捷开发模式

第八章:需求分析

8.1如何准确寻找需求

1获取和引导需求

2分析和定义需求

3验证需求

4在软件产品的生命周期中管理需求

8.2用户需求获取

 

8.3软件需求划分

1对于产品功能性的需求

2对于产品开发过程的需求

3非功能性需求

4综合需求

8.4NABCD模型

NABCD模型——N(Need,需求)、A(Approach,做法)、B(Benefit,好处)、C(Competitors,竞争)、D(Delivery,推广)

8.5分而治之

第九章:项目经理

9.1团队角色分工

9.2PM的专业能力

9.3PM的任务

 

第十章:典型用户和场景

10.1典型用户和场景

10.2用例的基本元素

l  标题:描述这个用例要达到的目标

l  角色(Actor):和软件系统交互的角色,例如用户,其他实体,甚至时间(在描述一些和时间相关的场景时有用)

l  主要成功场景(Main Success Scenario):一系列步骤描述角色是怎样和系统交互,从而达到目标的。

l  步骤(Step):描述每一步的交互(例如一套正常的ATM取款流程)

l  扩展场景(Extension):描述一些扩展的交互,例如一些意外情况(例如取款时账户余额不足)。

10.3 软件功能说明书

1定义好相关的概念

2规范好一些假设

3避免一些误解,界定一些边界条件

4描述主流的用户/软件交互步骤

5服务质量的说明

10.4技术说明书

1抽象

2内聚/耦合/模块化

3信息隐藏和封装

4界面和实现的分离

5如何处理错误情况

6程序模块对于运行环境、相关模块、输入输出参数有什么假设?这些假设和相关的人员验证过么?

7应对变化的灵活性

8对大量数据的处理能力,如果数据量增大,程序还能保持高的效率么?

第十一章:软件设计与实现

11.1图形建模和分析方法

11.2每日构建

11.3A/B测试

第十二章:用户体验

12.1用户体验的一些原则

1仅提供可感触的反馈

2系统界面符合用户的实现惯例

3用户有自由控制权

4一致性和标准化

5适合各种类型的用户

6帮助用户识别、诊断并修复错误

7有必要的提示和帮助文档

第十三章:软件测试

13.1测试工作中的文档

13.2测试方法

1单元测试(Unit Test)

2代码覆盖率测试(Code Coverage Analysis)

3构建验证测试(Build Verification Test,BVT)

4验收测试(Acceptance Test)

5“探索式”的测试(Ad hoc Test)

6回归测试(Regression Test)

7场景/集成/系统测试(Scenario/ Integration / System Test)

8伙伴测试(Buddy Test)

9效能测试(Performance Test)

10压力测试(Stress Test)

11内部/外部公开测试(Alpha/Beta Test)

12易用性测试(Usability Test)

13“小强”大扫荡(Bug Bash)

第十四章:质量保障

14.1软件工程质量的衡量

1软件开发过程的可见性

2软件过程的风险控制

3软件内部模块,项目中间阶段的交付质量,项目管理工具的因素

4软件开发成本的控制

5内部质量指标的完成情况

第十五章:稳定和发布阶段

15.1常见软件版本名字

15.2事后诸葛会议

第十六章:IT行业的创新

第十七章:人、绩效和职业道德

17.1RASCI模型

猜你喜欢

转载自www.cnblogs.com/YangXiaoJian/p/10528383.html
今日推荐