软件工程齐志昌版.pptx
《软件工程齐志昌版.pptx》由会员分享,可在线阅读,更多相关《软件工程齐志昌版.pptx(83页珍藏版)》请在三一办公上搜索。
1、软件工程 Software Engineering,2023/5/17,1,第六章 面向对象的需求分析,面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。它包含面向对象风格的图形语言机制以及用于指导需求分析的面向对象方法学。面向对象的思想最初起源于1960年代中期的仿真程序设计语言Simula67。1980年代初出现的Smalltalk语言及其程序设计环境对面向对象技术的推广应用起到了显著的促进作用。1990年代中后期诞生并迅速成熟的UML(统一建模语言,Unified Modeling Language)是面向对象技术发展的一个重要里程碑。UML统一了面向对象建模的基
2、本概念、术语和表示方法,不仅为面向对象的软件开发过程提供了能力丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。,2023/5/17,2,面向对象的需求分析,面向对象的概念与思想UML概述基于UML的需求分析 以“家庭保安系统”为实例,介绍与需求分析相关的部分UML语言机制以及基于UML的面向对象的需求分析方法和过程。,第六章 面向对象的需求分析,2023/5/17,3,6.1 面向对象的概念与思想,客观世界中的应用问题都是由实体及其相互关系构成的。可以将客观世界中与应用问题有关的实体及其属性抽象为问题空间中的对象。为应用问题寻求软件解,是借助于计算机语言对其提供的实体施
3、加某些动作,以动作的结果给出问题的解。汇编语言提供的实体是寄存器、存储单元;过程式程序设计语言提供的实体是变元、数组、记录、文件等。这些实体构成解空间中的对象。问题空间中对象的行为是丰富多彩的,而软件解空间中对象的行为却是单调刻板的。例如,存储单元只能作存取操作,文件只能作读、写和定位操作。只有借助于相当复杂的方法操纵解空间中的对象才能得到问题的软件解。这就是所谓的“语义断层”。,第六章 面向对象的需求分析,2023/5/17,4,面向对象的概念与思想,面向对象(Object-Oriented,简称OO)的需求分析方法通过提供对象、对象间消息传递等语言机制让分析人员在解空间中直接模拟问题空间中
4、的对象及其行为,从而削减了语义断层,为需求建模活动提供了直观、自然的语言支持和方法学指导。,6.1面向对象的概念与思想,2023/5/17,5,面向对象的概念与思想,为了在解空间模拟现实问题并与人类的思维习惯相一致,OO方法学包容了以下核心概念:(1)对象 对象是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于 该对象可施行起飞、降落、加速、维修等操作,这些操作将或多或少地改变飞机的属性值(状态)。,6.1面向对象的概念与思想,
5、2023/5/17,6,面向对象的概念与思想,(2)类。类表示某些对象在属性和操作方面的共同特征。例如,直升飞机、大型客机、轰炸机可归为飞行器类。共同属性有:位置、速度和颜色等。共同操作有:起飞、降落、加速和维修等。,6.1面向对象的概念与思想,2023/5/17,7,面向对象的概念与思想,(3)继承 类之间的继承关系是现实世界中遗传关系的模拟,它表示类之间的内在联系 以及对属性和操作的共享,即,子类可以沿用父类(被继承类)的某些特征。子类也可以具有自己独有的属性和操作。例如,飞行器、汽车和轮船可归于交通工具类,飞行器类可以继承交通工具类的某些属性和操作。,6.1面向对象的概念与思想,2023
6、/5/17,8,面向对象的概念与思想,(4)聚集 现实世界普遍存在部分整体关系。例如,飞机可由发动机、机身、机械控制系统、电子控制系统等构成。部分整体关系在OO方法学中表示为类之间的聚集关系。在聚集关系下,部分类的对象是整体类对象的一个组成部分。,6.1面向对象的概念与思想,2023/5/17,9,面向对象的概念与思想,(5)消息 消息传递是对象与其外部世界相互关联的唯一途径。对象可以向其它对象发送消息以请求服务,也可以响应其它对象传来的消息,完成自身固有的某些操作,从而服务于其它对象。例如,直升飞机可以响应轮船的海难急救信号,起飞,加速,飞赴出事地点并实施救援作业。因为对象的操作主要用来响应
7、外来消息并为其它对象提供服务,所以它们也被称作“外部服务”。面向对象=对象+类+继承+聚集+消息。,6.1面向对象的概念与思想,2023/5/17,10,6.2 UML概述,6.2.1 UML的语言机制 UML主要以Booch方法、OMT方法71和OOSE方法为基础,同时也吸收了其他面向对象建模方法的优点,形成了一种概念清晰、表达能力丰富、适用范围广泛的面向对象的标准建模语言。,第六章 面向对象的需求分析,2023/5/17,11,UML的语言机制,UML通过图形化的表示机制从多个侧面刻画系统的分析和设计模型。UML共定义十种视图,可分四类:(1)用例图(use case diagram)从外
8、部用户的角度描述系统的功能,并指出功能的执行者。,6.2UML概述,2023/5/17,12,UML的语言机制,(2)静态图 类图(class diagram)、类图描述系统的静态结构,类图的结点表示系统中的类及其属性和操作,类图的边表示类之间的联系,包括继承、关联、依赖、聚合等。对象图(object diagram)对象图是类图的一个实例。它描述在某种状态下,或者在某一时间段系统中活跃的对象及其关系。在对象图中,一个类可以拥有多个活跃的对象实例。包图(package diagram)包图描述系统的分解,表示包(package)以及包之间的关系。包由子包及类组成。包之间的关系包括继承、构成与依
9、赖关系。,6.2UML概述,2023/5/17,13,UML的语言机制,(3)行为图 交互图(interactive diagram)状态图(statechart diagram)活动图(activity diagram)它们从不同的侧面刻画系统的动态行为。交互图描述对象之间的消息传递。它又可分为顺序图(sequence diagram)与合作图(collaboration diagram)两种形式。顺序图强调对象之间消息发送的时间序。合作图更强调对象间的动态协作关系。合作图也可通过消息序号来表示消息传递的时间序,只不过这种表示不如顺序图那样直观。,6.2UML概述,2023/5/17,14,
10、UML的语言机制,状态图描述类的对象的动态行为。它包含对象所有可能的状态、活动图描述系统为完成某项功能而执行的操作序列,这些在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。操作序列可以并发和同步。活动图中包含控制流和信息流。控制流表示一个操作完成后对其后续操作的触发,信息流则刻画操作之间的信息交换。,6.2UML概述,2023/5/17,15,UML的语言机制,(4)实现图(implementation diagram)描述软件系统的实现。构件图(component diagram)描述软件实现系统中各组成部件以及它们之间的依赖关系。一个部件可能是一个资源描述文件、一个二进制文件
11、或一个可执行文件。构件图用于理解和分析软件各部分之间的相互影响程度。,6.2UML概述,2023/5/17,16,UML的语言机制,部署图(deployment diagram)描述软件系统运行环境的硬件及网络的物理体系结构。结点表示实际的计算机和设备,边表示结点之间的物理连接关系,也可显示连接的类型及结点之间的依赖性。在结点内部,可以放置可执行部件和对象以显示结点与可执行软件单元之间的对应关系。部署图对于软件安装工程师有重要的参考价值。,6.2UML概述,2023/5/17,17,例:课程注册管理系统的用例图,课表维护、个人课程规划和选课学生花名册查询。教务管理人员使用“课表维护”用例,设置
12、或修改课程属性(课程的时间、地点、上课老师等),增删课程;学生使用“个人课程规划”用例选课、修改自己的个人课表,收费管理系统根据每个学生的选课情况计算其应缴费用;老师使用“选课学生花名册查询”用例获取选定其所开课程的学生花名册。,6.2UML概述,2023/5/17,18,课程注册管理系统的用例图,图6.2表示课程注册管理系统包括:“教务管理人员”、“学生”、“老师”、“课程”、“课程设置”、“课程注册表”、“课程注册管理器”、“课程管理器”八个类。前三个类为一般化的“用户”类的子类。一门“课程”可由一到多个“课程设置”构成,例如,对于全校性的公共基础课,由于选修的学生太多,必须安排不同的老师
13、、不同的教室或者不同的时间段。“学生”、“老师”与“课程设置”之间,“课程注册表”与“课程注册管理器”之间,以及“课程注册管理器”与“课程”之间存在着关联关系。,6.2UML概述,2023/5/17,19,课程注册管理系统的类图,6.2UML概述,2023/5/17,20,用UML顺序图表示“个人课程规划”用例中的学生选课过程,6.2UML概述,2023/5/17,21,用UML协作图表示“个人课程规划”用例中的学生选课过程,6.2UML概述,2023/5/17,22,UML状态图示例,“课程设置”对象的状态图表示,每个“课程设置”最多只能容纳50个选课学生。,6.2UML概述,2023/5/
14、17,23,UML的语言机制,本章的后续章节将结合需求分析过程介绍UML的用例图、包图、类图和活动图第十章将结合软件设计过程介绍顺序图、协作图、状态图和活动图。,6.2UML概述,2023/5/17,24,6.2.2 基于UML的软件开发过程,虽然UML是独立于软件开发过程的,即,UML能够在几乎任何一种软件开发过程中使用,但是,熟悉一种有代表性的面向对象的软件开发过程,并知悉UML各语言要素在过程中不同阶段的应用,对于理解UML将大有裨益。图6.6表示了一种迭代的渐进式软件开发过程,它包含四个阶段:初启,细化,构造和移交。,6.2UML概述,2023/5/17,25,面向对象的迭代、渐进式软
15、件开发过程,6.2UML概述,2023/5/17,26,1 初启,在初启阶段,软件项目的发起人确定项目的主要目标和范围,并进行初步的可行性分析和经济效益分析。,6.2UML概述,2023/5/17,27,2 细化,细化阶段的开始标志着项目的正式确立。软件项目组在此阶段需要完成以下工作:(1)初步的需求分析。采用UML的用例描述目标软件系统所有比较重要、比较有风险的用例,利用用例图表示参与者与用例、以及用例与用例之间的关系。采用UML的类图表示目标软件系统所基于的应用领域中的概念及概念之间的关系。这些相互关联的概念构成领域模型。领域模型一方面可以帮助软件项目组理解业务背景,与业务专家进行有效沟通
16、;另一方面,随着软件开发阶段的不断推进,领域模型将成为软件结构的主要基础。如果领域中含有明显的流程处理成分,可以考虑利用UML的活动图来刻画领域中的工作流,并标识业务流程中的并发、同步等特征。,6.2UML概述,2023/5/17,28,细化,(2)初步的高层设计。如果目标软件系统的规模比较庞大,那么,经初步需求分析获得的用例、类将会非常多。此时,可以考虑根据用例、类在业务领域中的关系,或者根据业务领域中某种有意义的分类方法将整个软件系统划分为若干个包,利用UML的包图刻画这些包及其关系。如此,用例、用例图、类、类图将依据包的划分方法分属于不同的包,从而给出整个目标软件系统的高层结构。,6.2
17、UML概述,2023/5/17,29,细化,(3)部分的详细设计。对于系统中某些重要的、或者风险比较高的用例,可以采用交互图进一步探讨其内部实现过程。同样,对于系统中的关键类,也可以详细研究其属性和操作,并在UML类图中加以表现。因此,这里倡导的软件开发过程并不在时间轴上严格分划分析与设计、总体设计与详细设计,而是根据软件元素(用例、类等)的重要性和风险程度确立优先细化原则,建议软件项目组优先考虑重要的、比较有风险的用例和类,不能将风险的识别和解决延迟到细化阶段之后。,6.2UML概述,2023/5/17,30,(4)部分的原型构造。在许多情形下,针对某些复杂的用例构造可实际运行的原型是解决技
18、术风险、让用户帮助软件项目组确认用户需求的最有效方法。为了构造原型,需要针对用例生成详尽的交互图,对所有相关类给出明确的属性和操作定义。在细化阶段可能需要使用的UML语言机制包括:描述用户需求的用例及用例图,表示领域概念模型的类图,表示业务流程处理的活动图,表示系统高层结构的包图,表示用例内部实现过程的交互图等。细化阶段的结束条件是,所有主要的用户需求已通过用例和用例图得以描述;所有重要的风险已被标识,并对风险应对措施了如指掌;能够比较精确地估算实现每一用例的时间。,细化,6.2UML概述,2023/5/17,31,3 构造,在构造阶段,开发人员通过一系列的迭代完成对所有用例的软件实现工作,在
19、每次迭代中实现一部分用例。以迭代方式实现所有用例的好处在于,用户可以及早参与对已实现用例的实际评价,提出改进意见,降低大型软件系统的开发风险。,6.2UML概述,2023/5/17,32,构造,在实际开始构造软件系统之前,有必要预先制定迭代计划。计划的制定需遵循两项原则:(1)用户认为业务价值较大的用例应优先安排。(2)开发人员评估后认为开发风险较高的用例应优先安排。在迭代计划中,要确定迭代次数、每次迭代所需时间,以及每次迭代中应完成(或部分完成)的用例。每次迭代过程由针对用例的分析、设计、编码、测试、集成共5个子阶段构成。在集成之后,用户可以对用例的实现效果进行评价,提出修改意见。这些修改意
20、见可以在本次迭代过程中立即实现,也可以在下次迭代中再予考虑。,6.2UML概述,2023/5/17,33,构造,构造过程中,需要使用UML的交互图来设计用例的实现方法。为了与设计得出的交互图协调一致,需要修改或精化在细化阶段绘制的作为领域模型的类图,增加一些为软件实现所必需的类、类的属性或方法。如果一个类有复杂的生命周期行为,或者类的对象在生命周期内需要对各种外部事件的刺激作出反应,应考虑用UML状态图来表述类的对象的行为。UML的活动图可以在构造阶段用来表示复杂的算法过程和有多个对象参与的业务处理过程。活动图尤其适用于表示过程中的并发和同步。在构造阶段的每次迭代过程中,可以对细化阶段绘出的包
21、图进行修改或精化,以便包图切实反映目标软件系统最顶层的结构划分状况。,6.2UML概述,2023/5/17,34,构造阶段可能使用的UML语言机制,(1)用例及用例图。它们是开发人员在构造阶段进行分析和设计的基础。(2)类图。在领域概念模型的基础上引进为软件实现所必需的类、属性和方法。(3)交互图:表示针对用例设计的软件实现方法。(4)状态图:表示类的对象的状态事件响应行为。(5)活动图:表示复杂的算法过程,尤其是过程中的并发和同步。(6)包图:表示目标软件系统的顶层结构。(7)构件图。(8)部署图。,6.2UML概述,2023/5/17,35,4 移交,在移交阶段,开发人员对构造阶段获得的软
22、件系统在用户实际工作环境(或接近实际的模拟环境)中试运行,根据用户的修改意见进行少量调整。,6.2UML概述,2023/5/17,36,6.3 基于UML的需求分析,初步业务需求描述形成后,基于UML的需求分析分为以下步骤:(1)利用用例及用例图表示需求:从业务需求描述出发获取执行者和场景;对场景进行汇总、分类、抽象,形成用例;确定执行者与用例、用例与用例图之间的关系,生成用例图。(2)利用包图及类图表示目标软件系统的总体框架结构:根据领域知识、业务需求和工作经验,设计目标软件系统的顶层架构;从业务需求描述中提取“关键概念”,形成领域概念模型;从概念模型和用例出发,研究系统中主要的类之间的关系
23、,生成类图。,第六章 面向对象的需求分析,2023/5/17,37,需求分析过程,6.3基于UML的需求分析,2023/5/17,38,6.3.1 开发场景,场景 从单个执行者的角度观察目标软件系统的功能和外部行为。这种功能通过系统与用户之间的交互表征。场景是用户与系统进行交互的一组具体的动作。场景是用例的实例,而用例是某类场景的共同抽象。对场景的完整描述包含场景名称、执行者实例、前置条件、事件流和后置条件。如,“家庭保安系统”的初步需求描述,具有系统配置、开机、关机、门窗监测、烟雾监测、复位等场景。,6.3基于UML的需求分析,2023/5/17,39,监测场景的描述,场景名称:门窗监测。参
24、与执行者实例:警报器,报警电话,显示器,门窗监视器。前置条件:系统已开机。事件流:(1)门窗监视器发现门或窗户发生异动,向软件系统报告异常事件。(2)软件系统启动警报器并拨报警电话号码。(3)报警电话接通后,软件系统播出语音,报告异常事件发生的时间、地点和事件的性质(门窗异动)。(4)系统在控制面板的显示器上显示报警时间及当前状态(报警:门窗异动)。后置条件:系统处于“报警”状态。,6.3基于UML的需求分析,2023/5/17,40,场景的分类,(1)实际场景 对实际的业务处理流程或其优化流程的描述,是用户需求的重要组成部分。(2)设想场景 分析人员对目标软件系统投入应用后经改进或优化的业务
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 齐志昌版
链接地址:https://www.31ppt.com/p-4830299.html