软件工程ppt10面向对象分析课件.ppt
面向对象分析面向对象分析OOA( (Object-Oriented Analysis) )的目标是完成对所求解问题的分析,确定系统的目标是完成对所求解问题的分析,确定系统“作作什么什么”,并建立系统的,并建立系统的模型。模型。 运用面向对象的方法运用面向对象的方法,对问题域和系统责任进行分析和理对问题域和系统责任进行分析和理解,找出描述它们的类和对象,定义其属性和操作,及其结解,找出描述它们的类和对象,定义其属性和操作,及其结构、静态联系和动态联系。构、静态联系和动态联系。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物1、问题域和系统责任问题、问题域和系统责任问题 问题域问题域(problem domain) 被开发系统的应用领域。被开发系统的应用领域。 系统责任系统责任(system responsibilities) 所开发的系统应具备的所开发的系统应具备的职能。职能。2、交流问题、交流问题(各类人员之间的要求)(各类人员之间的要求)3、需求的不断变化、需求的不断变化(用户、竞争因素、经费、技术因素)(用户、竞争因素、经费、技术因素)我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物OOA分析过程分析过程我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物用户与开发者之间进行充分交流,常用用户与开发者之间进行充分交流,常用User case(User case(用例用例)来收集和描述用户的需求。即先标识使用该系统的不同的行来收集和描述用户的需求。即先标识使用该系统的不同的行为者为者( (actor)actor)。在确定系统的用例后,可标识在确定系统的用例后,可标识类及类的属性和操作。类及类的属性和操作。,对象可能的形式有:外部实体对象可能的形式有:外部实体 、事物、发生的事件、事物、发生的事件、角色、组织单位、场所、构造物等。角色、组织单位、场所、构造物等。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物: 一般一般特殊特殊 ( (generalization - specialization) )结构结构 整体整体部分部分( (whole-part) )结构结构我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物构成类图的元素所表达的模型信息,构成类图的元素所表达的模型信息,分为分为给出系统中所有反映问题域给出系统中所有反映问题域和和系统责任的对象。系统责任的对象。给出类(对象)的内部特征,给出类(对象)的内部特征,即类的属性和操作。即类的属性和操作。给出各类(对象)之间的关给出各类(对象)之间的关系,包括继承、系,包括继承、组装、一般组装、一般特殊特殊 、整整体体部分、属性的静态依赖关系,操作的部分、属性的静态依赖关系,操作的动态依赖关系。动态依赖关系。对象层对象层特征层特征层关系层关系层图4.8 OOA基本模型 用用“对象对象- -关系模型关系模型”描述了系统的静态结构。描述了系统的静态结构。 描述了系统的动态行为。描述了系统的动态行为。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物、名词识别法、名词识别法识别问题域中的实体,实体的描述通常用识别问题域中的实体,实体的描述通常用名词、名词短语、名词性代词的形式出现。名词、名词短语、名词性代词的形式出现。用指定语言对系统进行描述;用指定语言对系统进行描述;从系统描述中标识名词、名词短语、名词从系统描述中标识名词、名词短语、名词性代词;性代词;识别确定(取、舍)类。识别确定(取、舍)类。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物、系统实体识别法、系统实体识别法不关心系统的运作流程及实体之间不关心系统的运作流程及实体之间的通信状态,而只考虑系统中的人员、的通信状态,而只考虑系统中的人员、组织、地点、表格、报告等实体,经过组织、地点、表格、报告等实体,经过分析将他们识别为类(或对象)。分析将他们识别为类(或对象)。被标识的实体有:系统需要存储、被标识的实体有:系统需要存储、分析、处理的信息实体、系统内部需要分析、处理的信息实体、系统内部需要处理的设备、与系统交互的外部系统、处理的设备、与系统交互的外部系统、系统相关人员、系统的组织实体。系统相关人员、系统的组织实体。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物两个或多个类之间的相互依赖关系就是关联两个或多个类之间的相互依赖关系就是关联,关联通关联通常用描述性动词和动词词组表示常用描述性动词和动词词组表示图2 银行网络系统的初始对象类图总行总行分行分行帐户帐户储户储户中央计算机中央计算机ATM远程事务远程事务分行计算机分行计算机柜员柜员现金卡现金卡柜员终端柜员终端柜员事务柜员事务通通信信通通信信拥拥有有拥拥有有拥拥有有雇雇佣佣涉涉及及涉涉及及访访问问授授权权拥拥有有拥拥有有拥有拥有组成组成录入录入输输入入输入输入我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 图3 银行网络系统的部分属性ATM分发现金分发现金远程事务远程事务种类种类,日期日期,时间时间,数量数量储户储户名字名字地址地址现金卡现金卡密码密码雇员号雇员号站代码站代码分行分行名字名字帐户号帐户号卡片码卡片码银行码银行码分行计算机分行计算机帐户帐户余额、类型余额、类型贷款限定贷款限定柜员柜员名字名字柜员事务柜员事务柜员终柜员终端端银行码银行码总行总行中央计算中央计算机机银行码银行码站代码站代码我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图4图图4 银行网络系统的对象模型银行网络系统的对象模型银行码银行码柜员柜员终端终端输入输入站站远程事务远程事务帐户帐户余额、类余额、类型型贷款限定贷款限定储户储户名字名字地址地址柜员柜员名字名字现金现金卡卡密码密码事务事务种类种类,日期日期,时间时间,数数量量中央计算中央计算机机银行码银行码站代码站代码银行码银行码总行总行ATM分发现金分发现金柜员事柜员事务务雇雇员员号号站站代代码码总行总行名字名字帐户号帐户号卡片码卡片码银行码银行码分行计算机分行计算机我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 图图5图图5 修改后的对象模型修改后的对象模型输入输入站站远程事务远程事务现金卡现金卡银行名、卡片银行名、卡片码码安全号安全号柜员事务柜员事务柜员柜员名字名字柜员柜员终端终端分行分行银行码银行码站代码站代码帐户帐户余额、类余额、类型型贷款限定贷款限定储户储户名字名字地址地址ATM分发现金分发现金事务事务种类、日期、时间、种类、日期、时间、数量数量卡片权卡片权限限密码、限密码、限制制更新更新数量、类数量、类型型雇雇员员号号站站代代码码分行分行名字名字帐户号帐户号卡片码卡片码输入输入组成组成拥拥有有拥拥有有雇雇用用访问访问标识标识发行发行被被录录入入开开始始涉涉及及维持维持有有有有我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物自动取款机与用户交互的正常的脚本如下所示:自动取款机与用户交互的正常的脚本如下所示: 自动取款机请求储户插入卡片;用户插入现金卡。自动取款机请求储户插入卡片;用户插入现金卡。自动取款机接受卡片并读出它的卡号。自动取款机接受卡片并读出它的卡号。 自动取款机要求密码,用户键入密码自动取款机要求密码,用户键入密码“4011”“4011”。 自动取款机与总行确认卡号和密码;分行检查它并通知承兑的自动取款自动取款机与总行确认卡号和密码;分行检查它并通知承兑的自动取款机。机。自动取款机要求选择事务类型(取款、存款、转户及查询),储户选择自动取款机要求选择事务类型(取款、存款、转户及查询),储户选择取款。取款。自动取款机要求现金数量;储户输入¥自动取款机要求现金数量;储户输入¥100100。自动取款机要求总行处理事务;总行把要求转给分行,确认事务成功。自动取款机要求总行处理事务;总行把要求转给分行,确认事务成功。自动取款机分发现金并且要求储户取现金;储户取现金。自动取款机分发现金并且要求储户取现金;储户取现金。自动取款机提示储户是否想继续;储户指出不继续。自动取款机提示储户是否想继续;储户指出不继续。自动取款机打印收据,退出卡,并请求储户取出它们;储户拿走收据和自动取款机打印收据,退出卡,并请求储户取出它们;储户拿走收据和卡。卡。自动取款机请求储户插入。自动取款机请求储户插入。我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 自动取款机请求储户插入卡;储户插入现金卡。自动取款机请求储户插入卡;储户插入现金卡。 自动取款机接受卡并读它的卡号。自动取款机接受卡并读它的卡号。 自动取款机要求密码;储户键入:自动取款机要求密码;储户键入:99999999:。:。 自动取款机与总行确认卡号和密码,在咨询分行后拒绝自动取款机与总行确认卡号和密码,在咨询分行后拒绝它。它。 自动取款机指示密码错并要求重新键入;储户键入:自动取款机指示密码错并要求重新键入;储户键入:40114011:,总行确认成功。:,总行确认成功。 自动取款机请求储户选择事务类型;储户选择取款。自动取款机请求储户选择事务类型;储户选择取款。 自动取款机请求键入现金数量;储户改变选择并键入自动取款机请求键入现金数量;储户改变选择并键入“CANCEL”CANCEL”(取消)。取消)。 自动取款机退出卡并且请求储户拿走卡;储户取出卡。自动取款机退出卡并且请求储户拿走卡;储户取出卡。 自动取款机请求储户插入卡。自动取款机请求储户插入卡。自动自动取款取款机与用户交互的例外的脚本如下所示:机与用户交互的例外的脚本如下所示: 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 图图6 银行网络系统的事件追综图银行网络系统的事件追综图储户储户自动取款机自动取款机总行总行分行分行确认帐号确认帐号插入卡插入卡要求密码要求密码输入密码输入密码要求类型要求类型输入类型输入类型要求数量要求数量输入数量输入数量分发现金分发现金要求取现金要求取现金取现金取现金提示继续提示继续终止终止打印收椐打印收椐退出卡退出卡要求取卡要求取卡取卡取卡显示屏显示屏确认银行卡确认银行卡银行帐户正确银行帐户正确处理银行事务处理银行事务银行事务成功银行事务成功帐户正确帐户正确处理事务处理事务事务成功事务成功我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 图图7系统系统的事件的事件图图自动取款机的事件流图自动取款机的事件流图图7 银行网络系统的事件图用户用户分行分行ATM总行总行确认卡及银行,处理银行事务确认卡及银行,处理银行事务分行事务成功、失败,分行帐户正确分行事务成功、失败,分行帐户正确事务成功、事务失败、事务成功、事务失败、帐户正确、不正确帐户、帐户正确、不正确帐户、密码、银行代码密码、银行代码插入卡,输入密码,类型,取现金,取卡插入卡,输入密码,类型,取现金,取卡不显示主屏可读卡不显示主屏可读卡,要求密码、类型、数量要求密码、类型、数量,取消取消信息,分发现金,要求继续,不正确帐户信息信息,分发现金,要求继续,不正确帐户信息确认帐户确认帐户处理事务处理事务我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 为重要的类建立状态图为重要的类建立状态图图图8 “自动取款机自动取款机”类的状态图类的状态图检查检查do:要求密码要求密码核对核对do:确认帐户确认帐户选择选择do:要求类型要求类型输数据输数据do:要求数量要求数量开始开始do:显示屏显示屏插插入入插入插入密码密码帐户帐户正确正确输入输入类型类型取取卡卡片片不可读不可读do:不可读卡信息不可读卡信息取消取消do:取消信息取消信息帐户错误帐户错误do:帐户错误信息帐户错误信息失败失败do:失败信息失败信息取取消消取取消消插插入入卡卡卡片退出卡片退出do:退出卡退出卡,取卡片取卡片结束结束do:打印收据打印收据继续否继续否do:请求继续请求继续发现金发现金do:请求继续请求继续事物事物do:处理事务处理事务事务事务成功成功取现金取现金终终止止取取消消输输入入事事务务帐帐户户错错取消取消取取消消密码错密码错事事务务失失败败等等秒秒我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图9分行类的分行类的状态图状态图 图图9 “总行总行”类的状态图类的状态图do:处理处理分行事务分行事务do:确认确认分行代码分行代码do:确认确认卡卡正确代码正确代码分行事务成功事务成功分行事务成功事务成功处理事务处理事务确认帐户确认帐户错误代码错的分理处代码错误代码错的分理处代码错的分错的分行行帐户帐户 错的帐户错的帐户错的分错的分行行帐户帐户 错的密码错的密码分分行行密码密码 帐户帐户分分行行事务失败事务失败事务失败事务失败我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物do:更新更新帐户帐户do:确认确认卡片号卡片号do:确认确认密码密码有效有效成功分成功分行行事务成功事务成功处理分处理分行行事务事务确认分确认分行行与卡片与卡片无效错的分无效错的分行行帐户帐户无效错的分无效错的分行行密码密码 有效有效 分分行行帐户帐户失败分失败分行行事务失败事务失败图图10 “分行分行”类的状态图类的状态图我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物、确定输入、输出值、确定输入、输出值先列出输入、输出值,输入输出值是系统与外部先列出输入、输出值,输入输出值是系统与外部世界之间的事件的参数。检测问题陈述,从中找出遗世界之间的事件的参数。检测问题陈述,从中找出遗漏的所有输入输出值。由于所有系统与外部世界之间漏的所有输入输出值。由于所有系统与外部世界之间的交互都经过自动出纳机,因而所有输入输出值都是的交互都经过自动出纳机,因而所有输入输出值都是自动出纳机事件的参数。图给出了自动出纳机的输入自动出纳机事件的参数。图给出了自动出纳机的输入输出值。输出值。图11 自动出纳机的输入输出值现金卡现金卡储户储户自动取款机自动取款机卡片码卡片码帐户类型帐户类型事务类型事务类型密码密码现金现金收据收据信息信息我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 自动出纳机自动出纳机顶层数据流顶层数据流图图2 2、建立数据流图、建立数据流图数据流图说明输出值是怎样从输入值数据流图说明输出值是怎样从输入值 得来的,数据流图通常按层次得来的,数据流图通常按层次组织。最顶层由单个处理组成,也可由收集输入、计算值及生成结果的一组织。最顶层由单个处理组成,也可由收集输入、计算值及生成结果的一个综合处理构成。图给出自动出纳机顶层数据流图。个综合处理构成。图给出自动出纳机顶层数据流图。将顶层图中的处理扩展成更低层次的数据流图,如果第二层次图中的将顶层图中的处理扩展成更低层次的数据流图,如果第二层次图中的处理仍包含一些可细化的处理,它们还可继续扩展,图处理仍包含一些可细化的处理,它们还可继续扩展,图1313是图是图1212中中“执行执行事务事务”处理的扩展。处理的扩展。图12 自动取款机顶层数据流图现金卡现金卡储户储户读输入读输入执行事务执行事务产生输出产生输出帐户帐户结算结算银行码银行码 卡码卡码密码密码数量数量事务类型事务类型现金现金收据收据信息信息帐户类型帐户类型我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物图图13 自动出纳机自动出纳机“执行事务执行事务”数数据流图据流图图13 自动取款机“执行事务”数数据流据流图更新帐户更新帐户选择帐户选择帐户确认密码确认密码选择卡选择卡选择分行选择分行总行总行银行码银行码银行码银行码卡码卡码无效卡码无效卡码不正确密码不正确密码卡授权密码卡授权密码密码密码帐户类型帐户类型帐户帐户不正确帐户不正确帐户无效事务无效事务现金、收据现金、收据数量、事务类型数量、事务类型帐户帐户不正确的银行码不正确的银行码我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物 3、描述处理当数据流图已细化到一定程度后,对各处理进行描述,当数据流图已细化到一定程度后,对各处理进行描述,描述方法用自然语言、伪码及判定树等,描述可以是说明的描述方法用自然语言、伪码及判定树等,描述可以是说明的或过程的。或过程的。说明性描述确定了输入、输出值之间的关系。说明性描述优说明性描述确定了输入、输出值之间的关系。说明性描述优于过程性描述,因为它隐含实现的考虑。过程性描述确定一于过程性描述,因为它隐含实现的考虑。过程性描述确定一个算法来实现处理功能,算法只是用来确定处理干什么。过个算法来实现处理功能,算法只是用来确定处理干什么。过程性描述实现起来较为容易。程性描述实现起来较为容易。下面给出下面给出“更新帐户更新帐户”处理的描述:处理的描述: 我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物IF IF 取款数目超过当前帐户结算,取款数目超过当前帐户结算, 退出事务,不发现金退出事务,不发现金 IF IF 取款数目不超过当前帐户结算,取款数目不超过当前帐户结算, 记帐并分发要求的现金记帐并分发要求的现金 IF IF 事务是存款,事务是存款, 建立帐户并无现金分发建立帐户并无现金分发 IF IF 事务是状态请求,事务是状态请求, 无现金分发无现金分发 在任何情况在任何情况 收据显示自动取款机编号、日期、时间、帐户编号,收据显示自动取款机编号、日期、时间、帐户编号, 事务类型,数量(若有)以及新的结算。事务类型,数量(若有)以及新的结算。