软件项目管理分享

分享人: 程路

说在前面的话

每个人对软件项目管理的理解可能都不同,本次分享的内容是源于大部分我的个人看法、经验以及我通过学习所得出的。

人非圣贤,孰能无过。我一定会出错的,无论我说的大家认不认同,希望大家都有一个不要先否定而是先倾听的态度面对他人。:)

接下来的内容可能比较枯燥,请耐心听我道来......

软件项目管理

软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。

 

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。

 

PMBOK(Project Management Body of Knowledge)

软件开发模型

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。

软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。

软件开发模型

  • 瀑布模型
  • 迭代式开发
  • 螺旋模型
  • 敏捷开发

软件开发模型

  • 瀑布模型

 

瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

优点

  • 阶段计划和分工相对明确
  • 便于管理者控制检查
  • 文档齐全便于新人加入

缺点

  • 严格分级自由度降低
  • 文档驱动,文档质量要求高,文档构建、管理成本
  • 需求变化困难

软件开发模型

  • 迭代式开发

迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。

条件:1)分析设计人员对应用领域很熟悉 2)高风险项目 3)使用面向对象的语言或统一建模语言(Unified Modeling Language,UML) 4)使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)

优点

  • 降低风险
  • 得到早期用户反馈
  • 持续的测试和集成
  • 提高复用性

缺点

  • 可交付产品质量不高
  • 测试、修改繁琐
  • 初期体验不好

软件开发模型

  • 快速原型模式

快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。

优点

  • 直接用原型和客户交流
  • 满足客户需求

缺点

  • 系统设计差、效率低
  • 维护困难

软件开发模型

  • 敏捷开发

敏捷软件开发宣言

我们一直在实践中探寻更好的软件开发方法,
身体力行的同时也帮助他人。由此我们建立了如下价值观:

个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划

也就是说,尽管右项有其价值,
我们更重视左项的价值。

http://agilemanifesto.org/iso/zhchs/

http://agilemanifesto.org/iso/zhchs/principles.html

优点

  • 快速适应现实变化

缺点

  • 团队自我能力要求高
  • 团队高度合作能力

需求管理

  • 需求结构化
  • 功能点进阶
  • 量化过程管理
  • 扩展内容

需求树

  • 能以任何尺度描述需求
  • 能结构化地描述需求
  • 能轻松获得颗粒度相同的需求条目
  • 能不遗漏需求
  • 能看到需求立刻知道工作量,工期
  • 能一眼建立需求与代码的关系,反之亦然

树叶: 

一个同意的最小单元, 可以确认"完成分解", 并作为计数和开发单位

树根:

一个同意的根节点, 可以从根部绘制完成整个的结构图

有根有叶树样例

商铺管理子系统

1 商铺模块

    1.1 商铺

        1.1.1 查看所有商铺

        1.1.2 新建商铺

        1.1.3 删除商铺

        1.1.4 编辑商铺

        1.1.5 查看单个商铺

    1.2 装修风格

        1.2.1 查看所有装修风格

        1.2.2 预览装修风格

        1.2.3 实施装修风格

        1.2.4 放弃装修风格

        1.2.5 修改装修风格

示例: 电子商务网站

广告管理子系统(粗略)

1 广告模块

    1.1 头版广告

    1.2 栏目广告

    1.3 店内广告

2 出销模块

    2.1 限时特价

    2.2 买一送一

    2.3 套餐促销

对于设计人员和开发人员是不是都很清晰?

建立需求树

1 列出子系统

主要角色的业务关系

 

2 列出业务数据

需要存储和管理的业务信息

 

3 列出业务操作

对用户有价值的业务操作

待续

软件项目管理分享

By dawndiy

软件项目管理分享

  • 1,899