高级软件开发过程重点知识
1. 绪论
- 软件过程定义:从软件需求定义开始到软件废弃为止,跨越整个生命周期内的系统开发、运行、维护等全部活动及其相关项的总和。
- 软件发展三阶段:程序设计、软件工程、软件过程
- 软件过程能力评估标准和改进方案:CMM, ISO, 6 西格玛
- 生命周期模型:瀑布模型、原型模型、螺旋模型、喷泉模型
- 软件过程与软件工程的关系:包含关系
- 软件过程模式的意义:
- 四要素
- 快速把握软件过程的本质、原则、规范、特点、策略等
- 分析优缺点
2. Rational 统一开发过程
- 三大特点:
- 用力驱动
- 以架构为中心
- 迭代与增量
- 工作流程不仅仅指活动,还表明了角色、活动、工件是一个逻辑整体。
RUP 二维结构图
- 静态特征:纵轴的内容组织
- 动态特征:横轴的时间组织
- RUP 独特的地方
- 并行化
- 阶段内部迭代
- 工作流中多出的几个新的概念
- 明确的里程碑
九大核心工作流程
- 核心过程
- 业务建模
- 需求
- 分析设计
- 实施
- 测试
- 部署
- 核心支持
- 配置、变更管理
- 项目管理
- 环境
- 核心过程
- 工件:模型、元素、文档、源代码、可执行文件、工具等。
四阶段:
- 先启(目标)
- 精化(架构)
- 构建(初始化、产品是否稳定、迭代次数最多)
- 产品化(产品发布、用户是否满意)
五大角色
- 分析员
- 开发人员
- 测试员
- 经理
- 其他角色
角色的意义(两步走):
- 迭代计划时,确定角色
- 人员计划时,考虑个体的技能特长,分配角色
- 角色方面的缺陷:未给出角色的组织管理方式、角色之间的地位和交互关系。
- 用例的缺点及其解决方法:非功能性需求表现不足,可用补充说明文档解决。
架构视图:
- 用例模型视图
- 分析模型视图
- 设计模型视图
- 实施模型视图
- 实现模型视图
- 补充【架构必须留有复用和进化空间】
RUP 的优点
- 二维迭代,有利于降低风险,适应新需求
- 可配置,具有通用性
- 包含四要素的详尽的阐述
- 有现成的使用工具,具有操作性、可实现性
RUP 的缺点
- 四要素关系及其优先级未给出
- 生命周期各元素的关旭和优先级未给出
- 人员之间的优先级和协作方式未给出
- 产品和方法之间的优先级未给出
3. 敏捷开发过程
4 条基本价值观
- 个体和交互胜过过程和工具(人员、生命周期、方法)
- 可以工作的软件胜过面面俱到的文档(产品)
- 客户合作胜过合同谈判(人员)
- 响应变化胜过遵循计划(方法)
12 条基本原则
1、我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
2、欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
3、要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
4、项目过程中,业务人员与开发人员必须在一起工作。
5、要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
6、无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
7、可用的软件是衡量进度的主要指标。
8、敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
9、对技术的精益求精以及对设计的不断完善将提升敏捷性。
10、要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
11、最佳的架构、需求和设计出自于自组织的团队。
12、团队要定期反省如何能够做到更有效,并相应地调整团队的行为。- 分类:
- 生命周期(1,3,7,8)
- 人员(4,5,6,11,12)
- 产品(无)
- 方法(2,9,10)
- 分类:
计划游戏(制定细致度逐渐降低的计划)
- 持续集成
- 结对编程
- 隐喻(全局视图、未来影像)
4. 微软开发过程
术语
- 项目前景与项目范围
- 功能说明书
- 程序经理
过程原则
- 制定计划时兼顾未来的不确定因素
- 通过有效的风险管理减少不确定因素的影响
- 经常生成过度版本,并进行快速测试来提高产品的稳定性和可预测性
- 快速循环、递进的开发过程
- 从产品特性和成本能控制出发创造性的工作
- 创建确定的进度表
- 使用小型项目组并发的完成工作,并设置多个同步点
- 将大型项目分解为多个可管理的单元,以便快速的发布产品
- 用产品的前景目标和概要说明指导项目开发工作——先基线化,后冻结
- 避免产品走形
- 使用原型验证概念,进行开发前的测试
- 零缺陷观念
- 非责难式的里程碑评审会
组队原则
- 小型的、多元化的项目组
- 角色依赖、职责共享
- 专深的技术水平和业务技能
- 以产品发布为中心
- 明确的目标
- 客户的主动参与
- 分享产品的前景
- 所有人都参与设计
- 认真从过去的项目中吸取经验
- 共同管理、共同决策
- 项目组成员在同一地点办公
- 大型项目组也像小型项目组那样运作
微软过程生命周期
相当于 RUP 的生命周期的精简版,但是微软生命周期的特色在于其每个阶段设置的缓冲时间
- 构想(先启)
- 计划(精化)
- 开发(精化)
- 稳定(构建)
- 发布(产品化)
微软角色划分
以前的项目经理被拆分为产品经理和程序经理,因为这项目经理往往身兼两个角色,而这两个角色之间存在着矛盾。
- 产品经理
- 程序经理
- 开发工程师
- 测试工程师
- 用户体验人员
- 发布管理人员
角色间的关系
- 对等
- 相互协作的方式是交流和沟通
角色合并原则
- 开发人员不能兼任其他角色
- 不能试图合并两个有明显利益冲突或制约关系的职能角色
角色合并结论
- 最小的项目组需要 3 个成员:产品经理、程序经理、开发工程师
微软均衡三角形
结论:四要素之间相互制约,任何一条边的改变都会对剩余的边造成影响。
微软项目均衡矩阵
- 执行方法
RUP/AP/微软过程的关系
三者相互交叉、相互重叠,又相互区别互不包含
微软每日编译生成机制