1、软件工软件工程原理程原理讲义讲义-05-055.15.1 需求获取需求获取n需求获取的目标是确定用户需求获取的目标是确定用户“需要需要”什么样的软什么样的软件产品,就是说,件产品,就是说,新的软件必须能够做什么新的软件必须能够做什么。n没有专业的系统分析人员,用户很难了解到需要没有专业的系统分析人员,用户很难了解到需要开发什么相关信息和功能;另一方面,没有与用开发什么相关信息和功能;另一方面,没有与用户的交流,系统分析人员也很难弄清客户真正需户的交流,系统分析人员也很难弄清客户真正需要什么。要什么。n发现用户需求的过程称为发现用户需求的过程称为需求获取需求获取。一旦提出了。一旦提出了最初的需求
2、,进一步推敲、细化和扩充的过程称最初的需求,进一步推敲、细化和扩充的过程称为为分析分析。2 2软件工程软件工程n需求获取的第一步是需求获取的第一步是理解应用领域理解应用领域,即目标软件,即目标软件的应用环境。如银行、电信公司、书店等。的应用环境。如银行、电信公司、书店等。n一旦系统分析人员对该领域有了充分了解,就可一旦系统分析人员对该领域有了充分了解,就可以以建立一个业务模型建立一个业务模型,描述用户的业务过程,确,描述用户的业务过程,确定用户的初始需求。然后通过迭代,更深入了解定用户的初始需求。然后通过迭代,更深入了解应用领域,回过头来推敲业务模型。应用领域,回过头来推敲业务模型。n这种迭代
3、过程直到双方对需求的理解达到共识。这种迭代过程直到双方对需求的理解达到共识。n需求获取的结果是需求获取的结果是导出用户可理解的系统规格说导出用户可理解的系统规格说明明。3 3软件工程软件工程开发用户需求的典型过程开发用户需求的典型过程1.识别用户需求识别用户需求2.访谈用户代表访谈用户代表 识别各种需要与要求识别各种需要与要求 使用工具帮助表达用户需求使用工具帮助表达用户需求 绘制绘制GUI草图草图 确定硬件环境确定硬件环境3.用标准文档格式撰写客户需求用标准文档格式撰写客户需求4.核查用户需求核查用户需求请用户评审请用户评审用户批准后用户批准后5.构建详细需求(分析建模)构建详细需求(分析建
4、模)4 4软件工程软件工程5.1.15.1.1 与用户交互与用户交互1)需求的来源需求的来源n不同类型应用能从人员处获取需求的比例不同类型应用能从人员处获取需求的比例:相对低的相对低的相对高的相对高的从人群获取需求的大概百分比从人群获取需求的大概百分比应应用用的的类类型型高度受限的高度受限的不受限制的不受限制的导弹制导系统导弹制导系统航班控制系统航班控制系统公司财务系统增强版公司财务系统增强版制造控制系统制造控制系统公司财务系统公司财务系统视频游戏视频游戏5 5软件工程软件工程n所谓限制,是指受客观物理规律的限制。如导弹所谓限制,是指受客观物理规律的限制。如导弹制导系统更多地受物理运动定律的限
5、制,而非人制导系统更多地受物理运动定律的限制,而非人的决策。视频游戏的大部分需求依赖人,因为它的决策。视频游戏的大部分需求依赖人,因为它是一个想象出来的产品。是一个想象出来的产品。n应用受到的限制越少,能从人们那里获得的需求应用受到的限制越少,能从人们那里获得的需求比例越大。比例越大。2)识别利益相关者(识别利益相关者(stakeholder)n对项目承担风险和享有利益的人即为利益相关者。对项目承担风险和享有利益的人即为利益相关者。他们是应用的他们是应用的“客户客户”。如公司高层、项目经理、。如公司高层、项目经理、最终用户、系统开发人员等。最终用户、系统开发人员等。6 6软件工程软件工程n不同
6、利益相关者之间的利益冲突会导致需求不不同利益相关者之间的利益冲突会导致需求不一致。如果需求冲突不能调和,项目就会陷入一致。如果需求冲突不能调和,项目就会陷入困境,最后往往会被取消。困境,最后往往会被取消。n即使所有利益相关者的需求一致,也可能由于即使所有利益相关者的需求一致,也可能由于实现代价高昂,需求不能得到完全满足。实现代价高昂,需求不能得到完全满足。3)了解客户的需求了解客户的需求n一般客户希望得到一个产品,他们需要系统开一般客户希望得到一个产品,他们需要系统开发人员帮助,明确自己的需要。发人员帮助,明确自己的需要。n例如,有一个客户愿望框架:例如,有一个客户愿望框架:“Encounte
7、r是一是一个角色扮演游戏,它能模拟被扮演人物的全部个角色扮演游戏,它能模拟被扮演人物的全部或部分活动,应对人们具有相当吸引力。或部分活动,应对人们具有相当吸引力。”7 7软件工程软件工程n完整的客户要求应当记录在需求文档的完整的客户要求应当记录在需求文档的“概述概述”部分。但需求中还有一些问题需要由系统分部分。但需求中还有一些问题需要由系统分析人员与客户商量,以明确这些需求。析人员与客户商量,以明确这些需求。n例如游戏是否只允许玩家扮演一个角色还是可例如游戏是否只允许玩家扮演一个角色还是可以同时控制多个人物?当两个人相遇时会发生以同时控制多个人物?当两个人相遇时会发生什么事情?游戏是否可以联网
8、对战等。什么事情?游戏是否可以联网对战等。4)访谈和文档记录访谈和文档记录n大部分需求获取是人与人沟通的活动,这些活大部分需求获取是人与人沟通的活动,这些活动经过精心组织,以准确获得最好的效果。动经过精心组织,以准确获得最好的效果。n准备和访谈客户的过程如下:准备和访谈客户的过程如下:8 8软件工程软件工程访谈之前访谈之前列出访谈的列出访谈的“客户客户”对象,并划分客户优先级对象,并划分客户优先级最有可能决定项目成败的人最有可能决定项目成败的人安排访谈日程,设定开始和结束时间安排访谈日程,设定开始和结束时间系统开发人员至少有两人参加访谈系统开发人员至少有两人参加访谈准备录音设备准备录音设备访谈
9、中访谈中注意倾听注意倾听不要处于被动状态:启发和鼓励不要处于被动状态:启发和鼓励理解客户的需要并探索要求理解客户的需要并探索要求采用用例?或数据流图?状态图?采用用例?或数据流图?状态图?9 9软件工程软件工程记录全部访谈内容记录全部访谈内容安排补充会议安排补充会议访谈之后访谈之后根据标准模版撰写软件需求规格说明(根据标准模版撰写软件需求规格说明(SRS),),打客户需求草稿打客户需求草稿通过电子邮件征求客户意见通过电子邮件征求客户意见n对于不同类型的应用,用例方法是一种获取和表对于不同类型的应用,用例方法是一种获取和表达需求的有效方法。达需求的有效方法。n某些需求需要通过数据流图或状态图与用
10、户沟通。某些需求需要通过数据流图或状态图与用户沟通。1010软件工程软件工程5.1.2 5.1.2 描述客户需求描述客户需求n需求可以看成是应用与应用的外部代理(如用户)需求可以看成是应用与应用的外部代理(如用户)之间的交互。可利用用例作为表达工具。之间的交互。可利用用例作为表达工具。n用例描述了系统外的参与者(用例描述了系统外的参与者(Actor)与应用之)与应用之间的交互情况。主要注重用户对系统的看法。间的交互情况。主要注重用户对系统的看法。n描述客户需求的过程如下:描述客户需求的过程如下:1)标识参与者标识参与者 标识目标系统将支持的不同类型标识目标系统将支持的不同类型的用户,可以是人、
11、事件或其他系统。的用户,可以是人、事件或其他系统。2)标识场景标识场景 用场景描述目标系统典型功能的活用场景描述目标系统典型功能的活动细节,并与用户沟通,加深开发人员对应用动细节,并与用户沟通,加深开发人员对应用领域的理解。领域的理解。11 11软件工程软件工程3)标识用例标识用例 当双方确定了一组场景后,开发人当双方确定了一组场景后,开发人员从该场景抽象出一组用例,描述所有可能的员从该场景抽象出一组用例,描述所有可能的情况。用例表达了系统的范围。情况。用例表达了系统的范围。4)求精用例求精用例 细化每一个用例。引入带有出错处细化每一个用例。引入带有出错处理或带有异常处理的用例,描述系统的行为
12、,理或带有异常处理的用例,描述系统的行为,保证需求的描述是完全的。保证需求的描述是完全的。5)标识用例之间的关系标识用例之间的关系 描述用例之间的依赖关描述用例之间的依赖关系,提取相同功能,建立用例模型。系,提取相同功能,建立用例模型。6)标识非功能需求标识非功能需求 包括系统性能上的约束、文包括系统性能上的约束、文档、使用资源、安全性和质量等需求。档、使用资源、安全性和质量等需求。1212软件工程软件工程n需求获取期间,开发人员需要访问一些不同的信需求获取期间,开发人员需要访问一些不同的信息资源:息资源:客户提供的与应用领域相关的文档和手册。客户提供的与应用领域相关的文档和手册。将被目标系统
13、替代的遗留系统的技术文档。将被目标系统替代的遗留系统的技术文档。最终用户和客户本人。最终用户和客户本人。n以以“图书管理系统图书管理系统”为例,首先标识参与者:为例,首先标识参与者:a)Librarian 图书管理员图书管理员:创建、修改、删除读:创建、修改、删除读者信息;添加、编辑、删除书目信息;添加、者信息;添加、编辑、删除书目信息;添加、编辑、删除图书信息。编辑、删除图书信息。b)Borrower 读者读者:借阅、预约、归还图书,以及:借阅、预约、归还图书,以及取消书目预约。取消书目预约。1313软件工程软件工程n图书(图书(Book)是指某种书目()是指某种书目(Title)的某一流通
14、)的某一流通中的复本。例如中的复本。例如“数学分析教程第二册数学分析教程第二册”的的 5 本本馆藏复本中的第馆藏复本中的第 3 本。本。n识别用例:识别用例:a)BorrowBook:借阅图书:借阅图书b)ReturnBook:返还图书:返还图书c)RecerveTitle:预约某种书目:预约某种书目d)CancelReservation:取消预约:取消预约e)MaintainBorrowerInfo:维护读者信息,包括:维护读者信息,包括创建、修改、取消读者账户创建、修改、取消读者账户f)MaintainTitleInfo:维护书目信息,包括添加:维护书目信息,包括添加1414软件工程软件工
15、程修改、删除书目信息修改、删除书目信息g)MaintainBookInfo:维护图书信息,包括添加、:维护图书信息,包括添加、修改、删除图书信息修改、删除图书信息h)Login:登录:登录n识别参与者与用例之间的关系(场景)识别参与者与用例之间的关系(场景)a)Borrower执行执行BorrowBook、ReturnBook、ReserveTitle、CancelReservation等用例。等用例。b)Borrower是通过是通过Librarian完成上述用例的工作。完成上述用例的工作。则则Borrower与与Librarian存在依赖关系。存在依赖关系。c)Librarian还与还与Ma
16、intainBorrowerInfo、Main-tainTitleInfo、MaintainBookInfo交互。交互。1515软件工程软件工程d)Librarian还需要与用例还需要与用例Login交互。交互。n画出用例图画出用例图BorrowerLibrarianBorrowBookReturnBookReserveTitleCancelReservation1616软件工程软件工程n用例用例BorrowBook的规格说明的规格说明1.1 前置条件:在此用例开始之前,前置条件:在此用例开始之前,Librarian必须必须登录到系统中。登录到系统中。LibrarianLoginMaintai
17、nTitleInfoMaintainBookInfoMaintainBorrowerInfo1717软件工程软件工程1.2 后置条件:如果此用例执行成功,在系统中建后置条件:如果此用例执行成功,在系统中建立并存储一条借阅记录,必须时需要删除预约立并存储一条借阅记录,必须时需要删除预约记录。如果执行不成功,系统状态不变。记录。如果执行不成功,系统状态不变。1.3 事件流事件流基本流基本流当当Borrower借阅某种书目,且借阅某种书目,且Librarian选择选择“借书借书”,则此用例启动。,则此用例启动。提供书目和读者信息。提供书目和读者信息。检索书目(检索书目(E-1)。)。确定该书目的物理
18、复本(图书)是否在架上确定该书目的物理复本(图书)是否在架上(E-2)。)。1818软件工程软件工程检索读者(检索读者(E-3)。)。将图书交给读者。将图书交给读者。创建并存储借阅记录。创建并存储借阅记录。删除预约记录。删除预约记录。候补流候补流E-1:若该种书目不存在,系统显示提示信息,:若该种书目不存在,系统显示提示信息,用例终止。用例终止。E-2:若该种图书都已借出,系统显示提示信息,:若该种图书都已借出,系统显示提示信息,用例终止。用例终止。E-3:系统中不存在该读者,系统显示提示信息,:系统中不存在该读者,系统显示提示信息,用例终止。用例终止。1919软件工程软件工程5.1.3 5.
19、1.3 与用户沟通的其他工具与用户沟通的其他工具1)数据流图数据流图某些需求可以很自然地表述为处理元素之间的某些需求可以很自然地表述为处理元素之间的数据流。数据流。顶层图即为系统与外部实体的交互。顶层图即为系统与外部实体的交互。2)状态图状态图有时把应用看作是几个状态下的应用,而在某有时把应用看作是几个状态下的应用,而在某一确定时刻的应用始终明确地处于某个状态中。一确定时刻的应用始终明确地处于某个状态中。这种状态划分对理解系统比较有益。这种状态划分对理解系统比较有益。状态的具体内容到实现阶段会有确切的定义。状态的具体内容到实现阶段会有确切的定义。2020软件工程软件工程借书过程的数据流图借书过
20、程的数据流图n外部实体、数据流和数据存储都为候选对象外部实体、数据流和数据存储都为候选对象管理员管理员 1借书借书检验检验2借书借书登记登记索书单索书单借书证借书证检验错误检验错误借书信息借书信息日历日历 借阅记录借阅记录 读者信息读者信息 图书信息图书信息 借书证借书证图书图书2121软件工程软件工程还书过程的数据流图还书过程的数据流图n系统与外部实体、系统与数据存储的交互,构成系统与外部实体、系统与数据存储的交互,构成系统的接口。相应数据流构成接口数据。系统的接口。相应数据流构成接口数据。读者读者 3还书还书检验检验4还书还书登记登记检验错误检验错误还书信息还书信息日历日历 借阅记录借阅记
21、录 图书图书2222软件工程软件工程图书(对象)的状态图图书(对象)的状态图借出借出在架在架丢失丢失修补修补报废报废出借出借返还返还丢失丢失丢失丢失注销注销损坏损坏上架上架2323软件工程软件工程图书管理员借书操作的状态图图书管理员借书操作的状态图登记读登记读者信息者信息登记登记借书借书信息信息findTitle(检索图书)(检索图书)login(登录)(登录)findBorrower(查找读者)(查找读者)reserve(预约)(预约)借书借书预约图书预约图书手续手续完成完成检验图书检验图书borrow(借阅)(借阅)检查图书状态检查图书状态取消取消findBook(检索复本)(检索复本)s
22、etLoan(设借阅状态)(设借阅状态)cancel(取消)(取消)close(关闭)(关闭)检验读者检验读者借书借书2424软件工程软件工程5.1.4 5.1.4 草拟用户界面和其他接口草拟用户界面和其他接口n建立初始用户界面,是原型方法的一种,目的是建立初始用户界面,是原型方法的一种,目的是快速与客户沟通。快速与客户沟通。n客户通常在看到应用的图形用户客户通常在看到应用的图形用户界面(界面(GUI)才)才能能相像到这个应用未来的样子。相像到这个应用未来的样子。n开发用户界面的步骤如下:开发用户界面的步骤如下:1)了解客户了解客户 深入了解最终用户的想法。根据用深入了解最终用户的想法。根据用
23、户的层次,提供多种用户界面。户的层次,提供多种用户界面。知识和经验层次知识和经验层次:计算机素养、系统经验、:计算机素养、系统经验、使用类似应用的经验、教育水平、阅读水平、使用类似应用的经验、教育水平、阅读水平、打字技能等。打字技能等。2525软件工程软件工程用户的生理特征用户的生理特征:年龄、性别、左右手习惯、:年龄、性别、左右手习惯、生理障碍等。生理障碍等。2)理解业务功能理解业务功能 根据应用的整体意图来理解特根据应用的整体意图来理解特定用户界面的目的。功能界面出现的顺序定用户界面的目的。功能界面出现的顺序通常通常可以反映用户处理日常业务的方式。可以反映用户处理日常业务的方式。用户的任务
24、和工作特征用户的任务和工作特征:应用的使用方式、:应用的使用方式、使用频率、雇员的流动率、任务的重要性、使用频率、雇员的流动率、任务的重要性、任务的重复性、对培训的期望、工作类型等。任务的重复性、对培训的期望、工作类型等。用户的心理特征用户的心理特征:工作态度、能动性、认知:工作态度、能动性、认知方式等。方式等。2626软件工程软件工程2727软件工程软件工程3)理解优秀界面设计的原则理解优秀界面设计的原则 目的是加强视觉效目的是加强视觉效果。果。确保应用的各个界面之间风格的一致性确保应用的各个界面之间风格的一致性:习:习惯、步骤、视觉和感觉、位置等。惯、步骤、视觉和感觉、位置等。揣测用户通常
25、开始操作的地点揣测用户通常开始操作的地点导航系统尽量简捷导航系统尽量简捷使用分组和分层来强调重要性级别使用分组和分层来强调重要性级别4)选择合适的窗口类型选择合适的窗口类型 五类窗口:五类窗口:属性窗口属性窗口:展示实体的属性:展示实体的属性对话窗口对话窗口:完成特定任务或命令的信息:完成特定任务或命令的信息2828软件工程软件工程消息窗口消息窗口:提供信息:提供信息面板窗口面板窗口:展示一组控件:展示一组控件弹出窗口弹出窗口:突出显示信息:突出显示信息5)制作系统菜单制作系统菜单 为用户提供一个稳定的、易于为用户提供一个稳定的、易于理解的使用环境,可以方便地搜寻需要的选项。理解的使用环境,可
26、以方便地搜寻需要的选项。提供一个主菜单提供一个主菜单显示所有相关选择(仅局限于此)显示所有相关选择(仅局限于此)将菜单结构与应用要完成的任务对应起来将菜单结构与应用要完成的任务对应起来尽量减少菜单的级数尽量减少菜单的级数2929软件工程软件工程6)选择合适的基于设备的控件选择合适的基于设备的控件 提供给用户,向提供给用户,向系统发送指示的实际手段,包括系统发送指示的实际手段,包括鼠标鼠标、键盘键盘、触摸屏触摸屏、绘图板绘图板、轨迹球轨迹球、麦克风麦克风等。等。7)选择合适的基于界面的控件选择合适的基于界面的控件 即出现在屏幕上即出现在屏幕上的符号。用户通过这些符号向系统提出他的输的符号。用户通
27、过这些符号向系统提出他的输入和操作意图,包括入和操作意图,包括图标图标、按钮按钮、复选框复选框、单单选框选框等。等。8)组织和安排窗口布局组织和安排窗口布局 多窗口的排列规则,如多窗口的排列规则,如平铺、层叠等。平铺、层叠等。9)选择合适的颜色选择合适的颜色 尽量保持简捷和低调。颜色尽量保持简捷和低调。颜色需要和谐。需要和谐。3030软件工程软件工程5.2 5.2 面向对象面向对象分析分析n分析建模的目的是对来自客户的需求形式化。形式分析建模的目的是对来自客户的需求形式化。形式化可以导致新的洞察和发现需求错误。化可以导致新的洞察和发现需求错误。n1999年年NASA损失了一颗价值数亿美元的气象
28、卫星,损失了一颗价值数亿美元的气象卫星,据调查是因为列在度量表中的控制数据出了问题。据调查是因为列在度量表中的控制数据出了问题。不巧的是这个缺陷在灾难发生几天之前才刚发现,不巧的是这个缺陷在灾难发生几天之前才刚发现,如果在需求分析阶段就被识别出来就可避免损失了。如果在需求分析阶段就被识别出来就可避免损失了。n避免需求错误或遗漏的第一道防线就是把所有的需避免需求错误或遗漏的第一道防线就是把所有的需求细化,建立分析模型。求细化,建立分析模型。3131软件工程软件工程n分析模型由三个独立的模型构成:由分析模型由三个独立的模型构成:由用例用例和和场景场景表表示的示的功能模型功能模型;用;用类类和和对象
29、对象表示的表示的分析对象模型分析对象模型;由由状态图状态图和和顺序图顺序图表示的表示的动态模型动态模型。n在需求获取阶段得到的用例模型就是功能模型。据在需求获取阶段得到的用例模型就是功能模型。据此可导出分析对象模型和动态模型。此可导出分析对象模型和动态模型。n需要注意,这些模型代表的是需要注意,这些模型代表的是来自客户的概念来自客户的概念,而,而非实际软件类或实际构件。如数据库、子系统、会非实际软件类或实际构件。如数据库、子系统、会话管理器、网络等,不应出现在分析模型中,因为话管理器、网络等,不应出现在分析模型中,因为这些概念仅与实现相关。这些概念仅与实现相关。n分析中的类可以看作是分析中的类
30、可以看作是高层抽象高层抽象,在后续阶段将使,在后续阶段将使用更多的细节实现。用更多的细节实现。3232软件工程软件工程n在分析对象模型中有在分析对象模型中有实体对象实体对象、边界对象边界对象和和控制对控制对象象等三种类型。等三种类型。n实体对象实体对象表示系统将跟踪的持久信息;表示系统将跟踪的持久信息;边界对象边界对象表表示参与者与系统之间的交互(接口);示参与者与系统之间的交互(接口);控制对象控制对象负负责用例的实现责用例的实现。n ControlControlEntityEntityActorActorBoundary参与者参与者 边界对象边界对象 控制对象控制对象 实体对象实体对象图示
31、图示3333软件工程软件工程n使用实体对象、边界对象和控制对象等概念使用实体对象、边界对象和控制对象等概念对系统建模时,常常需要提供一些简单的启对系统建模时,常常需要提供一些简单的启发式规则来指导开发人员使用这些概念,可发式规则来指导开发人员使用这些概念,可以使用相应的类来跟踪。以使用相应的类来跟踪。n这些概念源自需求获取阶段。这些概念源自需求获取阶段。3434软件工程软件工程n分析建模活动包括以下步骤。分析建模活动包括以下步骤。1)标识实体对象标识实体对象自然语言分析法自然语言分析法 利用利用Abbott启发式准则,将启发式准则,将语言成分映射为模型成分。语言成分映射为模型成分。语言成分模型
32、成分示例专有名词专有名词实例实例人员乙人员乙普通名词普通名词类类现场工作人员现场工作人员Doing动词动词操作操作创建、提交、选择创建、提交、选择Being动词动词继承继承是是的一种,是的一种,是中的一个中的一个Having动词动词聚合聚合有有,由,由组成,包括组成,包括情态动词情态动词约束约束必须是必须是形容词形容词属性属性事件描述事件描述3535软件工程软件工程自然语言分析法主要关注用户术语。限制有自然语言分析法主要关注用户术语。限制有识别质量高度依赖人们的书写风格;识别质量高度依赖人们的书写风格;可能会出现许多无关词汇,或同义词。可能会出现许多无关词汇,或同义词。检查每一个用例,标识候选
33、对象检查每一个用例,标识候选对象用例中的连续名词用例中的连续名词(如借阅事件)(如借阅事件);系统需要跟踪的现实世界中的实体系统需要跟踪的现实世界中的实体(如借阅(如借阅记录、书目信息)记录、书目信息);系统需要跟踪的现实世界中的活动系统需要跟踪的现实世界中的活动(如紧急(如紧急情况操作预案)情况操作预案);数据源或数据潭数据源或数据潭(如读者、管理员)(如读者、管理员)。3636软件工程软件工程2)标识边界对象标识边界对象在用例图中,每一个参与者至少要与一个边界在用例图中,每一个参与者至少要与一个边界对象交互。边界对象收集来自参与者的信息,对象交互。边界对象收集来自参与者的信息,将它们转换为
34、可用于实体对象和控制对象的表将它们转换为可用于实体对象和控制对象的表示形式。示形式。边界对象对用户界面进行粗略的建模,不涉及边界对象对用户界面进行粗略的建模,不涉及如菜单项、滚动条等可视方面的细节。如菜单项、滚动条等可视方面的细节。标识边界对象的启发式准则如下:标识边界对象的启发式准则如下:标识用户所需初始用例的用户界面控制标识用户所需初始用例的用户界面控制;标识用户需要键入系统的数据表格标识用户需要键入系统的数据表格;标识通知和系统用于响应用户的消息标识通知和系统用于响应用户的消息;3737软件工程软件工程当用例中有多个参与者时,根据构想的用户当用例中有多个参与者时,根据构想的用户界面来标识
35、参与者的行为界面来标识参与者的行为;不要使用边界对象对接口的可视方面建模,不要使用边界对象对接口的可视方面建模,应使用用户原型对可视用户界面建模应使用用户原型对可视用户界面建模;使用用户的术语来描述接口,不要使用来自使用用户的术语来描述接口,不要使用来自设计和实现的术语。设计和实现的术语。3)标识控制对象标识控制对象控制对象负责协调实体对象和边界对象。控制对象负责协调实体对象和边界对象。控制对象没有在现实世界中具体的对应物,它控制对象没有在现实世界中具体的对应物,它通常从边界对象处收集信息,并把这些信息分通常从边界对象处收集信息,并把这些信息分配给实体对象。配给实体对象。3838软件工程软件工
36、程图书管理系统中的实体对象图书管理系统中的实体对象Borrower:读者。他们可以借阅、返还、预约和:读者。他们可以借阅、返还、预约和取消预约。因为名字可能重复,可用读者取消预约。因为名字可能重复,可用读者ID识别。识别。Title:书目。它表明某一种书,通过:书目。它表明某一种书,通过ISBN号码识号码识别。别。Book:图书。它表明某一种书目的具体物理复本,:图书。它表明某一种书目的具体物理复本,通过馆藏号码识别。通过馆藏号码识别。Loan:借阅记录。同一个人关于不同图书的借阅:借阅记录。同一个人关于不同图书的借阅记录是不同的。记录是不同的。Reservation:预约记录。:预约记录。3
37、939软件工程软件工程图书管理系统中的边界对象图书管理系统中的边界对象mainWindow:主窗口。有借书、还书、预约、:主窗口。有借书、还书、预约、取消预约、添加书目、修改书目、删除书目、添取消预约、添加书目、修改书目、删除书目、添加读者、修改读者、删除读者、添加图书、删除加读者、修改读者、删除读者、添加图书、删除图书等操作。图书等操作。BorrowerDialog:读者对话框。有添加读者、修:读者对话框。有添加读者、修改读者、删除读者等操作。改读者、删除读者等操作。FindBwrDialog:弹出对话框。有根据读者:弹出对话框。有根据读者ID查查找读者的操作。找读者的操作。TitleDia
38、log:书目对话框。有添加书目、修改书:书目对话框。有添加书目、修改书目、删除书目等操作。目、删除书目等操作。4040软件工程软件工程FindTDialog:弹出对话框。根据图书的:弹出对话框。根据图书的ISBN号号码查找书目。码查找书目。BorrowDialog:借书对话框。根据书目的:借书对话框。根据书目的ISBN号码和读者信息,执行借阅动作,创建和保存号码和读者信息,执行借阅动作,创建和保存借阅记录。借阅记录。ReturnDialog:还书对话框根据图书的馆藏号:还书对话框根据图书的馆藏号码,执行还书动作,删除借阅记录。码,执行还书动作,删除借阅记录。ReserveDialog:预约对话
39、框。根据书目的:预约对话框。根据书目的ISBN号码和读者信息,执行预约、取消预约动作。号码和读者信息,执行预约、取消预约动作。MessageWindow:显示提示信息窗口。:显示提示信息窗口。LoginDialog:输入用户名和密码的窗口。:输入用户名和密码的窗口。4141软件工程软件工程4)使用顺序图将用例映射为对象使用顺序图将用例映射为对象顺序图将用例与对象联系起来,直观地描述了顺序图将用例与对象联系起来,直观地描述了用例(场景)行为在其参与对象之间是如何实用例(场景)行为在其参与对象之间是如何实施的。施的。顺序图顺序图对用例中各参与对象之间的交互序列进对用例中各参与对象之间的交互序列进行
40、建模行建模。每一个消息从一个对象(或参与者)。每一个消息从一个对象(或参与者)发送给另一个对象(或参与者)。消息的接受发送给另一个对象(或参与者)。消息的接受就触发了一个操作。就触发了一个操作。通过顺序图,将责任以操作集合的形式分配给通过顺序图,将责任以操作集合的形式分配给每一个对象。如果一个对象参与到多个用例,每一个对象。如果一个对象参与到多个用例,则其操作应为这些用例共享。则其操作应为这些用例共享。4242软件工程软件工程画顺序图的启发式准则如下:画顺序图的启发式准则如下:顺序图第一栏对应激活该用例的参与者顺序图第一栏对应激活该用例的参与者;顺序图第二栏是边界对象顺序图第二栏是边界对象;顺
41、序图第三栏是管理用例中其他参与对象的顺序图第三栏是管理用例中其他参与对象的控制对象控制对象;通过边界对象来初始化用例,并创建控制对通过边界对象来初始化用例,并创建控制对象象;通过控制对象可创建其他边界对象通过控制对象可创建其他边界对象;实体对象允许边界对象和控制对象访问实体对象允许边界对象和控制对象访问;实体对象不能访问边界对象和控制对象实体对象不能访问边界对象和控制对象;4343软件工程软件工程借书用例的顺序图借书用例的顺序图:mainWindow:BorrowDialog:Title:Book:Borrower:Loan:Librarian1:borrow()2:createDialog(
42、)3:borrow()4:findTitle(string)5:getTitle()6:getAvaliableBook()7:findBorrower(string)8:newLoan(OID,OID,Date)9:store()10:getBorrower(OID)11:update()12:addLoan(OID)13:getObject(OID)14:setLoan(OID)15:update()4444软件工程软件工程还书用例的顺序图还书用例的顺序图:mainWindow:ReturnDialog:Book:Borrower:Loan:Librarian1:return()2:cre
43、ateDialog()3:return()4:findBook(Integer)5:getObject(OID)6:getLoan()7:getBorrower()8:setLoan(null)9:update()10:delLoan(OID)11:update()12:delete()4545软件工程软件工程5)使用使用CRC卡片对对象之间的交互建模卡片对对象之间的交互建模CRC是类、职责和协作的缩写。每一个类可用是类、职责和协作的缩写。每一个类可用一张一张CRC卡片表示。卡片表示。建立建立CRC卡片有以下几个卡片有以下几个步骤:步骤:识别类和职责识别类和职责:首先识别类或对象,然后从首先识
44、别类或对象,然后从客户需求说明中寻找有关行为的描述,以发客户需求说明中寻找有关行为的描述,以发现职责。现职责。将职责分配到类将职责分配到类:记录在相应的卡片上。:记录在相应的卡片上。找寻协作者找寻协作者:依次检查每一类承担的责任,:依次检查每一类承担的责任,看是否需要其他类的帮助,找寻与每个类协看是否需要其他类的帮助,找寻与每个类协作的伙伴,并记录在相应卡片上。作的伙伴,并记录在相应卡片上。4646软件工程软件工程 职责职责 显示欢迎词显示欢迎词 密码验证器密码验证器 接收磁卡接收磁卡 菜单选择器菜单选择器 让密码验证器检验让密码验证器检验 启动菜单选择器启动菜单选择器 退出磁卡退出磁卡 类名
45、类名 读卡机读卡机 协作协作职责职责 从账户中取出密码从账户中取出密码 账户账户 如无此账户返回假值如无此账户返回假值 提示客户输入密码提示客户输入密码 读入密码读入密码 比较核实比较核实,返回结果返回结果 类名类名 密码验证器密码验证器 协作协作职责职责 检查账户有效性检查账户有效性 返回密码返回密码 检查取款检查取款/存款信息存款信息类名类名 账户账户职责职责 显示菜单显示菜单 存款管理器存款管理器 等待客户选择等待客户选择 取款管理器取款管理器 调用相应的调用相应的 存款存款/取款管理器取款管理器类名类名 菜单选择器菜单选择器 协作协作职责职责 询问取款额询问取款额 账户账户 要求验证账
46、户要求验证账户 出银机出银机 启动出银机发款启动出银机发款类名类名 取款管理器取款管理器 协作协作4747软件工程软件工程细化细化:模拟在执行每个基本功能时系统内部:模拟在执行每个基本功能时系统内部出现的场景,以此推动细化工作的进行。出现的场景,以此推动细化工作的进行。在模拟一个场景的过程中,每当一个类开始在模拟一个场景的过程中,每当一个类开始“执行执行”时,它的卡片就被拿出来讨论,当时,它的卡片就被拿出来讨论,当“控控制制”传送到另一个类时,注意力就从前一张卡传送到另一个类时,注意力就从前一张卡片转移到另一张上去了。不同的场景,包括例片转移到另一张上去了。不同的场景,包括例外和出错状况,都应
47、逐一加以模拟。外和出错状况,都应逐一加以模拟。在这个过程中可以验证已有的定义,不断发现在这个过程中可以验证已有的定义,不断发现新的类、职责以及伙伴。新的类、职责以及伙伴。在模拟不同的场景中会发现某些职责需要重新在模拟不同的场景中会发现某些职责需要重新加以分配。这些都导致进一步的开发工作。加以分配。这些都导致进一步的开发工作。4848软件工程软件工程6)标识关系(结构)标识关系(结构)使用类图,能够表示对象之间的关系。使用类图,能够表示对象之间的关系。关联表示了两个或多个类之间的关系。标识关关联表示了两个或多个类之间的关系。标识关联的启发式准则如下:联的启发式准则如下:检查指示状态的动词或动词短
48、语;检查指示状态的动词或动词短语;准确地命名关联和角色;准确地命名关联和角色;尽量使用常用的修饰词标识出名字空间和关尽量使用常用的修饰词标识出名字空间和关键属性;键属性;消除可导出其他关联的关联;消除可导出其他关联的关联;在关联集合稳定之前不必关心重复性;在关联集合稳定之前不必关心重复性;过多的关联使得一个模型不可读;过多的关联使得一个模型不可读;4949软件工程软件工程a)建立系统的包图(主题)建立系统的包图(主题)建立包图是为了降低复杂性,目的是建立包图是为了降低复杂性,目的是控制可控制可见度见度及及指引读者的思路指引读者的思路。对于面向对象分析模型,主题表示此模型的对于面向对象分析模型,
49、主题表示此模型的整体框架。可以是一个层次结构。整体框架。可以是一个层次结构。通过对主题的识别,可以让人们能够比较清通过对主题的识别,可以让人们能够比较清晰地了解大而复杂的模型晰地了解大而复杂的模型。LibraryGUIDataBase5050软件工程软件工程b)建立边界类的类图建立边界类的类图标明类之间的关系,包括关联、泛化等。标明类之间的关系,包括关联、泛化等。messageWindowloginDialogreturnDialogborrowerDialogreserveDialogmainWindowfindTDialogborrowDialogfindBwrDialogTitleDia
50、log5151软件工程软件工程c)建立实体类的类图建立实体类的类图这些类与数据库相关,为了操作方便,以它这些类与数据库相关,为了操作方便,以它们为子类,建立一个持久类(们为子类,建立一个持久类(Persistent)作)作为它们的父类,共享与数据库相关的操作。为它们的父类,共享与数据库相关的操作。BookBorrowerReservationTitleLoanPersistent(from DataBase)110.1*0.*0.*0.*0.*115252软件工程软件工程d)建立边界类与实体类之间关系的类图建立边界类与实体类之间关系的类图Book(from Library)110.1*0.*1