面向 总结PPT 和 baidu 的复习笔记
1. 软件开发过程管理
软件的定义
软件 = 程序 + 文档 + 数据
面向过程:程序 = 算法 + 数据结构
面向对象:程序 = 对象 + 消息
面向构件:程序 = 构件 + 构架
- 如何理解 软件即服务(SaaS) ?
厂商将软件应用部署在其服务器上,用户只需通过网络注册账号等简单操作即可启用 SaaS 平台上的软件服务,通过互联网使用共享的基础设备,并根据实际需要向厂商订购并付费。
优势:
快速启动 - 对于用户而言,相比较本地部署,SaaS安装更快、使用门槛更低
低使用成本 - 用户无需额外购买或支付维护服务器等基础设备的费用
高整合性 - SaaS采用多租户架构,可以无限拓展满足用户需求,还能降低开发和运维成本
高开放性 - SaaS 开放API,用户可以利用API拓展更多个性化模块/功能
软件的特点
(1) 软件是一种逻辑实体
(2) 开发过程中没有明显的制造过程
(3) 软件是知识与智慧型产品
(4) 软件不会磨损,维护相对困难
- 如何理解 软件不会磨损,维护相对困难 ?
软件不会磨损:指的是软件指的是程序,不是实物,不存在磨损和老化,但是存在 落后需要更新换代 的情况。
维护相对困难:难以读懂别人的程序;软件文档缺失或不一致;维护工作没有吸引力、缺乏成就感;软件在设计时未考虑修改需要(架构缺陷);
软件的分类(非重点)
软件开发项目组
为软件开发临时成立的项目组
根据软件开发复杂程度不同,项目组人员的多少存在区别,但分工相似
-
软件开发需要的人员:
① 项目经理或组长
② 系统分析师/设计师
③ 软件开发工程师
④ 软件测试员
⑤ 技术协作(美工、手册编写、文档…) -
为什么要 建立项目组?
加强横向沟通,沟通效率提升
提高软件项目开发的成功率
可以节省经济、时间、资源、管理成本
提升利润空间
方便后续程序改进、维护
软件开发过程
指 软件开发人员用于软件开发、软件维护以及与软件相关产品(包括项目计划、设计文档、代码、测试用例和用户手册)的一系列的活动、方法、实践和创新
软件生命周期
软件从需求确定、设计、开发、测试直至投入使用,并在使用中不断地修改、增补和完善,直至被新系统替代而停止该软件使用的全过程
软件生命周期包含的阶段 (基本过程)
可行性研究
需求分析和定义
总体设计
详细设计
编码 (实现)
软件测试、运行、维护
理解:能不能干 - 要干啥 - 总体怎么干 - 具体怎么干 - 干就完了 - 干完试着用用修修
- 可行性研究
关键在于“是否可行” - 需求分析
根据客户的要求,了解、掌握客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品需要实现的目标
需求分析 ↑ 强调 做什么,做到什么程度(而不是怎么做)
What to do, to what extent, not how to do - 需求层次
- 业务需求:为什么要开发这个系统(组织或客户的总体要求)
- 用户需求:用户要求系统必须能完成的任务,用户能使用这个系统做什么
- 功能需求:规定系统要实现的功能,用户利用这些功能完成任务,满足业务需求
- 非功能需求:主要指系统需求,包括系统应达到的性能、可靠性、安全性、易用性等,侧重于系统的质量属性
- 理解:
我们想做一个在线阅读电子书的系统(业务需求)
用户可以在线搜索查看电子书,还可以上传和移除电子书,管理员可以审核上传的电子书(用户需求)
系统需要有的功能是添加、搜索、查看、修改、删除电子书,设置用户权限区分用户与管理员(功能需求)
该系统支持14亿人同时在线观看…(非功能需求)
- 功能需求 和 非功能需求 的区别
功能需求是描述与系统功能相关的系统行为;非功能需求详细说明了系统性能特征。
功能需求与软件系统本身有关;非功能需求不仅与软件系统本身有关,还与系统的开发过程有关。
软件开发过程模型
指软件开发全部过程、活动和任务的结构框架。能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 (强调开发方法、思路)
瀑布模型
优点:
- 易于理解; 2. 调研开发呈阶段性,比较清晰
缺点:
- 只进行一次需求分析,不适应需求的变化
- 阶段之间产生大量文档,极大地增加了工作量
- 开发过程是线性的,用户在过程后期才能看到开发结果,增加了开发风险;
- 问题要等到开发后期测试才能发现,不能及早纠正,后果严重。
改进的瀑布模型:
快速原型
1.在需求定义之前,需要快速构建一个系统
2.根据构建系统的优缺点,用户给开发人员提出反馈意见
3.根据反馈意见修改软件需求规格,以便系统可以更正确地反映用户的需求
4.减少各种假设以及风险
螺旋模型
螺旋模型 = 瀑布模型 + 原型模型 + 风险分析
螺旋模型包含的工作:
制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件
风险分析:分析所选方案,考虑如何识别和消除风险
实施工程:实施软件开发
客户评估:评价开发,提出修正建议,进入下一阶段
增量模型
软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件具有各自的功能。增量即某个迭代在另外一个基础上完成,也可以是新增内容。
增量模型不是在项目结束时一次性提交软件,而是分块逐次开发提交。
喷泉模型
优点:
开发人员可以同步开发,提高软件项目开发效率,节约开发时间
缺点:
各个开发阶段相互重叠,需要大量的开发人员,不利于项目管理;
需要严格要求文档,审核难度大
软件开发过程管理
在软件开发过程中,对最佳实践进行有效的积累,形成可重复的软件过程,并使最佳实践在组织范围内共享
从大量项目实践中归纳总结出的行之有效的过程称为 最佳实践
软件过程管理的主要内容包括 过程定义 和 过程改进
过程定义:对最佳实践进行总结,形成一套稳定的、可重复的软件过程
过程改进:发现软件生产过程中对产品质量产生影响的问题,对软件过程中的偏差和不足进行不断优化,提高软件过程能力
质量定义
反映实体满足明确和隐含需要的能力的特性总和
软件质量定义
软件产品满足使用要求的程度
软件质量要素
CMM 成熟度等级
初始级 → 可重复级 → 已定义级 → 管理级 → 优化级
- 建立CMM认证体系的意义是什么?
1、改善产品开发过程,缩短产品开发时间
2、提高产品质量,降低产品缺陷率,提升客户满意度
3、降低产品开发成本,提高项目控制能力
4、满足项目招标门槛需求
5、各级政府资金补贴
CMMI成熟度等级
初始级 → 已管理级 → 已定义级 → 量化管理级 → 优化管理级
相应特点:
不规范 → 有纪律 → 标准一致 → 可预见 → 不断改进
2. 软件项目管理
项目
项目是一个特殊的将被完成的有限任务。它是在一定时间内,满足一系列特定目标的多项相关工作的总称。
项目的特点
目标性:有特定目标,以目的作为存在的必要
临时性:有明确的开始、结束时间
独特性:每一个项目都是唯一的
约束性:每一给项目的资源、成本、时间都是有限的
不确定性:存在各种不确定性因素或项目风险
有发起人:要有一个主要发起人或客户(利益相关者)
- 项目 与 日常活动 区别:
项目管理
在项目活动中运用专门的知识、技能、工具和技术,使项目能够实现或超过项目利益相关者的需要和期望
项目管理与其他学科的关系
项目干系人
积极参与项目或其利益在项目执行中或成功后受到积极或消极影响的组织和个人
包括 项目发起者、客户/用户、项目经理、项目执行组织 等
PMBOK 项目管理知识体系
-
五个标准化过程
项目启动,项目计划,项目执行,项目控制,项目收尾
-
十大知识领域
综合管理,范围管理,时间管理,成本管理,质量管理 (4大核心知识领域)
人力资源管理,沟通管理,风险管理,采购管理,干系人管理 -
47个模块(子过程)
现代项目管理的三大特点
由 阶段性管理 转化为 全过程管理
由 经验管理 转化为 科学管理
由 微观管理 发展为 宏观管理
现代项目管理的发展趋势
全球化:国际间项目合作增多,国际化专业活动频繁,项目管理专业信息的全球共享
多元化:行业领域及项目类型的多样性,导致了各种各样的项目管理方法,从而促进了项目管理的多元化发展
专业化:PMBOK不断发展和完善,学历教育和非学历教育竞相发展,项目与项目管理学科的探索及专业化项目咨询机构出现
软件项目管理的特殊性
- 软件项目的特点
生产无形(抽象的产品)
需求 具有 不确定性 / 易更改性
结果 难以 进行完整的测试
大多是“一次性的”人力消耗型项目
需要 利益相关者 协作完成
“一把手”工程
商业模式的特殊性 - 软件项目管理
根据项目管理理论,结合软件产品开发实际,运用相关知识、技能、工具和技术,以满足软件需求方要求(保证项目成功)的管理实践
- 信息化建设是提高企业核心竞争力的重要手段
软件项目管理是决定软件项目实施能否成功的重要因素
项目管理是公认的企业管理的核心竞争力之一
目标制定原则-SMART原则
S:Specfic 具体 不抽象模糊
M:Measurable 可衡量 可量化
A:Achievable 能实现 有挑战性
R:Relevant 与工作职责相关
T:Time-limited 有时间限制的
项目综合管理
- 为完成一个项目,通常要将项目分成若干个项目阶段,以便提供更好的管理控制
项目划分的阶段应该有明确目标,有结束标志
每个项目阶段以一个或几个可交付成果的完成作为标志 - 项目各个阶段的收尾或说结束可以用来确定以下工作:
- 项目是否应当进入下一阶段
- 项目是否进行了有效地费用控制等
项目管理组织结构3种类型(非重点)
职能型
项目型
矩阵型
项目范围管理
对项目包括什么和不包括什么的定义与控制的过程
-
项目范围管理 的 主要过程:
项目启动、范围计划、范围界定、范围核实、范围变更控制
-
项目范围界定
主要工作:逐级分解项目任务,使其变成更小、更易管理的单元
提高估算成本时间和资源的准确性,为绩效测量和控制确定一个基准线,使责任分工更加明确
工作分解结构 WBS
WBS 是一种以结果为导向的分析方法,用于分析项目所涉及的工作,所有这些分解的工作构成项目的整体范围
- WBS分解方式(分解的基本单元是具体的、时间成本可核查的)
① 按 结构 分解; ② 按 功能 分解
③ 按 过程 分解; ④ 按 目标 分解 - WBS实例 - 高校迎新服务管理系统
- WBS实例 - 学生管理系统开发
项目时间(进度)管理
对项目执行过程中各项活动所需时间及能否按进度完成各项任务(里程碑)的控制管理
- 项目时间管理 的 主要过程:
①活动定义 → ②活动排序 → ③工期估算 → ④制定进度计划 → ⑤进度计划控制 - 确定工作时间的主要方法:专家判断、类比估计
项目成本管理
- 成本:达到一个特定目标而牺牲或放弃的资源
- 软件项目成本管理(非重点)
① 项目资源计划
② 项目成本估算
③ 项目成本编制
④ 项目成本控制 - 项目成本不可控的原因(非重点)
项目质量管理
项目质量的类型
① 产品质量
② 工作质量
工作质量是产品质量的保证
影响质量的因素
人员 机器 材料 方法 环境
Man Machine Material Method Environment (4M1E)
项目人力资源管理
有效发挥每个参与项目人员的作用的过程
管理的对象是所有的利益相关者
- 主要工作:
人力资源 需求分析与规划
人力资源 获取与团队建设
人力资源 培训学习及使用
人力资源 绩效考核与评定
项目沟通管理
保证项目信息能够被及时、正确地产生、收集、发布、存储以及最终进行信息处理过程。参与项目的每一个人都必须使用项目“语言”传达和接收信息,理解他们以个人身份涉及的信息将如何影响整个项目
- 沟通的含义
为了设定的目标,把信息、思想和情感在个人或群体间传递并达成共同协议的过程 - 沟通的障碍
- 组织障碍
- 个人障碍
项目风险管理
通过风险识别、风险评估去认识项目的风险,并以此为基础合理的使用各种管理办法、技术和手段对项目风险实行有效的控制,妥善处理风险事件所造成的不利后果,以最少的成本保证项目总体目标实现的过程
- 风险:由于项目所处的环境和条件的不确定性等因素,项目最终结果与项目利益相关者的期望产生背离,并给利益相关者带来损失的可能性
项目风险管理过程
风险识别
风险评估
风险应对
风险控制