软件工程监理1、软件工程监理的概念•软件工程监理是指参照软件工程的思想,对在建软件系统的整个生命周期进行全过程监理,包括软件开发过程、质量保证过程、项目管理过程及配置管理过程的监理,并为用户提供咨询、帮助建设运行制度等有益的服务项目,其最终目的是帮助业主单位建设一个高质量的具有可持续生命力的软件系统。•软件工程监理在技术上是可行的,但在观念和社会环境等方面还存在种种急需解决的问题。2、软件工程监理阶段与传统软件工程阶段对比原始需求收集工程招标可行性报告计划工程设计需求分析系统概要设计系统详细设计测试设计工程实施编码测试部署系统试运行验收运行与维护监理实施阶段传统软件工程阶段3、软件系统建设的监理工作背景•由于软件工程自身所具的特点,以及业主单位在信息技术等相关领域存在缺乏专业技术人才或经验不足等问题,因此业主单位无法自行管理软件系统或自行管理无益于提高项目投资的效益和建设水平。•软件工程监理工作下在是为了协助业主单位保证工程的质量、进度、投资,并合理地处理好业主单位与承建单位之间的关系,对软件系统的建设质量起到保障作用。4、当前软件系统建设存在的主要问题•软件项目投资规模呈逐年增长的趋势。大型软件系统建设是一项投资大、周期长、知识密集、高风险的系统工程,行业新颖、人员年轻、科技含量高、智力密集、涉及领域宽广,对实践经验要求高。•在管理思想与开发技术不断更新和提高的情况下,由于业主单位与承建单位之间信息不对称,挖掘实际需求十分困难。•实施过程中缺乏专业的监督与管理,项目风险增大,失败项目较多。麦肯锡公司的一项调查表明,全球软件开发项目中只有16%能按计划完成。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质量控制的内容和主要监理措施•软件质量监理指对项目承建单位的软件工程行为进行监控、督导、测试和评价。•应用软件系统开发成功的主要指标:功能达到目的用户需求、软件质量特性良好、开发成本和维护成本较低、及时交付使用等。•软件工程的质量监理,主要是因循软件工程的开发阶段进行监理与控制,通过过程控制,从而最终实现总目标质量控制。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进度控制的内容和主要监理措施7.1进度控制概要•业主单位在监理单位协助下完成《工程总计划》,该计划约束业主单位的工程相关人员、监理单位、承建单位,以及其他参与人员,是整个工程的指导性文件。•进度控制贯穿于工程招标、工程设计、工程实施及工程验收的各个阶段。•进度控制主要发生在开发之前和开发过程之中,分为事前进度控制及事中进度控制。7.2进度控制的工作程序1、根据软件项目的质量、投资和进度目标,明确软件各开发阶段的进度控制要求,制定《软件项目