信息系统分析与设计第六章.ppt
第6章 面向对象分析工作流,Osbert案例研究,学习目标,6.1 分析工作流,获得对需求的更深入理解并以某种方式述需求在统一过程中有三种类实体类:为长期存在的信息建模Account Class类,Painting Class类,Mortgage Class类和Investment Class类边界类:为信息系统及其参与者之间的交互建模Purchases Report Class类和Sales Report Class类控制类:为复杂的计算和算法建模Compute Masterpiece Price Class、Compute Masterwork PriceClass和Compute Other Painting Price Class,3种类的UML表示法(构造型stereotype),6.2 提取实体类,功能性建模:展示所有用例的方案。(用例图)类建模:确定实体类及其属性、相互关系。(类图)动态建模:确定由每个实体类或其子类执行的操作或者对它们执行的操作。(状态图),6.3 初始功能性建模:Osbert 案例研究,Osbert信息系统用例图,方案是用例的一个实例。以Buy a Painting为例说明:购买到精品油画卖主拒绝出价信息系统没有查找出需要的油画方案只描绘一种特殊的购买交互。对应于每个用例有许多方案,系统分析师团队应该尽可能多的分析出正常的和异常的方案,以获得对该领域、业务模型以及最重要的是对用例尽可能深入的理解。,一种可能方案,Osbert希望购买精品油画。1.Osbert输入关于油画的描述。2.信息系统扫描拍卖记录,以找出同一位画家最相似的作品的销售价格和年份。3.信息系统把最相似的作品的拍卖价格作为底价,自拍卖之日起,在底价上逐年 加价8.5%,以此计算最大购买价格。Osbert提出低于最大购买价格的价格该出价被卖主接受。4.Osbert输入销售信息(卖主的姓名和地址、购买价格)。,其他两种方案,Osbert希望购买精品油画。1.Osbert输入关于油画的描述。2.信息系统扫描拍卖记录,以找出同一位画家最相似的作品的销售价格和年份。3.信息系统把最相似的作品的拍卖价格作为底价,自拍卖之日起,在底价上逐年 加价8.5%,以此计算最大购买价格。Osbert提出低于最大购买价格的价格卖主拒绝Osbert的出价。,Osbert希望购买精品油画。1.Osbert输入关于油画的描述。2.信息系统扫描拍卖记录,以找出同一位画家最相似的作品的销售价格和年份。3.信息系统报告没有相似的作品。Osbert不会为该油画出价。,方案合并描述,Osbert希望购买精品油画。1.Osbert输入关于油画的描述。2.信息系统扫描拍卖记录,以找出同一位画家最相似的作品的销售价格和年份。3.信息系统把最相似的作品的拍卖价格作为底价,自拍卖之日起,在底价上逐年 加价8.5%,以此计算最大购买价格。Osbert提出低于最大购买价格的价格该出价被卖主接受。4.Osbert输入销售信息(卖主的姓名和地址、购买价格)。可能的替代方案A.卖主拒绝Osbert的出价。B.在那位画家的拍卖档案里没有相似的油画,因此Osbert不会为该画出价。,6.4 初始类图:Osbert案例研究,提取实体类,确定它们的相互关系,并找出它们的属性。开始这一步的最佳方式通常是使用两阶段名词提取法。Osertb案例:阶段1:描述信息系统,生成报告,以提高购买艺术品的决策过程的效率。报告中包含关于油画的购买和销售信息,油画通常分为精品、名品和其他油画。,阶段2中,标识出这个段落中的名词。找出实体类:Paint Class、Masterpiece Class、Masterwork Class和Other Painting Class,生成报告,以提高购买艺术品的决策过程的效率。报告中包含关于油画的购买和销售信息,油画通常分为精品、名品和其他油画。,初始类建模(第一次迭代)考虑四个实体类之间的关系(第二次迭代),更进一步,之前的描述调整Masterwork Class与Masterpiece Class之间的关系,2.2对于名品:信息系统首先把该油画看做是同一位画家的精品来计算最大购买价格。,初始类图的第三次迭代,更准确的建模(第三次迭代):,更进一步,之前的描述提取“拍卖的油画”类与“要购买的油画”类,2.1 对于精品:信息系统计算每一幅具有拍卖记录的油画与考虑购买油画之间的相似性系数,初始类图的第四次迭代,更进一步,之前的描述提取“流行度系数”类,2.3 对于其他油画:信息系统通过公式FA来计算最大购买价格,其中F是针对那位画家的一个常数(流行度系数),初始类图的第五次迭代,添加属性,包含用于启动整个信息系统的执行的操作,显示构造型的类图,6.5 初始动态模型:Osbert Oglesby案例研究,绘制状态图,反映由信息系统执行的或为其执行的所有操作。状态:信息系统的属性的一组特殊值。,选择一个选项就是事件。事件引起系统从一种状态转移到另一种状态。,初始状态,另一种状态,Osbert系统的初始状态图,初始状态,结束状态,圆角矩形表示状态,Osbert信息系统中的初始主菜单,当发生某种事件时,信息系统会从一种状态转移到另一种状态。在每种状态中,Osbert会执行那种状态支持的操作之一。,6.6 提取边界类,边界类通常容易提取。一般来说,每个输入屏幕、输出屏幕和打印的报告都是通过边界类来建模。Osbert Oglesby案例:所有用例使用一个屏幕:购买油画销售油画打印报告更新流行度系数建立一个屏幕类:User Interface Class,用户界面屏幕图形界面和文本界面,信息系统的初始边界类,信息系统中产生的报告购买报告销售报告将来的趋势报告每种报告的内容不同,所以通过单独的边界类来建模。由此产生4个相应的初始边界类:,6.7 提取控制类,一般来说,每种重要的计算都是通过控制类来建模的。Osbert Oglesby案例:有四类计算:确定Osbert 应该为精品、名品或其他油画提出的最大价格以及确定艺术品购买中是否有新趋势产生四个初始控制类:,6.8 改进用例,对用例进行细化Buy a Painting用例细化Buy a MasterpieceBuy a MasterworkBuy other paintingProduce a Report用例细化Produce a Purchase ReportProduce a Sales ReportProduce a Future Trends Report,Osbert Oglesby用例图的第三次迭代,用例细化后的改变,用例细化后,只需改变原来用例的描述。把每个用例进行单独的描述。如:Buy a Masterpiece用例图,Buy a Masterpiece用例描述,6.9 用例实现,用例实现扩展和细化用例的过程。使用的UML建模工具:交互图(顺序图或协作图)6.9.1 Buy a Masterpiece用例,显示了实现用例的类及类之间的关系,6.8 改进用例,购买精品的一种可能方案方案是用例的一个可能的实例。用例为参与者与信息系统之间的所有交互的集建模。每个交互都是用例的一个方案。,6.8 改进用例,工作中的信息系统使用的是对象,而不是类。例如:特定的精品不能通过Masterpiece Class来表示,但可以通过一个对象即Masterpiece Class的一个特定的实例来表示。通过:Masterpiece Class来表示这样一个对象。类图只显示用例中的类及其关系,既没有显示对象也没有显示从一个对象发送到另一个对象的消息的序列。,协作图,协作图:显示对象以及消息,消息带有它们在特定的方案中发送顺序的编号。购买精品的一种方案实现的协作图:,相应地需要一份关于协作图的书面描述,来说明事件流程。Buy a Masterpiece 方案实现的协作图事件流:,顺序图,顺序图:格式上明确地显示消息流动和顺序。购买精品的一种方案实现的顺序图:,说明,协作图与顺序图的比较:当信息的传送是关注的焦点时,顺序图要优于协作图;当关注类时,协作图通常比等价的顺序图更有用。在用例实现时,我们可以选择用例图、类图、协作图及其事件流、顺序图等表示。这些图从不同角度描述了系统的活动,有助于系统分析员充分地了解并确保分析工作流的正确。,6.9.2 Buy a Masterwork用例,类图:,Buy a Masterwork用例,购买名品的一种可能方案:,Buy a Masterwork用例,以上方案的协作图:,协作图的事件流,方案实现的顺序图,6.9.3 Buy Other Painting用例,类图:,目标系统主菜单的第二次迭代,文本界面与图形界面,6.9.4 余下的5个用例,Sell a Painting用例的类图,Produce a Purchases Report用例,类图,Produce a Sales Report用例,文本界面与图形界面,Produce a Future Trend Report用例,类图,Update a Fashionability Coefficient用例,类图,6.10 增加类图,实体类、边界类和控制类的结合,类图的第六次迭代,总结,在分析工作流中,提取系统中的类,并用类来描述用例。提取实体类、边界类和控制类利用提取出的类来细化、实现用例。类图显示类及类间的关系协作图显示类、类间关系以及消息的传递顺序图显示对象以及对象间消息的传递顺序通过UML建模来不断细化用例,达到对系统深入认识理解的目的。,