软件项目开发过程中国科学院软件研究所高级技术培训中心中国科学院软件研究所~2~软件项目什么是软件项目完成特定目的、符合用户特定需求的软件所需的组织结构和过程、规范的集合软件项目的实施需要周密的部署,合理的规章制度,符合项目的路线(软件过程),良好的项目管理和人员安排。中国科学院软件研究所~3~相关流程软件管理特点软件生存期过程确定需求开发策划需求分析概要设计详细设计编码与调试测试软件集成、联调内部确认复制、交付、安装试运行、用户验收运行、维护退役软件管理配置与变更管理环境、工具和技术有关软件的法规和标准周密策划以保证软件质量管理体系八项质量管理原则过程方法基于过程的质量管理体系模式实施质量管理体系的意义实施质量管理体系工作重点企业发展力量分析中国科学院软件研究所~4~软件管理特点软件产品的特点软件产品的质量,完全取决于其设计和开发水平软件需求的模糊性、变化性使软件产品难以成熟任何一个软件产品,或多或少总会存在一些故障(BUG)软件人员广泛存在的不规范的开发习惯使开发过程难以管理软件质量指标难以量化软件测试理论和技术尚未解决软件产品正确性的验证问题软件产品质量特性:满足需求能力的一系列特性总和功能、可靠性、易用性、效率、维护性、可移植性软件管理必须在市场(用户)需求和软件成熟性之间进行权衡中国科学院软件研究所~5~软件生存期过程确定需求开发策划需求分析概要设计详细设计编码与调试测试软件集成、联调内部确认复制、交付、安装试运行、用户验收运行、维护退役中国科学院软件研究所~6~确定需求确定外部用户需求上级下达的软件开发课题本单位根据市场需要确定的开发课题用户合同要求的软件开发任务输出可行性分析报告技术、经济、社会可行性,风险对策合同及评审记录产品要求得到规定和满足单位有能力满足规定的要求中国科学院软件研究所~7~开发策划确定开发目标确定项目开发的技术路线(开发的出发基线、对现有产品的复用、委托开发等)确定应遵循的标准、法律和法规选任开发项目经理划分开发阶段确定各阶段的输入和输出文件确定质量控制点(评审点、验证点和确认点)及其实施的责任人、实施方式等设计项目开发进度确定开发人员并分配职责提出开发所需资源(软件、硬件开发环境及工具软件、设备、资金等)要求并予以落实制定配置管理计划和质量保证计划中国科学院软件研究所~8~开发策划(续)输出策划报告开发项目实施计划配置管理计划质量保证计划等中国科学院软件研究所~9~需求分析确保项目的开发符合用户的需求(可测试性)确定设计输入任务委托书/招标书前期对用户的需求调研资料可行性分析报告/投标书合同等编制内部需求规格(说明)书需求变更控制中国科学院软件研究所~10~需求的层次-业务需求、用户需求和功能需求中国科学院软件研究所~11~需求的开发和管理中国科学院软件研究所~12~需求验证验证是为了确保需求说明准确、完整地表达必要的质量特点客户的参与在需求验证中占有重要的位置审查需求文档以需求为依据编写测试用例编写用户手册确定合格的标准中国科学院软件研究所~13~测试需求测试需求有很多分类方法,最普通的一种就是按照商业功能分类把需求分解成单元的好处:测试需求是测试用例的基础,分成单元可以更好地进行设计详细的测试需求是用来衡量测试覆盖率的重要指标测试需求包括各种测试设计和开发以及所需资源最好分解到功能点中国科学院软件研究所~14~概要设计确保产品的总体结构和模块间的关系与用户需求的一致性内容总体方案设计逻辑框图接口及通讯协议选用现有产品软件的选用边界(约束)条件的设计运行环境设计等输出概要设计说明书中国科学院软件研究所~15~详细设计详细设计说明书与概要设计说明书是否相一致内容算法设计数据格式设计实现流程设计人机界面设计测试用例设计操作设计等输出详细设计说明书软件组装计划测试计划及测试用例安装手册(初稿)使用说明书(初稿)产品标准(初稿)中国科学院软件研究所~16~编码与调试内容编写程序代码:源代码→目标代码→可执行代码此阶段还包括部分软件模块的局部测试、集成与联调根据待开发软件的规模、控制点及人员安排,可细分为多个小阶段输出软件(源代码、目标代码、可执行代码及相关数据文件)文档(帮助文件等)保证编码风格的一致性,易读性;增强软件源码的可维护性中国科学院软件研究所~17~测试按测试发生的顺序划分模块测试:是对单个软件模块的测试单元测试:是对各个软件功能单元的测试组装测试:是对各软件单元之间的互联测试集成测试:是对硬件装置、设备和软件的加入性测试系统测试:项目组所在部门组织的对完成集成的系统的测试(是否满足产品规格要)确认测试:单位质量控制部门进行的测试(是否满足产品规格要求)验收测试:在现场安装、调试结束并经试运行后,与顾客一起,就满足合同情况进行的测试(是否满足合同要求)中国科学院软件研究所~18~测试(续)与顺序无关的测试联合测试:当软、硬件分头开发完成时,对其组合体进行的测试回归测试:对因排除不符合项而采取的措施是否产生了其他副作用而进行的确认性测试专项测试:针对某些具体测试项进行的确认性测试。例如:边界条件测试等。应根据开发规模,尽可能进行独立测试。为了保证测试的可信性,被测试的软件应以源代码的形式提交,同时说明生成可执行代码的环境和方法。由测试人员生成可执行代码,进行测试。中国科学院软件研究所~19~软件开发的V字模型不可能在需求开发阶段真正进行任何测试,因为还没有可执行的软件可以在开发组编写代码之前,以需求为基础建立概念性测试用例,并使用它们发现软件需求规格说明中的错误、二义性和遗漏,还可以进行模型分析中国科学院软件研究所~20~对V模型的质疑•在部分阶段延迟进行单元测试和集成测试•在不同阶段上提前进行测试设计中国科学院软件研究所~21~X模型适应现实单元测试、集成测试不断迭代强调探索性测试中国科学院软件研究所~22~统计数字产生缺陷的活动缺陷数/功能点消除率(%)提交缺陷需求1770.23设计1.25850.19编码1.75950.09文档0.6800.12修复0.4700.12总计5850.75美国平均缺陷水平与缺陷消除率CMM级别产 生缺陷数缺陷消除率(%)提 交缺陷数15850.7524890.4433910.2742930.1451950.05CMM不同级别的质量水平活动个人负责范围(FP)生产率(FP/月)%需求分析400903.66初步设计2001003.29详细设计200754.39编码1501818.29重用与采购200010000.33配置管理15002501.32文档1000754.39单元测试1502016.46功能测试1502314.32系统测试1502513.17接受测试400359.47项目管理10003010.98总计100平均1803.29一个1000个功能点的项目中各种活动的比例每千行源代码所包含的bug数,cmm1级为11.95个,cmm2为5.52个,cmm3为2.39个,cmm4为0.92个,而cmm5则只有0.32个中国科学院软件研究所~23~软件集成、联调应按计划对所开发的软件模块进行组装并与硬件一起联调根据需要,规定应填写的调试记录中国科学院软件研究所~24~内部确认在模拟环境下运行,并监视、记录运行情况根据任务书或合同的要求进行比照,检查其是否满足使用要求对运行情况、测试结果及文档的齐套性、正确性和一致性进行评审,达到确认中国科学院软件研究所~25~复制、交付、安装软盘复制、光盘刻录交付时的版本标识和登记安装(派技术人员安装或由用户自行安装)记录软件安装实施计划软件安装环境最低需求软件安装记录中国科学院软件研究所~26~试运行、用户验收以用户验收的方式进行最终确认结论软件设计与需求的一致性程序编码与软件设计的一致性文件描述与程序的一致性文件的成套性、完整性、准确性和标准化程度是否通过验收中国科学院软件研究所~27~运行、维护收集使用中发现的问题和顾客意见针对运行中出现的问题,按设计更改程序进行控制记录用户服务记录表中国科学院软件研究所~28~退役编写软件退役报告,并进行评审中国科学院软件研究所~29~配置与变更管理基线的确立配置项的存取配置管理实施配置项的标识配置项的变更控制配置项的状态记录配置项的检查和评审控制对构成软件产品的各配置项的标识、管理、更改活动,保证软件配置项的完全性和正确性,防止非预期的使用软件配置项的范围合同、技术文档、质量记录等中国科学院软件研究所~30~媒体控制对软件存放介质(媒体)的要求和规定软件的复制(软件的生产过程)媒体的标识:规则、执行者媒体的贮存(防潮、防火、防磁、防静电、防病毒)媒体的包装、运输中国科学院软件研究所~31~文档资料控制各开发阶段应形成的文档,对其拟、审、批的规定编制文档资料所依据的标准和规范开发过程中应形成的质量记录文档与软件之间的一致性检查文档资料的归档与发放中国科学院软件研究所~32~版本管理分类开发过程中的版本交付软件产品的版本管理对象软件文档为该产品开发的工具软件操作配置管理人员,配备一台计算机(或服务器)开设开发库、受控库和产品库访问权限对入库和出库软件的控制中国科学院软件研究所~33~版本管理(续)开发库存放正在开发(编写)或调试(修改)、自测的软件和文档受控库存放开发各阶段测试通过的软件、文档和工具软件的版本并给以标识。转入下一阶段时,从此处发放用作下一阶段开始工作的初始版本产品库存放可交付及已交付软件、文档及支持文件的版本各库内所存放的软件和文档,应定期备份,以防止开发成果的意外丢失(文件重写、介质损坏、意外事故、非法访问——病毒,黑客,故意破坏等)并保证可追溯性中国科学院软件研究所~34~环境、工具和技术开发所需的硬件环境测试所需的硬件环境(包括模拟用户环境所必要的输入、输出设备)开发平台软件(操作系统、编程语言、编译环境、调试工具等)管理软件诊断软件测试软件辅助性软件(防病毒软件等)中国科学院软件研究所~35~有关软件的法规和标准《软件产品管理办法》《计算机信息系统集成资质管理办法(试行)》《计算机软件保护条例》ISO/IEC12207—1995信息技术软件生存周期过程ISO/IECTR15504软件过程评估GB/T19000.3—2001质量管理和质量保证标准第3部分:GB信息技术软件生存周期过程GB/T19001—1994在软件开发,供应、安装和维护中的使用指南GB/T12504—90计算机软件质量保证计划规范GB/T12505—90计算机软件配置管理计划规范等中国科学院软件研究所~36~周密策划以保证开发人员应具备一定的资格或能力开发环境(软件和硬件平台)是适用的编制足够的控制程序和工作规范(例如开发过程控制程序、变量命名规则、代码书写规范、注释规范等)编制测试用例并在使用前对用例本身进行验证编制各阶段测试计划,明确规定测试方法以及测试结果的记录要求、评价方式和接收准则实施配置管理,控制软件产品(代码和文档)版本和更改过程中国科学院软件研究所~37~软件质量管理体系质量体系文件质量手册文件控制记录控制管理职责质量方针、质量目标职责、权限与沟通管理评审资源管理人力资源基础设施和工作环境产品实现产品实现的策划与顾客有关的过程设计和开发采购开发和服务提供监视和测量装置的控制测量、分析和改进监视和测量不合格品控制数据分析改进中国科学院软件研究所~38~八项质量管理原则以顾客为关注焦点领导作用全员参与过程方法管理的