软件开发过程和项目管理过程概念•••••软件生命周期(六个阶段)软件过程(流程、技术、产品、工具等)软件开发过程模型(描述和表示)项目过程(项目实现过程+项目管理过程)过程管理(PDCA循环)软件生命周期•描写软件生存的客观事实和规律•国家标准《计算机软件开发规范》(GB8566—8)–定义了软件生存的三个时期,13个阶段,–定义了10个开发阶段的文档标志软件生命周期•软件定义时期––––软件任务立项阶段:“软件任务立项报告”可行性分析阶段:“可行性研究报告”制定项目计划阶段:“项目开发计划书”软件需求分析阶段:“软件需求规格说明书•软件开发时期••••••软件概要设计阶段:“概要设计说明书”软件详细设计阶段:“详细设计说明书”编码和单元测试阶段:“源程序清单”系统集成测试阶段:“集成测试报告”系统确认验证阶段:“验收报告”开发总结阶段:“项目开发总结报告”•软件运行维护时期–改正性维护阶段–适应性维护阶段–完善性维护阶段、及预防性维护软件过程(Softwareprocess)•过程指生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤,由一系列活动组成•软件过程指有计划有目的的组织软件生命周期内的各项活动,以确保软件项目的成功软件过程的种类•开发过程(development)••••需求活动,分析问题和分析需求设计活动,包括概要设计和详细设计实现活动,把设计结果转换为可执行的程序代码确认活动,测试和确认•运作过程(operation)•维护过程(maintenance)•管理过程、支持过程、培训过程等–伴随以上过程过程模型(Processmodel)•根据软件项目的特点,按某种方式,对软件过程的各个阶段的各种活动,定义任务、目标、和方法,称为过程模型•过程模型通常以开发过程为主•软件开发项目按照某一模式组织资源和控制进度过程模型–边做边改(p.37)•没有方法学的应用•操作随意,不可复制•严格地说,不是一种开发模型过程模型–瀑布模型(p.38)•最基本的过程模型•整个过程分阶段进行:需求分析,设计,实现,测试,发布,维护•线性化结构,不可逆•阶段性里程碑管理;每个阶段的结束,都有严格的验证•文档驱动•效果–质量有保证–交付期长–变更需求困难•变形:有反馈的瀑布模型过程模型–螺旋模型(p.38-39)•风险管理,原型方法,和瀑布模型的组合–瀑布模型的流程–对每个阶段循环••••确定目标,选择方案,设定约束创建原型,评估方案,识别并排除风险开发验证产品规划下一阶段•风险驱动,如超出预算,可在任何阶段返回•特点––––能够早期发布产品风险控制用户参与费用高过程模型–变换模型(p.39-40)•软件开发的一种方法–使用形式化说明语言建立系统需求模型–将需求模型自动转化为计算机程序•处于实验阶段,没有到应用阶段•将会对软件开发过程有影响•本身不是一种软件开发的过程模型过程模型–喷泉模型(p.40)•遵循瀑布模型的步骤按阶段顺序开发,阶段之间有很多小循环,不断迭代直至完成•特点–适用于过程中各种活动有相互重迭的情况–适用于面向对象软件开发范型过程模型–智能模型(p.41)•在瀑布模型的实施过程中,使用专家系统帮助决策•软件开发方法意义上的辅助系统•软件开发的过程模型?过程模型–增量模型(p.41)•将系统按功能分解为构件,以构件为单位逐个创建,集成后逐版发布•项目开发遵循瀑布模型的流程•需求分析和概要设计是关键,决定项目的风险度–开放式架构•特点––––需求分析细节延迟交付期短,项目失败的风险低适应软件规格易变的情景对整体设计要求高过程模型–快速原型模型(p.41)•在分析和设计阶段,构建一个系统样本,用于澄清用户对需求的认识,探测预期效果,循坏完善设计•原型的进化(evolutionaryprototyping)–––––对原型进行需求细化开发实现让用户对功能进行验证发布产品根据用户反馈,继续修改完善,更新版本•特点–––––逐步开发完善交付期短,项目失败的风险低适应软件规格易变的情景管理规程不明确适合小项目基于构件/体系结构的开发(p.43-45)•方法学意义上的模型•软件开发过程模型?过程模型–XP模型(p.45)•由一系列连续活动组成–编写代表需求目标的自动测试程序(automatictesting)–编写实现程序直至通过所有测试(testdriven)–重构程序使结构体系合理化(设计)(refactoring)–交付或示范完成的系统给用户检验(prototyping)–发现需要继续完善的功能–反复循还进行以上活动(incrementaldevelopment)•特点–每次循还限制在1-2周内–总有一个可使用的软件版本,尽管可能不完善–文档量少过程模型–Scrum•一种迭代增量式的敏捷过程•主要原理––––在项目过程中,客户会改变他们的需求传统方法无法处理这种情况最大化产品交付能力快速响应新需求•过程实施–––––––更新需求累积清单冲刺计划会冲刺迭代开始班前会议冲刺交付会冲刺总结会下一轮冲刺关于选择生命周期模关于选择生命周期模型的最后的总结1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型.3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型4.在需求不稳定情况下尽量采用增量迭代模型5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型7.对于全新系统的开发必须在总体设计完成后再开始增量或并行.8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.9.增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则.型的最后的总结1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型.3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型4.在需求不稳定情况下尽量采用增量迭代模型5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型7.对于全新系统的开发必须在总体设计完成后再开始增量或并行.8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.9.增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则.1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型模型.3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型4.在需求不稳定情况下尽量采用增量迭代模型5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型7.对于全新系统的开发必须在总体设计完成后再开始增量或并行.8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.9.增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则.软件开发模型总结项目管理的过程(p.5-7)•启动项目阶段–确定目标(功能、时间、资源),目标的范围,签订合同–文档:招标合同、项目章程、可行性报告、项目立项报告•制订计划阶段–项目估算、风险分析、进度规划、人员调配、质量规划等–文档:各种计划书•执行控制阶段–测量实际进程、发现计划缺陷、纠正调节计划–文档:项目跟踪图表、检查评审报告、变更调整报告•收尾结束阶段–项目终止决策、确认实施成果、交接清算、评审总结–文档:验收报告、项目总结报告软件项目的管理过程•开发过程侧重技术活动,管理过程侧重组织实施活动项目管理启动阶段计划阶段监控结束客户支持项目活动收集数据识别需求确定范围制定WBS估计资源建立团队细化WBS分析路径估计预算进度编制计划确定合同建立项目组织执行任务指导监控项目技术财务审核获取客户接受准备项目移交评估记录结果移交项目客户调查跟踪客户提供服务开发活动项目立项分析可行性分析产品需求系统分析项目开发计划架构设计界面设计构建原型总体设计详细设计编码调试集成测试确认验收开发总结改正性维护安装系统适应性维护完善性维护软件开发生命周期定义时期开发时期维护时期过程管理(p.6)•使用方法、技术和工具来改进过程的效果•让过程能够被复用•戴明循环PDCA四部分(Plan,Do,Check,Act)–过程策划–过程实施–过程检测–过程改进•总结出最佳实践