6. 敏捷流程

  • FDD(Feature Driven Design)
  • Scrum
  • XP
  • TDD

7. MSF

Microsoft Solution Framework, MSF。 MSF没有像敏捷那样搞一个宣言,但是它也有一套思想框架—9条基本原则[注释1],下面来分别讨论。

    1. 推动信息共享与沟通(Foster open communications)
    1. 为共同的远景而工作(Work toward a shared vision)
    1. 充分授权和信任(Empower team members)
    1. 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
    1. 交付增量的价值(Deliver incremental value)
    1. 保持敏捷,预期和适应变化(Stay agile, expect and adapt change)
    1. 投资质量(Invest in quality)
    1. 学习所有的经验(Learn from all experiences)
    1. 与顾客合作(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=假装做事的}