版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件维护与演化目录软件维护与演化软件维护的形式和挑战软件演化的概念及法则软件逻辑老化逻辑老化的表现和原因解决逻辑老化的方法软件维护的过程与技术软件维护技术软件维护过程物理设备的维护问题物理设备在使用过程中会出现故障,需要进行维护软件是否也会出故障?为什么?出了故障怎么办?1.1软件也需要进行维护出故障,不可正常工作潜在的缺陷产生软件错误需要对这些缺陷进行纠正服务变化,需要升级软件需求发生了变化需要增强软件的功能和服务运行环境变化,需要适应需要改变软件以在新的环境中运行1.2何为软件维护软件在交付使用后,由于应用需求和环境变化以及自身问题,对软件系统进行改造和调整的过程软件自身问题,发现了一些新的缺陷运行环境变化,从WindowsLinux软件需求变化,需要增加一些新的需求小米便签软件的维护设置便签访问密码解除便签访问密码根据密码访问便签改善程序代码质量1.3软件维护的形式纠正性维护完善性维护适应性维护预防性维护纠正性维护何为纠正性维护纠正软件中的缺陷和错误起因用户在使用软件过程中一旦发现缺陷,他们会向开发人员提出纠正性维护的请求目的诊断和改正软件系统中潜藏的缺陷为什么软件在使用时还有缺陷存在?适应性维护何为适应性维护?对软件进行改造以便适应新的运行环境和平台起因软件运行于一定的环境(硬件、OS、网络等)之上,运行环境发展很快,出现了变化目的适应环境变化和发展而对软件进行维护为什么软件需要适应环境的变化?改善性维护何为改善性维护?对软件进行改造以增加新的功能、修改已有的功能起因在软件系统运行期间,用户可能要求增加新的功能、建议修改已有功能或提出其他改进意见目的满足用户日益增长的各种需求而对软件系统进行的改善和补充小米便签维护中是否涉及完善性维护?做了哪些完善性工作预防性维护何为预防性维护?对软件结构进行改造以便提高软件的可靠性和可维护性等起因为进一步改善软件系统的可维护性和可靠性,为以后的软件改进奠定基础的维护活动目的获取软件结构,重新改善软件结构小米便签需要做预防性维护吗?1.4软件维护的特点同步性软件维护需要与软件使用同步进行周期长软件维护周期会更长,一些软件会服役十几年甚至几十年的时间费用高维护成本高达总成本80%以上,维护费用是开发费用的3倍以上难度大充分理解待维护软件的架构、设计和代码,这极困难。尤其是在软件设计文档缺失的情况下,这一问题更为突出50%-90%的时间被消耗在理解程序上1.5软件维护工程师负责完成软件维护的各项工作,具备多方面的能力和素质阅读理解能力,阅读待维护软件的相关文档和代码,以此来掌握软件的架构和相关设计需要有非常强的掌握新技术能力,以此来指导软件维护洞察和分析能力,根据软件缺陷的症状快速定位缺陷所在代码的可能位置,能够针对增强的软件需求明确要对软件的哪些部分进行重设计沟通能力,与客户、用户和软件工程师进行沟通的能力1.6软件演化及其特点软件演化是指针对软件的大规模功能增强和结构调整,以实现变化的软件需求,或者提高软件系统的质量功能增强粒度大,软件演化针对的是粗粒度需求变化及功能增强主动应对变更,基于对用户需求及其变化的理解,综合考虑软件各项功能实现的时间投入及开发成本,规划软件系统的整体演化,并以此开展功能增强等维护活动持续性,预先规划好软件演化的路线图,完成当前软件演化工作后,软件维护团队随后将连续性的进入到另一项软件演化工作引发版本变化,每一次演化结束后通常会产生一个新的软件版本软件演化与软件维护概念功能增强粒度应对变化方式持续性或间隔性版本变化软件演化粗粒度主动持续性是软件维护细粒度被动间隔性不一定1.7软件演化法则(1/2)大型闭源软件的演化特点和规律持续变化法则除非系统持续不断地被修改以满足用户的需求,否则系统将变得越来越不实用增加复杂性法则除非有额外的工作来明显降低软件系统的复杂性,否则软件系统会变得越来越复杂自我调节法则在软件演化过程中,软件产品和过程的测量遵循正态分布,演化过程是自我可调节的组织稳定性守恒法则在整个生命周期中,产生一个新版本所需的平均额外工作量几乎是相同的软件演化法则(2/2)熟悉度守恒法则在一个不断演化的系统中,平均增量增长几乎相同功能持续增长法则在软件的生命周期中,软件功能必须持续增加,否则用户的满意度会降低质量衰减法则软件的质量会随代码的不断变更而呈现出整体逐渐下降的趋势。如果没有严格的维护和适应性调整,使得软件适应运行环境的变化,软件的质量必然会随着软件演化而逐渐下降反馈系统法则系统的演化过程包括多回路的活动和多层次的反馈。软件工程师必须识别这些复杂的交互,以持续演化现有系统,提供更多的功能和更高的质量目录软件维护与演化软件维护的形式和挑战软件演化的概念及法则软件逻辑老化逻辑老化的表现和原因解决逻辑老化的方法软件维护的过程与技术软件维护技术软件维护过程2.1何为软件逻辑老化软件在维护和演化的过程中出现的用户满意度降低、质量逐渐下降、变更成本不断上升这样一种现象这些现象发生在逻辑层面,而非发生在物理层面时间软件质量及用户满意度维护活动软件重构软件会出现物理老化现象吗?2.2软件逻辑老化的现象(1/2)质量下降在对软件进行完善性维护的同时,尽管增加了新的功能,但也会带来对软件架构的破坏,从而引入新的软件问题,使得整个软件不易于维护,软件架构变得脆弱变更成本增加随着软件规模的不断增大、软件质量的下降,对软件进行变更的成本也会随之不断增加需要阅读更多的文档和代码才能理解待维护的软件系统软件系统架构的脆弱性意味着软件维护工程师不得不对软件进行更多的“缝缝补补”才能实现新的软件功能软件逻辑老化的现象(2/2)用户满意度降低随着对软件认识不断深入,用户会逐步发现软件中存在的缺陷用户对软件的满意度会逐步降低软件逻辑老化是一种必然的现象,不可避免如果对软件逻辑老化的现象置之不理,必然会导致软件“不可救药”,最终走向死亡解决软件逻辑老化的有效方法之一就是对软件进行重构,重构意味着给软件注入“强心针”,使得软件在一定程度上“返老还童”2.3软件逻辑老化的原因缺乏变更当外部环境发生变化时,软件也应随之发生变化,进行必要的变更,否则软件就会进入老化如果软件运行的操作系统已经发生了变化,软件就需要进行适应性的维护,否则就会被运行环境抛弃如果软件不能适应外部环境变化,缺乏必要变更,就会加速老化负面变更软件变更不总是积极和正面的,有时候它会带来负面和消极影响通过变更引入了新的、更为严重的缺陷;破坏了软件结构,使得软件架构更为脆弱负面变更会破坏软件的结构和质量,进而增加维护的成本和难度2.4软件逻辑老化的表现设计恶化是指软件维护过程中由于设计变更而导致的软件可变性显著降低的现象。设计僵化,软件不易于变更,模块之间存在连带效应设计脆弱,一些“小规模”的软件变更会带来“大范围”的软件变更,甚至会破坏软件系统的整体架构模块间紧耦合,软件内部的多个模块之间关系过于密切,软件铁板一块,难以对其中的模块进行变更晦涩的软件设计,软件设计方案不易于理解设计恶化会导致软件出错率上升,软件变更成本增高目录软件维护与演化软件维护的形式和挑战软件演化的概念及法则软件逻辑老化逻辑老化的表现和原因解决逻辑老化的方法软件维护的过程与技术软件维护技术软件维护过程3.1代码重组在不改变软件功能的前提下,对程序代码进行重新组织,使得重组后的代码具有更好的可维护性,能够有效支持对代码的变更代码读入程序代码程序代码内部表示代码转换易于维护的代码3.2逆向工程基于低抽象层次软件制品,通过对其进行理解和分析,产生高抽象层次的软件制品通过对程序代码进行逆向的分析,产生与代码相一致的设计模型和文档基于对程序代码和设计模型的理解,逆向分析出软件系统的需求模型和文档典型应用场景分析已有程序,寻求比源代码更高层次的抽象形式(如设计甚至需求)3.3设计重构如果一个软件的设计文档缺失,软件文档与程序代码不一致、或者软件设计的内容不详实,那么软件维护工程师可以采用设计重构的手段来获得软件设计方面的文档信息通过读入程序代码,理解和和分析代码中的变量使用、模块内部的封装、模块之间的调用或消息传递、程序的控制路径等方面的信息,产生用自然语言或图形化信息所描述的软件设计文档是逆向工程的一种具体表现形式3.4再工程通过分析和变更软件的架构,实现更高质量的软件系统的过程再工程既包括逆向工程也包括正向工程逆向工程程序代码软件设计模型正向工程易于维护的代码设计改造新的软件设计模型逆向工程、重组、重构和再工程示意图需求模型设计模型1实现模型设计模型n文档和设计重构更高质量的软件设计逆向工程正向工程实现模型再工程代码重组3.5软件维护过程分析软件配置维护申请研读代码研读文档无文档仅代码有文档和代码规划方案修改设计更改代码规划方案测试并交付使用评估和分析读文档和读代码哪个容易?3.6软件维护成本维护成本不断增加70年代:35%-40%80年代:60%90年代:75%如今:数据更高,80%软件维护工作量涉及二方面助动性:用于理解代码功能,结构特征以及性能约束生产性:用于分析和评价、修改设计和代码模型表明如果没有好的软件开发方法或者软件开发人员不能参与维护,那么软件维护工作量会指数上升软件维护工作量M=P+K*e(c-d)P=生产性工作量K=经验常数C=复杂度(设计好坏和文档完整程度)D=对欲维护软件的熟悉程度3.7软件维护需要解决的问题(1/3)人员的问题软件维护工程师认为软件维护缺乏成就感,从而影响他们的工作激情和投入软件维护工程师得不到足够的关注和重视,从而影响对他们的支持和帮助软件开发工程师流动大,软件维护工程师无法得到软件开发工程师的帮助软件开发工程师不愿意帮助软件维护工程师如何解决软件维护的人员问题?软件维护需要解决的问题(2/3)软件制品的问题待维护的软件不能提供软件文档待维护的软件不能提供源程序代码待维护软件的源代码可读性和可理解性差,如缺乏必要的注释等待维护软件的文档可读性和可理解性差,如啰嗦、语言不简练等待维护软件的文档不完整、不详实,漏掉重要内容,缺少细节待维护软件的文档与其代码不一致,影响对软件的理解和维护要读懂待维护软件的文档和代码非常困难软件制品的版本混乱,无法获得合适版本的软件制品为了有效支持维护,软件开发工程中应注意哪些事项?软件维护需要解决的问题(3/3)维护副作用的问题代码副作用,如修改或者删除程序、修改或者删除语句标号、修改逻辑符号等等。为此,软件维护工程师在变更代码时要非常慎重,切忌随意的修改代码数据副作用,因修改信息结构而带来的不良后果,如局部和全局数据的再定义,记录或者文件格式的再定义等文档和模型副作用,软件维护工程师在对程序代码进行修改的同时,必须同步修改相关的模型和文档,以确保模型与代码之间、文档与模型之间、文档与代码之间相互一致维护副作用问题会带来什么样的后果?3.8软件的可维护性在软件开发时就要考虑到将来的维护问题要有前瞻性,预测到变化和问题设计和实现出具有可维护性的软件软件被理解、改正、调整和改进的程度软件的质量直接决定了软件是否易于维护在开发软件时就需要考虑到未来的软件维护问题影响软件可维护性的因素软件开发方法(结构化、OO)软件文档是否齐全文档结构是否标准化软件是否易于扩展软件结构是否清晰易于理解是否采用标准的程序设计语言程序代码是否易于理解必须在设计时考虑软件可维护性问题3.9保证软件可维护性的复审需求分析的复审对将来可能修改和改进的部分加注释,对软件的可移植性加以讨论,并考虑可能影响软件维护的系统界面设计阶段的复审从易于维护和提高设计总体质量的角度全面评审数据设计、总体结构设计、过程设计和人机界面设计编码阶段的复审强调编码风格和内部文档阶段性测试必要的预防性维护软件维护活动完成之际也要进行复审在开发软件早期阶段的质量保证中考虑到可维护性问题小结多样化的软件维护纠正性、完善性、适应性、预防性维护持续性的软件演化对软件的大规模功能增强和结构调整,以实现变化的软件需求,或者提高软件系统的质量软件逻辑老化解决软件逻辑老化的有效方法之一就是对软件进行重构软件维护技术逆向工程、再工程、代码重组、设计重构软件维护会带来新问题,同样需要关注质量因素,进行必要质量保证综合实践一任务:总结和考核综合实践一方法准备PPT,汇报课程实践一的整体完成情况;撰写技术博客总结课程实践一的心得、体会、收获、经验和和成果;评估课程实践一的整体成果及个人的实践投入情况要求基于PPT模板来准备汇报材料,技术博客要真实反映个人的认识,实践整体成果和个人投入情况的介绍要实事求是结果:汇报PPT、技术博客等综合实践二任务:总结和考核综合实践二方法准备PPT,汇报课程实践二的整体完成情况;撰写技术博客总结课程实践二的心得、体会、收获、经验和成果;评估课程实践二的整体成果及个人的投入情况要求基于PPT模板来准备汇报材料,技术博客要真实反映个人的认识,实践整体成果和个人投入情况的介绍要实事求是结果:汇报PPT、技术博客等思考和讨论既然软件维护和演化非常重要,成本高,时间长,软件开发组织和个人如何应对软件维护和演化带来的各项挑战?问题和讨论软件项目管理内容软件项目及其特点软件项目及其管理的特殊性软件项目管理内容软件项目管理的对象和要素3.软件项目管理的方法软件项目管理的常见方法1.1何为项目(Project)?项目概念项目是指为创建一个唯一的产品或者提供唯一的服务而进行的努力
项目是基于既定资源与约束,为实现既定目标而实施的活动,它是一份临时工作,目的是创造独特产品、服务或者结果典型项目示例阿波罗登月项目Windows7开发项目三峡水利项目载人飞船项目……中国探月工程2020.12.17“绕落回”收官项目也称工程,存在约束,实施活动,提供产品和服务1.2项目特点目标性:获得预期的结果进度性:在限定期间完成约束性:具有有限的资源(如人员、经费、工具等)多方性:涉及多个不同人与组织独立性:
项目间无重复性不确定性:项目的实施及其结果不确定性中国探月工程影响项目成功的因素项目范围进度计划客户满意度开发成本项目成功项目的开展和实施受多要素影响,其结果具有不确定性思考和讨论列举你所知道的项目,说明项目的目标性、约束性、多方性、独立性、不确定性1.3软件项目及其特点何为软件项目针对软件这一特定产品和服务的项目努力开展“软件开发活动”软件项目的特点对象:作为逻辑产品的软件过程:不以制造为主,没有重复生产过程属性:实施要素难以度量和估算,如成本、进度、质量复杂性:作为逻辑产品的复杂性非常高易变性:软件需求通常难以确定且经常变化示例:软件项目火炮的火控软件一体化指挥信息系统卫星图像处理软件导弹飞控软件机载软件系统微信软件12306软件……对象、属性、过程、复杂性、易变性等1.4军用软件项目的特点软件形态往往与特定的物理或者硬件环境相互关联,人机物融合系统软件需求环境的恶劣性和多变性,以及军用软件对质量提出更高要求,需要更高的可靠性、安全性、灵活性等由于需要对事件作出及时响应,军用软件项目对系统的实时性提出更高的要求软件复杂性随着信息化的开展,军用软件项目的规模越来越大,甚至可能是系统之系统,或者超大规模系统内容软件项目及其特点软件项目管理的特殊性软件项目管理内容软件项目管理的对象和要素3.软件项目管理的方法和标准软件项目管理的常见方法和已有标准2.1软件项目的任务按照预定的进度、成本和质量,开发出满足用户要求的软件产品用户需求确保质量成本限制进度限制软件项目成本约束进度约束高质量软件用户需求目标性进度性约束性多方性独立性不确定性软件项目实施方法–工程化按照过程遵循原则注重质量借助工具适时评审开展测试撰写文档遵照规范……用软件工程方法来实施软件项目军用软件工程过程军用软件产品规范军用软件质量保证方法……2.2软件项目涉及的对象软件项目管理人(参与项目开发的人员)物(软件制品)过程(软件开发过程)项目经理、需求分析人员、软件设计人员、程序员、测试人员、质量保证人员等需求分析、软件设计、编码实现、软件测试、软件维护等模型、文档、代码、数据、用例软件项目要管理好人、物和过程三类对象示例:Hadoop开源软件项目管理好复杂和不断变化的软件制品并确保其质量非常重要!示例:软件项目的人员及团队Windows7项目25个功能团队每个团队由40名开发人员,40名测试人员,20名项目经理组成整个项目总体约500个项目经理,1000名开发人员,1000名测试人员开发管理测试加强人员之间的交流和合作非常重要!示例:软件项目的开发活动和过程管理好多样的开发活动和多变的软件过程非常重要!2.3何为软件项目管理?对软件项目所涉及的过程、人员、产品、成本和进度等要素进行度量、分析、规划、组织和控制的过程,以确保软件项目按照预定的成本、进度、质量要求顺利完成人员产品过程度量分析规划组织控制……高质量按进度满足需求….对象要素目标软件项目管理的对象过程管理过程:怎么做(How)人员管理人员:谁来做(Who)产品管理产品:结果(What)软件项目管理要管好三类对象:过程、人员和产品2.4软件项目的管理要素管理软件过程明确软件开发活动及过程:过程定义估算软件项目工作量成本:软件度量制定计划、跟踪过程、风险控制等管理软件产品明确有哪些产品,呈什么形式(规范文档)质量保证、配置管理、需求管理,风险控制管理项目人员组建开发团队、调动积极性和激情团队建设与沟通、机制设计、风险控制
软件项目管理要素管理对象人员过程产品管理内容团队建设和管理纪律和激励机制过程定义软件度量项目计划项目跟踪软件质量管理软件配置管理软件需求管理风险管理2.5过程管理过程定义软件度量项目计划项目跟踪风险管理软件项目管理过程人员产品2.5.1过程定义任务定义、文档化软件开发过程、明确软件开发活动,得到一个良定义、全面、灵活、简洁和可供剪裁的软件开发过程问题如何根据要求定义软件开发过程?如何对它文档化软件过程?如何确保软件开发过程的有效性(包含必须的活动)、简洁性(舍弃不必要的过程和活动)和灵活性(根据具体项目情况进行剪裁)?如何根据项目的特点剪裁过程?……定义和明确过程是软件开发的前提示例:根据软件项目的特点来定义过程明确需求、严格的质量管控以文档为中心的重型过程瀑布模型、迭代和增量模型、螺旋模型等大部分军用软件项目采用该种方法变化和未确定的需求、快速应对变化敏捷方法一些特定的军用软件采用该方法2.5.2软件度量任务对软件项目的过程、产品、资源的属性的定量描述,如软件项目的规模、成本、工作量、质量等目的是为了对软件项目进行更好管理,如制定计划、质量保证等问题需要对哪些方面进行度量?如何进行度量?如何将度量的结果指导软件项目的管理?有哪些工具和模型可辅助进行软件度量……软件项目管理需定量的数据支持软件开发项目需要定量数据签订合同之时客户和开发商都关心项目规模和合同额项目策划之时项目组关心开发时间、投入成本和人力开发过程之中项目组关注开发进度用户和开发人员关注产品质量开发完成之后项目实际投入和开销项目的利润软件度量软件度量(Metrics)是指对软件产品、软件开发过程或者资源的简单属性的定量描述产品:软件开发过程中所生成的各种文档和程序过程:与软件开发有关的各种活动,如软件设计等资源:软件开发过程中所需支持,如人员、费用等注意点定量描述而不是定性描述简单属性:无需参照其它属性便可直接获得定量描述简单属性示例例子:**软件系统的代码行数目为1132KLOC软件测量软件测量(Measure)对软件产品、软件开发过程和资源复杂属性的定量描述,它是简单属性度量值函数,用于事后或实时状态,如软件可靠性注意点定量描述而不是定性描述复杂属性-不可直接获得、需参照其它属性的度量值实时或者事后状态,用于对历史进行评估复杂属性示例软件质量、软件可靠性等等例子:软件可靠性为0.95估算估算(Estimation)对软件产品、软件开发过程和资源复杂属性的定量描述,它是简单属性度量值的函数,软件估算用于事前注意点定量描述,而不是定性描述复杂属性,不可直接获得、需参照其它属性的度量值事前状态,可采用经验公式示例如某个软件的开发成本为125万元软件度量的对象
产品过程资源关注对象难易程度
内部属性(1)代码长度(2)程序功能(3)重用性(4)模块的耦合和内聚度……(1)工作量(2)计划和进度….
(1)人(2)软硬件环境(3)方法(4)经验
软件开发人员和项目管理人员相对比较容易外部属性(1)可靠性(2)可理解性(3)质量(4)可维护性(5)可移植性(1)成本(2)可控制性(1)成本(2)时间用户和软件项目管理人员相对比较困难,由内部属性决定示例:面向规模的软件度量用软件代码行数目来表示软件项目规模生产率
PM=L/E L表示代码总量(单位:KLOC),E表示软件工作量(单位:人月)每千行代码的平均成本CKL=S/L S为软件项目总开销文档与代码比Dl=Pd/L Pd表示文档页数代码出错率EQRl=Ne/L Ne表示代码出错的数目软件代码行越多,意味着软件的规模就越大示例:面向规模的软件度量基于经验模型的估算构造性成本模型CoCoMo(ConstructiveCostModel)基本CoCoMo模型:E=a
(kLOC)b
。其中E是软件系统的工作量(单位:人月),a和b是经验常数D=c
Ed。其中D是开发时间(单位:月),c和d是经验常数软件类型abcd适用范围组织型2.41.052.50.38各类应用程序半独立型3.01.122.50.35各类实用程序、编译程序等嵌入型3.61.202.50.32各类实时软件、OS、控制程序等2.5.3项目计划任务制定和文档化软件项目计划,确保软件开发计划是可行、科学、符合实际的问题要对软件开发过程中的那些方面制定计划?制定软件项目的计划的基础和依据是什么?要考虑哪些方面的问题?如何确保计划是科学的和可行的?(软件度量)如何描述计划?利用哪些工具可辅助计划的制定?……软件项目计划有助于项目有序地开展和实施软件开发也需要计划合同和策划阶段制定软件开发计划软件项目计划分发到各个开发成员每个成员准确了解各自任务和工作以及实施进度要求项目实施过程根据软件开发计划有序实施项目发现项目实施中存在的问题:如进度滞后出现偏差后调整软件项目计划项目完成之后总结项目计划实施情况分析原因,指导后续其他项目的计划制定计划有助于项目的有序实施什么是软件项目计划?软件项目计划对软件项目实施所涉及的活动、人员的安排、任务的划分、开发进度、资源的分配和使用等方面作出的预先规划计划内容软件开发进度计划人员任务分工计划资源分配使用计划…….制定软件项目计划的基础和依据软件开发过程选择什么样的软件开发过程支持敏捷方法过程:迭代模型软件项目任务工作说明和软件需求历史数据和估算模型估算工作量和成本项目约束限制项目投入资源及其质量资源(经费、时间、人员、…)软件开发过程要完成的工作约束和限制制定软件开发计划软件项目计划软件开发工作量的大致分布分析和设计40%-50%测试和调试30%-40%编码和实现10%-20%软件开发活动之间的关系(1/3)结束到开始活动A活动B活动结束后就开始活动B活动B活动结束几天后开始活动结束几天前开始时间软件开发活动之间的关系(2/3)开始到开始活动A活动B同时开始活动B活动B活动开始几天后开始活动开始几天前开始时间软件开发活动之间的关系(3/3)结束到结束活动A活动B同时结束活动B活动B结束几天后结束结束几天前结束时间基于甘特图表示的软件项目计划描述项目进度计划-甘特图甘特图左部工作表,以文字方式显示任务信息,如任务名称,开始和结束日期等右边的图表,以条形图方式显示任务信息关键路径分析关键路径是指软件项目进度计划中从起始活动开始到结束活动为止,具有最长长度的路径。长度是指软件开发时间活动A5天活动B8天活动D11天活动E2天活动C7天活动F2天活动G4天活动H2天活动责任矩阵(1/2)
用于定义与软件开发活动执行、评审和批准相关的人员和角色软件开发活动-角色责任矩阵表软件开发活动\角色执行负责评审批准需求分析需求分析小组需求分析小组组长用户方代表需求分析小组软件设计小组质量保证小组软件测试小组软件项目负责人用户方负责人活动责任矩阵(2/2)角色-人员责任矩阵表角色人员需求分析小组小张、小李、小王需求分析负责人小张软件项目负责人小宋用户方代表小张用户方负责人小董制定软件项目计划的时机软件项目计划一般是在软件项目实施之初制定项目开始之初,制定一个初步的软件项目计划,用于指导后续短期的软件开发工作,如需求分析工作软件需求分析完成之时,制定详细的软件项目计划,用于指导后续长期的软件开发工作制定初步计划需求分析制定详细计划时间参与、承诺和分发软件项目计划共同参与一起讨论、明确任务、估算周期、确认进度通过会议形式参与制定便于加强交流评审和承诺共同评审承诺计划内容分发和宣传分发给所有的项目组成员让他们了解软件项目计划2.5.4
项目跟踪任务跟踪和及时调整软件项目开发计划,提供项目情况的可视性,保证计划的适时调整问题要对哪些方面进行跟踪?如何对软件项目进行跟踪?当无法按预定计划实施时如何调整计划?当跟踪发现问题时如何进行处理如何提供工具辅助对软件项目进行跟踪……项目跟踪有助于发现项目实施中存在的偏差:实际与计划不符为什么要进行软件项目跟踪随时掌握软件项目的实际开发情况,提供软件项目的实施提供可视性哪些地方出现了什么样的问题跟踪的对象项目问题和风险,软件项目在实施过程中会出现各种各样的问题和风险软件项目进展,软件项目的实际进展与软件项目计划二者之间会产生偏差项目跟踪的步骤和方法周期性的项目跟踪会议
制定项目计划软件项目开发开发是否完成项目开发结束采集数据了解情况发现偏差和问题采取措施软件项目开发软件项目跟踪会议是否2.5.5风险管理任务对软件开发过程中各种风险进行分析、预测、评估、监控的过程问题什么是软件开发风险?软件开发可能会有哪些风险?如何客观地预测风险?如何评估风险带来的影响?如何避免和消除风险?如何提供工具支持风险分析?……风险管理有助于发现软件开发过程中存在的风险:实施中的问题何为软件风险软件风险使软件项目的实施受到影响和损失、甚至导致失败的、可能会发生的事件例如,人员的临时流失,计划过于乐观,设计的低劣软件风险特点事先难以确定带来损失,影响项目实施,甚至会导致项目失败示例:需求风险需求已经成为项目基准,但仍在变化需求定义欠佳:不清晰、不准确、不一致增加额外的需求示例:产品风险错误率高的模块,需要更多时间对它进行测试、设计和实现矫正质量低下的不可接受的产品需要更多的时间对它进行测试、设计和实现由于功能错误,导致需要重新进行设计和实现开发额外不需要的功能延长了进度要满足产品规模和速度要求,需要更多的时间严格要求与现有系统兼容,需要更多的时间要求软件重用,需要更多的时间……示例:人员风险招聘人员所需的时间比预期要长作为人员参与工作的先决条件(如培训、其他项目的完成等)不能按时完成开发人员与管理层关系不佳导致决策迟缓、影响全局项目组成员没有全身心地投入到项目中,因而无法达到所需的产品功能和性能需求缺乏激励措施、士气低下,降低生产能力缺乏必要的规范,增加工作失误,重复工作,降低工作质量缺乏工作基础(语言、经验、工具等)项目结束前,项目组成员离开项目组风险管理模式危机管理类似于救火模式,听任软件风险的发生,及至造成麻烦后才着手进行处理失败处理听任软件风险的发生和演化,只是在风险发生之后才采取应对措施风险缓解识别软件风险,事先制定好风险发生后的补救措施,但不做任何防范措施风险预防预先识别和分析哪些不好事件可能会发生,制定好了万一发生的应对措施,同时采取措施防止它发生消灭根源不仅要识别出软件开发过程中各种潜在的软件风险,而且还要分析导致这些软件风险发生的主要因素,并采取积极的措施消除软件风险产生的根源风险管理的组成风险管理风险评估风险控制风险识别风险分析风险排序制定计划风险化解风险监控风险管理(1/4)风险识别识别软件项目可能存在的各种潜在软件风险风险分析评估各项软件风险发生概率、可能造成损失及软件风险危险度编号风险名称风险概率损失(人周)危险度(人周)1软件项目规模的估算结果过于乐观0.785.62软件产品的交付日期提前0.240.83用户增加了额外的需求0.854.04需求分析工程师不能按时到位0.921.85需求分析所需的软件工具尚未到位0.531.5风险管理(2/4)风险优先级据软件风险的危险数,可以对软件风险的优先级进行排序编号风险名称风险概率损失(人周)危险度(人周)1软件项目规模的估算结果过于乐观0.785.66由于业务繁忙,用户没有足够多的时间配合需求分析小组开展需求调查工作0.764.23用户增加了额外的需求0.854.04需求分析人员不能按时到位0.921.85需求分析分析所需的软件工作尚未到位0.531.52软件产品的交付日期提前0.240.8风险管理(3/4)制定风险管理计划软件风险管理计划风险编号2风险名称小刘离开项目组风险发生的对象小刘风险发生的原因未知风险可能发生的时机二周后消除风险的措施由软件项目负责人小王和小刘交互,询问离开软件项目组的真正原因,并及时向高层反映情况风险发生后的应对措施让小陈接替小刘的工作风险管理(4/4)风险化解方式避免风险、转移风险、消除发生软件风险的根源风险监控对软件风险的化解程度及其变化(如发生概率、可能导致的损失和危险度)进行检查和监控,并记录收集到的有关软件风险信息,以促进对软件风险的持续管理2.6产品管理软件质量保证软件配置管理软件需求管理风险管理软件项目管理过程人员产品2.6.1软件质量保证任务为软件产品的质量提供某种可视性,知道哪些地方有质量问题,便于改进方法和措施,提高软件产品的质量问题高质量的软件体现在哪些方面?如何发现和保证软件产品的质量?如何制定软件产品质量保证计划?如何有效落实和实施计划?如何提供工具支持软件质量保证?……软件质量保证是软件项目管理的重要目标软件质量保证什么是软件质量保证为管理层提供为获知产品质量信息所需的数据,从而获得产品质量是否符合预定目标的认识和信息软件质量保证的目的为软件产品的质量提供可视性知道哪些地方有质量问题便于改进方法和措施示例对软件进行测试,发现有哪些错误掌握这些错误的性质(严重、一般)软件质量保证的内容掌握软件产品质量软件测试提交软件质量报告软件测试报告,说明质量问题汇报项目组和管理层例行的质量回报,便于改进管理和技术手段从哪些方面关注软件质量软件产品软件需求规格说明书软件设计规格说明书源程序代码开发活动需求分析软件设计编码标准和规程代码编写标准文档规范如何保证软件质量软件产品文档类:审核,产生审核报告代码类:测试,产生测试报告开发活动审查:产生审查报告制定标准和规程组织内部或者在项目开始时要制定软件开发的标准和规程谁来执行和实施软件质量保证软件项目质量保证小组(SQA小组)独立于项目开发小组具有比较大的权限软件质量保证活动和手段正确理解用户要求制定相关标准规程审查软件开发活动审核软件工作产品测试程序代码记录各种偏差记录不符合项,报告高级管理者2.6.2产品管理–软件配置管理任务对软件产品进行标识、存储、更动和发放,记录和报告其状态,验证软件产品的正确性和一致性,并对上述工作的审计的过程问题如何标识和描述软件产品如何对其软件产品的版本进行控制?如何控制软件产品的变更?如何制定软件配置计划?如何利用工具支持软件配置活动……软件配置管理是有效管理软件产品及其之间关系、应对变化传播和影响软件配置项的概念软件生命周期内产生、需进行配置管理的工作产品文档:SRS/SDS/…代码:源代码、中间代码、可执行代码、…数据:配置数据、数据库、数据文件、…标准和规约:编码规范、…软件配置项的描述命名和编号如SRS属性版本(1.0)类型(文档)关系与软件概要设计文档、数据设计文档关联基线的概念已经通过正式复审和批准的软件产品、标准或规约,它们可以作为进一步开发的基础只能通过正式的变化控制过程才允许对它们进行变更基线示例经过评审后的
,发现的问题已经得到纠正,用户和项目组双方认可并且正式批准,就可纳入基线什么是软件配置管理?在软件生命周期中对SCI进行的以下工作系统地控制SCI的标识、存储、更动和发放记录、报告其状态验证SCI的正确性和一致性对上述工作的审计为什么需要SCM?软件产品的易改性与可控性修改很可能引入新的错误,使结构变坏牵一发动全身(影响域)团队开发时,多人并发存取需加控制(存取控制)多应用开发时,同一软件的不同版本可能对应于不同应用,对此需加控制(版本控制)应对软件更动状态予以追踪,并及时向有关人员通报状态情况如果软件产品不能自始至终地保持清晰、互相一致,造成混乱、丢失,那么该软件系统会因无法使用而不得不报废2.6.3软件需求管理任务获取、文档化和评审用户需求,对用户需求变更进行控制和管理问题如何获取需求?如何撰写软件需求规格说明书?如何对需求进行评审以发现问题?如何控制需求的变更?如何提供工具支持需求管理……软件需求管理为应对需求变化提供有效措施2.7人员管理软件项目团队纪律激励机制软件项目管理过程人员产品2.7.1软件项目团队任务确定开发团体的结构、明确人员的角色和任务、加强人员间的交流与合作,结构合理、任务明确、团结协作、交流顺畅问题如何根据开发组织、软件项目和开发人员的特点来组建项目团队?如何采取有效的措施来加强和促进人员之间的交流、沟通和合作?如何提高团队的合作精神?……2.7.2纪律和激励机制任务制定和实施纪律约束团体,通过激励机制激发人员的激情,严格的纪律,饱满的激情问题如何制定有效的纪律确保项目得以顺利的实施如何制定措施激励员工的积极性和热情……管理在软件项目中的重要性70%的软件项目由于管理不善导致难以控制进度、成本和质量,三分之一左右的软件项目在时间和成本上超出额定限度125%以上管理是影响软件项目成功实施的全局性因素,而技术仅仅是局部因素如果软件开发组织
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T∕CECS 493-2017 村镇供水工程自动化监控技术规程
- 教务主任培训三班学习简报第一期
- 2026年学前儿童健康教育综合测试题附答案
- 2026年医疗器械相关法律、法规培训试题及答案
- 2026年重大手术审批试题及答案
- 2026年医院感染管理三基的试题(附答案)
- 2026年医废安全防护试题及答案
- 2026年全国临床护理三基训练指南题库(附答案)
- 2026年医院感染相关法律法规考试题及答案
- 2026灭菌试题及答案
- 《物业设备设施管理(第2版)》-第七章
- 2026年安全生产法律法规考试题及答案
- 2026北京市公安局监所管理总队招聘勤务辅警招聘150人农业笔试模拟试题及答案解析
- 2025版下肢深静脉血栓介入治疗护理规范专家共识解读课件
- 国标图集22K311-5《防排烟系统设备及部件选用与安装》解读
- 综治中心值班工作制度
- 2025版建筑工程建筑面积计算规范
- 电测技术监督实施细则培训
- 2026 英语新版教材七年级下册核心单词表
- 公证培训课件
- 高二上学期高雅人士课堂惩罚小游戏(课件版)
评论
0/150
提交评论