需求分析与系统设计四.ppt





《需求分析与系统设计四.ppt》由会员分享,可在线阅读,更多相关《需求分析与系统设计四.ppt(220页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、需求分析与系统设计需求分析与系统设计 第第4章章 需求规格说明需求规格说明 需求需要用图形和其他形式化模型来说明。为了完整地说明一个系统,有必要采用多种模型。UML提供了许多集成化建模技术来辅助系统分析员完成这项工作。规格说明的过程是迭代增量式的。对成功的建模来说使用CASE工具是最基本的。需求规格说明得出三种模型:状态模型、行为模型和状态变化模型。每种模型都由相应的建模技术来支持。本章主要解释并用实例说明UML的主要建模技术。虽然我们将从状态模型开始,然后才是行为模型和状态变化模型,但这并不反映建模的次序。许多模型都是并行开发并且相互作用的,对类模型和用例模型这两个主要的模型来说尤其如此。第
2、第4章章 需求规格说明需求规格说明 l4.1需求规格说明的原则 l4.2状态规格说明 l4.3行为规格说明 l4.4状态变化规格说明 4.1需求规格说明的原则 需求规格说明与在需求确定期间定义的客户需求进行严格建模有关,只有系统中那些期望的服务(服务陈述)需要考虑。约束陈述在规格说明阶段不再进一步开发,虽然在一个正常的迭代周期中,约束可以被修改。需求规格说明用客户的叙述性需求作为输入、用构造规格说明模型作为输出。这些模型为系统的各个方面(视图)提供了更为形式化的定义。主要考虑两类客户需求:功能需求和数据需求。4.1需求规格说明的原则 规格说明阶段产生的结果是一个扩展的(“细化的”)需求文档。这
3、个新文档经常被称为规格说明文档(或用术语来说是规格说明)。原始文档的结构没有变化,但在定义客户需求的章节中的内容明显地被扩展了。最后,为了设计和实现,规格说明文档将取代需求文档 (实际上,扩展后的文档很可能仍然被称为需求文档)。4.1需求规格说明的原则 规格说明模型可以分成三组:l1.状态模型。l2.行为模型。l3.状态变化模型。状态模型细化了数据需求,行为模型提供了功能需求的详细规格说明,状态变化模型横跨了这两种需求。它们解释了功能怎样引起数据的变化。4.1需求规格说明的原则 这些模型用可视化建模语言(在本书中为UML)的图的形式给出。一般来说,一张图可实现三种建模目的中的一种,即状态、行为
4、或状态变化。一个明显的例外是类图,它表达了所有这三个方面的内容,即状态和对象的行为以及非直接地表达了对象状态的变化。每一种图强调系统的一个特定的方面(视图)。这些图虽然强调了某些方面而隐藏另一些方法,但合到一起就让开发者和用户从各个角度看到所提出的方案。没有一种图能单独给出系统完整的定义,只有从图的交集中去理解所刻画的系统。4.1需求规格说明的原则 就像对完成模型过程的解释一样,图的构造过程也不是从一个图到另一个图的序列化过程。所有的图都是并行开发的,而且详细的描述也是逐步迭代式地增加的。除非对开发者规定一个严格的开发过程,选择哪个模型作为主导将完全取决于分析者个人的爱好。有两个最重要的模型,
5、即用例图和类图,它们一般应该并行构造,互相补充。4.1需求规格说明的原则 每经历一次迭代,规格说明的深度和详细程度都会增加。模型对象中的许多高级属性是由文字而不是图形表示的。一些属性定义了模型对象的设计而不是分析,另外一些属性则特别为某些CASE工具而设。4.2状态规格说明 状态规格说明提供系统的静态视图(因此,状态建模经常被称为静态建模)。这里的主要任务是定义应用领域的类、它们的属性及与其他类的关系。类的操作在一开始一般不予考虑,它们将从行为规格说明中导出。4.2状态规格说明 在通常情况下,我们首先识别实体类,即定义应用领域的类和将在系统数据库中永久存在的类。这样的类常常被称为“业务对象”。
6、作为系统事件的类(控制类)和表示GUI的类(视图或边界类)要等到系统的行为特征已经知道时才建立。4.2状态规格说明 l4.2.1为类建模 l4.2.2为关联建模 l4.2.3为聚合和组合关系建模 l4.2.4为泛化关系建模 l4.2.5为对象建模 4.2.1为类建模 类模型是面向对象系统开发的基础。类建立了一个基础,在这个基础上,系统的状态和行为才是可观察的。但是,类很难找到而且类的属性也不是很明显。即使对同一个应用领域,任何两个分析员所得到的类以及它们的属性的集合都可能是不相同的。既使类模型不同,但最后的结果和用户满意度可以同样好(或同样差)。4.2.1为类建模 为类建模并不是一个确定的过程
7、。不存在如何找到和定义好的类的秘诀。这个过程是高度选代增量式的。以下分析对类的成功设计是至关重要的:l1.为类建模的知识。l2.对应用领域的理解。l3.相似的和成功的设计经验。l4.超前思维和预测结果的能力。l5.精化模型以消除不完美的愿望等。4.2.1为类建模l4.2.1.1发现类 l4.2.1.2说明类 4.2.1.1发现类 对同一个应用,任何两个分析员都将可能得到不同的类模型,任何两个分析员在发现类的过程中都可能采用不同的思考过程。当前的文献中存在许多所谓的类发现方法,分析员在一开始遵循其中的一种方法,而接下去的迭代几乎都要涉及非传统的和可以说是任意的机制。4.2.1.1发现类 Bahr
8、ami(1999)仔细研究了四种最流行的识别类的方法:l1.名词短语方法。l2.公共类模式方法。l3.用例导出方法。l4.CRC(类一职责一协作)方法。Bahrami把每种方法归因于已经发表的论文。但是,按我们的观点,只有最后一种方法具有无可置疑的原创性。下面,我们总结这些方法,然后给出采用混合方法的例子。4.2.1.1发现类l4.2.1.1.1名词短语方法 l4.2.1.1.2公共类模式方法 l4.2.1.1.3用例驱动方法 l4.2.1.1.4 CRC方法 l4.2.1.1.5混合方法 l4.2.1.1.6用于发现类的指南 l4.2.1.1.7类发现的例子 4.2.1.1.1名词短语方法
9、名词短语方法要求分析员阅读需求文档中的语句,从中寻找名词短语。每一个名词短语被认为是一个候选类,然后,这些候选类被分成三组:l1.相关类。l2.模糊类。l3.无关类。4.2.1.1.1名词短语方法 无关类就是那些问题领域之外的类,我们无法陈述它们的目的。有经验的实践者在他们的候选类初始表中很可能不用包含无关类,这样,识别和消除无关类这个正式的步骤就没有必要了。相关类是那些明显属于问题领域的类,表示这些类的名字的名词经常出现在需求文档中。另外,我们能够从对应用领域的一般性知识中,从对相似的系统、教科书、文件以及专门软件包的研究中,确认这些类的显著性和目的。4.2.1.1.1名词短语方法 模糊类是
10、那些我们不能肯定地和无二义性地分类为相关类的类。它们是一个大的问题,我们需要对它们进行进一步的分析。要么将它们划归为相关类,要么将他们划归为无关类。这些类最后的分组结果将成为好的类模型和坏的类模型的区别所在。名词短语方法假设需求文档是完全的和正确的。事实上,这一点很难达到。甚至于即使真的是这样,在大量的文本中进行单调无味的搜索也不一定能产生完整的和精确的结果。4.2.1.1.2公共类模式方法 公共类模式方法从通用的对象分类理论中导出候选类。分类理论是研究将对象世界划分为有用的分组,以便更好地进行推理的理论的一部分。4.2.1.1.2公共类模式方法 Bahrami(1999)列出了下列一些用于发
11、现候选类的分组(模式):l概念类。概念是大范围的人员社团共享和公认的一个表示。没有概念,人们就不能有效地交流,或者无法交流到任何满意的程度。例如,Reservation在飞机定座系统中就是一个概念类。l事件类。事件相对于我们的时间进度来说是不占任何时间的事情。例如,Arrival在飞机定座系统中是一个事件类。l组织类。组织是任何形式的、有目的性的团体,或者是事物的集合。例如,TravelAgency在飞机定座系统中是一个类。l人员类。“人员”在这里理解为系统中由人担任的角色,而不是实际的人。例如,Passenger在飞机定座系统中是一个类。l地点类。地点是与信息系统相关的物理位置。Trave1
12、Office就是飞机定座系统中这样的一个类。4.2.1.1.2公共类模式方法 Rumbaugh et al(1999)提出不同的划分方式:l物理类(如Airplane)。l业务类(如Reservation)。l逻辑类(如 FlightTimetable)。l应用类(如ReservationTransaction)。l计算机类(如Index)。l行为类(如ReservationCancellation)。4.2.1.1.2公共类模式方法 公共类模式方法为识别类提供了有用的指南,但它并不提供系统化的过程,使我们依照它就可以发现可靠和完整的类的集合。这个方法可以使我们很成功地确定类的初始集,或者用于
13、验证某些类(由别的方法导出的)是否应该存在或者有没有必要存在。当然,公共类模式方法与特定用户需求的联系太松散,不能提供完整的方案。4.2.1.1.2公共类模式方法 与公共类模式方法相关的一个危险与误解类的名字有关。例如,Arrival是什么意思?它是指到达跑道(着陆时间)、到达航站楼(到港时间)、到达行李提取处(行李放行时间)等等?同样,在北美印地安领地,Reservation这个字具有与我们在这里所理解的完全不相关的意思。4.2.1.1.3用例驱动方法 如果没有被特别地建议,UML(准确地说是UML统一过程)强调用例驱动方法。用例的图形式模型成为叙述性描述和序列形式或者个体用例的协作图(见2
14、.2节和本章后面部分)的补充形式。这些附加的描述和图示定义了每个用例出现所需的步骤(和对象)。从这些信息中,我们能够通过泛化来发现候选类。4.2.1.1.3用例驱动方法 用例驱动方法具有自底向上的特点,一旦已知了用例并且至少在序列图中部分地定义了系统的交互视图,则这些图中所使用的对象就导致了类的发现。实际上,这个方法与名词短语方法相似,其共同的基础在于用例说明了需求这个事实。两者都是通过研究需求文档中的陈述来发现候选类的,而这些陈述是叙述性的还是图形式的则是次要的。总之,在生命周期的这个阶段,大多数用例都只在文本中描述,而不带任何交互图。4.2.1.1.3用例驱动方法 用例驱动方法具有与名词短
15、语方法相同的缺陷。作为一种自底向上的方法,它本身的准确性依赖于用例模型的完整性和正确性。在迭代增量式软件开发中,它甚至会导致意想不到的不平衡。这里,用例模型不得不在类模型建立之前完成。对所有的方法和目的而言,这种形式产生了功能驱动的方法(OO主张者喜欢称它为问题驱动)。4.2.1.1.4 CRC方法 CRC方法不仅仅是一种类发现技术,它还是一种用来进行对象的解释、理解和教学的具有吸引力的方式。CRC方法涉及头脑风暴的内容,它通过使用一种特殊制作的卡片而变得容易进行。这种卡片包含三个分栏:类名书写在最上面的分栏中、类职责列在左边的分栏中而合作者列在右边的分栏中。职责是当前类为了满足其他类所准备执
16、行的服务(操作),许多要实现的职责需要其他类的合作,这些类被列为合作者。4.2.1.1.4 CRC方法 CRC方法是一个模拟开发者“处理这些卡片”的过程,开发者在执行一个处理实例(即一个用例实例)的同时将类名和赋予的职责和合作者填入卡片。每当需要的服务没有被存在的类所覆盖时就创建一个新类,并赋予适当的职责和合作者。如果一个类“太忙”了,它就要被分为几个较小的类。4.2.1.1.4 CRC方法 与其他方法不同的是,CRC方法从对象之间为了完成一个处理任务而在发生的消息传递中识别类。其重点在于系统智能的统一分布,而且一些类是通过技术上的需要而导出的,而不是作为“业务对象”而发现的。在这个意义上说,
17、CRC可能更适合对用其他方法发现的类进行验证。CRC在类特性(被类职责和合作者所隐含)的确定上也很有用。4.2.1.1.5混合方法 在实践中,类发现过程在不同的时刻可能采用不同的方法。经常是涉及到所有上述四种方法。分析者全面的知识、经验和直觉也起作用。这个过程既不是由顶向下的,也不是自底向上的,而是从中间出发的。我们称这样的类发现过程为混合方法。4.2.1.1.5混合方法 下面是一个可能的场景。用一般性知识和分析者的经验来发现类的初始集合。公共类模式进一步提供附加的指导,然后又通过对问题领域的高层描述,采用名词短语方法又增加了其他的类。如果有了用例图,用例驱动方法又能被用来加入新的类,并且验证
18、已有的类。最后,CRC方法对到现在发现的所有类进行评判和推理。4.2.1.1.6用于发现类的指南 下面列出分析员在选择候选类时应该遵循的一个不太完美的指南或经验。记住,我们这里所涉及的仅仅是实体类:l1.每个类必须在系统中有清晰的目的陈述。l2.每个类都是一组对象的框架描述。孤类,可以想像它是单个对象,它在“业务对象”中是不太可能的。l3.每个类(即实体类)必须拥有一组属性,通过确定标识属性(主码)来帮助我们推断类的序数(即类所希望的数据库中的对象数)是一个好主意。然而要记住,类不一定要有用户定义的主码。对象标识符(OID)可以标识类的对象。l4.每个类应该有区别于其他类的属性。一个概念是类还
19、是属性依赖于它的应用领域。l5.每个类拥有一组操作。当然,在当前阶段,我们并不涉及操作的标识。类接口中的操作(类在系统中提供的服务)隐含在目的陈述中(第1点)。4.2.1.1.7类发现的例子 l例4.1(大学注册)l例4.2(音像商店)l例4.3(关系管理)例4.1(大学注册)考虑下述对大学注册系统的需求并识别候选类:1.每个大学学位都有若干必修课和若干选修课。2.每门课都处于一个给定的级别并且有一个学分值。3.同一门课程可以是若干学位的一个部分。4.每种学位都要给定完成学位所要求的总的最少学分值(例如,BS(计算和信息系统)包括必修课在内要求68学分)。5.学生可以组合所提供的课程形成他们的
20、学习程序,一方面适合他们个人需要,另一方面完成了这些课程他们就能得到他们所注册的学位。例4.1(大学注册)我们要通过分析这段需求来发现候选类。在第一段陈述中,相关的类为Degree和Course。这两个类符合了上述指南中的五条,我们还不肯定类Course是否或者如何能特例化为类CompulsoryCourse和ElectiveCourse。有一点很清楚,如一门课程针对一种学位来说要么是必修的要么是选修的。可以通过关联或者通过类的属性来区别必修或选修。因此,CompulsoryCourse和ElectiveCourse被认为是模糊类。例4.1(大学注册)第2段陈述只识别类Course的属性,即c
21、ourse_level和credit_point_value。第3段陈述刻画类Course和Degree之间的一个关联。第4段陈述引入min_total_credit_points作为类Degree的一个属性。例4.1(大学注册)最后一段陈述让我们发现了三个类:Student、CourseOffering和StudyProgram,前两个不容置疑地是相关类,但StudyProgram可以转化为Student和CourseOffering之间的一个关联。由于这个原因,StudyProgrm被归为模糊类。表4-1反映了上述的讨论。例4.1(大学注册)表表4-1候选类(大学注册)候选类(大学注册)相
22、关类模糊类CourseDegreeStudentCourseOffering CompulSoryCourseElectiveCourseStudyProgram 例4.2(音像商店)考虑下述对音像商店系统的需求,识别候选类:1.音像商店在货架上存放着题材广泛的当前流行的电影库。某个特定的电影可以存放在录像带或是光碟上。2.录像带要么是Beta格式要么是VHS格式。光碟为DVD格式。3.每个电影都有特定的租用期(用天表示),并带有在租用期内的租金。4.音像商店必须能够立即回答关于某个电影的库存和有多少供租用的带子或光碟(必须知道并记录每个带子或光碟的当前情况)。例4.2(音像商店)第1段陈述出
23、现了一些名词,但其中只有部分名词可以归为候选类。音像商店不是候选类,因为整个系统就是关于它的(在数据库中将只会有一个该类的对象所谓的孤类)。同样,货架和库作为类也太通用,至少在这个阶段是这样。相关类看来只有MovieTitle、VideoTape和VideoDisk。例4.2(音像商店)第2段陈述引入了关于录像带和光碟的其他规格说明,我们可以提出三个新的类:BetaTape,VHSTape和 DVDDISk。但是,由于只有一种光碟,在最终的模型中可能并不需要同时保留VideoDisk和 DVDDisk,保留哪一种将根据作用到录像带和光碟的规格说明的最终层次而定。注意,我们还不能肯定BetaTa
24、pe和VHSTape是否具有可以区分的属性(除了一个是Beta格式而另一个为VHS格式之外)。例4.2(音像商店)第3段陈述说明每一个电影片名关联一个租用条件。但是,还不清楚什么被认为是“电影”是电影片名还是电影介质(录像带或光碟)?我们还需要向客户澄清这个需求。同时,我们也许需要声明Renta1Conditions作为一个模糊类,而不是在电影片名或电影介质类中存储关于租用期限和租用费用的信息。例4.2(音像商店)最后一段陈述给我们肯定了BetaTape、VHSTape和DVDDisk是相关类。我们需要存储关于每个带子和光碟的当前条件的信息。但是,像video_condition或number
25、_currently_ available这样的属性可以一般性地在一个高层抽象类(可以称它为VideoMedium)中声明,并已由具体子类(如 VHSTape)继承。这些讨论反映在表 4-2中。例4.2(音像商店)表表4-2候选类(候选类(音像商店)相关类模糊类MovieTitleVideoMediumVideoTapeVideoDisk(或DVDDisk)BetaTapeVHSTape RentalConditions 例4.3(关系管理)考虑下述对关系管理系统的需求,并识别候选类:1.系统支持与当前和未来客户“保持联系”的功能,以便能够响应他们的需要并争取我们产品的新的合同。2.系统存储组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 需求 分析 系统 设计

限制150内