6. 敏捷流程
- FDD(Feature Driven Design)
- Scrum
- XP
- TDD
7. MSF
Microsoft Solution Framework, MSF。 MSF没有像敏捷那样搞一个宣言,但是它也有一套思想框架—9条基本原则[注释1],下面来分别讨论。
-
- 推动信息共享与沟通(Foster open communications)
-
- 为共同的远景而工作(Work toward a shared vision)
-
- 充分授权和信任(Empower team members)
-
- 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
-
- 交付增量的价值(Deliver incremental value)
-
- 保持敏捷,预期和适应变化(Stay agile, expect and adapt change)
-
- 投资质量(Invest in quality)
-
- 学习所有的经验(Learn from all experiences)
-
- 与顾客合作(Partner with internal and external customers)
8. 需求分析
软件需求:获取和引导需求;分析定义需求;验证需求;在软件产品的生命周期中管理需求;
常用的用户调研方法:焦点小组;深入面谈;卡片分类;调查问卷;用户日志研究;人类学调查;眼动跟踪研究;快速原型调研;A/B测试
NABCD 模型: - N(Need,需求):创意解决了用户什么需求 - A(Approach, 做法): 有什么独特的招数来解决用户的痛苦。可以是技术上的、商业模式上的、地域的、行业的、人脉的、行业的、成本上的。 - B(Benefit, 好处): 产品或服务给用户带来什么好处呢? - C(Competitors, 竞争): 市场多大,竞争对手。有先发优势也有后发优势。我方优势和劣势 - D(Delivery, 推广): 怎样把产品交到用户手中?
功能的定位和优先级:杀手功能(core)/外围功能(Context); 必要需求(Mission Critical)/辅助需求(Enabling)。 对不同功能有哪些办法呢? - 维持: 最低成本维持此功能 - 抵消:快速达到足够好,和对手差不多 - 优化:大力气做到并保持行业最好 - 差异化:产生同类产品比不了的功能或优势(我有人无的优势,或者一个数量级以上的优势) - 不做:砍掉
实现的复杂程度由两个因素决定: - 需求的复杂程度:程序员是第几次实现类似需求? - 技术的复杂程度:程序员是第几次用这个技术实现
12 用户交互设计
降低用户的认知阻力。软件工程师往往以掌握认知阻力大的工具而自豪(比如命令行操作,VI/Emacs等),但是大多数用户的心理是要 躲避认知阻力。
评价标准: - 尽快提供可感触的反馈系统状态 - 系统界面符合用户的现实惯例。(避免给用户带来惊奇) - 用户有控制权 - 一致性和标准化 - 适合各种类型用户 - 帮助用户识别、诊断并修复错误 - 有必要的提示和帮助文档
13 软件测试
内部/外部公开测试(Alpha/Beta Test)
设计测试用例: - 等价类划分 - 边界值条件 - 常见错误,经验推测
14 质量保障
软件质量=程序质量+软件工程质量
程序质量:外在功能的质量 软件工程质量:功能、成本、时间。可见性、风险控制、成本控制、指标完成状况
CMMI(Capacity Maturity Model Inte-grated, 能力成熟度模型集成)
15 稳定和发布阶段
17 人、绩效和职业道德
RASCI模型: R:Responsible,负责把具体事情做好。 A:Accountable,对任务负全责,有批准的权力。 S:Support,对任务提供支持,辅助任务的完成。 C:Consulted,咨询,拥有完成项目所需的信息或能力的角色。 I:Informed,知会者,应该事后及时通知结果的角色。
P={做事的,不做事的,不让别人做事的,P4=做假的事的,P5=假装做事的}