软件开发过程与项目管理
文章目录
- 软件开发过程
软件开发过程
1、软件开发过程:软件开发过程是指软件开发人员用于软件开发、软件维护以及与软件相关产品(包括项目计划、设计文档、代码、测试用例和用户手册)的一系列的活动、方法、实践和创新。
2、软件生命周期:软件从需求确定、设计、开发、测试直至投入使用,并在使用中不断地修改、增补和完善,直至被新系统替代而停止该软件使用的全过程
3、软件生命周期的过程
可行性研究
可行性的关键在于“是否可行”,包括技术支持、资源匹配、政策环境、应用范围、社会效益和经济效益等
需求分析和定义
- 业务需求(Business Requirement):组织或客户的总体要求,重点在于描述为什么要开发这个系统,要达到什么样的目标。
- 用户需求(User Requirement):具体用户的要求,用户要求系统能完成的任务,即用户能使用这个系统做什么(对应功能)。
- 功能需求(Functional Requirement):规定系统要实现的功能,用户利用这些功能完成工作,满足业务需求,描述开发人员要实现什么。
- 非功能需求(Non-Functional Requirement):主要指系统需求,包括系统应达到的性能、可靠性、安全性、易用性等,侧重于系统的质量属性。
总体设计
设计阶段要把软件“做什么”变成“怎么做”,建立系统的物理模型。
总体设计要描述软件的总体体系结构,它是详细设计的大纲
- 设计系统方案,确定大致的功能模块数据库设计
- 模块功能分解描述-流程图
- 页面结构的设计
- 编写概要设计文档
详细设计
- 细化概要设计的体系流程图,绘出程序结构图
- 功能模块流程逻辑与实现方法
- 模块的接口细节,及模块间的调度关系
- 描述每个模块的编写详细设计文档,包括细化的系统结构图及每个模块的描述,如功能、接口、数据组织、控制逻辑等
编码(实现)
将设计转换成计算机可读的程序或代码
软件测试、运行/维护
对设计、编程进行验证和用户需求确认的过程。
维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。
4、软件开发模型
瀑布模型:
没升级的时候划分太明显,增加工作量,末期才能见到开发成果,早期错误到后期才能发现。
改进之后加了回调检查快速原型模型
需求定义之前就快速构建一个系统,用户根据需求提意见,开发人员在此基础上修改螺旋模型
结合瀑布模型和快速原型再加风险分析,旋转一圈就出一个更完善的版本。
增量模型
一系列的增量构件、每一个构件具有各自的功能。增量即某个迭代在另外一个基础上完成,也可以是新增内容。
增量模型的死一个增量往往是实现基本需求的核心产品
增量模型不是在项目结束时一次性提交软件,而是分块逐次开发提交。
喷泉模型
以用户需求为核心,以对象为驱动,主要用于描述面向对象的软件开发过程、、
喷泉模型认为软件自下而上的各阶段相互重叠和多次反复,就像水喷上去可以落下来,既可以落在中间,也可以落在最底部,类似一个喷泉。
喷泉模型各开发阶段没有明显界限,开发人员可以同步进行开发,能够提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
各个开发阶段相互重叠,需要大量的开发人员,不利于项目的管理。这种模型要求严格管理文档,审核难度较大,尤其是面对可能随时加入各种信息、需求与资料的情况
4、软件过程管理
过程定义:对最佳实践进行总结,形成一套稳定的、可重复的软件过程。
过程改进:发现软件生产过程中对产品质量产生影响的问题,对软件过程中的偏差和不足进行不断优化,提高软件过程能力。
从大量项目实践中归纳总结出的行之有效的过程称为最佳实践
**软件过程管理:**在软件开发过程中、对最佳实践进行有效的积累,形成可重复的软件过程,并使最佳实践在组织范围内共享,
软件过程管理可以将个人能力转变为企业的能力
- 软件测试——产品质量测试
- 软件工程领域应该知晓的名词:
- 软件系统:有哪些系统
- 软件工程:为什么叫工程
5、SQM&CMM&CMMI
(1)软件质量管理知识
质量管理:包括制定质量方针和质量目标、质量策划、质量控制、质量保证、质量改进
质量管理的目的:为了产品质量能满足不断更新的质量要求、达到顾客满意而开展的策划、组织、实施、控制、保证、检查、审核、改进。
软件质量管理的含义:确定一个软件产品的质量目标,建立实现这些目标的计划以及监督和调整软件计划、软件工作产品、活动和质量目标以满足顾客和最终用户需要和期望的过程
质量管理发展过程:
1、质量检验:主要是对产品质量进行检验,是一种事后检查,不能预防不合格品产生。
2、统计管理:用控制图表对生产过程中的抽样数据进行统计分析,找出影响质量的原因并予以修正。
3、现代管理:先进的质量管理思想,如六西格玛管理、全面质量控制(TQC,Total Quality Control)、全面质量管理(TQM,Total Quality Management)
软件质量是什么?
软件质量是软件产品满足使用要求的程度。
对于软件质量的衡量,就是高质量的软件系统能够准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。“正常地运行”意味着该软件必须尽可能没有缺陷(bug)。
软件质量管理的主要内容:
1、体系建立:包括组织机构、流程、过程、资源
2、质量策划:包括产品策划、质量管理策划、质量计划
3、质量控制:具体的作业技术和活动
4、质量保证:组织的建设
5、质量改进:采取的措施
6、质量管理:管理的思想和方法
- ISO9000质量标准思想
- 控制思想:对产品形成的全过程进行控制。任何一个失物都是由一个或多个过程活动的结果,只要对产品形成的全过程进行控制并达到过程质量要求,最终产品的质量就有了保证
- 预防思想:对产品形成的全过程进行控制以及建立并有效运行自我完善机制达到预防不合格
六西格玛管理
让失误减少到最低限度,使企业可以做到质量与效率最高,成本最低,过程周期最短,利润最大,全方位使顾客满意。
六西格玛管理是一种近乎完美的管理策略。一个企业要想达到六西格玛标准,那么它的出错率不能超过百万分之3.4。能力成熟度模型CMM
一种用于评价软件承包商能力并帮助改善软件质量的方法。
目的:帮助软件企业对软件工程过程进行管理和改进,增强开发与改进的能力,从而能够按时、不超预算地开发出高质量的软件。
CMM/CMMI实施带来的效果
改进软件产品的质量
改进项目满足预定目标的能力
减少开发成本和周期
降低项目风险
更有效的控制供应商
提高组织过程能力
提高竞争力,市场占有率和效益
CMM将软件组织的过程能力成熟度分为5个级别,每一个级别定义一组过程能力目标,并描述了要达到这些目标应该采取的各种实践活动。
初始级:软件过程无秩序,有时甚至是混乱的。软件过程定义没有章法和步骤可循,软件产品的成功往往依赖个别人的努力及机遇。
可重复级:建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的项目有章可循并能重复以往的经验。
已定义级:用于管理的、工程的软件过程均已实现文档化、标准化,形成了软件组织的标准软件过程。
管理级:软件过程和产品质量有详细的度量标准,并得到了定量的论证和控制。
优化级:持续的进行过程改进。过程改进可控,技术改进能够被量化、评估,进行必要的技术改进和优化。
设计并实施CMM是为了指导软件组织实现以下目标:
√ 通过确定当前过程的成熟度等级和识别出对软件质量和过程改进至关重要的问题,来选择其过程改进策略。
√ 通过关注一组有限的活动,并为实现它们而积极工作,使组织能稳步地改善其软件过程,使其软件过程能力持续不断地增长。
CMM结构图:
- 除第一级外,SW-CMM的每一级都是按完全相同的结构组成的。每一级包含了实现这一级目标的若干关键过程域(KPA),每个KPA进一步包含若干关键实施活动(KP),无论哪个KPA,实施活动都统一按五个公共属性进行组织。
参考链接
6、
- ISO9000与CMM的关系
1、都是为了解决质量和过程管理方面的问题
2、相对来说,ISO9001(ISO9000标准系列中关于软件开发和维护的部分)确定一个质量体系的最少需求,聚焦于供应商和用户之间的关系。而CMMI强调持续过程改进,关注的是软件的开发过程。
3、ISO9001是通用国际标准、适用于各个行业,而CMMI只适用于软件业
4、ISO9000审核后只有通过和不通过,而CMMI有五个评估等级的动态过程。
5、ISO9000不涉及预算、项目周期管理等内容,而CMMI有所涉及
6、ISO9000相当于CMMI2-3级的部分内容。
- 能力成熟度模型集成CMMI
CMMI为工业界和政府部门提供了一个集成的能力成熟度模型产品集,消除了不同模型之间的不一致和重复,降低了过程改进的成本。
CMMI覆盖了软件工程、系统工程、集成产品开发和系统采购,以更加系统和一致的框架来指导组织改善软件过程,提高产品和服务的开发、获取和维护能力。
7、项目管理的基本概念
项目:
1、项目是为了实现一个独特的目的而进行的临时性任务
2、项目是一种被承办的旨在创造某种独特产品或服务的一次性努力项目的特点:
1、目标性:有特定目标、以目的作为存在的必要
2、临时性:一次性、有明确的开始和结束时间
3、独特性:每一个项目都是唯一的
4、约束性:每一个项目的时间、资源和成本都是有限的
5、不确定性:存在各种不确定的因素或项目风险
6、有发起人:有发起人或客户(利益相关者)什么是项目管理:
在项目活动中运用专门的知识、技能、工具和技术,使项目能够实现或超过项目利益相关者的需要和期望。项目干系人
积极参与项目或其利益在项目执行中或成功后受到积极或消极影响的组织和个人。
包括项目发起者、客户或用户、项目经理、项目执行组织等。
8、项目管理知识体系(PMBOK)
五个标准过程
启动、计划、执行、控制、收尾现代项目管理的三大特点:
1、由阶段性管理转化为全过程管理
2、由经验管理转化为科学管理
3、由微观管理转化为宏观管理现代项目管理的发展趋势
1、全球化
2、多元化
3、专业化软件项目管理的特殊性
软件项目的特点
1、生产无形(抽象的产品)
2、需求具有不确定性或易更改
3、结果难以进行完整的测试
4、大多是一次性的人力消耗项目
5、需要利益相关者的协助完成
6、“一把手”工程
7、商业模式的特殊性
- 点
信息化建设是提高企业核心竞争力的重要手段
软件项目管理是决定软件项目实施能否成功的重要因素
项目管理是公认的企业管理的核心竞争力之一
- SMART原则–如何制定目标: 由确定目标的五个原则的英文字母字首
S:Specific 具体的、不抽象不模糊
M:Measurable 可测量的
A:Available 可实现、有挑战性的
R:Relevant 与工作职责相关联
T:Time-limited 有时间限制的
- 项目综合管理(项目整体管理)
依赖于其他九个管理职能、贯穿整个项目的生命期
1、项目阶段:为更好的完成项目、将项目分成若干个项目阶段、以便提供更好的管理控制
应该有明确目标和结束标志
每个阶段以一个或多个可交付成果的完成作为标志
项目各个阶段的收尾可以用来确定以下工作:
- 项目是否应当进入下一阶段
- 项目是否进行了有效的费用控制
2、项目管理组织结构的三种类型
1、职能型
2、项目型
3、矩阵型
参考链接
- 项目范围管理
1、项目范围的含义:包括项目的最终产品或者服务、以及实现该产品或服务所需要完成的全部动作,其中
产品范围界定为:“产品或服务所包含的特征或功能”;
工作范围界定为:“为交付具有规定特征和功能的产品或服务所必须完成的工作”。
2、项目范围管理:对项目包括什么和不包括什么的定义与控制的过程。
这个过程用于确保项目团队和项目利益相关者对作为项目结果的项目产品以及生产这些产品的过程,有一个共同的理解
3、项目范围管理的作用:
1、可以提高项目费用、时间和资源估算的准确性
2、提供项目进度衡量和控制的基准;
3、有助于清晰地分派责任
4、项目范围管理的主要过程
1、项目启动
2、范围计划
3、范围界定:主要工作是逐级分解项目任务,使其变成更小、更易管理的单元,目的在于提高估算成本时间和资源估算的准确性,为绩效测量和控制确定一个基准线,使工作变得更易操作,责任分工更加明确。
正确的范围界定是项目成功的关键之一
4、范围核实
5、范围变更控制
5、工作分解结构WBS: 是一种以结果为导向的分析方法,用于分析项目所涉及的工作,所有这些分解的工作构成项目的整体范围。
WBS分解方式 —注:分解的基本单元应该是有形的、可核查的(时间、成本)
1、按结构分解 2、按功能分解
3、按过程分解 4、按目标分解
- 项目时间管理
1、项目时间管理的意义:
亦可以理解为进度管理,是对项目执行过程中各项活动所需时间及能否按进度完成各项任务(里程碑)的控制管理。
注:
1、项目进度计划是项目最基本的控制工具
2、时间是最主要的成本依据
3、进度延误是项目管理的主要问题
2、项目时间管理的主要过程
1、PMBOK项目时间管理过程:
- 活动定义:为完成项目可交付成果而必须完成的具体活动(WBS)
- 活动排序:明确各个活动之间的时间连续性
- 活动历时估计:估计各个活动所需时间
- 制定进度计划:分析前两条资源以做出项目进度计划
- 进度计划控制:控制项目进度变化
2、第二种?
- 活动定义:范围管理的内容,也是时间管理中活动排序和历时估计的依据,因此作为时间管理启动步骤。
- 活动排序和工期估算:编制工期计划的基石。
- 制定进度计划:计算整个工期长度,确定起始及结束时间,设置阶段性里程碑,编制计划。
- 进度控制:把进度计划与实施进程的偏差尽量控制在允许的范围内,必要时可进行调整,需要严格的计划变更程序。
3、项目工作活动的相互关系
工作之间的关系分为四种类型:
- 结束到开始 常见
- 开始到结束
- 开始到开始
- 结束到结束
4、确定工作时间的主要方法:
1、专家判断:主要依赖历史的经验和信息
2、类比估计:类似的实际项目的工作时间推测估计当前项目各工作的实际时间。可以说是专家判断的一种表现形式
- 项目成本管理
1、什么是成本
达到一个特定目标牺牲或放弃的资源
2、软件项目成本的理解:
- 完成软件项目相应付出的代价
- 待开发的软件项目所需要的资金
- 人的劳动的消耗所需要的代价是软件产品的主要成本
- 开发成本是以一次性开发过程所花费的代价来计算的
3、项目成本为什么不可控制
1、项目需求不确定导致项目工期不确定、费用无法控制
2、项目采用的技术先进、有风险
3、项目系统开发存在个人行为、人员的积极性、配合情况等有不可预测性、工作效率无法确定
4、项目具有独特性,缺少历史资料借鉴,成本估算带有一定程度的盲目性
5、受企业发展影响,项目的不可知性等等
- 项目质量管理
1、质量的定义:反映实体满足主体明确和隐含需求的能力的特性总和
- 实体:指可单独描述和研究的事物,即质量工作的对象,如活动、过程、产品或组织等。
- 明确需求:在相关文档中已做出规定的需要。
- 隐含需求:指用户和社会对实体的期望以及公认的,不必明确的需求
2、项目质量的含义:
- 从项目作为一项最终产品来看,项目质量体现在性能和使用价值上,即项目的产品质量。
- 从项目作为一次性的活动来看,子昂木质量由WBS反映出的项目范围内的所有阶段、子项目、项目工作单元的质量所构成,即项目的工作质量。
项目合同是进行项目质量管理的重要依据
3、项目质量的类型
产品质量和工作质量
工作质量是产品质量的保证
4、影响质量的因素:4M1E
Man 、Machine 、Material 、Method 、Environment
5、项目质量管理:
- 质量管理:在质量方面的指挥和控制组织的活动
@ 指挥和控制活动通常包括:制定质量方针、质量目标、质量策划、质量控制、质量保证和质量改进- 项目质量管理:组织为了使产品质量满足不断更新的质量要求、达到顾客满意而开展的策划、组织、实施、控制、保证、检查、审核和改进等所有相关管理活动的总和。
策组实控保检审改
- 项目人力资源管理
1、人力资源管理主要工作
- 有效发挥每个参与项目人员作用的过程
- 管理的对象是所有的利益相关者
- 人力资源需求分析与规划
- 人力资源获取与团队建设
- 人力资源培训及学习使用
- 人力资源绩效考核与评定
2、人员管理的关键
- 明确的工作目标:责任到人
- 科学的绩效考核:及时激励(正负激励)、压力与动力并存
- 项目沟通管理
1、沟通的含义:为了设定的目标,把信息、思想和情感在个人或群体间传递并达成共同协议的过程。
2、项目沟通管理:保证项目信息能被及时、正确地产生、收集、发布和存储以及最终进行信息处理过程。参与项目的每一个人都必须使用项目“语言”传达和接收信息,理解他们以个人身份涉及的信息将如何影响整个项目。
3、沟通的障碍
1、组织障碍
- 制度或职能约束:官僚主义
- 部门间协作:利益影响
2、个人障碍:
- 知识、经验水平差距所导致的障碍
- 对信息的态度不同所造成的障碍
- 相互不信任所产生的障碍
- 畏惧感及个人心理品质造成沟通障碍
4、沟通的方法
- 正式沟通、非正式沟通
- 上行沟通、下行沟通、平行沟通
- 单向沟通、双向沟通
- 书面沟通、口头沟通
5、非语言沟通的方式
手势、眼神、表情、姿态、音调
- 项目风险、采购、关系人管理
1、风险的理解:风险是指“损失或损害的可能性”。 由于项目所处的环境和条件的不确定性等因素,项目的最终结果与项目利益相关者的期望产生背离,并给利益相关者带来损失的可能性。
从狭义上:可能发生的危险
从广义上:不确定的存在
2、项目风险管理:通过风险识别、风险评估去认识项目的风险,并以此为基础合理使用各种管理办法、技术和手段对项目风险实施有效的控制,妥善处理风险事件所造成的不利后果,以最少的成本保证项目总体目标实现的过程。
3、项目风险管理过程:
风险识别、风险评估、风险应对、风险控制
- 项目管理成功要素
5W3H1S - 做任何工作都要考虑的九个控制因素
why where what when who
how
how much
how much cost
safty
软件开发过程与项目管理相关推荐
- 软件开发过程与项目管理(16.项目结束)
软件开发过程与项目管理(16.项目结束) 课件 项目终止 项目终止的条件 下列条件出现,可以终止项目: 项目计划中确定的可交付成果已经出现,项目的目标已经成功实现 由于相关原因,项目无法继续进行,例如 ...
- 软件开发过程与项目管理(12.软件项目合同计划)
软件开发过程与项目管理(12.软件项目合同计划) 课件 项目合同 合同是具有法律效力的协议 双方自愿达成的协议 签订者具有相应的法律能力 有充分的签约理由 具有合法的目的 合同条款 合同类型 总价合同 ...
- 软件开发过程与项目管理(14.项目核心计划执行控制)
软件开发过程与项目管理(14.项目核心计划执行控制) 范围计划执行控制 范围核实 变更控制 进度与成本执行控制 图解控制法 挣值分析法(重点) 挣值分析法- 输入 BCWS-Budgeted Cost ...
- 软件开发过程与项目管理(10.软件项目人员与沟通计划)
软件开发过程与项目管理(10.软件项目人员与沟通计划) 课件 项目人员计划 团队定义 团队是一定数量的个体成员组织的集合 包括自己组织的人.供应商.分包商.客户等 为一个共同的目标工作,协调一致,愉快 ...
- 软件开发过程与项目管理(1.项目管理概述)
软件开发过程与项目管理(1.项目管理概述) 项目定义 项目的特征 项目与日常运作 软件项目的特殊性 项目管理定义 软件项目管理 PMBOK(美国的项目管理知识体系) 过程管理 软件项目管理过程 软件项 ...
- 软件开发过程与项目管理(6.软件项目成本计划)
软件开发过程与项目管理(6.软件项目成本计划) 软件项目规模 软件项目规模即工作量包括 软件规模单位包括 软件项目成本 成本估算 估算基本方法 代码行估算法(简略) 功能点估算法- Albrecht ...
- 软件开发过程与项目管理(2.软件项目确定)
软件开发过程与项目管理(2.软件项目确定) 项目立项 Make or Buy 决策 项目招投标过程 乙方项目分析 项目经理的职责 小结 例题 简答题: 自练 项目立项 明确项目的目标.时间表.项目使用 ...
- 软件开发过程与项目管理(11.软件项目风险计划)
软件开发过程与项目管理(11.软件项目风险计划) 课件 风险基本概念 项目风险的三要素 一个事件 事件发生的概率 事件的影响 风险类型 预测角度: 已知风险 可预测风险 不可预测风险 范围角度: 商业 ...
- 软件开发过程与项目管理(13.软件项目集成计划控制)
软件开发过程与项目管理(13.软件项目集成计划控制 项目集成计划 软件项目管理的最重要的四个要素 四要素的关系 项目集成计划的作用 项目集成计划的内容 项目集成计划的流程 项目集成计划风险 项目集成计 ...
- 浅谈软件开发过程及项目管理
做软件也有几年了,将学到别人的经验,项目中自己的体验,参加培训的收获一起总结一下. 需求阶段: 首先要明确软件项目开发完后是为了解决什么问题?对于要解决的核心问题必须要明确,以后可以重点设计作为软件的 ...
最新文章
- 为什么mac运行变慢,如何提升mac运行速度
- Android运行时权限
- [JVM]常用JVM工具使用
- 关于Exchange邮箱服务器角色故障排查及解决思路分享
- MySQL5.7 安装(Redhat)
- 软件项目成员的业绩考核
- ACM-ICPC 2017 Asia Xi'an A XOR (线性基+线段树思想)
- 理解http的幂等性
- 计算题合集-管理经济学
- excel 查找重复值方法
- Unity脚本设置Animator单个状态的speed
- 手机计算机里面的符号代表什么意思,计算器上的符号各代表什么意思?
- 使用 styled-components 定义组件样式
- macos安装盘第三方工具制作_简单制作 Mac OS X USB 启动盘的方法教程
- nim game代码java_LeetCode Nim Game
- 前端入门-HTML篇
- 计算机中的位,字节,字,字长的概念
- oralce_函数使用
- 小程序--语音合成tts 对接多平台(讯飞,思必驰,百度)
- WC .exe C语言实现