第8章软件工程监理8.1软件开发项目通用要求•根据GB/T8566和GB/T8567的要求,一般的软件开发项目应遵循如下要求;监理机构也应主要从如下方面对承建单位的软件开发过程进行质量监督和控制。8.1.1软件开发要求•一个通用的软件生存周期一般包括:概念阶段、需求定义阶段、设计阶段、实现阶段、测试阶段、安装和调整阶段、运行和维护阶段以及退役阶段。8.1.2项目管理要求•为了对软件项目实施有效的管理,通常又将整个项目划分成三个大的阶段,即:策划阶段、开发阶段和验收收尾阶段。•为适应软件项目管理的需要,一般说来,软件产品标准应规定项目开发计划、软件质量保证计划、软件配置管理计划、软件风险管理计划等。8.1.3需求说明要求•软件产品标准必须明确说明软件产品的需求;•明确指出将要开发的软件产品满足系统、子系统或客户的功能、性能要求、环境需求、安全保密需求和接口需求;•需要时软件产品规范还有数据要求说明和数据库设计说明等。8.1.3需求说明要求•功能需求•性能需求•环境需求•安全保密需求•接口需求说明•数据要求说明•数据库设计说明8.1.4测试要求•软件产品规范应规定测试要求,以保证所开发的软件产品满足所有的功能、性能要求、操作要求和验收标准。•测试一般划分为单元测试、部件测试、配置项测试、软件集成测试、系统集成测试及验收测试。8.1.4测试要求•软件集成测试是指软件按一定策略将程序单元逐个集成为特定的模块、分程序和程序,然后确定它们是否满足软件需求的测试。•目的是:a)把软件单元集成为一个紧密的、可以指名执行的软件产品;b)验证软件满足软件需求说明中的全部需求;c)验证该软件能在运行条件范围(正常和异常)内运行。8.1.4测试要求•系统集成测试是将所开发的软件作为一个大系统的组成部分,试验其是否能完成大系统分配给该软件的功能的测试。•在测试中必须进行充分的验证,其内容包括:a)软件满足软件需求说明所要求的全部功能;b)软件满足性能需求、操作要求和约束条件;c)软件支持外部接口需求;d)软件支持人-机和系统控制接口。8.1.4测试要求•单元测试是由编码人员对每个程序单元进行的测试,目的是验证单元满足功能、性能和接口等要求。•单元测试的基本要求如下:a)用指定值、异常值和极限值验证全部计算;b)验证全部输入数据的各种选择;c)验证全部输出数据的各种选择和格式;d)每个单元的全部可执行语句至少执行一次;e)在每个分支点进行选择的测试。8.1.5验收要求•软件验收通常应遵循以下工作步骤:a)提出软件验收申请;b)制定软件验收计划;c)成立软件验收委员会;d)进行软件验收测试;e)进行软件验收评审;f)形成软件验收报告;g)移交软件产品。8.1.5验收要求•开发单位提出软件产品移交项目清单,并附加必要的说明,逐步核实并移交给需方,移交结束后形成产品移交文件,文件内容如下:a)移交项目清单;b)移交项目的数量和装载媒体的详细说明;c)移交的时间、地点、收授人签名。8.1.6文档要求•软件文档通常分为工作文档和产品文档两类。•根据GB/T8567的规定,软件产品规范至少应规定如下文档中的几种:a)软件开发计划(SDP)b)软件测试计划(STP)c)软件安装计划(SIP)d)软件移交计划(STrP)e)运行概念说明(OCD)f)系统/子系统需求规格说明(SSS)g)接口需求规格说明(IRS)h)系统/子系统设计说明(SSDD)i)接口设计说明(IDD)8.1.6文档要求k)软件需求规格说明(SRS)l)软件设计说明(SDD)m)数据库设计说明(DBDD)n)软件测试说明(STD)o)软件测试报告(STR)p)软件产品规格说明(SRS)q)软件版本说明(SVD)r)软件用户手册(SUM)s)软件输入/输出手册(SIOM)t)软件中心操作员手册(SCOM)u)计算机操作手册(COM)v)计算机编程手册(CMP)w)固件保障手册(FSM)•软件开发文档是指软件产品在开发过程中产生的文档,这些文档不包括质量管理计划、风险管理计划、配置管理计划、项目管理计划、培训计划等支持过程和组织过程的文档。•根据GB/T8567的规定,软件产品的开发文档通常包括14种文档•项目开发计划、软件需求说明书、数据要求说明书、测试计划、概要设计说明书、详细设计说明书、数据库设计说明书、测试分析报告需要监理单位审核或联合评审。软件工程开发文档及其所属生存周期阶段说明生存周期基本过程的输出生存周期基本过程的输出-续生存周期支持过程的输出过程GB/T8566-2001的条目输出输出类型文档编制过程5.5.6.1文档编制计划计划配置管理过程6.1.1.1配置管理计划计划6.2.1.1配置管理报告和记录记录质量保证过程6.2.4.1质量保证计划计划6.3.1.4质量保证记录记录验证过程6.4.1.5验证计划计划确认过程6.5.1.4确认计划计划联合评审过程6.6.1.4联合评审结果记录审核过程6.7.1.5审核结果记录问题解决过程6.8.1.1问题报告记录生存周期组织过程的输出过程GB/T8566-2001的条目输出输出类型管理过程7.1.2.1管理计划计划7.1.3.3问题分析报告基础设施过程7.2.1.2基础设施计划计划7.2.2.1基础设施配置描述改进过程7.3.1.1组织过程程序程序7.3.2.1过程评估程序程序培训过程7.4.1.1培训计划计划7.4.3.1培训记录记录8.2软件工程监理对象•在GB/T8566规定的软件生存周期的17个过程中,监理机构主要针对其中的供应过程、开发过程、支持过程以及组织过程中的部分或全部活动进行监督。软件工程监理对象说明监理对象软件工程招标阶段需求认定;招标准备;招标;合同准备、签订软件工程设计阶段工程计划制定;系统需求分析;系统结构设计软件工程实施阶段软件需求分析;软件结构设计;软件详细设计;软件编码和测试;软件集成;软件合格性测试;系统集成软件工程验收阶段培训;系统初验;系统试运行;系统终验;工程移交软件工程支持过程文档编制过程;配置管理过程;质量保证过程;变更控制过程8.3招标阶段的监理软件工程项目招标阶段的监理目标是:•了解用户业务目标和业务模式,认定业主单位确定的系统需求;•协助业主单位进行软件工程项目的招标准备工作,编制适宜的招标文件;•协助业主单位做好软件工程项目的招标工作,选定合适的承建单位;•促使业主单位与承建单位执行有序和稳妥的合同签订过程,促使软件工程项目承建合同的合理性和有效性。8.3.1需求认定•监理机构应了解业主单位的业务目标、系统建设目标、现行和预期的业务模式,并将其作为监理工作的依据之一。8.3.1需求认定•监理机构应取得必要的工程资料,并对其进行熟悉和确认,明确如下内容:a)软件工程的可行性分析;b)业主单位的业务现状、业务流程和业务模型;c)目标系统的功能和性能指标;d)实现系统建设目标必需的资源;e)如适用,信息资源规划;f)如适用,业务流程再造的策略;g)如适用,业务持续改进;h)如适用,业务指标评价体系;i)风险分析及风险管理办法。8.3.1需求认定•监理机构应协助业主单位初步定义系统建设范围、系统需求和约束条件。系统需求应包含如下内容:a)业务、组织和用户需求;b)安全性、保密安全性要求;c)测试有关的要求;d)应遵循的标准、规程等。8.3.1需求认定•监理机构在了解业主单位的业务目标和系统需求的基础上,确定监理目标,并根据如下准则编制监理规划。a)与业务目标的符合性;b)与监理合同的可追溯性、一致性;c)监理工作方法和措施的适宜性;d)监理组织及监理人员的适宜性;e)监理设施和工作制度的适宜性。8.3.2招标准备•监理机构应了解业主单位确定的工程总体进度、工作量评估、评价标准。•监理机构宜了解业主单位估算的工程总投资。•监理机构应了解业主单位确定的初步验收策略和验收条件。•监理机构宜协助业主编制单位招标书,并应要求招标书中初步确定合同执行的里程碑,作为监督承建单位进度的要素之一。8.3.2招标准备•当要获取现货软件产品时,监理机构应审查业主单位对现货软件产品的要求是否包含如下内容,并形成监理意见:a)满足对系统建设目标和系统需求;b)对文档的要求;c)对知识产权的要求;d)对此软件产品的服务和支持要求;e)对供货单位提供此软件产品能力的要求。8.3.3招标过程•监理机构宜协助业主单位建立选择承建单位的规程,包括标书的评价准则和符合需求的程度。•监理机构应协助业主单位对投标单位资质进行审查,审查应包含如下内容:a)资质文件应该真实、齐全;b)投标单位的技术资质及等级应与本工程需要的工程技术相符合,并符合相关特殊要求;c)参与工程的人员资格应与本工程的需要相符合。8.3.3招标过程•如果工程涉及分包,监理机构应协助业主单位对承建单位选择的分包单位进行审查。•监理机构宜协助评标,协助业主单位根据投标单位的标书、能力评价和其他需要考虑的因素选择合格的承建单位。8.3.4合同准备和签订•监理机构应要求在承建合同中明确承建单位应接受监理机构的监理。•如果工程涉及分包,监理机构应要求承建单位对分包单位进行管理,并承担责任。8.3.4合同准备和签订•监理机构宜参与业主单位与承建单位的合同签订过程,合同应包含如下内容:a)功能要求;b)技术要求;c)测试标准和验收要求;d)质量责任;e)工程阶段划分;f)质量和进度要求。8.3.4合同准备和签订•监理机构应协助业主单位对准备签订的合同进行验证,验证时应考虑如下准则,形成监理意见,并协调工程各方对合同予以修订。a)合同中的系统需求覆盖用户的系统建设目标;b)合同中的系统需求描述的一致性;c)为处理变更问题规定适当的处理方法;d)如适用,对于其他相关系统的接口关系与合作,规定了规程及其范围,包括所有权、批准权、版权和机密;e)按照系统需求规定了验收准则和规程;f)明确监理机构在工程付款中的权利;g)工程的里程碑进行了划分和界定,并作为工程阶段性付款依据。8.3.4合同准备和签订•监理机构宜要求业主单位组织与合同执行、管理相关的部门参与合同见证工作。•监理机构应要求工程各方启动合同管理机制及其配套的文档管理和配置管理措施。8.4设计阶段的监理软件工程项目设计阶段的监理目标是:•协助业主单位审查承建单位的软件工程项目计划,确保工程计划的合理性、可行性,并满足承建合同要求。•监督承建单位系统需求分析过程,督促承建单位和业主单位共同合作建立系统需求,并纳入配置管理,促使系统需求的正确性、完备性、准确性、可测试性和一致性。•协助业主单位评审承建单位的软件工程项目的总体设计方案,促使总体设计方案满足软件工程项目的系统需求和有关的法规、标准,并符合承建合同要求。8.4.1工程计划•监理机构应要求承建单位制定工程计划并形成文档,计划中应包含的项目包括但不限于下列:a)工程的组织结构(包括外部组织)、人员职责及其能力要求;b)工程环境,包括测试环境、程序库、设备、设施、标准、规程和工具;c)任务分解安排,连同预算、人员、物理资源、软件规模和相关的任务进度安排;d)进度安排、跟踪和报告方法;e)软件产品或服务的质量特性的管理,可以制订独立的质量保证计划;f)软件产品或服务的安全、保密安全和其他关键需求的管理,可以制订独立的安全、保密安全计划;g)如适用,分包单位的管理;h)如适用,验证和确认方式和条件;i)风险管理;j)用户培训计划。8.4.1工程计划•监理机构应评价工程计划,评价时要考虑如下准则,并形成监理意见。a)与承建合同的可追溯性;b)系统范围及工作任务分解的完整性;c)工程生存周期过程及重要里程碑划分的合理性,包括适宜的软件生存周期模型;d)工程估计方法的正确性,对项目任务和工作产品规模、时间安排、资源的估计;e)工程进度计划的合理性,包括项目质量保证计划、配置管理计划等;f)工程计划中硬件部分的协调和实施的可行性;g)对工程风险进行了必要的识别、分析、处理和跟踪。8.4.1工程计划•监理机构应督促业主单位和承建单位适时对工程计划及有关附属计划进行评审,并及时取得各