什么是项目:
项目是为完成某一独特的产品或服务所做的临时性的努力
项目有一个独特的目的
项目是临时性的
项目需要使用资源
项目有一个主要发起人或客户
项目一般要涉及一些人员,由这些人员完成一些相关联活动
项目含有不确定性
项目与日常运作的区别:
项目是一次性的,日常运作是重复进行的
项目是以目标为导向的,日常运作是通过效率和有效性体现的
项目是通过与项目经理及其团队工作完成的,而日常运作是职能式的线性管理
项目存在大量的变更管理,而日常运作基本保持持续的连贯性的
项目群:
或称大型项目
是通过协调、进行统一管理的一组相互联系的项目
子项目:
项目分解成为的更小单位,以便更好地控制项目
项目中的某一个阶段可以是一个单独的项目,也可以是一个子项目
项目三约束:
范围、时间、成本
除了项目的特征,软件项目特征还包括:
软件是逻辑实体,具有抽象性
软件的开发受计算机系统的限制,对硬件系统有不同程度的依赖
软件具有复杂性特点,其开发成本昂贵,制约因素很多
经验在软件项目中起很大作用
变更是软件项目中常见现象,需求,设计,技术, 会
项目的独特性和临时性决定项目是渐进明细的,表明项目的定义会随着项目团队成员对项目,产品等理解认识的逐步加深而得到渐进描述
软件项目要素组成:
软件开发的过程、软件开发的结果、软件开发赖以生存的资源
软件项目的特定委托人(客户):需求者、资金提供者
衡量项目是否成功,应该看该项目是否在工程允许范围内按照成本预算和进度计划,生产出客户满意的产品
四因素:项目范围,成本,进度计划,客户满意度
项目目标就是在一定时间、预算内完成工作范围,以使客户满意。
项目管理:
指在项目活动中运用专门的知识、技能、工具和方法,使项目能够实现或超过项目干系人的需要和期望
一定主体,为实现其目标,利用各种有效的手段,对执行中的项目周期的各阶段工作进行计划,组织,协调,指挥,控制,以取得良好经济效益的各项活动总和
软件项目管理定义:
为使软件项目能按预定成本,进度,质量要求顺利完成,而对成本,人员,进度,质量,风险等进行分析和管理的活动
软件项目管理的独特性:
更多的是设计过程(非制造)
需要使用人力资源
产品是代码和技术文件,无其他物质结果
有利于将开发人员的个人开发能力转化成企业的开发能力
知识领域:
指项目经理必须具备的一些重要的知识和能力
四大核心知识领域
范围、时间、成本、质量
四大辅助知识领域
人力资源、沟通、风险、采购
项目整体管理
项目管理的范围:
五要素:技术,方法,团队建设,信息,沟通
项目经理主要工作是沟通
战术上,关注:产品规格(满足质量要求),成本,进度
战略上,关注3P:人员,问题,过程
软件过程的定义:
软件开发的最佳实践
包括:流程、技术、产品、活动间关系、角色、工具等,是软件开发过程的各个方面因素的有机结合
软件项目管理过程:
项目启动、项目规划、项目跟踪控制、项目结束
什么是软件过程改进
提高软件过程能力的实践通称为软件过程改进
软件过程改进的根本目的是:提高质量、提高生产率并且降低开发成本。
过程的基本概念
过程就是人们使用相应的方法、规程、技术、工具等将原始材料(输入)转化成用户需要的产品。过程的3个基本要素是:人、方法与规程、技术与工具
需求定义:
需求是指用户对软件的功能和性能的要求
需求类型:
功能需求:系统必须执行的功能
非功能需求:对实际使用环境所做的要求
需求管理过程:
需求工程:指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。
5个独立过程:获取,分析,规格,验证,变更
需求工程的层次分解:
1.需求开发:
需求获取、需求分解、规格说明、需求验证
2.需求开发后形成了基准需求规格,之后进入需求管理
3.需求管理:
变更管理、版本控制、需求跟踪、需求状态
需求管理
必要性:
1.需求供求双方固有的矛盾
2.需求具有易变性和难以表述性
3.需求错误出现的高频性和修复的高昂成本
目标:
1.使软件需求受控,并建立供软件工程和管理使用的需求基线
2.使软件计划、产品和活动与软件需求保持一致
原则:
1.需求一定要分类管理
2.需求必须分优先级
3.需求必须文档化
4.需求一旦变化,就必须对需求变更的影响进行评估
5.需求管理必须与需求工程的其他活动紧密整合
需求建模基本方法:
原型分析方法、结构化分析方法、用例分析方法等
原型方法的定义:
按照用户的需要,快速形成一个操作流程界面
可能只是一个框架,具体的功能没有实现,只是结果
静态的操作流程,以便与用户快速就需求达成一致
主要考虑系统的功能需求,很少考虑非功能需求
原型方法的类型:
进化型:开发出来用于了解问题,并形成被交付软件的部分或全部的基础
抛弃型:开发出来以便更多地了解问题或探究可能的方案的灵活性或者合理性,是尝试性软件,不用于被交付软件的实际部分
结构化分析方法的定义:
面向数据流的方法、是一种自顶向下逐步求精的分析方法
根据软件内部数据传递、变换的关系进行分析
用例分析方法:
一种面向对象的场景分析方法
一个用例标识一个动作序列的定义,包括执行的变量和与外界交互的过程
优点:
用户导向的
可以方便地得到系统功能的测试用例
任务分解的定义:
将项目分解为更多的工作细目和子项目,使项目更小,更易管理,易操作
目的:提高估算成本,时间和资源的准确性
是对需求的进一步细化,是最后确定项目所有任务范围的过程
结果是任务分解结构( WBS)
工作分解结构(WBS)
WBS(Work Breakdown Structure)是将一个项目分解成易于管理的几个部分或几个细目,以便确保找出完成项目工作范围所需的所有工作要素
WBS按照项目发展的规律,依据一定的原则和规定,进行系统化的、相互关联和协调的层次分解
任务分解的意义:
WBS是一个分级的树型结果,是对项目由粗到细的分解过程
WBS提供了项目范围基线,是范围变更的重要输入
WBS为开发项目提供了一个实施框架,为评估和分配任务提供具体的工作包,是进行估算和编制项目进度的基础
如何理解工作包:
工作包(Work Package),是WBS中最底层的项目可交付成果。工作包可以再细分为工作活动。
项目经理通常只负责到工作包的层次,负责该工作包的团队成员负责把工作包细分为工作活动。
一个工作包必须由一个人或者一个部门来负责,而不能由两个或两个以上的人或部门来负责。
工作包单元的周期应该是最短周期
应明确本工作包与其他工作包之间的关系
任务分解方法:
模版参照、自上而下、自下而上
任务分解基本步骤:
确认并分解项目的组成要素、确定分解标准、检查分解是否详细、确定项目交付成果、验证分解的正确性
软件项目计划的要素:
目标、合理的概念设计、工作分解结构、规模估计、工作量估计、项目进度安排
进度
对执行的活动和里程碑制定的工作计划日期表
进度的作用
决定是否达到预期目的,是跟踪和沟通项目进展状态的依据
是跟踪变更对项目影响的依据
进度安排有两种前提:
1 交付日期确定后安排计划
2 使用资源确定后安排计划
络图:
展示项目中的各个活动以及活动之间的逻辑关系
表示项目任务如何和以什么顺序进行
PDM (Precedence Diagramming Method)优先图示法:
构成PDM 络图包括节点
节点表示活动(工序,工作)
用箭线表示各活动(工序,工作)之间的逻辑关系.
可以方便的表示活动之间的各种逻辑关系。
ADM(Arrow Diagramming Method,箭线图示法) 络图:
箭线表示活动,节点表示前一道工序的结束,同时也是后一道工序的开始
里程碑图:
显示项目进展中的重大工作完成
不同于活动:活动需要消耗资源且需要时间完成;里程碑表示事件的标志,不消耗资源和时间
对里程碑阶段点的设置必须符合实际,具有挑战性和可达性
进度管理与控制其实就是确保项目里程碑的达到
资源图:
显示项目进展过程中资源的分配情况
资源包括人力,设备等
关于关键路径的基本概念
最早开始时间(ES:early start):最早可开始时间
最晚开始时间(LS):最晚可开始时间
最早完成时间(EF)
最晚完成时间(LF)
超前(Lead):两个任务的逻辑关系所允许的提前后置任务的时间,它是 络图中活动的固定可提前时间
滞后(Lag):两个任务的逻辑关系所允许的推迟后置任务的时间
浮动时间(Float): 一个活动在不影响项目完成的情况下可以延迟的时间
自由浮动(Free Float):是在不影响后置任务最早开始时间的情况下本任务可以推迟的时间
总浮动(Total Float):是在不影响项目最早完成时间的情况下本任务可以推迟的时间。
关键路径:浮动为0且是 络图中的最长路径,其上的任何活动延迟都会导致整个项目的延迟;是完成项目的最短时间量
进度计划的优化
不断完善的过程:优化,评审,修改,再评审,细化
项目具有渐进明细的特征,计划的制定需要在一定条件的限制和假设之下采用渐进明细的方式不断完善
采用多层计划机制将计划中任务拆分成可跟踪的小任务执行:大,中,小三层
什么是质量
是满足要求的程度,包括符合规定要求和满足顾客需求
软件质量是软件满足软件需求规格中明确说明的以及隐含的需求的程度
明确需求:合同环境中用户明确提出的需求或需要
隐含需求:客户对实体的期望,或公认的不需规定的需求
软件质量特性:
正确性:实现的功能达到设计规范,并满足用户需求的程度
可靠性:规定的时间和条件下,能维持其性能水准的程度
易用性:用户掌握软件操作所要付出的时间及努力程度
效率:软件执行某项功能所需电脑资源的有效程度
可维护性:当环境改变或软件发生错误时,执行修改或恢复所做努力的程度
可移植性:从一个系统/环境移到另一系统/环境的容易程度
产品运行软件质量因素:
同直接影响软件的日常运行的需求有关:正确性、可靠性、效率、完整性、实用性
产品修改软件质量因素:
同影响全范围软件维护活动的需求有关,如改正性维护、适应性维护和完善性维护:可维护性、灵活性、可测试性
产品移植软件质量因素:
涉及软件对其他环境的适应和它同其他软件系统的交互:可移植性、可重用性、互操作性
软件过程的质量因素:
项目计划过程、项目设计过程、项目实施过程、软件维护过程、软件商业环境过程
质量管理:
监控项目的交付物和执行过程
以确保它们符合相关标准,同时确保不合格项能按照正确方法排除
围绕质量保证过程和控制过程进行:
质量保证是在项目过程中实施的有计划,有系统的活动,确保项目满足相关的标准
质量控制是采取适当的方法监控项目结果,确保结果符合质量标准,包括跟踪缺陷的排除情况
质量计划过程:
是确定项目应达到的质量标准,以及决定如何满足质量标准的计划安排和方法.
质量保证(QA)
验证开发过程中是否遵循了合适的过程和标准
贯穿于整个项目的始终
质量保证的要点:
1.对项目进行评价
2.推测能否达到质量指标
3.建立对项目的信心
质量保证的主要活动是:
项目产品审计 : 根据质量保证计划对项目过程中的工作产品进行质量审计
项目执行过程审计 : 对执行过程进行检查, 目的是确定所得到的经验教训, 从而提高组织对这个项目或其他项目的执行水平
审计:
目的是确保真正的遵循了这一个过程,产生了合适的文档和精确反映实际项目的 告
质量保证人员的职责:
规划和维护质量过程,以便实现项目目标
在项目出现偏差时提醒项目管理人员
质量保证三个要点:
定期对项目各方面的表现进行评估
通过评价来推测项目最后是否能达到相关的质量指标
通过质量评估来帮助项目相关的人建立对项目质量的信心
质量控制:
发现和消除软件产品的缺陷
确定项目结果是否与质量标准相符,同时确定消除不符的原因和方法,控制产品质量,纠正缺陷
消除缺陷通过评审和测试这类质量控制活动来实现
质量控制的要点:
检查工作结果、按照标准跟踪检查、确定措施消灭质量问题
质量控制过程:
策划评审和测试活动、根据已定义好的过程来执行评审和测试活动
通过执行识别缺陷、消除缺陷
质量计划:
项目应达到的质量目标和所有特性的要求
确定项目中的质量活动和质量控制程序
项目不同阶段,职责,权限,交流方式以及资源分配
确定项目采用的控制手段,合适的验证手段和方法
确定和准备质量记录
软件配置管理:
通过一套工程规范,在整个软件生命周期中跟踪、记录软件,保证全部变更都记录在案,并保证软件的当前状态是已知的和可重复的。
配置管理的好处和坏处:
好处:
提高软件开发生产率、降低软件维护费用、确保构建正确的系统、更好的质量保证、减少缺陷、使软件开发依赖于过程而不是依赖于人
坏处:
为配置管理设置专门的人员,并且要有一些软硬件环境支持,都增加了开发的成本、对于简单系统的开发没有实际的意义
软件配置管理的目标:
版本控制、工作空间管理、并行开发支持、过程控制、异地开发支持、变更请求
配置项:
是处于配置管理之下的软件或硬件的集合体。这个集合体在配置管理过程中作为一个实体出现。
基线:
已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能通过正式的变更控制过程来改变
配置数据库
项目建立和访问软件制品库,这个制品库主要用来对保存配置项和一些与软件配置管理相关的记录。
两类工作空间:
一类是开发人员的私有空间,在私有空间中,开发人员可以相对独立地编写和测试自己的代码。
另一类工作空间是团队共享的集成空间,该空间用于集成所有开发人员的开发成果。
并行开发:
为实现并行开发,配置管理系统需要提供灵活的分支机制和工作空间管理。
创建分支的过程实际上就是一个建立副本的过程
过程控制:
配置管理系统应该能够支持灵活的配置管理策略和配置管理流程,并实现过程自动化以提高配置管理效率
变更请求管理:
变更请求管理记录、跟踪和 告软件系统的任何变更
其核心是一个适合软件开发组织的变更处理流程
典型的变更处理流程涉及:
如何提交变更请求,如何对变更请求进行复审以便决定是否实施,由谁实施,如何实施,如何确定变更请求准确实施完成等方面
配置控制:
在配置项的配置标识和基线正式确立之后,对其更改进行系统管制的过程。
变化控制系统记录每次变化的相关信息。查看这些记录信息,有助于追踪出现的各种问题。记录正在执行的变更的信息,有助于做出正确的管理决策。
基线管理:
基线管理是保证开发团队共同工作的一种有效方式,基线管理包括:
基线(产品)建立、发布和维护
内部发布:内部使用的基线一般称为建造
外部发布:交付给外部顾客的产品一般称为发布
基线 告和基线备份。
版本控制:
软件配置管理的一项基本功能是随着产品的开发和发布可靠地构建和重构产品的版本。
变更控制:
配置控制通过建立一个有序的变更控制过程来确保
对每项变更的影响给于适当的考虑
任何基线化的配置项的更改经过批准
批准的更改得以实施
记录必要的测量信息。
风险概念:
软件风险是指软件开发过程中及软件产品本身可能造成的伤害或损失
风险具有两大属性:
可能性和损失。可能性是风险发生的概率,损失是指预期与后果之间的差异
风险类型(从范围角度上看)
项目风险、技术风险、商业风险、已知风险、可预测风险、不可预测风险
风险管理:
是指在项目进行过程中不断对风险进行识别、评估,制定策略,监控风险的过程。合理地使用各种风险应对措施、管理方法、技术和手段对项目的风险进行有效的控制,妥善处理风险事件造成的不利后果,以最小的成本保证项目总体目标的实现
制定风险管理计划:
风险识别、风险分析、风险计划、风险跟踪、风险应对、风险管理验证
风险计划:
针对风险分析的结果,为提高实现项目目标的机会并降低风险的负面影响而制定风险应对策略和应对措施的过程,即通过制定一系列的行动和策略来对付、减少以至于消灭风险事件。
降低风险的主要策略:
回避风险、转移风险、损失控制
决策树分析和损益期望值(Expected Monetary Value,EMV)
项目跟踪控制:
是为了保证项目能按照预先设定的计划轨道行驶,使项目不偏离预定的发展进程
进行项目跟踪控制的基本步骤:
建立标准,即建立项目正确完成应该达到的目标
观察项目的性能,建立项目监控和 告体系,确定为控制项目所必需的数据
测量和分析结果:将项目实际结果与计划比较
采取必要措施:有误差时,进行纠正
控制反馈:若修正计划,应通知有关人员和部门
项目跟踪控制过程:
主要对象:范围,成本,进度,资源,质量,风险等
包括对以下要素的跟踪控制过程:
范围的跟踪控制
进度,成本的跟踪控制
质量的跟踪控制
怎样才算一个合理的组织:
1. 目标的一致性和管理的统一
2. 有效的管理幅度和层次
3. 责任和权利要对等
4. 要合理分工和密切协作
5. 集权与分权相结合
6. 秩序与纪律
7. 团队精神
软件项目团队管理的定义:
软件项目团队管理就是运用现代化的科学方法,对项目组织结构和项目全体参与人员进行管理,在项目团队中开展一系列科学规划、开发培训、合理调配、适当激励等方面的管理工作,使项目组织各方面人员的主观能动性得到充分发挥,以实现项目团队的目标。
项目人力资源管理的定义:
最有效地使用参与项目人员所需的各项过程。包括针对项目的各个利益相关方展开的有效规划、合理配置、积极开发、准确评估和适当激励等方面的管理工作。
项目团队组织结构定义:
是具体承担某一项目的全体职工为实现项目目标,在管理工作中进行分工协作,在职务范围、责任、权力方面所形成的结构体系。
对项目经理的主要要求:
在本行业中某一技术领域中具有权威,技术过硬
任务分解能力强
注重对项目成员的激励和团队建设,能良好的协调项目小组成员的关系
具备较强的客户人际关系能力
具有很强的工作责任心,能够接受经常加班的要求
应更注重管理方面的贡献,胜过作为技术人员的贡献
对软件项目团队中成员的主要要求:
具备特定岗位所需的不同技能,这可能是设计、编码、测试、沟通等能力
适应需求和任务的变动
能够建立良好的人际关系,与小组中其他成员协作
能够接受加班的要求
认真负责、勤奋好学,积极主动,富于创新。
项目沟通基本原则:
及时、准确、完整、可理解
友情提示:慎重参考!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!