已阅读5页,还剩200页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四部分 软件工程的需求过程,软件工程,传统的需求分析方法-1 面向对象的需求分析方法-2 基于UML的需求分析方法-3 需求工程与需求管理实现-4,第四部分 软件工程的需求过程,第三章 基于UML的需求分析方法 UML概述-3.1 需求获取与用例建模-3.2 类与对象建模-3.3 动态建模-3.4 物理体系结构建模-3.5,第四部分 软件工程的需求过程,3.1 UML概述,UML统一OO方法大战的努力,1960年 - 70年代 COBOL, FORTRAN, C 结构化分析和设计技术 1980年 - 1990年前 Smalltalk, Ada, C+, Visual Basic 早期面向对象生成(代码)方法 1990年中晚期 Java Unified Process,UML概要,UML是一种语言: 可视化 详细描述的 构造性的 文档化的 UML的价值 是一个开发的标准 支持完整的软件开发生命周期模型 支持不同的应用领域 是基于经验的和用户群体需要的 被许多工具支持,什么是UML?,Unified Modeling Language(统一建模语言)是国际对象管理组织OMG制定的一个通用的、可视化建模语言标准 用于描述(specify)、可视化(visualize)、构造(construct)和记载(document)软件密集型系统的各种工件 UML提供了一系列建模元素、概念、关系以及规则,应用于软件开发活动 详细内容,请学习统一软件开发过程(The Unified Software Development Process)(美)Ivar Jacobson、Grady Booch、James Rumbaugh著,周伯生、冯学民、樊东平译(机械工业出版社),UML概念,UML Unified Modeling Language. 组合了当前最好的面向对象软件建模方法 UML三位主要贡献者 1. OMT方法(对象、动态、功能模型,James Rumbaugh) 2. The Booch method (5个步骤,Grady Booch) 3. OOSE (User Case图,Ivar Jacobson),James Rumbaugh,Grady Booch,Ivar Jacobson,UML概念,1994年,Booch和Rumbaugh在Rational开始了UML的工作,但是的目标是创建一个“统一方法” 他们把Booch93和OMT2统一起来,与95年发布了UM0.8(Unified Method) 1995年OOSE的创始人Jacobson加入到这个联盟中,开始把工作重点放到创建一种标准建模语言,UML Unified Modeling Language。 他们以Booch方法、OMT方法、OOSE方法为基础,吸收了其他流派的长处,于96年6月、10月、97年1月、11月分别推出了UML0.9、0.91、1.0和1.1,创建UML,Booch 方法,OMT,UML概念,Method 方法告诉使用者做什么、怎么做、什么时候做、为什么做(特定活动的目的),方法包括模型 Modeling 模型用来描述使用某种方法的结果,例如,通过不同角度的简化视图,描述对象系统的设计与实现结果,模型用建模语言来表达 Language 建模语言由记号(模型使用的符号)和一组规则(语法、语义等)组成,UML概念,UML是一种语言 遵循特定的规则 允许创建各种模型 并不告诉设计者需要创建哪些模型 并不提供开发过程 UML是可视化语言 UML是图形化语言 图形便于交流(一幅图抵上千文字) UML是用于构造系统或理解系统的语言 UML既支持正向工程,又支持反向工程 UML是文档化语言 将所建造的系统记录下来 便于新程序员跟进 开发产品新版本时很有用处,UML的概念,模型元素 关系 扩展的机制 图表,UML构成: 模型元素 关系 扩展的机制 图表,模型元素,关系,图表,模型元素,结构元素 类,接口,协作 用例,主动类,构件 节点 行为元素 交互, 状态机 组元素 包, 子系统 其它元素 注解,类、对象与接口,一个系统往往可以从不同的角度进行观察,一个角度构成了一个视图 UML有九种图表,构成5种视图: 1、用例图(use case diagram) 2、类图(class diagram) 3、对象图(object diagram) 4、状态图(state diagram) 5、时序图(sequence diagram) 6、协作图(collaboration diagram) 7、活动图(activity diagram) 8、构件图(component diagram) 9、部署图(deployment diagram),UML的图表与视图,静态逻辑视图,动态逻辑视图,3-并发视图,1-用例视图,5-部署视图,2-逻辑视图,4-构件视图,模型,视图,和图表,活动图,模型是对一个系统从详细观察的角度的描述,模型,图表,图表是模型的视图 表现给投资者看得详细的描述; 提供了系统的局部详细描述; 和别的视图保持语义一致; 在UML中,有九种标准图表 静态视图: 用例图, 类图,对象图,组件图 , 分布图 动态视图: 时序图,协作图,状态图,活动图,用例图,捕获用户能够看到的系统 通过对”场景”的描述,定义系统的功能和性能,并获得用户和开发团队的共同认可 提供清楚和无二义的用户与系统的交互描述,用例图,在开发过程的早期创建 目的: 详细说明系统的表达含义; 捕获系统的需求; 验证系统的体系结构; 驱动实现和生成测试用例。 由分析人员和领域专家开发,Use Case图,Use Case图形描述了一个系统应该执行的什么或应该有什么外部系统 它描述了存在的actors(外部系统)、use case(该系统应该执行什么)以及它们的关系 在Use Case视图中可以包含以下的图形 Use Case图:包括:包、actors、use case和关系 相互作用图(序列图或协同图):包括:对象和消息 符号表示:,Use Case图例,Use Case图例,UML用例图示例,类图,捕获系统的词汇表 在开发过程中被创建和精确化 目的 系统中的名字和模型概念 详细描述协作关系 详细描述逻辑数据库表 由分析人员、设计人员和代码实现人员开发,类图Class Diagram 类图描绘系统的静态视图 它描述了系统逻辑设计中存在的包、类以及它们之间的关系 类图可以代表该系统中部分或全部的类结构,1 购买 0* 属于,对象图,捕获实例和连接,对象图,捕获实例和连接 在分析和设计阶段创建 目的 举例说明数据/对象结构 详细描述瞬态图 由分析人员、设计人员和代码实现人员开发,对象图Object Diagram,对象间关系,关联关系 (Association) 聚集关系(Aggregation) 泛化关系(Generalization) 依赖关系(Dependency) 细化关系 (Refinement),构件图,捕获实现的物理结构,构件图,捕获实现的物理结构 作为体系结构规范的一部分实现 目的 组织源代码 构造一个可执行的发布版本 指定物理数据库 由集成人员和程序人员创建,分布图,捕获系统硬件的拓扑结构,分布图,捕获系统硬件的拓扑结构 作为系统结构规范的一部分被创建 目的 描述组件的分布 标识系统性能瓶颈 由集成人员、网络工程师和系统工程师开发,交互图,交互图描述了系统在逻辑设计中存在的对象及其间的关系 它可以代表系统中对象的结构 UML中包含两种交互图,它们对同一交互操作提供了不同的浏览视角 时序图(顺序图) 按时间顺序排列对象交互操作 协作图 围绕对象及其间的链接关系组织对象的交互操作,交互图,顺序图和协作图均被称为交互图(interaction diagram)。由一组对象、对象间的关系、对象间发送的消息组成一种动态视图,可以单独使用、也可以对用例中的特定控制流程建模。 顺序图和协作图同构的:两种图之间可以相互转换,而没有任何信息损失。 二者区别点在于:顺序图(sequence diagram)关注消息的时间顺序,有对象生命线、有控制焦点;协作图(collaboration diagram,在UML2.0中协作图被称为communication diagram,二者指的是同一类型的图)关注收发消息的对象的组织结构,有路径、有顺序号。,时序图,捕获系统的动态行为(面向时间的),时序图,捕获系统的动态行为(面向时间的) 目的 模型流程的控制 举例说明典型的脚本,打印机就绪 打印文件,时序图(Sequence Diagram),打印机忙 保存文件,打印文件,打印文件,计算机,打印服务器,打印队列,计算机,UML顺序图示例(某客户Joe取20美元的顺序图),协作图,捕获系统的动态行为 (面向消息的),协作图,捕获系统的动态行为 (面向消息的) 目的 模型流程控制 举例说明对象结构和控制的协调,协作图(Collaboration Diagram),UML协作图示例(ATM系统中“客户插入卡”的协作图),状态图,捕获系统动态行为(面向事件的),状态图,捕获系统动态行为(面向事件的) 目的 对象生命周期模型 为起反作用的对象(用户接口、设备等)建模,状态图State Diagram 状态图描述了: 给定类的状态转换空间 导致状态转换的事件 导致状态改变的动作 为类的重要动态行为建立状态转换图,状态图State Diagram,UML状态图示例 电视机,世界上的万事万物在任何特定时刻总处于某一特定状态。一个电梯可以处于上升、下降、停止状态。一辆汽车可以处于前行、后退、停止状态。一台电视机可以处于开机、播放、待机或关机状态。,活动图,捕获动态行为(面向活动的),活动图,捕获动态行为(面向活动的 目的 给商业工作流建模 给操作建模,活动图Activity Diagram,Disk free,Disk full,显示磁盘满,显示在打印,删去显示信息,建立打印文件,Win.printAll(),printer.print(),活动图的符号集与状态图中使用的符号集类似。像状态图一样,活动图也从一个连接到初始活动的实心圆开始。活动是通过一个圆角矩形(活动的名称包含在其内)来表示的。活动可以通过转换线段连接到其他活动,或者连接到判断点,这些判断点连接到由判断点的条件所保护的不同活动。结束过程的活动连接到一个终止点(就像在状态图中一样)。作为一种选择,活动可以分组为泳道(swimlane),泳道用于表示实际执行活动的对象,UML活动图示例(ATM系统中“客户插入卡”的活动图),体系结构和UML,组织: 包, 子系统,动态 交互 状态机,设计视图,实现视图,过程视图,组件,类, 接口, 协作,活动类,分布视图,用例,UML静态图,用例图(Use Case Diagram) 类图(Class Diagram) 对象图(Object Diagram) 构件图(Component Diagram) 部署图(Deployment Diagram),UML动态图,状态图(State Diagram) 时序图(Sequence Diagram) 协作图(Collaboration Diagram) 活动图(Activity Diagram),UML建模方法与视图,用例建模 用例图 类和对象(结构)建模: 类图 对象图 行为(动态)建模 用例图 交互图(顺序图、协作图) 活动图 状态图 物理体系结构建模 构件图 实施图,UML过程,UML过程主要包括: 用例驱动(use-case-driven) 以体系结构为中心(architecture-centric) 反复(iterative) 渐增式开发(incremental),UML过程,1、用例驱动: 用用例方法获取系统的功能需求,并以此驱动需求分析之后的所以阶段的开发 在需求阶段,用例所包括的系统功能,需要用户的确认 在设计和实现阶段,用例被实现 在测试阶段,用例用于验证系统功能,需求,用例,用例影响开发的所有阶段 用例视图影响其他视图,UML过程,2、以体系结构为中心 项目开发的早期,除了需求以外,另一个最主要的工作就是确定系统的体系结构 体系结构定义了系统的各部分、各部分的关系和交互、通信机制、如何增加和修改体系结构的规则 体系结构决定了系统的功能和非功能部分 非功能部分包括:性能、易理解性、易修改性、复用度 在UML中,通过定义可以层次化的“包”,来实现把一个大系统划分成不同的小系统 确定体系结构的基本方法是:分析、选择、原型化、评估和精细,UML过程,3、反复迭代 用UML方法建模,可以反复多次,不需要一次完成 通过反复,增加新信息、细化新的细节 每次反复,应进行评估,评估的内容还应包括:代价、风险 4、渐增式 多次迭代,每次迭代增加新的用例和功能 每次迭代,都是分析、设计、实现和测试的过程 迭代的最大好处是分解了风险,不至于把失败的风险留到开发的最后才发现,3.2 需求获取与用例分析,需求开发过程的阶段任务,需求开发过程的重要里程碑,基于UML的需求获取,1、需求获取与业务建模,对于一个复杂的业务系统,我们可能涉及:公司组织、业务单位、部门和人员岗位、职责和功能、内部和外边网络、客户、业务信息流、行政和财务流等等 为这个组织建立计算机系统,我们要回答: 为什么要建立这个系统 这个系统的定位在何处 我们如何确定哪些功能是最适宜放在系统的特定节点上 我们何时采用计算机处理而何时采用人工处理 为适应计算机处理,我们需要改变现有工作流程吗 回答这些问题的技术,就是业务建模,业务建模的目的: 建模过程是开发者和用户之间为导出需求规约而进行的交互过程 因此: 理解现有业务组织的静态结构和动态运作方式 确保客户、最终用户以及开发人员对业务组织有共同的理解 系统的边界在那里?功能是什么? 理解如何部署新的系统以提高生产力,以及现有的哪一个系统会受到新系统的影响 系统的功能由用例来表示: 用例用来: 确定和描述系统的功能要求 给出清晰和一致的系统做什么的描述 为验证系统所需的系统测试提供基准 提供从功能需求到系统实际类和操作的跟踪能力,传统方法:业务流程图存取款业务处理过程,在UML中的建模结构就是业务用例模型和业务对象模型 领域模型将系统语境中的重要概念描述为领域对象,并建立这些领域对象之间的关系 业务模型是领域模型的超集,包括: a.业务用例模型:说明系统所支持的业务过程 b.业务对象模型:领域模型和业务用例实现 业务用例模型是业务系统预期功能的描述模型,是系统开发任务和作为产品提交时的最根本的系统工作描述 业务对象模型描述了实体和相互交互完成业务用例所需要的功能,是业务用例的实现 下面,我们用示例介绍,利用UML概念进行业务建模,业务过程与业务用例,一个业务过程是根据组织目标而采用组织资源来获得预定义结果的一组逻辑相关的活动 用一个业务用例代表一个业务过程 业务用例包括: 角色(与业务活动交互的人或系统) 用例(角色与业务元素交互完成工作的事件序列) 建立业务用例的过程: 确定行为者 确定用例,确定行为者,行为者: 与系统交互的人或其他系统 交互:发送、接收、交换信息 行为者执行用例 行为者是一个角色,而不是具体个人 寻找行为者 谁使用系统的功能 谁需要系统提供信息 谁维护、管理、控制系统 系统完成功能还需要得到其他系统的支持 还有哪些人对系统的结果感兴趣,业务用例 银行,确定用例,一个用例是被行为者感受到的一个完整的功能 UML的定义:用例是给一个特定行为者的一个可观察的结果值的系统所完成的一系列动作 这个动作除计算机内部完成的计算外,还包括与行为者的信息交互 用例通过关联与行为者进行交互 用例总是被行为者所启动,并回答一个可识别的结果 类似于对象是类的实例,用例的实例是场景(scenario)。 例如:“用户在ATM机上执行取款操作”用例的场景是:“张三在ATM机上取出300元人民币” 寻找用例 行为者需求系统提供哪些功能? 行为者是否需要创建、读、写、修改、删除系统中的信息? 行为者是否需要被系统提醒、启动系统的某个功能? 系统能否帮助行为者做一些事情,来提高行为者的效率、便利,寻找用例,考虑人和饮料贩卖机的交互,包括购买饮料,首先,放置货物(饮料)等,下面考虑购买饮料。,l 用例描述了系统的行为,包括行为者和系统之间的交互以及系统与系统之间的交互。 用例是系统提供的功能块。演示了人们如何使用系统。它来自于客户需求的分析。这个过程称为Use Case分析, 是整个系统开发中非常关键的过程。,我们设计一个饮料贩卖机,从用户的角度来考察它的功能: 问:“自动饮料贩卖机将为您做什么?” 答:“我通过自动饮料贩卖机购买一听饮料.” 饮料贩卖机的主要功能是使得用户可以购买饮料, 我们为这种机器标记一个叫 “买饮料”的use case.,UML中的 Use Case 表示,Buy Soda,Use Case,Actor,Communication,Customer,use case记录用户使用系统是从头到尾的一系列事件。用户普遍称为“活动者”,它可以是人或另一个系统。 每一个 use case 包括 “活动者”和一个表示 use case 的椭圆。,Use Case,活动者,活动者可以是人或另一个系统,它与当前的系统交互,向系统提供输入或从系统中获得输出。,Actor Name,Telephone System (电话系统),使用电话卡,对方付款,Phone User (电话用户),活动者的标志,谁对某一需求感兴趣? 组织中哪一部分使用系统? 谁从系统的使用中受益? 谁向系统提供信息? 谁将维护系统? 系统使用外部资源吗? 系统和已经存在的系统交互吗?,活动者的类型,实际的人,即用户,是最常用的角色,几乎每个系统都有。命名这些角色的时候,要按作用来命名,而不是按照位置命名。 另外一个系统。例如航空订票系统可能需要与外部应用程序接口,验证信用卡以便购买。 可能隐蔽的角色:时间。例如商业促销项目推出免费奖,每天下午三点,系统自动选择向随机客户提供免费奖品。,在饮料自动贩卖机中,除了买饮料的顾客, 还有以下的活动者。,Buy Soda,Restock Soda,Collect Money,Customer,Supplier,Collector,每一 种活 动者 具有 自己 的 use case,饮料贩卖机中的活动者,供应商向自动贩卖机添加饮料。 收银员从自动贩卖机收钱。,理解用例,用例独立于实现。用例关注的是作用而不是如何实现这个作用。 用例是系统的高级视图。用例的集合应让客户易于了解高层的整个系统。 最后,用例关注系统外的用户。每个用例应表示用户与系统间的完整事务,为用户提供一定价值。用例应按业务术语命名,而不是按技术术语命名,应让客户一目了然。 例如:用例不要命名为“客户与银行ATM的交互界面”,如果客户要买票, 用例可以称为“客户购票”。,用例分析有助于: 捕捉需求 计划开发过程的循环往复。 验证系统。 需求分析从用例分析开始,它驱动整个开发过程。 在用例中描述了所有的功能需求。,标记用例,活动者希望这个系统执行什么任务。 活动者在系统中访问哪些信息 (创建, 存储, 修修改, 删除等)? 外部的哪个变化将要被告知系统? 系统的那个事件将要被告知活动者? 系统将要怎样维护?,标记用例,用例的完整性 每个功能需求是否至少在一个用例中?如果需求不在用例中,则不会实现。 是否考虑了每个操作者如何使用系统。 每个操作员向系统提供了什么信息。 每个操作员从系统接收了什么信息。 是否考虑了维护问题,要有人启动和关闭系统。是否标示了系统要交互的所有外部系统。 每个外部系统从系统接收什么信息和系统发送什么信息?,用例视图,一个 use case 视图包括 一个use case 集合,定义整个系统的功能 。,Buy Soda,Restock Soda,Collect Money,Customer,Supplier,Collector,Soda Machine,Use Case 视图,系统 边界,用例的范围,2、从业务模型到系统模型,例:建立用例的系统模型,ATM取款机作为一个业务系统 来取款的客户是一个角色 用例是业务模型中业务的活动 系统模型描述了业务中系统的工作(内部活动) 角色是外部,用例是内部。取款的客户是角色,取款是用例。 用例模型开始定义角色之间的关系(关联关系、包括关系、扩展关系、一般化关系等)。 用例模型描述事件流,包括主事件流、其他事件流、前提条件、事后条件等等。 这样,我们就建立了一张描述“活动”的Use Case图,通过这张图,我们就能够比较具体地描述“活动”,即让用户看到: 谁与系统交互,有助于发现缺少的参与者 知道系统的范围,有助于发现缺少的功能,业务用例描述:柜台取款,业务用例活动图: 柜台取款 注意: 这里只有角色(客户)和用例(系统) 对于系统内部的实现,我们还没有更多的涉及,从业务模型到系统模型 - ATM,系统用例 ATM,系统用例 - ATM取款,用例时序图 - ATM取款 系统开始区分ATM系统和银行主机系统,用例的层次,概要目标用例: 需要多个用户目标会话来完成(日、周、月、年) 用户目标用例: 满足特定、迫切、有价值的用例目标(分钟、小时) 子功能用例: 为了完成用户的真实目标而提供的功能,用户目标层,“Can the actor go away happy after having done this?” 通常1个人,1次性完成,2-20分钟,概要目标层,使用ATM用例:银行自动柜员机 含有多个用户目标,可包含:存取款、查询、修改密码、打印凭单、提供跨地域、跨银行服务 作用 说明用户目标执行的背景 说明相关目标的范围 提供了下层用例的目录,用户目标层次,用例分析流程,定义系统范围和边界 列出角色及其作用 提取概要用例并调整得当 着重对系统的用户目标层用例进行细化 填写干系人责权利、前置后置条件 编写基本流 列出所有扩展条件,编写扩展处理步骤 用活动图、状态图、交互图等描述重点用例 9. 分解、合并用例,调整用例关系模型(用例图),需求获取关键是获得用户的确认,建立业务模型的工作主要包括: 分析领域中的业务角色 分析角色间的业务功能等关系 分析业务组织架构 分析业务规则 分析业务实体 分析业务事件 分析以业务角色为主角的业务用例等; 以业务用例为实例,与用户进行沟通: 需求是否被清楚地陈述? 存在错误的理解吗? 需求的来源(人员、规章制度、文件)是否正确? 需求的最终陈述是否得到用户最终责任人确认?,问题 用户不知道他们需求什么或不知道如何表达 直到开发人员把用户所描述的东西给他们,用户才认为知道自己要什么 分析人员认为自己比用户更了解用户的需求,解决方案 将用户当作领域专家来认识和感激, 尝试一下其他沟通和启发技术 尽早提供相互选择的启发技术:情节 串联板、原型、角色换位等 把分析人员放在用户的位置,试着换位一小时或一天,解决用户和开发人员综合症,介绍游戏规则,被动式介绍,主动式介绍,交互式介绍,需求诱导的方法(情节串联板),原型开发,复杂程度与成本,需求获取过程需求管理的关注点,步骤: 1、发现和分析问题 2、理解用户的需求 3、定义系统(用例模型) 4、管理范围(项目管理) 方法: 采用业务建模和系统建模的方法进行问题分析 对与系统架构和系统行为有关的用例进行描述和定义 目标: 在问题定义上与用户达成共识 理解问题背后的根本原因 确定用户和项目干系人 定义问题解空间的边界 确定问题解决方案的约束和假设 最终阶段完成标志:用户对系统目标的认可签字,需求获取过程产品基线管理的关注点,技术创新和突破,产品特点,客户:涉众和用例,分析人员和专家的意见,与公司其他产品的配套和一致性,与对手的竞争性产品差异和优势,开发团队的状况与产品的可持续性,系统平台与兼容性,公司目标与市场需求,一个真正伟大的产品,需求获取过程产品路线管理的关注点,图例:,正在发行,发布代码行,需求提取的最佳实践,明确构想和范围 确立需求开发过程 用户群分类 选定产品代表 建立用户核心队伍 建立用例模型 举办用例演示会,分析业务流程 明确质量属性 检查问题报告 重用需求 ,用例常见错误,无系统目标或边界 无角色定位 用户界面细节过多 目标层次太低 目的与内容不一致 含有设计内容 过多的数据细节,“ 用例分析是当今消除需求不明确、不一致、不完整 的重要手段和关键技术 ” 用例在需求获取阶段的好处: 与传统的需求分析方法相比,用例书写简单、易于理解 用例迫使开发人员从系统设计时,就从用户的角度考虑问题 用例使用户参与需求过程,帮助他们理解所建设的系统,并提供了一种交流和记录的工具 用例给出了需求的情景,从而使人们理解需求的原因以及系统是如何实现它的目标 大多数情况下,用例是开发人员写的,因此,他是理解这个需求,也知道最终要对实现这个需求负责的,用例在系统开发的其他阶段的好处: 用例在分析阶段,也是一个关键的工具,它帮助我们理解系统需求做什么以及系统可能如何去做 用例在设计和实现过程中,也是一个关键的工具,它降低了因需求表达不确切和不一致,导致系统开发错误的风险 用例可以直接延伸到测试过程,这有利于确保系统真正做了它应该做的事情 用例也是用户文档的输入,可以从用例开始,很方便地组织用户文档的编写,用例在组织软件开发中的核心作用,用例驱动模型,到目前为止,我们完成了需求获取阶段的任务 通过采用用例的方法,建立了业务模型,使用户理解并确认系统要做什么和不做什么,3、从业务用例到测试用例,V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。,测试与开发阶段的对应V模式,验收测试,在行业应用软件环境中,验收测试是项目过程非常重要的一环,也是项目经理非常关注的一项工作。 验收测试与确认测试非常相似,所不同的是,确认测试是项目组或组织内部的测试,验收测试是用户主导、现场参与、现场环境下的测试。 验收测试通常由项目组先提出测试大纲,定义测试目的、范围、方法、测试用例、预期结果、验收标准等。经用户同意批准,可能包括用户的修改、增加后,确定测试时间,开始进入验收测试。 用户在完成按测试用例的测试后,在测试记录上逐条确认、签字,最后,在测试报告上签字,完成验收测试。 一般地、验收测试报告是项目初验、终验的依据和主要验收形式。,系统验收与用例的关系,验收测试的用例,在需求获取完成后产生 测试用例的依据是需求获取的业务用例。 (1)从业务用例到实现用例 (2)从业务用例到测试用例,根据用例的事件流分析,针对用例情景,产生验收测试用例。,从用例到测试用例,3.3 需求分析与类和对象建模,从现在开始,我们完成了“需求获取”阶段的任务,进入“需求分析”阶段 需求获取阶段完成的标志,是获得用户签字确认的需求描述 需求分析阶段任务完成的标志,是在经过需求分析、需求处理后,通过“需求评审” 从现在开始,我们要用面向“实现”的眼光,来看待需求 什么是面向实现? 需求分析阶段的“面向实现”,是面向可交付成果 什么是面向成果?我们先看一下需求评审的要求,需求开发过程的阶段任务,需求开发过程的重要里程碑,基于UML的需求分析,传统的需求分析阶段,需求分析阶段的任务和步骤 复查系统规模和目标 研究现有系统功能 导出新系统模型 重新定义问题 导出和分析各种可选解决方案 推荐行动方针 草拟开发计划 书写文档提交审查 阶段成果交付物: 需求定义文档(需求规格说明),循环,需求分析需求获取与需求分析的区别,需求获取是面向用户、在较高的抽象级别上对系统特性的定义 可以更多地关注系统的特性以及如何体现用户的需求,以便更好地理解系统的形状和形式 可以对系统的完整性、一致性以及对环境的适应性进行评估 在继续大量投入之前,可以利用这些信息决定可行性和管理系统的范围 可以脱离对具体需求进行取舍和决策所带来的风险 需求获取的目标是用户的认可,因此,阶段的验收标志是用户签字确认的需求描述,需求分析需求获取与需求分析的区别,需求分析是面向系统实现、严格对系统需求的定义 定义系统的输入、输出、功能、属性以及系统环境的属性,决定系统的完整集合 面向系统技术实现,讨论系统应该做什么,因此,应避免受项目进度、计划、预算、设计、测试等的影响 需求和设计是迭代进行的,但需求将引导设计,也受设计方法的制约 需求分析的验收标志是组织的需求评审,需求分析细化系统定义,在需求获取阶段,我们已经通过建立业务模型、系统模型,与用户共同确定了系统的特性: 业务用例模型,可以映射出软件产品核心的需求,包括与业务功能对应的组织的特性,与业务流程对应的内外部关系特性等; 系统用例模型,是在已经建立的业务模型的基础上,建立系统的模型。 用例业务模型和系统模型的最典型表示形式 软件产品本身可能还存在与业务无直接关系的另类需求(一般与硬件、软件环境相关),比如支持多种操作系统、对软件运行的远端监控要求、异常处理(如通讯连接中断等非业务异常)等等。 另一方面,设计约束和限制,也是系统需求必须要考虑的内容 通常这三部分需求构成软件需求的总集。,需求分析细化系统定义,在需求分析阶段,我们不可避免地要涉及到进行设计决策 设计决策: 硬件环境(运行在PC服务器上?还是小型机?) 平台的选择(只支持Windows平台,是否也支持UNIX平台?) 工具的限制(采用VB实现?) 方法的约束(用XYZ类库实现数据库访问?),需求分析是在需求获取、需求分析和设计决策之间反复迭代循环的过程,需求分析细化系统定义,软件需求是具体的: 面向系统设计、编码 面向测试 因此,在需求获取的基础上,进一步细化系统需求、明确和细化系统定义,这就是需求分析阶段的任务 在传统软件过程方法中,这二个阶段不是非常清晰和明确,需求分析细化用例,在需求获取过程中,我们建立了业务模型和系统模型,引入了角色和用例的概念 角色与用例的区别: 系统的角色是业务之外与业务交互的人或事 例如:ATM取款机作为一个业务系统,来取款的客户就是一个角色 用例是业务模型中,业务的活动 在系统模型中,描述了业务中系统的工作(内部活动)。角色是外部,用例是内部。取款的客户是角色,取款是用例。 用例模型开始定义角色之间的关系(关联关系:包括关系、扩展关系、一般化关系等)。用例模型描述事件流,包括主事件流、其他事件流、前提条件、事后条件等等。,需求分析细化用例,细化用例的主要步骤: 审查主角 细化描述 定义和细化事件流程 确定前置条件和后置条件 确定特殊需求 扩展用例,需求分析细化用例关系,为需求处理做准备 在定义系统的用例规约之前,确定一份基本的术语词汇表,以统一项目开发中的用词。 确定系统的用例,通常从寻找系统的主角开始。如果做了业务建模,则可以先从业务对象模型中的业务工人(Business Worker)着手。 系统主要的主角确定后,可以根据为系统主角提供有价值的结果(Result of Value)这一准则(用例是为主角的活动最终提供一个有价值的结果的活动过程)来确定系统的用例。 理清系统用例之间存在的密切关系,具有的内在结构,如泛化关系、包含关系、扩展关系等。 有二种Interaction图,按时间顺序排列的是Sequence图,按对象关系排列的是Collaboration图。二种图从不同的角度,反映了案例中特定情形的流程。,需求分析的成果需求评审内容,CMM2对评审内容规定为: (1)确定不完整和遗漏的给定需求; (2)评审给定需求以确定他们是否:可行、适用于软件实现、说明清楚、适当、彼此一致、可测试。 (3)有负责分析和分配系统需求的小组对确认可能有问题的给定需求进行评审并进行必要的修改。 (4)相关小组协商由给定需求所得出的约定。 在这里,我们最主要先关注(1)(2)二条 第一条:需求分析阶段的需求规格说明必须与需求获取阶段经用户签字确认的用户需求描述一致 第二条:需求规格说明还应具有一些特定的属性,良好的需求规格说明属性,具有良好的需求规格说明属性的需求文档,具有如下的属性: (1)不含糊性:如果每一个需求只有唯一的一种解释,那它是不含糊的; (2)完整性:如果需求包括了功能、性能、时间响应要求、限制、接口等属性,不存在没有界定的、以为是隐含或默认而实际存在认知差异的需求,是完整的; (3)可检验性:存在有限的、经济与技术都是可行的检验方法和程序,对需求的实现与否,进行检验,使得用户和组织通过该检验,确认需求被按照需求规格说明实现; (4)一致性:需求作为一种要求是一致的,不存在系统内相互冲突的需求要求; (5)可跟踪性:需求可追踪; (6)可使用性:可为产品的各阶段,特别是维护阶段,提供充分有用的信息。,所以,我们现在可以理解: 需求分析,就是为了实现系统需求,并使最后交付成果与需求所要求的目标,不产生:含糊性、不完整性、不可检验性、不一致性、不可追踪性和不可用性,而进一步对需求进行描述和定义。 需求分析继承需求获取阶段的成果 需求分析面向下阶段系统概要设计 需求分析采用自己的特定方法,达到相应的阶段要求 需求获取阶段的目标是让用户签字 采用的方法是尽量地让用户和开发团队都能理解并认同系统目标和范围界定的方法业务/系统模型、用例和USE CASE图 需求分析阶段的目标是用计算机的(而不再是用户)眼光和语言,分解需求、定义需求。但是,这个眼光不是程序设计员的眼光,是系统分析师的眼光 经过下一步需求处理后,达到需求规范要求 分析的方法是一套“建模”技术,需求分析的成果:,用例驱动的分析,为了进一步描述系统,我们现在需要建立类和对象模型 类和对象模型,描述了系统的静态结构 有了系统的静态结构,我们才可以在静态结构的基础上,建立系统的行为(动态)模型 在面向对象方法中,我们已经介绍了如何建立类和对象的模型 UML的特点是一套统一描述方法和符号,用例驱动的分析实现,Booch method 的5个步骤 (1)使用“寻找什么”标准来标识类和对象分析类 (2)定义一般/特殊结构、定义整体/部分结构分析包 (3)标识主题(子系统构件的表示)建立子系统 (4)定义属性和实例联系 (5)定义操作和消息联系,静态建模,动态建模,UML的三个来源和三个组成部分: OMT、5步骤、图形符号,从业务/系统模型到分析模型,分析类(逻辑结构) 用例实现:将用例的实现(执行)表示为分析类(对象)之间的交互 分析包(物理结构) 以包(分块)的方式组织分析模型的组件 强内聚、弱耦合 完整性、正确性、一致性和易读性,类是信息和行为的包装 对象是类的特定实例 类图由系统中的类和它们之间的关系组成 例如:在C/S结构的系统中,我们把系统的信息放在数据库一方,行为放在应用程序一方。 面向对象的特点之一就是将信息和影响信息的行为连接在一起,包装成类。 类图和对象图:,(1)类/对象图静态分析,类,对象,对象图使用与类图相同的形式 只是在对象名下加一个下划线 对象名后可接以冒号和类名,分析模型由三个独立的模型构成:由用例和场景表示的功能模型;用类和对象表示的分析对象模型;由状态图和顺序图表示的动态模型。 在需求获取阶段得到的用例模型就是功能模型。据此可导出分析对象模型和动态模型。 需要注意,这些模型代表的是来自客户的概念,而非实际软件类或实际构件。如数据库、子系统、会话管理器、网络等,不应出现在分析模型中,因为这些概念仅与实现相关。 分析中的类可以看作是高层抽象,在后续阶段将使用更多的细节实现。,在分析对象模型中有实体对象、边界对象和控制对象等三种类型。 实体对象表示系统将跟踪的持久信息;边界对象表示参与者与系统之间的交互(接口);控制对象负责用例的实现 。 可用UML提供的衍型机制,区分不同类型对象。,UML对类进行了分类,既所谓:B-C-E模型 UML有三种基本的构造型:边界、实体和控制。 边界类(Boundary Calsses) 边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口。 要寻找和定义边界类,可以检查Use Case框图。每个角色/使用案例交互至少要有一个边界类。 边界类使角色能与系统交互。 例如,假设要迅速寻找模型中所有窗体,可以创建Form类型,将所有窗口指定为这个类型。要寻找模型中的所有窗体时,只要寻找Form类型的类即可。,UML类的三种基本构造型,控制类(Control Classes) 控制类负责协调其他类的工作。每个使用案例通常都有一个控制类,控制使用案例中事件顺序。在Interaction框图中,控制类具有协调边界与实体有关消息的责任。还有处理共用功能的管理者,如资源竞争、分布式处理和错误处理等。 实体类(Entity Classes) 实体类保存要放进永久存储体的信息,在B-C-E模型中,通过实体类将数据库封装起来。例如:在JAVA中,实体类可以想象成负责处理JDBC的组件,而在EJB中,Entity Bean就是一个相当好的实体类的范例。 增加类的类型 除了上述版型外,还可以向模型中增加自己的构造型。,类的三种基本构造型,ATM取款:用例的类提取,分析和设计: 找到用例模型的类,寻找的方法是按照边界/控制/实体(BCE)模型 然后“套”已经在类库中定义好的类。在实现中,真正需要自行创建的“类”并不多,甚至不需要自己创建 类库就是按BCE模型设计的,边界类,控制类,实体类,边界类,采用B-C-E模式进行类设计的好处,优点: 1、与系统的三层结构直接对应 2、可以把过去散布在Client端、数据库端等各处的程序逻辑,按BCE模式,自然地划分好,界面非常清楚 3、将商务逻辑封装在控制中,可以隐蔽其复杂性 4、将实体独立出来,以后可以直接将实体类转换为数据库的表单,包括处理(面向对象的优点:存储的数据与处理数据的功能封装,同时隐蔽了数据库系统的复杂性) 缺点: 增加了系统的复杂性(代价:在系统概要设计中分析),J2ME的用户界面Display类,Display类管理MID的屏幕输出,Displayable一个具体的显示部件,Screen 标准的用户界面,TextBox 文本框,Alert 报警,List 列表框,Form 窗体,Canvas 显示的运行感知,StringItem,Item,ImageItem,textField,DateField,Guage,ChoiceGroup,可以看成是一个应用系统的显示子系统 需求分析要分析到哪层? 根据系统规模而定 规模越大抽象层次越高,程序员要知道这里:如何使用Display类,具有两个按钮的手表的分析类,使用实体对象、边界对象和控制对象等概念对系统建模时,常常需要提供一些简单的启发式规则来指导开发人员使用这些概念,可以使用相应的类来跟踪。,分析建模活动包括以下步骤。 1、标识实体对象 2、标识边界对象 3、标识控制对象 4、使用顺序图将用例映射为对象 5、使用CRC卡片对对象之间的交互建模 6、标识关系(结构) 7、标识属性 8、对每一对象的与状态有关的行为建模 9、分析模型评审,分析建模活动包括以下步骤。 标识实体对象 自然语言分析法 利用Abbott启发式准则,将语言成分映射为模型成分。,自然语言分析法主要关注用户术语。限制有 识别质量高度依赖人们的书写风格; 可能会出现许多无关词汇,或同义词。 检查每一个用例,标识候选对象 用例中的连续名词(如借阅事件); 系统需要跟踪的现实世界中的实体(如借阅记录、馆藏图书信息); 系统需要跟踪的现实世界中的活动(如紧急情况操作预案); 数据源或数据潭(如借阅者、管理员)。,分析建模活动包括以下步骤。 1、标识实体对象 2、标识边界对象 3、标识控制对象 4、使用顺序图将用例映射为对象 5、使用CRC卡片对对象之间的交互建模 6、标识关系(结构) 7、标识属性 8、对每一对象的与状态有关的行为建模 9、分析模型评审,2) 标识边界对象 在用例图中,每一个参与者至少要与一个边界对象交互。边界对象收集来自参与者的信息,将它们转换为可用于实体对象和控制对象的表示形式。 边界对象对用户界面进行粗略的建模,不涉及如菜单项、滚动条等可视方面的细节。 标识边界对象的启发式准则如下: 标识用户所需初始用例的用户界面控制; 标识用户需要键入系统的数据表格; 标识通知和系统用于响应用户的消息;,当用例中有多个参与者时,根据构想的用户界面来标识参与者的行为; 不要使用边界对象对接口的可视方面建模,应使用用户原型对可视用户界面建模; 使用用户的术语来描述接口,不要使用来自设计和实现的术语。,分析建模活动包括以下步骤。 1、标识实体对象 2、标识边界对象 3、标识控制对象 4、使用顺序图将用例映射为对象 5、使用CRC卡片对对象之间的交互建模 6、标识关系(结构) 7、标识属性 8、对每一对象的与状态有关的行为建模 9、分析模型评审,3) 标识控制对象 控制对象负责协调实体对象和边界对象。 控制对象没有在现实世界中具体的对应物,它通常从边界对象处收集信息,并把这些信息分配给实体对象。 控制类负责协调边界类和实体类,通常在现实世界中没有对应的事物,它负责接收边界类的信息,并将其分发给实体类。 控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消。一般来说,一个用例对应一个控制类。当用例比较复杂时,特别是产生分支事件流的情况下,也可以有多个控制类。在有些情况下,用例的行为十分简单,这时可以没有控制类,图书馆系统中的用“登录“就是这种情况。,在图书馆系统的例子中,我们发现以下控制类: BorrowBook:借阅流通图书 ReturnBook:返还流通图书 RecerveTitle:预约某种馆藏图书 CancelReservation:取消预约 MaintainBorrowerInfo:维护借阅者信息,包括创建、修改、取消借阅者账户 MaintainTitleInfo:维护馆藏图书信息,包括添加、修改、删除馆藏图书信息 MaintainBookInfo:维护流通图书信息,包括添加、修改、删除流通图书信息,图书管理系统中的实体对象,Borrower:借阅者。他们可以借阅、返还、预约和取消预约。因为名字可能重复,可用借阅证号码识别。 Title:馆藏图书。它表明某一种书,通过馆藏号码识别。 Book:流通图书。它表明某一种书的具体复本,通过馆藏号码识别。 Loan:借阅记录。同一个人关于不同图书的借阅记录是不同的。 Reservation:预约记录。,图书管理系统中的边界对象,mainWindow
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年制动总泵项目合作计划书
- 2025年HWREP刷适性改进剂项目建议书
- 2025年输注延长管合作协议书
- 材料采购与供应方案
- Indobufen-impurity-6-生命科学试剂-MCE
- 2025年个人定融合同合同纠纷调解书
- Collagen-petide-Type-II-生命科学试剂-MCE
- Carbomer-676-生命科学试剂-MCE
- 环保包装膜生产线建设项目建筑工程方案
- 2025年病房护理设备器具项目建议书
- 糖尿病与睡眠障碍
- 网络类拓扑图
- (2024版)联通社区智家营销经理能力认证参考试题库(含答案)
- 仿真绿植合同模板
- 赠与协议书模板(2篇)
- 煤矿安全风险分级管控与隐患排查治理双重预防机制建设指南
- 浙江省温州市2023-2024学年七年级上学期语文期中考试试卷(含答案)
- MAXHUB会议平板操作说明书
- 第1章机械运动章末提升核心素养课件人教版(2024)物理八年级上册
- 邮件分拣业务外包管理服务方案
- 2024年军考英语真题历年军考真题系列
评论
0/150
提交评论