480 likes | 675 Views
软件工程监理. 1 、软件工程监理的概念. 软件工程监理是指参照软件工程的思想 , 对在建软件系统的整个生命周期进行全过程监理,包括软件开发过程、质量保证过程、项目管理过程及配置管理过程的监理,并为用户提供咨询、帮助建设运行制度等有益的服务项目,其最终目的是帮助业主单位建设一个高质量的具有可持续生命力的软件系统。 软件工程监理在技术上是可行的,但在观念和社会环境等方面还存在种种急需解决的问题。. 2 、软件工程监理阶段与传统软件工程阶段对比. 监理实施阶段. 传统软件工程阶段. 3 、软件系统建设的监理工作背景.
E N D
1、软件工程监理的概念 • 软件工程监理是指参照软件工程的思想,对在建软件系统的整个生命周期进行全过程监理,包括软件开发过程、质量保证过程、项目管理过程及配置管理过程的监理,并为用户提供咨询、帮助建设运行制度等有益的服务项目,其最终目的是帮助业主单位建设一个高质量的具有可持续生命力的软件系统。 • 软件工程监理在技术上是可行的,但在观念和社会环境等方面还存在种种急需解决的问题。
2、软件工程监理阶段与传统软件工程阶段对比2、软件工程监理阶段与传统软件工程阶段对比 监理实施阶段 传统软件工程阶段
3、软件系统建设的监理工作背景 • 由于软件工程自身所具的特点,以及业主单位在信息技术等相关领域存在缺乏专业技术人才或经验不足等问题,因此业主单位无法自行管理软件系统或自行管理无益于提高项目投资的效益和建设水平。 • 软件工程监理工作下在是为了协助业主单位保证工程的质量、进度、投资,并合理地处理好业主单位与承建单位之间的关系,对软件系统的建设质量起到保障作用。
4、当前软件系统建设存在的主要问题 • 软件项目投资规模呈逐年增长的趋势。 大型软件系统建设是一项投资大、周期长、知识密集、高风险的系统工程,行业新颖、人员年轻、科技含量高、智力密集、涉及领域宽广,对实践经验要求高。 • 在管理思想与开发技术不断更新和提高的情况下,由于业主单位与承建单位之间信息不对称,挖掘实际需求十分困难。 • 实施过程中缺乏专业的监督与管理,项目风险增大,失败项目较多。麦肯锡公司的一项调查表明,全球软件开发项目中只有16%能按计划完成。
4.1甲乙方信息不对称,导致可能出现损害对方利益的情况(1)4.1甲乙方信息不对称,导致可能出现损害对方利益的情况(1) 1、业主单位对于承建单位存在着技术弱势: (1)业主单位自身的信息技术力量不足,在项目的单体规划、技术方案和设备选型等方面难以决策; (2)信息技术产品商家众多,型号复杂,价格五花八门,竞争激烈,业主单位对市场不熟悉,在挑选承建单位和进行商务谈判时心中无底,比较被动。 (3)业主单位由于无施工实践经验,无法对进度和质量进行控制和监理,对最终结果没有把握。
4.1 甲乙方信息不对称,导致可能出现损害对方利益的情况(2) 2、承建单位相对业主单位存在着业务信息弱势,由于对业主单位的业务知识掌握较少,可能造成对实现业务的难度估计不足。
4.2 挖掘实际需求困难(1) • 业主单位的技术人员很难掌握新的信息技术,一般没有受过专业的需求分析训练,使得双方在实际项目中的信息沟通不到位,业主单位不能正确、全面的描述其需求。 • 承建单位的技术人员对业务领域一般不熟悉,往往不能全面分析所有的用户需求。 • 对业务人员而言,很多业务是隐含的,在需求分析时很容易被忽略,使得需求分析结果具有一定的不确定性和歧义性。
4.2 挖掘实际需求困难(2) • 对于项目中安全需求、授权需求及隐性需求等,一般业主单位为了促使项目立刻成功,往往在描述时淡化这些内容,但在实际的项目运行过程中,这些内容却是非常重要的。 • 需求收集表现的不确定性,使得交流的双方认为对方已明白了自己的观点,自己也理解了对方的观点,在实际上双方的理解存在偏差。 • 如果没有一定的监督和监理机制作为保障,很难保障需求挖掘的正确、全面与完整。
4.3 承建单位在开发过程中可能存在的问题 • 项目管理水平有待提高:配置管理工作不到位,开发文档缺乏科学管理,开发过程中组织协调及源代码管理往往被忽视。管理工作的不完善会在很大程度上影响项目的质量和进度。 • 开发过程未被严格执行:软件过程的理论被认为会耽误开发进度而被简化,很少在实际开发过程中被彻底执行。 • 缺乏严格的验收过程:常以演示会的形式代替验收测试,由承建单位主导验收,业主单位处于被动状态,不能真正暴露软件隐藏的问题,不能了解软件的各项功能和性能指标,加大了系统运行与维护的困难。
5 引入监理制的必要性 1、监理能够打破业主单位和承建单位信息不对称,协调和保障甲乙方成功合作; 2、监理能够对项目实施过程和结果提出公正恰当地评价,是确保项目工程质量、进度和成本的有效方法; 3、监理弥补业主单位在人力资源和经验上的不足; 4、监理有助于发挥第三方专业化服务。监理单位要始终代表业主单位的利益,并站在第三方的立场,公平公正对待工程各方。 综上所述,引入监理将会使信息系统工程风险降得更低,更大程度上保证信息系统工程成功。
6 质量控制的内容和主要监理措施 • 软件质量监理指对项目承建单位的软件工程行为进行监控、督导、测试和评价。 • 应用软件系统开发成功的主要指标:功能达到目的用户需求、软件质量特性良好、开发成本和维护成本较低、及时交付使用等。 • 软件工程的质量监理,主要是因循软件工程的开发阶段进行监理与控制,通过过程控制,从而最终实现总目标质量控制。
6.1 质量控制的工作程序(1) 1、根据软件项目的质量、成本和进度目标,明确软件各开发阶段的质量标准和要求,制定《软件项目监理规划》; 2、审查承建单位提交的《项目开发计划》,若未通过审查,则要求承建单位调整《项目开发计划》,再审查,直至通过; 3、根据《项目开发计划》和《软件项目监理规划》制定软件项目质量控制监理实施细则;
6.1 质量控制的工作程序(2) 4、根据软件项目质量控制监理实施细则及各一切阶段的质量控制标准和要求,收集有关信息,审查有关文档,对软件项目进行质量控制跟踪监理; 5、若存在偏差,分析产生质量偏差的原因,督促承建单位采取纠偏措施。如需要,则要调整《项目开发计划》,转到第2步进行审查; 6、必要时,编写软件项目质量控制监理报告。
6.2 软件开发各阶段质量控制的内容(1) • 软件生存周期分为6个阶段: (1)可行性与计划研究阶段 (2)需求分析阶段 (3)设计阶段 (4)编码阶段 (5)测试验收阶段 (6)安装、运行与维护阶段
6.2 软件开发各阶段质量控制的内容(2) 1、可行性研究与计划阶段 主要任务:可行性分析、投资—收益分析、制定开发投资计划、委托招标。 监理任务:协助业主单位进行可行性分析,协助招标工作。
6.2 软件开发各阶段质量控制的内容(3) 2、软件需求分析阶段 主要任务:确定软件的各项功能、性能需求和设计约束,以及对文档编制的要求。完成《需求规格说明书》和《数据要求说明书》,编写初步的《用户手册》。 监理任务:审核甲乙双方明确的需求规格说明书》和《数据要求说明书》。在以后的各阶段,有效地控制用户需求变更,对于用户的需求变更,要符合开发规范和合同要求,并填写《需求变更控制报告》。
6.2 软件开发各阶段质量控制的内容(4) 3、软件设计阶段 主要任务:在需求的基础上提出多种设计方案,并进行比较选优。包括软件总体结构、模块划分、功能分配、处理流程等,完成《概要设计说明书》和《详细设计说明书》,编写《测试计划初稿》。 监理任务:审核设计文档是否是基于业主单位同意的《需求规格说明书》编制的,是否符合《计算机软件产品开发文档编制指南》的规范和标准,总体设计、接口设计、运行设计、数据结构设计、容错设计、算法设计、数据库设计等内容是否清楚、完整,开发工具和平台是否适当,系统的扩充性和适应性是否满足等。
6.2 软件开发各阶段质量控制的内容(5) 4、软件编码阶段 主要任务:完成源程序编码、编译和排错调试,编写《模块开发卷宗》,完成《用户手册》、《操作手册》等面向用户的手册,完成《测试计划》,有详尽的配置管理方案。 监理任务:确保开发工具及运行环境采用正版软件,审查提交的软件源代码,可执行代码的承载环境都应具有完善的防病毒和防攻击措施,符合《中…国计算机信息系统安全保护条例》的要求;审核开发工具和测试工具的质量,必要时做全面测试。
6.2 软件开发各阶段质量控制的内容(6) 5、软件测试阶段 主要任务:全面测试程序并检查审阅已编制的文件。一般要完成《模块开发卷宗》和《测试分析报告》。对所产生的程序、文件、以及开工作本身逐项评价,最后写出《项目开发总结报告》。 监理任务:与业主单位共同审核《测试方案》,要求开发人员不能参与测试自己开发的模块。要求承建单位实施单元测试、集成测试、确认测试和系统测试的完整过程,审核《测试报告》,抽查部分测试结果,直到符合缺陷管理规定。
6.2 软件开发各阶段质量控制的内容(7) 6、软件安装、运行和维护阶段 主要任务:软件手安装、运行和维护,用户培训,针对新需求的扩充和修改。 监理任务:审核承建单位提交的软件安装计划、安装进度表和安全管理措施,协助解决应用软件和专用设备间的互联和配合问题。要求承建单位认真解决在质保期发现的软件问题,协助做好软件文档、源代码和可执行程序的移交和管理工作。
6.3 质量控制的监理要点(1) (1)检查并监督承建单位制定的《软件质量保证计划》; (2)制定《质量控制监理实施细则》,明确工作内容、要求、人员、职责、程序、方法和措施等; (3)审查承建单位提交的开发计划,包括《软件质量保证计划》 、 《软件配置管理计划》 及《 测试计划》 ,找出承建单位质量管理的薄弱环节; (4)明确各阶段的质量标准和要求,为质量控制监理提供依据; (5)与承建共同探讨设计方案,将建设单位要求及时转达给承建单位;
6.3 质量控制的监理要点(2) (6)组织三方协商会议,做好咨询解释工作,统一各方对质量控制的认识,落实质量控制工作; (7)跟踪承建单位的软件开发过程,及时发现、分析和纠正偏差,并调整《项目开发计划》; (8)及时组织专家和建设单位代表对阶段性成果进行评审,通过后方能进入下一阶段的开发工作; (9)进行事后质量偏差分析,找出质量控制工作的薄弱环节,总结纠偏经验,为处理争议和索赔提供重要依据;
6.3质量控制的监理要点(3) (10)对设计变更进行严格控制,在出现较大的设计更改时,应及时做好甲乙双方的协调工作,在充分交换意见的基础上,对项目的开发投资、进度和质量目标进行调整,修改合同; (11)应根据收集的信息和偏差分析结果处理好争议和索赔; (12)及时收集和整理相关资料,定期和不定期编写软件项目质量控制监理报告,帮助建设单位做好决策工作。
6.4软件开发质量控制的主要措施(1) (1)人员资格审查 (2)组织措施 落实工程进度控制部的人员组成,具体控制任务和管理职责分工。确立进度协调工作制度,对干扰和风险因素进行分析。 (3)开发规范 监理单位要指导承建单位在项目开发之前制定详细的软件开发过程规范。 (4)过程审核 每阶段完成后,进行三方参与的阶段性成果评审,保证需求正确实现,和开发工作按照工程计划进行。
6.4 软件开发质量控制的主要措施(2) (5)加强文档管理 对承建单位提交的各类软件开发文档进行评审,经监理工程师审核认可后方可开展下一阶段工作。 (6)检查承建单位的软件开发质量保证体系 承建单位应建立完善的质量保证体系,编制《软件质量保证计划》,监理单位检查承建单位的各项工作开展情况,并给予支持和指导。 (7)变更管理 监理单位及时审查业主单位的需求变更、设计变更、技术变更和工程变更,并就变更产生的费用和甲乙双方协商。
6.5 加强文档管理辅助质量控制 • 文档是计算机软件中不可缺少的组成部分,包含工程表格和技术文档,其作用如下: (1)作为开发人员在一定阶段内的工作成果和结束标志; (2)可把软件开发中的“不可见”事物转化为“可见”的文字资料,从而能够判断原定目标是否已达到; (3)记录开发过程中的技术信息,便于协调以后的软件开发、使用和维护; (4)提供对软件的有关信息,便于管理人员、开发人员、操作人员和用户之间了解彼此的工作; (5)向潜在用户报告软件的功能和性能; (6)工程表格和进度报告,可使建设单位及时了解项目进展情况,如承建单位按月编写《开发进度月报》,交业主单位和监理单位审核。
7.1 进度控制概要 • 业主单位在监理单位协助下完成《工程总计划》,该计划约束业主单位的工程相关人员、监理单位、承建单位,以及其他参与人员,是整个工程的指导性文件。 • 进度控制贯穿于工程招标、工程设计、工程实施及工程验收的各个阶段。 • 进度控制主要发生在开发之前和开发过程之中,分为事前进度控制及事中进度控制。
7.2 进度控制的工作程序 1、根据软件项目的质量、投资和进度目标,明确软件各开发阶段的进度控制要求,制定《软件项目监理规划》; 2、审查承建单位提交的《项目开发计划》; 3、根据《软件项目监理规划》和 《项目开发计划》制定软件项目进度控制监理实施细则; 4、根据实施细则收集相关信息,审查有关文档,进行进度跟踪监理; 5、发现、分析和纠正进度偏差,需要调整《项目开发计划》的转入第2步; 6、必要时编写《项目进度控制监理报告》。
7.3 事前进度控制的主要内容 1、审核《项目总进度计划》 是否与《工程总计划》一致,不同之处应进行协调,并以《项目总进度计划》作为工期目标。 2、审核《开发进度计划》 是否与《项目总进度计划》的进度目标一致,是否合理,不一致的,进行协调处理。 3、审核《项目开发流程与规范》
7.4 事中进度控制的主要内容 1、审核阶段成果 审核各阶段的进度报告和阶段性成果,是否与计划一致,实际工作量是否与计划工作量一致。 2、督促业主单位 督促业主单位及时按合同向承建单位提供工作条件和开发场所,提交所需的数据及资料等,并支付合同约定的款项。督促合同方按时履行义务,使工程按计划进行。 3、建立健全反映开发进度状况的监理日志 逐日如实记录每日的开发进度实况,按合同要求,及时进行工作量验收,进行进度及计量方面的签认。
7.5 进度控制的要点(1) 1、检查和监督承建单位制定《项目开发计划》; 2、根据《项目开发计划》制定进度控制监理实施细则; 3、审查承建单位提交的开发计划,检查其进度安排是否满足项目进度控制的总目标,是否合理,衔接是否紧凑; 4、收集进度方面的信息,并整理分析,为下一步进度控制打基础; 5、组织三方会议,协调重大的变更事项、相关责任和协商结果通报; 6、对突发事件引起的进度问题,监理单位应召开紧急协调会议,督促各方采取措施,赶上进度要求。
7.5 进度控制的要点(2) 7、及时签发项目进度款支付凭证; 8、检查承建单位报送的开发进度报表并进行现场监理; 9、在承建单位完成关键阶段的设计时,及时组织专家和建设单位代表对阶段成果评审,以便开始下一阶段工作; 10、在一个阶段开发工作完成后,及时检查进度偏差,并督促承建单位采取纠偏措施; 11、客观分析偏差产生的原因,确定相应的经济责任,并处理争议和索赔; 12、及时收集和整理资料,定期和不定期编写《项目进度控制监理报告》。
7.6 进度控制的主要措施 1、组织措施 落实工程进度控制部门的人员组成,具体控制任务和管理职责分工。 2、技术措施 审核《开发进度计划》,确定合理定额,进行进度预测和统计,在项目的各个里程碑,组织相应的评审或检查。 3、合同措施 写明具体的时间要求、违约责任及处理办法。 4、经济措施 对于工程进度,在合同中注明明确的违约责任和经济赔偿方法。
7.7 项目延期处理(1) 项目名称: 文档编号: 根据合同条款 条的规定,由于 的原因,我方申请工程延期,请予以批准。 附件: 1、工程延期的依据及工期计算 合同竣工日期: 申请专利延长日期: 2、证明材料 申请单位(章) 项目经理 日 期 项目延期申请表示例
7.7 项目延期处理(2) 1、监理单位应根据工程情况确认延期申请的合理,并与甲乙双方协商确认,由总监理师对延期申请予以签认; 2、修改延期所影响的《开发进度计划》,经三方签认后,编写项目进度备忘录; 3、监理单位应组织审查进度纠偏措施的合理性及可行性,签发监理通知单报业主单位,并要求承建单位按计划修改; 4、当发生延期索赔时,总监理师应综合考虑项目延期和费用索赔的关系,做出费用索赔和项目延期的建议。
8.1 成本控制概要 • 在《工程总计划》和《项目总进度计划》中已计划软件工程各阶段的成本,并作为整个项目成本的宏观计划。 • 由于进度和质量等因素的影响,承建单位可能将成本控制放在次一点的位置考虑。即可能出现阶段性的成本超支,或节约开支,但影响项目进度或质量的情况。 • 监理单位应在项目进行过程中,对承建单位的项目成本进行监督,使其按计划正确使用。
8.1 成本控制概要 • 软件项目实际实施过程中产生预算超估算、决策超预算情况的主要原因如下: (1)工作量估算标准不一; (2)软件项目主观灵活性相对较大,需求变化较大,导致成本估算误差也较大; (3)思想认识上的误区,认为软件项目具有创新性,导致实施过程中变量太多、变数太大,实际成本超预算是理所当然的。
8.2 成本控制的工作程序 1、制定《软件项目监理规划》,明确开发各阶段的成本控制要求; 2、审查承建单位提交的项目开发概算,直至通过; 3、根据《项目开发计划》 和《软件项目监理规划》制定软件项目成本控制监理实施细则; 4、收集有关信息并审查有关文档,对软件进行成本控制跟踪监理; 5、找出、分析、纠正成本偏差; 6、必要时,编写项目成本控制监理报告。
8.3 成本控制的主要内容(1) 1、审核承建单位提交的项目开发概算,并审查设计方案的技术可行性和经济合理性; 2、根据项目开发概算,制定成本控制监理实施细则,明确工作内容、要求、人员、方法等; 3、收集项目成本方面的信息,并整理分析,加强对项目成本的主动控制,减少不必要的开支; 4、根据软件项目进度,及时签发项目进度款支付凭证; 5、定期或不定期检查实际支出,出现偏差,则要分析原因,纠正偏差,必要时调整投资目标,修改成本控制计划;
8.3 成本控制的主要内容(2) 6、在出现成本偏差时,监理单位应客观公正地确定产生偏差的原因,确定进度偏差可能导致的经济责任; 7、处理成本偏差产生的争议和索赔; 8、为有效控制成本,须严格控制设计变更,若出现较大设计变更时,应召开 三方会议,征得各方同意方可批准; 9、及时收集和整理相关资料,编写项目成本控制监理报告,帮助业主单位做好决策。
8.4 成本计划的审核 1、审核软件规模度量 规模度量是成本计算的主要依据,要综合考虑业务复杂度、技术路线、开发方案及开发模式等多种因素。 2、审核开发工作量估算 除代码量,还要考虑编写文档、结构设计、系统设计、测试以及实施发布等工作。 3、审核人力成本计划 团队结构、薪金分配、资金发放及激励措施等 4、审核非人力成本计划 设备、办公环境、福利等。
8.5 成本控制的主要监理措施 1、组织措施 成立成本控制组,直接向总监负责,与承建单位和业主单位的财务部门接口,负责项目估算、预算及成本计划的审核,以及阶段性成本决算的审核与确认。 2、技术措施 审核成本执行情况,对照基准成本计划找出实际的与基准计划的成本偏差。 3、合同措施 在合同启动之初,对于能够预见的可能成本超支明确规定,指出违约责任。合同提醒并提前预防可能出现的成本超支。
8.6 软件工程规模度量与成本估算方法 • 软件度量是根据一定的度量标准对软件项目的规模进行量化估算,以代码行或功能点描述项目规模大小。 • 软件成本估算对于给定需求的软件项目,根据一定的估算规则进行成本计算,是项目计划活动的基础。
8.6 软件工程规模度量与成本估算方法 • 一般的软件项目成本估算的步骤: (1)估算软件规模:LOC或FP (2)估算软件项目所需的工作量,以人月或人小时为单位; (3)以自然月为单位估算项目进度; (4)估算项目成本。 • 常用成本估算模型有:IBM模型、Putnam模型、COCOMO模型、专家法及COCOMOII等; • 估算方法有:FPA(Function Points Analysis)方法、FFP ( Full Function Points )方法、LOC方法等。