软件过程重点知识梳理


title: 软件过程重点知识梳理 date: 2018-12-28 08:52:02 tags: 软件开发过程


高级软件开发过程重点知识

1. 绪论

  • 软件过程定义:从软件需求定义开始到软件废弃为止,跨越整个生命周期内的系统开发、运行、维护等全部活动及其相关项的总和。
  • 软件发展三阶段:程序设计、软件工程、软件过程
  • 软件过程能力评估标准和改进方案:CMM, ISO, 6 西格玛
  • 生命周期模型:瀑布模型、原型模型、螺旋模型、喷泉模型
  • 软件过程与软件工程的关系:包含关系
  • 软件过程模式的意义
  • 四要素
  • 快速把握软件过程的本质、原则、规范、特点、策略等
  • 分析优缺点

2. Rational 统一开发过程

  • 三大特点
  • 用力驱动
  • 以架构为中心
  • 迭代与增量
  • 工作流程不仅仅指活动,还表明了角色、活动、工件是一个逻辑整体。
  • RUP 二维结构图

v2-e60a64d80d232359c23ba38ad51cfcf5_b.jpg


  • 静态特征:纵轴的内容组织
  • 动态特征:横轴的时间组织
  • 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 的生命周期的精简版,但是微软生命周期的特色在于其每个阶段设置的缓冲时间
  • 构想(先启)
  • 计划(精化)
  • 开发(精化)
  • 稳定(构建)
  • 发布(产品化)
  • 微软角色划分
以前的项目经理被拆分为产品经理和程序经理,因为这项目经理往往身兼两个角色,而这两个角色之间存在着矛盾。
  • 产品经理
  • 程序经理
  • 开发工程师
  • 测试工程师
  • 用户体验人员
  • 发布管理人员
  • 角色间的关系
  • 对等
  • 相互协作的方式是交流和沟通


v2-bfccb6fd2e341a723b51915434199dff_b.jpg


  • 角色合并原则
  • 开发人员不能兼任其他角色
  • 不能试图合并两个有明显利益冲突或制约关系的职能角色


v2-321552f594e69f72da53f1bd6ef81eb6_b.jpg


  • 角色合并结论
  • 最小的项目组需要 3 个成员:产品经理、程序经理、开发工程师
  • 微软均衡三角形
结论:四要素之间相互制约,任何一条边的改变都会对剩余的边造成影响。


v2-9e31e956fdb2490df7666d697ff64430_b.jpg


  • 微软项目均衡矩阵

v2-1acda0af9b98a1814c798e265c474484_b.jpg


  • 执行方法


v2-cae8e52f4f040be33626b00ee3cde56e_b.jpg


  • RUP/AP/微软过程的关系
三者相互交叉、相互重叠,又相互区别互不包含


v2-da5ec319f24eaf74de484a979356a7cc_b.jpg


  • 微软每日编译生成机制
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章