Lesson 2 Foundation of Software Team Management

2018, Mar 13    

简答题

简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点

瀑布模型

  • 优势: 定义了软件开发基本流程与活动
    • 定义了软件开发基本流程
    • 为项目提供了按阶段划分的检查点
    • 当前一阶段完成后,只需关注后续阶段
    • 提供了一个模板,使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导
    • 瀑布模型的优势是,建立在需求明确且短期内可获取、每个阶段都无差错的假设下
  • 劣势:
    • 依赖问题: 前面需求模糊会导致工作失去明确方向
    • 容错问题: 如果在后期发现了需求问题,产生的额外工作量难以接受
    • 资源调配问题: 知识技能需求不同; 人员数量要求不同
    • 劣势会导致: 项目延期、不可控

增量模型

  • 优点:
    • 将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
    • 以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。
    • 开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整。
    • 整个项目的资金不会被提前消耗,因为首先开发和交付了主要功能和高风险功能。。
    • 采用连续增量的方式,可把用户经验融入到细化的产品,这比完全重新开发要便宜得多。
    • “分而治之”的策略,使问题分解成可管理的小部分,避免开发团队由于长时间的需求任务而感到泪丧。
    • 通过同一个团队的工作来交付每个增量,保持所有团队处于工作状态,减少了员工的工作量,工作分布曲线通过项目中的时间阶段被拉平。
    • 每次增量交付的结为,可以重新修订成本和进度的风险。
    • 降低了失败和更改需求的风险。
    • 切实的项目进展,有利于进度控制。
  • 缺点:
    • 增量粒度难以选择
    • 并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构
    • 容易退化为边做边改模型,从而是软件过程的控制失去整体性。
    • 要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。

螺旋模型

  • 优点:
    • 通过原型的创建,使软件开发在每个迭代的最初明确方向;
    • 通过风险分析,最大程度地降低软件彻底失败造成损失的可能性;
    • 在每个迭代阶段植入软件测试,使每个阶段的质量得到保证;
    • 整体过程具备很高的灵活性,在开发过程的任何阶段自由应对变化;
    • 每个迭代阶段累计开发成本,使支出状况容易掌握;
    • 通过对用户反馈的采集,与用户沟通,以保证用户需求的最大实现;
  • 缺点:
    • 过分依赖风险分析经验与技术,一旦在风险分析过程中出现偏差将造成重大损失;
    • 过于灵活的开发过程不利于已经签署合同的客户与开发者之间的协调;
    • 由于只适用大型软件,过大的风险管理支出会影响客户的最终收益;

简述 UP 的三大特点,其中哪些内容体现了用户驱动的开发,哪些内容体现风险驱动的开发?

用例驱动、 以架构为中心、 受控的迭代式增量开发。

用户驱动的开发, 体现在用例驱动迭代式增量开发

  • 所有的用户&用例组合在一起, 就是用例模型, 它描述了系统的全部功能。 用例驱动表明开发过程是沿着一个 Flow ———— 一系列从用例得到的工作流前进的; 用例被确定、用例被设计、 最后用例又称为测试人员构造测试用例的基础。
  • 迭代过程就是用来处理一组用例的。

风险驱动的开发体现在以架构为中心迭代式增量。 架构必须设计得使系统能够进化, 不仅要考虑系统的初始开发, 而且要考虑将来的发展, 还要对遗留下来的风险较低和比较简单的元素进行迭代实现。 没有稳固的架构, 就容易出风险。 迭代过程要解决最突出的风险问题。 只有这样, 后续的迭代过程才能建立在前一次迭代过程的基础上。

  • Scalable: You needn’t use the entire framework of the process for every project, only those that are effective.
  • Effective: It has been successfully employed on a large population of projects.
  • Improves productivity through use of practical methods that you’ve probably used already (but didn’t know it).

UP 四个阶段的划分准则是什么?关键的里程碑是什么?

4 Phases of UP

  • (1) Inception 初始: 大体上的构想,业务案例、范围和模糊评估 & Establish that the system is viable.
    • Feasibility study
    • Business case
    • Scope
    • Estimation
    • Risk assessment
    • Candidate architecture
  • (2) Elaboration 细化: 已精化的构想、 核心架构的迭代实现、 高风险的解决、 确定大多数需求和范围以记进行更为实际的评估
    • Establish the ability to build the system within constraints.
    • Functional Requirements
    • Use cases
    • Domain model
    • Address Risks
    • Plan/Replan
    • Design model
    • Architectural baseline
  • (3) Construction 构造: 对遗留下来的风险较低和比较简单的元素进行迭代实现, 准备部署。 (Build the beta version of the system.)
    • New code
    • Refactoring
    • Add/Extend use cases
    • Plan/Replan
  • (4) Transition 移交: 进行beta测试和部署。 & Roll out a fully-functional system to customer.
    • Optimization
    • Bug fixes
    • Production
    • Release

UP Milestones

Milestones:

  • Inception & Elaboration Completed: An Iteration end-point when some significant decision or evaluation occurs.
  • During Construction: Release: A stable executable subset of the final product. The end of each iteration is a minor release.
  • Increment: The difference (delta) between the release of 2 subsequent iterations.
  • Final Production release: At this point, the system is released for production use.

IT 项目管理中,“工期、质量、范围/内容” 三个元素中,在合同固定条件下,为什么说“范围/内容”是项目团队是易于控制的?

  • 在合同固定的条件下,工期是确定的;
  • 质量的把关需要客户的参与,所以项目团队不易控制;
  • 范围/内容更多地取决于项目团队的选择,所以较易控制。

为什么说,UP 为企业按固定节奏生产、固定周期发布软件产品提供了依据?

开发过程中的每个阶段都有固定长度, 必须在时限之内完成该阶段任务, 若做不完,就砍掉一部分功能。 总之, UP有明确的时间限制, 每一次迭代, 都能有一个“新产品”出现。 因此可以为企业按照固定节奏生产、 固定周期发布软件提供依据。

项目管理

本课程的大作业项目已组队, 成员8人, 现为当前项目 Kanban。

Kanban