软件项目开发过程北京圣道互联北京思摩信息技术有限公司京华纵横信息技术服务(北京)有限公司联系电话:010-5720917215901397628软件项目•什么是软件项目–完成特定目的、符合用户特定需求的软件所需的组织结构和过程、规范的集合•软件项目的实施–需要周密的部署,合理的规章制度,符合项目的路线(软件过程),良好的项目管理和人员安排。~2~相关流程•软件管理特点•软件生存期过程–确定需求–开发策划–需求分析–概要设计–详细设计–编码与调试–测试–软件集成、联调–内部确认–复制、交付、安装–试运行、用户验收–运行、维护–退役•软件管理–配置与变更管理–环境、工具和技术–有关软件的法规和标准–周密策划以保证•软件质量管理体系–八项质量管理原则–过程方法–基于过程的质量管理体系模式–实施质量管理体系的意义–实施质量管理体系工作重点–企业发展力量分析~3~软件管理特点•软件产品的特点–软件产品的质量,完全取决于其设计和开发水平–软件需求的模糊性、变化性使软件产品难以成熟–任何一个软件产品,或多或少总会存在一些故障(BUG)–软件人员广泛存在的不规范的开发习惯使开发过程难以管理–软件质量指标难以量化–软件测试理论和技术尚未解决软件产品正确性的验证问题•软件产品质量特性:满足需求能力的一系列特性总和–功能、可靠性、易用性、效率、维护性、可移植性•软件管理必须在市场(用户)需求和软件成熟性之间进行权衡~4~软件生存期过程•确定需求•开发策划•需求分析•概要设计•详细设计•编码与调试•测试•软件集成、联调•内部确认•复制、交付、安装•试运行、用户验收•运行、维护•退役~5~确定需求•确定外部用户需求–上级下达的软件开发课题–本单位根据市场需要确定的开发课题–用户合同要求的软件开发任务•输出–可行性分析报告•技术、经济、社会可行性,风险对策–合同及评审记录•产品要求得到规定和满足•单位有能力满足规定的要求~6~开发策划•确定开发目标•确定项目开发的技术路线(开发的出发基线、对现有产品的复用、委托开发等)•确定应遵循的标准、法律和法规•选任开发项目经理•划分开发阶段•确定各阶段的输入和输出文件•确定质量控制点(评审点、验证点和确认点)及其实施的责任人、实施方式等•设计项目开发进度•确定开发人员并分配职责•提出开发所需资源(软件、硬件开发环境及工具软件、设备、资金等)要求并予以落实•制定配置管理计划和质量保证计划~7~开发策划(续)•输出–策划报告–开发项目实施计划–配置管理计划–质量保证计划等~8~需求分析•确保项目的开发符合用户的需求(可测试性)•确定设计输入–任务委托书/招标书–前期对用户的需求调研资料–可行性分析报告/投标书–合同等•编制内部需求规格(说明)书•需求变更控制~9~需求的层次-业务需求、用户需求和功能需求~10~需求的开发和管理~11~需求验证•验证是为了确保需求说明准确、完整地表达必要的质量特点•客户的参与在需求验证中占有重要的位置•审查需求文档•以需求为依据编写测试用例•编写用户手册•确定合格的标准~12~测试需求•测试需求有很多分类方法,最普通的一种就是按照商业功能分类•把需求分解成单元的好处:–测试需求是测试用例的基础,分成单元可以更好地进行设计–详细的测试需求是用来衡量测试覆盖率的重要指标–测试需求包括各种测试设计和开发以及所需资源•最好分解到功能点~13~概要设计•确保产品的总体结构和模块间的关系与用户需求的一致性•内容–总体方案设计–逻辑框图–接口及通讯协议选用–现有产品软件的选用–边界(约束)条件的设计–运行环境设计等•输出–概要设计说明书~14~详细设计•详细设计说明书与概要设计说明书是否相一致•内容–算法设计–数据格式设计–实现流程设计–人机界面设计–测试用例设计–操作设计等•输出–详细设计说明书–软件组装计划–测试计划及测试用例–安装手册(初稿)–使用说明书(初稿)–产品标准(初稿)~15~编码与调试•内容–编写程序代码:源代码→目标代码→可执行代码–此阶段还包括部分软件模块的局部测试、集成与联调–根据待开发软件的规模、控制点及人员安排,可细分为多个小阶段•输出–软件(源代码、目标代码、可执行代码及相关数据文件)–文档(帮助文件等)•保证编码风格的一致性,易读性;增强软件源码的可维护性~16~测试•按测试发生的顺序划分–模块测试:是对单个软件模块的测试–单元测试:是对各个软件功能单元的测试–组装测试:是对各软件单元之间的互联测试–集成测试:是对硬件装置、设备和软件的加入性测试–系统测试:项目组所在部门组织的对完成集成的系统的测试(是否满足产品规格要)–确认测试:单位质量控制部门进行的测试(是否满足产品规格要求)–验收测试:在现场安装、调试结束并经试运行后,与顾客一起,就满足合同情况进行的测试(是否满足合同要求)~17~测试(续)•与顺序无关的测试–联合测试:当软、硬件分头开发完成时,对其组合体进行的测试–回归测试:对因排除不符合项而采取的措施是否产生了其他副作用而进行的确认性测试–专项测试:针对某些具体测试项进行的确认性测试。例如:边界条件测试等。•应根据开发规模,尽可能进行独立测试。为了保证测试的可信性,被测试的软件应以源代码的形式提交,同时说明生成可执行代码的环境和方法。由测试人员生成可执行代码,进行测试。~18~软件开发的V字模型•不可能在需求开发阶段真正进行任何测试,因为还没有可执行的软件•可以在开发组编写代码之前,以需求为基础建立概念性测试用例,并使用它们发现软件需求规格说明中的错误、二义性和遗漏,还可以进行模型分析~19~对V模型的质疑~20~•在部分阶段延迟进行单元测试和集成测试•在不同阶段上提前进行测试设计X模型•适应现实•单元测试、集成测试不断迭代•强调探索性测试~21~统计数字产生缺陷的活动缺陷数/功能点消除率(%)提交缺陷需求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个功能点的项目中各种活动的比例~22~每千行源代码所包含的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~有关软件的法规和标准•《软件产品管理办法》•《计算机信息系统集成资质管理办法(试行)》•《计算机软件保护条例》•ISO/IEC12207—1995信息技术软件生存周期过程•ISO/IECTR15504软件过程评估•GB/T19000.3—2001质量管理和质量保证标准第3部分:GB信息技术软件生存周期过程•GB/T19001—1994在软件开发,供应、安装和维护中的使用指南•GB/T12504—90计算机软件质量保证计划规范•GB/T12505—90计算机软件配置管理计划规范等~35~周密策划以保证•开发人员应具备一定的资格或能力•开发环境(软件和硬件平台)是适用的•编制足够的控制程序和工作规范(例如开发过程控制程序、变量命名规则、代码书写规范、注释规范等)•编制测试用例并在使用前对用例本身进行验证•编制各阶段测试计划,明确规定测试方法以及测试结果的记录要求、评价方式和接收准则•实施配置管理,控制软件产品(代码和文档)版本和更改过程~36~软件质量管理体系•质量体系文件–质量手册–文件控制–记录控制•管理职责–质量方针、质量目标–职责、权限与沟通–管理评审•资源管理–人力资源–基础设施和工作环境•产品实现–产品实现的策划–与顾客有关的过程–设计和开发–采购–开发和服务提供–监视和测量装置的控制•测量、分析和改进–监视和测量–不合格品控制–数据分析–改进~37~八项质量管理原则•以顾客为关注焦点•领导作用•全员参与•过程方法•管理的系统方法•持续改进•基于事实的决策方法•与供方互利的关系~38~过程方法~39~基于过程的质量管理体系模式~40~实施质量管理体系的意义•管理法治化•职责更分明•接口更明确•监督机制加强•焦点得到控制•竞争能力增强~41~实施质量管理体系工作重点•规范管理制度•增进内部沟通•提高服务质量•增强社会信心~42~小结•小结~43~软件开发中的困境•如何指定符合项目的计划•项目应该如何去完成•如何按期提交项目•如何降低项目的风险•项目中的人员流动很频繁怎么办•如何合理的安排已有人员•项目不断变大,文档和程序不断的增多•用户的需求在不断的变化•项目中的人员在增加,如何管理好•项目的质量如何控制~44~软件开发过程的模