Zhu.Kerry@gmail.com作者软件过程管理-Ch.5软件过程的技术管理Zhu.Kerry@gmail.com软件过程的技术管理为了解决软件问题,重要的第一步就是将整个软件开发任务看做一个可控的、可度量的以及可改进的过程。-瓦特·汉弗莱(WattHumphrey)Zhu.Kerry@gmail.com本章提纲5.1软件过程的技术架构5.2软件过程的问题分析和决策方法5.3软件过程的技术路线5.4知识传递5.5软件过程管理工具Zhu.Kerry@gmail.com5.1软件过程的技术架构5.1.1过程技术架构的层次和内容5.1.2软件过程资源的管理Zhu.Kerry@gmail.com5.1.1过程技术架构的层次和内容层次内容Zhu.Kerry@gmail.com5.1.2软件过程资源的管理Zhu.Kerry@gmail.com5.2软件过程的问题分析和决策方法5.2.1过程问题解决的系统方法5.2.2原因分析和缺陷分析5.2.3决策分析与决定Zhu.Kerry@gmail.com5.2.1过程问题解决的系统方法1234Zhu.Kerry@gmail.com5.2.2原因分析和缺陷分析在开发周期的每个阶段实施根本原因分析(rootcauseanalysis),为有效开展缺陷预防活动提供依据。通过制订原因分析计划、选择缺陷分析数据而找出原因、实施建议措施、评价变更的效果、记录数据等多个环节,最终完成这一活动。经常使用的工具有:数据库系统、过程建模工具、统计分析包。Zhu.Kerry@gmail.com5.2.3决策分析与决定选择决策技术和结构层次,制订决策分析与决定的计划;建立作为决策基础的评价准则;建立并运用决策分析指导原则,确定推荐的候选方案;选择评价方法,对照准则评价候选方案。选择解决方案Zhu.Kerry@gmail.com5.3软件过程的技术路线5.3.1软件项目过程的技术解决流程5.3.2技术解决计划的建立和实施5.3.3开发设计5.3.4编程和单元测试5.3.5验证、确认与测试Zhu.Kerry@gmail.com5.3.1软件项目过程的技术解决流程制订技术解决计划。系统定义、候选方案和评估准则。系统操作概念和使用场景。系统架构设计。系统构件的详细设计。实现设计——完成编程和单元测试。通过复审、测试完成对系统的验证。软件发布或部署。软件的操作和维护。Zhu.Kerry@gmail.com技术解决流程示意图Zhu.Kerry@gmail.com5.3.2技术解决计划的建立和实施建立并维护技术解决的组织方针,反复进行产品构件的选择、产品和产品构件的设计以及产品构件设计的实现、验证工作。设计技术路线,确定技术路线中关键的难题和初步的解决办法。根据项目的规模以及财力,确定技术解决人力资源、硬件资源和技术解决工具。技术解决方案准则应该包含对软件生命周期设计问题的处理。为每个候选解决方案拟订产品运行和用户交互作用的时间场景。应充分考虑新技术所带来的风险,要计划好一些应急的措施或备用的成熟的技术。Zhu.Kerry@gmail.com技术工具设计规范工具。仿真程序和建模工具。原型设计工具。场景定义和管理工具。需求跟踪工具。交互式文档编制工具。Zhu.Kerry@gmail.com5.3.3开发设计1.系统定义2.设计标准和准则的属性3.设计方法4.产品构件设计5.设计文档•通用软件设计规范。•用户界面标淮。•设计安全标准。•技术限制。•设计容差。•部件标准1.原型设计方法。2.基于信息隐蔽原则的Parnas设计方法。3.结构化设计方法。4.问题分析法(PAM)5.面向对象的设计方法。6.面向数据结构的软件设计方法(Jackson方法和Warnier方法)7.面向构件的设计Zhu.Kerry@gmail.com5.3.4编程和单元测试主要的编程思想推荐的编程方法编程准则和规范单元测试方法代码重构•测试驱动编程•采用成熟而先进的方法•遵守已定义的编程准则和规范•经常进行代码互为审查、走查•充分的单元测试。•每日构建•定期进行代码重构•结构化程序设计。•面向对象的程序设计。•自动代码生成。•软件代码复用。•使用适用的设计模板。•结构化、模块化。•清晰性、简易性。•语言标准、规则。•变量命名约定。•正在使用语言的特定规则,如指针使用、内存释放。•可接受的语言结构。•软件构件的结构和分层。•足够的注释行。•语句覆盖测试。•分支覆盖测试。•条件覆盖测试。•谓词覆盖测试。•路径覆盖测试。•边界值测试。•特殊值测试。Zhu.Kerry@gmail.com5.3.5验证、确认与测试验证(verification)是指验证或检验软件是否已正确地实现了产品规格书所定义的系统功能和特性,验证过程提供证据表明,软件相关产品与所有生命周期活动的要求相一致。确认(validation)是为了保证所生产的软件可追溯到用户需求的一系列活动,确认过程提供证据,表明软件是否满足客户需求,并解决了相应问题。测试(testing)是为了发现软件的缺陷,减少产品质量的潜在风险。测试是实现验证活动和确认活动的最有效的手段和途径。Zhu.Kerry@gmail.comV&VVerification:Arewebuildingtheproductright?是否正确地构造了软件?即是否正确地做事,验证开发过程是否遵守已定义好的过程规范。Validation:Arewebuildingtherightproduct?是否构造了正确的软件?即是否正在做用户真正所需要的产品详细比较见表5-4Zhu.Kerry@gmail.com5.4知识传递纵向传递是一个具有很强时间顺序性的接力过程,指软件产品和技术知识从需求分析阶段到设计阶段、从设计阶段到编程阶段、从开发阶段到维护阶段、从产品上一个版本到当前版本的知识传递过程。横向传递是指软件产品和技术知识在不同团队之间的传递过程知识传递的有效方法Zhu.Kerry@gmail.com5.5软件过程管理工具5.5.1需求管理工具5.5.2面向对象的分析设计工具5.5.3配置管理和变更管理工具Zhu.Kerry@gmail.com5.5.1需求管理工具IBM-RationalAnalystStudioTelelogicDOORSBorlandCaliberZhu.Kerry@gmail.com5.5.2面向对象的分析设计工具IBM-RationalRose是面向对象技术分析设计工具的代表,是可视化的建模工具面向对象技术分析设计工具很多,如表5-5所示,其中SVG是W3C的一种图形矢量标准,可以在网上快速加载矢量图和UML图,强大的事件及脚本功能,也使得UML图具有更强的交互性和更为丰富的表达能力。Zhu.Kerry@gmail.com5.5.3配置管理和变更管理工具配置管理的主要工作包括通过创建软件配置管理库、定义配置项(包括需求、分析设计模型、代码、文档、测试用例、测试数据等)以及建立和维护软件的基线。变更请求管理的主要工作包括控制和记录配置项内容的变更,建立和维护一个系统并使其追踪和管理变更请求及问题报告。(1)开源工具CVS(ConcurrentVersionsSystem,并发版本系统)是网络透明的版本控制系统。(2)IBM-RationalClearCase。(3)青鸟软件配置管理系统(简称JBCM系统)是基于构件复用的配置管理系统。(4)IBM-RationalClearQuest是需求变更管理工具Zhu.Kerry@gmail.com作业第5章2、3Zhu.Kerry@gmail.comQ&A