软件项目管理分享
分享人: 程路
说在前面的话
每个人对软件项目管理的理解可能都不同,本次分享的内容是源于大部分我的个人看法、经验以及我通过学习所得出的。
人非圣贤,孰能无过。我一定会出错的,无论我说的大家认不认同,希望大家都有一个不要先否定而是先倾听的态度面对他人。:)
接下来的内容可能比较枯燥,请耐心听我道来......
软件项目管理
软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(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
软件项目管理分享
- 2,020