8.软件工程工具.ppt
软件工程方法,2,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,3,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,4,软件工程工具,软件工程工具是以计算机为基础的工具,其意图是辅助软件工程周期过程使得良好定义的动作反复并自动执行,以减少软件工程师的负担,从而脱离繁琐的重复性工作而着力于创造性方面工具通常是为支持特定的软件工程方法而设计的,以减少手工应用这些方法时的管理负担其目的是使软件工程更加系统化,种类多种多样,从支持个人的任务到围绕整个生存周期又称计算机辅助软件工程(CASE)软件工程环境是一组相关软件工具的集合组织在一起支持某种软件开发方法或/与某种软件开发模式相适应,5,为什么需要CASE工具,利用CASE工具应对各种问题项目管理问题不正确的可行性评估不可评价的代码缺少工程原则质量控制差,6,CASE工具分类,SWEBOK(软件工程知识体)中将软件工程工具分为10大类1.软件需求工具2.软件设计工具3.软件构造工具4.软件测试工具5.软件维护工具6.软件配置管理工具7.软件工程管理工具8.软件工程过程工具9.软件质量工具10.其它工具,7,1&2.需求与分析设计工具,软件需求工具软件建模工具:用于抽取、分析、指定和确认软件需求需求追踪工具:用于管理需求变更等,并建立需求间的可追踪性软件设计工具包括创建和检查软件分析、设计模型的各种工具这类工具异彩纷呈,针对不同的设计方法差异很大,8,典型的需求和分析设计工具,结构化建模Enterprise Architect、Visible Analyst这些工具的新版本也支持UML建模面向对象的建模各类UML建模工具(商业、共享、开源)如Rational Rose、Togheter、ArgoUML、StarUML数据库设计PowerDesigner、ERWin需求管理工具IBM Rational RequisteProIBM Rational DOORSBorland CaliberRM,9,3.软件构造工具,软件构造工具:用于生产和翻译程序表示(源代码),这些表示足够详细并能由机器执行程序编辑器:用于创建和修改程序,可以是通用的文档编辑器,也可以是某特定目标语言的编辑器编译器和代码生成器:编译器是源代码的非交互式翻译器,但当前趋势是将编译器和程序编辑器集成为集成开发环境(IDE);包括预处理器、链接器/加载器和代码生成器解释器:提供软件的仿真执行;为程序执行提供了一个可控、可观察的环境,从而支持软件构造活动调试器:用于发现和定位程序Bug,10,典型的软件构造工具,集成开发环境(IDE,Integrated Development Environment)Microsoft Visual StudioEclipse、NetBeansLinux/Unix下GNU各类工具编辑器:vi、emacs编译器:gcc、g+;make调试器:gdb,11,4.软件测试工具,软件测试工具测试生成器:辅助开发测试用例测试执行框架:在受控环境下运行测试用例测试评价工具:对测试执行的结果评估测试管理工具:管理软件测试过程的各个方面性能分析工具:用以度量和分析软件性能,12,典型的软件测试工具,自动化测试工具WinRunner、QTP、Robot压力和性能测试工具LoadRunner、QALoad测试实现工具JUnit缺陷跟踪工具BugZilla、ClearQuest测试管理工具Test Manager、TestDirector、QADirector,13,5.软件维护工具,软件维护工具理解工具:这类工具辅助人们理解程序,如动画器和程序切片器之类的可视化工具重构工程工具:重构工程被定义为考察和改动软件并按新的形式再造它,包括新的形式后续的实现逆向工程工具通过相反方向的工作来辅助过程,从已有产品去创建规格说明和设计描述之类的制品,然后作变换从老产品生成新产品,14,6.软件配置管理工具,软件配置管理工具跟踪工具:缺陷、增值点、争议点和问题追踪工具;这些工具使问题追踪和程序相连接,一般和特定软件产品相关版本管理工具:涉及一个产品的多版本管理发布和建造工具:用以管理软件发布和建造任务。还包括安装工具,15,典型的配置管理工具,配置管理工具Rational ClearCase、PVCS需求变更管理和跟踪工具Rational ClearQuest版本管理工具VSS:Visual Source SafeCVS:Concurrent Versions SystemSVN:CollabNet Subversion,16,7.软件工程管理工具,软件工程管理工具项目管理和追踪工具:用于软件项目量度工作量和估计费用,以及项目调度风险管理工具:用于标识、预计和监控风险度量工具:辅助进行软件度量,17,典型的软件工程管理工具,项目管理工具Microsoft Project、CA SuperProject、PMOffice风险管理工具RMEA(Risk Mode and Effects Analysis)度量工具Function Point Workbench、Cost Xpert、COCOMO II,18,8.软件工程过程工具,软件工程过程工具,包括建模工具,管理工具,和软件开发规范过程建模工具:用于研究软件工程过程,和建造过程模型过程管理工具:为软件工程过程管理提供支持集成的CASE环境:这些工具实施多种功能,存在可能要在执行中与软件生存周期过程交互以过程为中心的软件工程环境:把信息组合到软件生存周期过程之中,并指导和监督用户按照定义的过程行事典型的过程工具Rational Unified ProcessRational Method Composer,19,9.软件质量工具,软件质量工具,包括评审工具和分析工具评审和审计工具:用以支持软件的评审和审计静态分析工具:用以分析软件制品,如语法和语义分析器;从而检查软件制品的相符性或验证某种希望的性质典型的软件质量工具动态分析工具:Rational Purify,Ration Test RealTime,20,10.其它工具,其它工具工具集成技术:典型的工具集成有平台的、表示的、过程的、数据的和控制集成元工具:元工具是生成其它工具的工具,经典的例子有编译器的编译器工具评价:由于软件工程工具要连续不断地评价典型的元工具ANTLR(ANother Tool for Language Recognition)Lex和yacc,21,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,22,Microsoft Office工具集,Microsoft Office套件文档:Word演示:PowerPoint表格:Excel模型:Visio管理:Project,23,利用基本Office工具撰写文档,利用Word撰写文档样式:字体、段落、编号、标题和文档结构图分隔符:分节符和分页符利用PowerPoint制作演示文稿选择设计模板、定制母版、修改版式灵活使用各类动画效果利用Excel绘制电子表格设计单元格运用各类函数进行统计汇总,24,利用Visio绘制各类模型,Microsoft Visio 是独立的图表解决方案,帮助用户交流创意、信息和系统并将其可视化创建信息丰富的图表,以便补充和扩展文档可以用图表记录创意、信息和系统,以便简化 IT 部署、扩展开发工具的使用、甚至记录设备布局和工程计划利用Visio可以创建各类图表Web图表、地图、建筑设计图各类工程图、框图、流程图、网络图等这些图可用于各类文档中,25,Visio中的绘图类型,26,利用Visio绘制流程图,27,利用Project管理项目,利用Project进行项目管理项目范围管理 利用项目分解功能,用户可方便的对项目进行分解,并可以在任何层次上进行信息的汇总项目进度管理 提供了多种进度计划管理的方法,如甘特图,日历图,网络图等利用这些方法,用户可以方便的在分解的工作任务之间建立相关性,使用关键路径法计算任务和项目的开始、完成时间,自动生成关键路径,方便用户需项目进行更有效的管理,28,利用Project管理项目(续),利用Project进行项目管理(续)项目资源管理 提供了“资源平衡”,“责任矩阵”,“资源需求直方图”等技术,力求对资源进行更合理的分配信息沟通管理使用不同的视图和报表,为项目中不同人员提供了所需的信息项目管理者还可以利用电子邮件和Project Central直接分配任务,更新任务信息,跟踪控制任务完成情况项目综合管理 包含了项目管理中多方面,重要的技术和方法,可以对整个项目的计划,进度,资源,进行综合管理和协调,改善项目管理的过程,提高管理水平,最终实现项目的标,29,利用Project定义项目计划,30,利用Project创建项目的进度视图,31,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,32,MindManager,MindManager是一个创造、管理和交流思想的通用标准其可视化的绘图功能帮助有序地组织您的思维、资源和项目进程作为一个组织资源和管理项目的方法,可从脑图的核心分枝派生出各种关联的想法和信息 利用MindeManager只需要两步就可以在同一页中显示出每个人的观点,从而避免了不必要的重复性的工作迅速地以可视化形式获取和组织思想,促进团队内的协作和个体积极性能够直接分发会议记录,可以输出为各种格式的文件(PDF、Word、Powerpoint、HTML和图片等),33,MindManager主界面,34,思维导图实例,35,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,36,为什么需要版本管理,现在的软件很少是由个人独立开发的项目组开发软件可能会遇到以下问题多人可能修改同一个文件由于失误,自己所编写的代码可能被其他人覆盖软件已经发布了三个版本,而这时候用户需要你修改第二个版本的东西,也许你会因为只保留了最新版本而痛哭流涕对程序做了一些修改,但是修改很少,只想给远方的同事发一个两个版本之间的差别文件,37,版本管理,版本管理记录项目文件变化和修改的过程通过版本管理(主要关注源代码控制)能够取得任何版本的文件进行浏览和更改如:进行Bug修改时不同版本之间可以比较差异能够自动生成Patch开发人员可以并发处理文件而不会丢失数据项目可以进行分支开发,各分支也能够进行整合通过网络可以进行分布式开发,38,版本管理工具-CVS,并发版本系统(Concurrent Versions System)主流的开放源码的版本控制系统CVS对于从个人开发者到大型,分布团队都是有用:客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码Check out方式避免代码冲突客户端工具可以在绝大多数的平台上使用CVS被应用于流行的开放源码工程中Mozilla、KDE、GNOME等,39,版本管理工具-SVN,版本控制系统SVN(Subversion)作为CVS 的重写版和改进版,其目标就是作为一个更好的版本控制软件,取代目前流行的CVS CVS内部代码的问题,很难再发挥的更为强大支持绝大部分的CVS 功能/命令,命令风格和界面也与CVS 非常接近支持工具SubVersion:实现服务系统的软件TortoiseSVN:SVN客户端程序,与windows资源管理器集成AnkhSVN:是一个专为Visual Studio提供SVN的插件VisualSVN Server:一个开源的SVN服务器软件,40,版本管理中的几个概念,修订版(Revision):某个文件在其生命周期内各个保存的快照,每个快照和一个时间区间对应版本库(Repository):存放修订版的数据库本地工作拷贝(Local working copy):修订版在本地的副本 版本的检入(Check in):本地副本提交到服务器的版本库 检出(Check out):从服务器的版本库中取出修订版成为本地副本 标签(Tags):为版本加一个名字,便于检出 分支(Branches):修订版打分支,以后可以平行修改,互不干扰 合并(Merging):将分支的修订版合并为一个新的修订版 锁(Locking):为修订版加锁,41,SVN结构,42,SVN中的版本模型,从版本0开始,版本库的快照:,43,利用SVN解决文件共享问题,如何让系统允许用户共享信息,而不会让他们因意外而互相干扰?版本库里意外覆盖别人的更改非常的容易示例:有两个共同工作者,Harry和Sally,他们想同时编辑版本库里的同一个文件如果首先Harry保存他的修改,过了一会,Sally凑巧用自己的版本覆盖了此文件而Harry所有的修改不会出现在Sally的文件中,所以Harry的工作还是丢失了,文件共享:锁定修改解锁方案,文件共享:锁定修改解锁方案(续),锁定可能导致管理问题如果Harry锁住文件后忘了此事,则Sally僵住锁定可能导致不必要的线性开发Harry编辑一个文件的开始,而Sally编辑此文件的结尾。本来不冲突,修改后合并即可锁定可能导致错误的安全状态如果Harry锁住A,Sally锁住B,而两文件相互依赖,则两文件不能很好地工作,文件共享:拷贝修改合并方案,文件共享:拷贝修改合并方案(续),合并模型假定文件是可以根据上下文合并的文本文件如:程序源代码对于二进制文件,可以采用锁定模型如艺术品或声音,有必要采用锁定让用户轮流修改文件如果没有线性的访问,有些人的工作最终要被放弃svn中这两种模型都支持,svn操作基本流程,取出版本库到本地工作拷贝svn checkout更新你的工作拷贝svn update 做出修改svn addsvn deletesvn copysvn move,svn操作基本流程(续),检验修改svn statussvn diffsvn revert合并别人的修改到工作拷贝svn updatesvn reslove提交你的修改svn commit,其它操作命令,检视历史记录svn logsvn diffsvn catsvn list清除svn cleanup导入svn import,51,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,52,Enterprise Architect,Enterprise Architect是一种建模工具可建立业务流程、需求、分析、设计、实现、部署等各阶段模型通过模型、视图、图、元素和规格说明等不同的层次来组织模型模型中包含不同的视图,描述系统的不同阶段或不同视角的模型视图中包含不同的图形,描述静态或动态结构图形中包含各种分析设计元素,并通过规格说明进行定义,EA主界面,54,演示:利用EA建立网上书店系统,网上书店系统UML模型需求:用例视图用例图、活动图等分析设计:类视图类图、类的状态机图分析设计:动态视图顺序图部署:部署视图部署图,OnlineBookShop Use Case Model,55,Activity Diagram,56,Class Diagram,57,Statemachine Diagram:Order,58,Sequence Diagram:Check out,59,Deployment Diagram,60,61,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,62,利用RequisitePro管理需求,需求管理获取,组织和记录一个系统需求的系统化方法客户和项目团队就系统需求改变而建立和维护一致意见的过程通过组织和跟踪需求并管理需求变化,提高在规定时间和预算内完成该项目,并发布客户想要的产品的可能性RequisitePro是一个需求管理工具帮助团队管理项目需求并使得合作和沟通更容易与Word集成,可以很在文档和工具间建立关联IBM DOORS也是使用较为广泛的需求管理工具,63,RequisitePro主界面,64,RequistePro中的需求管理模型,65,RequisitePro中的项目,在RequisitePro中,一个项目包括数据库和文档,数据库中管理如下信息文档类型(document types),如:glossary document,vision statement,and use cases需求类型(requirement types),如:features,use cases,supplementary specifications需求属性(requirement attributes),包括priority,status,stability等其它特征来描述需求需求跟踪能力(requirement traceability),显示了需求之间的关系这些结构化信息包含在项目和文档模板中,66,使用项目模板新建项目,可以从现有的项目结构创建一个新项目;也可利用已有的项目模板新建项目:用例模板(Use-Case Template):采用用例技术描述需求传统模板(Traditional Template):采用传统的功能分解的方法描述需求复合模板(Composite Template):采用用例和传统模板结合的方法描述需求创建新模板(Make New Template)也可以从一个空白模板中创建一个项目,67,利用RequisitePro管理需求,利用RequisitePro管理在线书店系统需求新建基于用例模板的需求项目在前景文档中创建产品特征(Feature)从Rose用例模型中获取用例,并在RequisitePro中进行管理从Rose用例模型中创建用例文档建立用例和产品特征之间的可跟踪性,68,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,69,利用PowerDesigner设计数据库,数据库设计数据库设计是系统开发中相对独立又非常重要的一部分一般分为概念建模、逻辑设计和物理设计三个阶段Power Designer是Sybase公司的CASE工具包括了数据库模型设计的全过程可以制作数据流程图、概念数据模型、物理数据模型,也可为数据仓库制作结构模型等主要用于数据库建模,但也可用于其它建模(如UML分析设计建模、业务流程建模),70,Power Designer的4种模型,概念数据模型(CDM)表现数据库的全部逻辑结构,与软件或数据存储结构无关是最终用户对数据存储的看法,反映了用户的需求不考虑物理实现细节,只考虑实体间的关系,主要用于需求分析阶段物理数据模型(PDM)描述数据库的物理实现,考虑真实的物理实现细节把CDM中建立的概念模型生成特定的DBMS脚本,保证数据在数据库中的完整性和一致性适合于系统设计阶段的工具面向对象模型(OOM)业务流程模型(BPM),71,CDM、PDM、OOM三者转换关系,CDM是一般的开始,72,Power Designer主界面,对象浏览器,绘图窗口,输出窗口,结果列表,73,使用Power Designer设计数据库的步骤,建立CDM,转换为PDM,产生Database,调整PDM,同步Database,产生报告,74,演示:利用Power Designer设计数据库,利用Power Designer设计在线书店系统中的数据库建立概念数据模型:客户、客户地址、图书、订单、订单项、支付转换成物理数据模型修改概念数据模型后更新物理数据模型生成数据库脚本,75,第八讲 软件工程工具,软件工程工具概述利用Office工具集撰写文档利用MindManager进行头脑风暴利用SVN进行版本管理利用EA进行面向对象建模利用RequistePro管理需求利用Power Designer设计数据库利用测试工具集进行测试,76,测试工具集,由于测试过程充斥着大量的重复性劳动,因此测试工具集具有很大的应用前景存在很多运用于各类测试阶段、各种测试类型的测试工具集主流的测试工具厂商IBM RationalHP Mercury InteractiveCompuwareParasoft其它开源工具:JUnit、BugZilla,77,IBM Rational测试工具集,缺陷跟踪ClearQuest-缺陷跟踪工具代码动态分析Purify-内存和资源检查工具Quantify-性能瓶颈检查工具PureCoverage-代码覆盖测试工具系统测试TestManager-集中、可伸缩的测试管理平台Robot-传统应用自动化测试工具,78,IBM Rational测试解决方案,变更配置与管理-ClearQuest and ClearCase LT,Rational Unified Process,测试执行,RobotRobotJTestManager,测试实现,RobotRobotJTestManager,79,HP MI测试工具集,测试管理TestDirector:需求管理、测试计划、测试实施、缺陷管理自动化测试WinRunner:GUI自动化测试QTP:Web自动化测试压力测试LoadRunner:用虚拟用户(Vuser)代替真实用户,操作实际系统,降低人力需求,80,示例:利用QTP实施自动化测试,QTP主要用于Web程序的自动化测试,其测试过程识别待测试的Web元素建立测试脚本执行测试脚本检查测试结果,并报告缺陷,81,QTP主界面,82,示例:利用LoadRunner进行压力测试,5.分析数据,寻找瓶颈,2.通过添加测试数据和行为将脚本设置为虚拟用户,3.启动虚拟用户生成负载,4.压力测试过程中监控系统性能,83,压力测试过程中监控系统性能,84,分析测试结果数据,更多的更好用的工具,85,