《java面向对象软件开发.pptx》由会员分享,可在线阅读,更多相关《java面向对象软件开发.pptx(168页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、清华大学计算机系清华大学计算机系 谌卫军谌卫军第第1010章章 面向对象软件面向对象软件开发开发教学内容教学内容2团队(团队(team)1软件过程软件过程2软件需求软件需求3面向对象分析与设计面向对象分析与设计4软件测试软件测试5Why work in teams?Why work in teams?团队的重要性团队的重要性双拳难敌四手,好汉架不住人多双拳难敌四手,好汉架不住人多一个篱笆三个桩,一个好汉三个帮一个篱笆三个桩,一个好汉三个帮三个臭皮匠,胜过诸葛亮三个臭皮匠,胜过诸葛亮众人拾柴火焰高众人拾柴火焰高人心齐,泰山移人心齐,泰山移3Why work in teams?Why work i
2、n teams?4Why work in teams?Why work in teams?任务分工任务分工分而治之分而治之“如果一个人粉刷一栋房子需要如果一个人粉刷一栋房子需要4 4个小个小时,请问时,请问1010个人粉刷一栋房子需要多个人粉刷一栋房子需要多长时间?长时间?”5十个人刷房子十个人刷房子能否在能否在2424分钟内粉刷完分钟内粉刷完如果只有如果只有3 3把刷子?把刷子?如果如果1010个人当中只有一个人个人当中只有一个人会会刷?刷?如果如果1010个粉刷工的熟练程度不同?个粉刷工的熟练程度不同?如果如果1010个粉刷工的工作时间不同?个粉刷工的工作时间不同?6时间时间 vs.vs.
3、人数人数7可分解的任务人数月份不可分解的任务月份人数人多力量大?人多力量大?8组成团队的目标组成团队的目标9失败的团队1+1 2分工明确分工明确 定岗定编定岗定编10人员选择人员选择了解个人是组建团队的前提了解个人是组建团队的前提长处长处短处短处现有技能现有技能工作的内在动力工作的内在动力性格类型性格类型11成员互补成员互补团队成员具有互补性团队成员具有互补性性格互补、技术互补性格互补、技术互补家庭团队:内外、强弱、家庭团队:内外、强弱、男女葫芦娃团队:葫芦娃团队:12西游记西游记团队团队13人员人员优点优点缺点缺点团队作用团队作用唐僧意志坚定目标明确上司支持领导力有限,业务能力为零项目经理孙
4、悟空业务能力最强性情急躁不服管束不善沟通核心技术骨干猪八戒业务能力较强、性格开朗、情商高你懂的团队润滑油沙和尚忠厚老实踏实肯干缺少能力缺乏主见后勤管理团队成员人数团队成员人数14团队成员人数团队成员人数15沟通与交流成本沟通与交流成本164人团队双向沟通:6小组个数:114 4人增加到人增加到6 6人人174人团队6人团队双向沟通:6-15小组个数:11-57向一个进度延迟的软件项目中增加人员可能会使其更加推迟。组建一个软件开发团队组建一个软件开发团队18需求:定岗定编需求:定岗定编供给:人员选择、角色分配供给:人员选择、角色分配软件开发团队角色软件开发团队角色19角色角色管理人员管理人员开发
5、人员开发人员支持人员支持人员咨询顾问咨询顾问项目经理项目经理项目组长项目组长系统分析员系统分析员系统架构师系统架构师设计人员设计人员编程人员编程人员测试人员测试人员文档管理员文档管理员配置管理员配置管理员领域专家领域专家技术专家技术专家客户客户最终用户最终用户负责规划整个项目过程,协调和分配资源,管理整个项目团队,制定软件项目计划,并执行和监控项目实施过程。开发团队角色开发团队角色20项目经理项目经理负责引导和协调系统的需求获取,确定系统边界与质量范围,建立系统的功能需求模型,文档化和组织系统需求。系统分析员系统分析员 负责引导和协调整个项目的技术活动,确定软件构架和 关键技术决策,确定设计元
6、素分组及其接口。架构设计师架构设计师负责指定子系统的分析设计,按照规范编写子系统的相关 代码,并测试所开发的组件。设计开发人员设计开发人员负责制定测试计划,编写测试用例和测试程序,通过执行系统测试发现和跟踪系统缺陷。开发团队角色开发团队角色21测试人员测试人员负责管理一个项目组所产生的不同版本开发制品,包括文档、模型和代码等。配置管理员配置管理员客户负责提供对系统高层次的目标要求;最终用户负责提供使用系统的功能需求和非功能需求。用户用户领域专家负责提供应用系统中某个具体领域的专门知识;技术专家负责提供关于系统实现方案方面的知识。咨询顾问咨询顾问团队规模团队规模22典型的团队组成典型的团队组成2
7、3项目组长(1人)测试(1人)程序员(23人)美工(1人)教学内容教学内容24团队(团队(team)1软件过程软件过程2软件需求软件需求3面向对象分析与设计面向对象分析与设计4软件测试软件测试51 1、软件过程、软件过程25产品产品开发过程开发过程产品产品开发过程开发过程反馈反馈新清华学堂大剧院新清华学堂大剧院26穿越历史,如何建造新清穿越历史,如何建造新清华学堂大剧院华学堂大剧院.需求分析需求分析27角色角色需求描述需求描述校长以以“普及高雅艺术、传承优秀文化、推进文化建设普及高雅艺术、传承优秀文化、推进文化建设”为宗旨,大力引进高水平专业演出和邀请艺术名为宗旨,大力引进高水平专业演出和邀请
8、艺术名家来清华讲课,实现艺术的育人功能和文化传承创家来清华讲课,实现艺术的育人功能和文化传承创新功能,服务学校人才培养和大学文化建设。新功能,服务学校人才培养和大学文化建设。分管领导“能演出高水平大中型歌舞剧、举办隆重仪典和国能演出高水平大中型歌舞剧、举办隆重仪典和国际会议际会议”,一般的说法是,一般的说法是“歌剧院式的礼堂歌剧院式的礼堂”校办基建处专业级的声学效果专业级的声学效果20002000座席座席属于文保控建区域,建筑物限高属于文保控建区域,建筑物限高2222米,米,演出大厅、排练厅、多功能厅、化妆间、排练厅、演出大厅、排练厅、多功能厅、化妆间、排练厅、接待室等接待室等设计设计28日本
9、建筑大师矶崎新设计所、日本建筑大师矶崎新设计所、北京市建筑设计研究院和清北京市建筑设计研究院和清华大学建筑设计研究院参与华大学建筑设计研究院参与竞标,清华建筑设计研究院竞标,清华建筑设计研究院胜出。胜出。整体设计整体设计外观设计外观设计室内设计室内设计实现实现29新清华学堂的建设施工单位为中国建筑公司。新清华学堂的建设施工单位为中国建筑公司。软件过程软件过程30l软件过程是为了获得高质量软件而实施的一系列活动,它定义了工作任务、项目里程碑、交付物和质量保证点。软件过程制品软件过程制品312 2、软件过程模型、软件过程模型32软件过程模型是软件过程软件过程模型是软件过程的抽象表示的抽象表示.Wh
10、yWhy软件过程模型?软件过程模型?33客户客户开发团队开发团队非定制商品非定制商品34做出来是啥就是啥,争议主要在商品质量和价格做出来是啥就是啥,争议主要在商品质量和价格简单定制商品简单定制商品35软件是复杂定制商品软件是复杂定制商品36客户需深入参与软件系统的构造过程,但是客户需深入参与软件系统的构造过程,但是.客户客户程序员程序员l客户只知自身业客户只知自身业务,不懂软件;务,不懂软件;l客户只知大概,客户只知大概,不知细节;不知细节;l客户的想法可能客户的想法可能变化变化l交流开销与障碍交流开销与障碍l不是做出来是啥不是做出来是啥就是啥,但客户就是啥,但客户有时也不知要啥有时也不知要啥
11、肿么办?肿么办?软件过程模型软件过程模型常见的软件过程模型常见的软件过程模型瀑布模型瀑布模型(Waterfall Model)原型化模型(原型化模型(Prototype Model)迭代开发(迭代开发(Iterative Development)37瀑布模型瀑布模型38l瀑布模型的开发阶段严格按照线性方式进行,每一个阶段具有相关的里程碑和交付产品,且需要确认和验证。瀑布模型瀑布模型适用场合适用场合适用于在开发的适用于在开发的早期阶段早期阶段软件需求被完整软件需求被完整确定的软件项目确定的软件项目缺点缺点开发过程中间很难响应客户的变更要求开发过程中间很难响应客户的变更要求早期的错误可能要等到开发
12、后期的测试阶早期的错误可能要等到开发后期的测试阶段才能发现段才能发现客户客户不能不能尽早看到软件的效果尽早看到软件的效果39原型化模型原型化模型40l原型化模型需要迅速建造一个可以运行的软件原型,以便理解和澄清问题,使开发人员与用户达成共识。用户驱动的交互用户驱动的交互式系统式系统小型或中等规模小型或中等规模的系统的系统迭代开发迭代开发41l迭代开发是利用迭代的思想,使人们渐进地开发软件,逐步完善软件版本。l类型:增量模型、迭代模型增量模型与迭代模型增量模型与迭代模型42增量模型:适用于需求较明确、架构较稳定的软件开发增量模型:适用于需求较明确、架构较稳定的软件开发迭代模型:适用于需求不甚明确
13、、难度较大的软件开发迭代模型:适用于需求不甚明确、难度较大的软件开发增量模型举例增量模型举例43迭代模型举例迭代模型举例44迭代模型举例迭代模型举例45举例:手机开发项目举例:手机开发项目46教学内容教学内容47团队(团队(team)1软件过程软件过程2软件需求软件需求3面向对象分析与设计面向对象分析与设计4软件测试软件测试51 1、什么是软件需求、什么是软件需求48从用户的角度,描述要解从用户的角度,描述要解决的问题,不考虑具体的决的问题,不考虑具体的实现方案实现方案.What to do,not how to do 需求的重要性需求的重要性49需求的重要性需求的重要性50需求的重要性需求的
14、重要性51据英国媒体报道,据英国媒体报道,西班牙地中海城西班牙地中海城市贝尼多尔姆为市贝尼多尔姆为了吸引高端游客,了吸引高端游客,展示城市新形象,展示城市新形象,在海边建起号称在海边建起号称全欧盟最高的全欧盟最高的4747层的摩天楼。但层的摩天楼。但近日人们发现了近日人们发现了一个意想不到的一个意想不到的悲剧悲剧摩天楼摩天楼眼看要完工,建眼看要完工,建造商却忘了装电造商却忘了装电梯。梯。软件需求的定义软件需求的定义52用户解决问题或达到目标所需的条件或能力用户解决问题或达到目标所需的条件或能力系统或系统部件要满足合同、标准、规范或其它正式规定系统或系统部件要满足合同、标准、规范或其它正式规定文
15、档所需具有的条件或能力。文档所需具有的条件或能力。一种反映上面一种反映上面 或或 所描述的条件或能力的文档说明。所描述的条件或能力的文档说明。IEEE,1999需求是指明必须实现什么的规格说明。它描述了系统的行为、需求是指明必须实现什么的规格说明。它描述了系统的行为、特性或属性,是在开发过程中对系统的约束。特性或属性,是在开发过程中对系统的约束。Sommerville软件需求的层次软件需求的层次53用户需求用户需求从用户期望角度出发,提出的为了解从用户期望角度出发,提出的为了解决用户实际问题而提出的系统在功能决用户实际问题而提出的系统在功能或非功能上应该具备的各种特性。或非功能上应该具备的各种
16、特性。通常使用自然语言、图表和直观的图通常使用自然语言、图表和直观的图形进行描述,只描述系统的外部行为,形进行描述,只描述系统的外部行为,便于用户阅读和理解。便于用户阅读和理解。软件需求的层次软件需求的层次54系统需求系统需求详细地描述系统将要提供的功能或服详细地描述系统将要提供的功能或服务以及系统所受到的约束和限制,它务以及系统所受到的约束和限制,它可能成为客户与软件开发商之间开发可能成为客户与软件开发商之间开发合同的重要内容。合同的重要内容。通常使用更专业化的符号系统进行描通常使用更专业化的符号系统进行描述,包括结构化语言、需求的图形模述,包括结构化语言、需求的图形模型、形式化数学描述等。
17、型、形式化数学描述等。软件需求的层次软件需求的层次55虽然我很可爱,但却是个电脑盲要是能在网上交电话费那就太方便了,我去问问软件工程师方世玉世玉,帮我做一个软件,能够上网缴电话费登录缴费系统输入电话号码并验证正确性查询费用连接网上银行缴费赞!软件需求的类型软件需求的类型56功能需求功能需求系统应该提供的服务、如何对输入做系统应该提供的服务、如何对输入做出反应以及系统在特定条件下的行为出反应以及系统在特定条件下的行为描述。描述。通常涉及用户或外部系统与该系统之通常涉及用户或外部系统与该系统之间的交互,一般不考虑系统的实现细间的交互,一般不考虑系统的实现细节。节。软件需求的类型软件需求的类型57非
18、功能需求非功能需求对系统提供的服务或功能给出的约束,对系统提供的服务或功能给出的约束,包括时间约束、开发过程的约束、标包括时间约束、开发过程的约束、标准等。准等。通常应用于整个系统而不是单个特性通常应用于整个系统而不是单个特性或服务。或服务。软件需求的类型软件需求的类型58软件需求的类型软件需求的类型59软件需求的类型软件需求的类型60程序化交易系统?程序化交易系统?可靠性的重要性可靠性的重要性6120132013年年8 8月月1616日,光大事件日,光大事件2 2、需求获取、需求获取需求获取的关键在于通过与用户的沟通需求获取的关键在于通过与用户的沟通和交流,收集和理解用户的各项要求。和交流,
19、收集和理解用户的各项要求。需求获取的困难需求获取的困难用户通常并不真正知道自己希望计算机系用户通常并不真正知道自己希望计算机系统做什么统做什么用户通常使用业务语言表达需求,而开发用户通常使用业务语言表达需求,而开发人员缺乏相关的领域知识和经验,难以准人员缺乏相关的领域知识和经验,难以准确理解这些需求确理解这些需求不同的用户提出不同的需求,可能存在矛不同的用户提出不同的需求,可能存在矛盾和冲突盾和冲突62需求获取的困难需求获取的困难63需求获取的困难需求获取的困难64写需求就像盲人摸象写需求就像盲人摸象65语言歧义语言歧义66Shoes Must Be WornDogs Must Be Carr
20、iedlMust I carry a dog?lWhat about the new shoes in my shopping bag?lDo dogs have to wear shoes?lWhat are shoes?lWhat are dogs?需求获取的困难需求获取的困难67一产品经理被绑,蒙眼,惊问:一产品经理被绑,蒙眼,惊问:“你们想干什么?你们想干什么?”,对方不语,鞭笞之。,对方不语,鞭笞之。产品经理求饶:产品经理求饶:“别打,想劫财?我给你们钱!别打,想劫财?我给你们钱!”,又一鞭。,又一鞭。“想劫色?可我是男的啊?想劫色?可我是男的啊?”,又一鞭。,又一鞭。产品经理崩溃了
21、:产品经理崩溃了:“你们你们TMDTMD到底想要啥?到底想要啥?”程序员:程序员:“想要啥?我们帮你做项目,写代码的时想要啥?我们帮你做项目,写代码的时候,也很想知道你候,也很想知道你TMDTMD到底想要啥!到底想要啥!”需求获取方法需求获取方法683 3、用例建模方法、用例建模方法用例建模方法是使用用例建模方法是使用UMLUML语言的用例图定义系语言的用例图定义系统的功能需求,它是从系统外部观看系统功统的功能需求,它是从系统外部观看系统功能,并不描述系统内部对功能的具体实现。能,并不描述系统内部对功能的具体实现。69WhyWhy用例建模?用例建模?70传统的软件需求说明书基本上采用的是功能分
22、解的传统的软件需求说明书基本上采用的是功能分解的方式来描述系统功能。方式来描述系统功能。子系统子系统1 1 功能功能 模块模块1.1 1.1 功能功能 模块模块1.2 1.2 功能功能 子系统子系统2 2 功能功能 模块模块2.1 2.1 功能功能 模块模块1.2 1.2 功能功能 缺点:l 缺少主语缺少主语l 缺少各部分之间的关联关系缺少各部分之间的关联关系植物大战僵尸植物大战僵尸71l 撑杆(僵尸)撑杆(僵尸)l 潜水(僵尸)潜水(僵尸)l 鸭子救生圈鸭子救生圈 l 双子向日葵双子向日葵-向日葵向日葵 l 火球火球-豌豆射手豌豆射手 +火炬树桩火炬树桩 用例模型用例模型参与者参与者(Act
23、or)参与者是与系统交互的外部实体。参与者是与系统交互的外部实体。参与者既可以是使用该系统的用户,也可参与者既可以是使用该系统的用户,也可以是与系统交互的其他外部系统、硬件设以是与系统交互的其他外部系统、硬件设备或组织机构。备或组织机构。72用例模型用例模型用例(用例(Use Case)用例是从用户角度描述系统的行为,表示用例是从用户角度描述系统的行为,表示系统所提供的某项服务。系统所提供的某项服务。通讯关联通讯关联(Communication Association)用于表示参与者和用例之间的对应关系。用于表示参与者和用例之间的对应关系。73用例模型用例模型74银行自动提款机的银行自动提款机
24、的主要功能可用下列主要功能可用下列用例图表示:用例图表示:建立用例模型建立用例模型用例建模:使用用例方法来描述系统的用例建模:使用用例方法来描述系统的功能需求功能需求用例图:确定系统中所包含的参与者、用用例图:确定系统中所包含的参与者、用例和两者之间的对应关系,用例图描述的例和两者之间的对应关系,用例图描述的是关于系统功能的一个概述。是关于系统功能的一个概述。用例规格说明:针对每一个用例都应该有用例规格说明:针对每一个用例都应该有一个用例规格说明文档与之相对应,该文一个用例规格说明文档与之相对应,该文档描述了用例的细节内容。档描述了用例的细节内容。75建立用例模型的步骤建立用例模型的步骤76确
25、定参与者确定参与者谁在使用系统?它们在与系统的交谁在使用系统?它们在与系统的交互中扮演什么角色?互中扮演什么角色?确定用例确定用例确定用例,建立参与者与用例之间确定用例,建立参与者与用例之间的联系,绘制用例图。的联系,绘制用例图。编写用例编写用例 描述描述规格说明参与者与系统之间是如何规格说明参与者与系统之间是如何进行交互的。进行交互的。确定参与者确定参与者确定参与者的问题确定参与者的问题系统开发完成后,有哪些人会使用该系统系统开发完成后,有哪些人会使用该系统?系统会为哪些人或其他系统提供数据?系统会为哪些人或其他系统提供数据?系统需要从哪些人或其他系统中获得数据系统需要从哪些人或其他系统中获
26、得数据?系统是由谁来维护和管理的?系统是由谁来维护和管理的?系统会与哪些其他系统相关联?系统会与哪些其他系统相关联?77确定参与者确定参与者78确定用例确定用例确定用例的问题确定用例的问题参与者需要从系统中获得什么功能?参与参与者需要从系统中获得什么功能?参与者需要做什么?者需要做什么?参与者是否会在系统中创建、修改、删除、参与者是否会在系统中创建、修改、删除、访问、存储数据?访问、存储数据?系统是否会将内部的某些事件通知该参与系统是否会将内部的某些事件通知该参与者?参与者是否会将外部的某些事件通知者?参与者是否会将外部的某些事件通知给该系统?给该系统?系统的输入系统的输入/输出信息是什么?输
27、出信息是什么?79确定用例确定用例80确定用例确定用例81编写用例描述文档编写用例描述文档82编写用例描述文档编写用例描述文档83编写用例描述文档编写用例描述文档基本事件流:正常执行的基本步骤基本事件流:正常执行的基本步骤基本流第一句:基本流第一句:当当 执行执行 时,本用例开始执行时,本用例开始执行事件流由简短步骤序列组成,它们应该是陈事件流由简短步骤序列组成,它们应该是陈述性的、编号的和时间排序的,每个步骤建述性的、编号的和时间排序的,每个步骤建议具有下列格式:议具有下列格式:或或 执行执行 84取款基本事件流取款基本事件流当用户执行当用户执行“取款取款”功能时,本用例开始执行功能时,本用
28、例开始执行1.1.用户插入银行卡用户插入银行卡2.2.用户输入密码用户输入密码3.3.用户输入取款金额用户输入取款金额4.4.用户取走现金用户取走现金5.5.用户退出系统,取回银行卡用户退出系统,取回银行卡85系统验证密码?系统验证密码?编写用例描述文档编写用例描述文档备选事件流:异常执行的情况备选事件流:异常执行的情况触发方式触发方式1 1:备选流可以替代基本流被触发:备选流可以替代基本流被触发触发方式触发方式2 2:在基本流的特定步骤被触发:在基本流的特定步骤被触发:备选流在基本流步骤备选流在基本流步骤后开始执行后开始执行触发方式触发方式3 3:在基本流中任意时刻被触发:在基本流中任意时刻
29、被触发 备选流在基本流任意时刻开始执行备选流在基本流任意时刻开始执行如果希望备选流能够返回到基本流,可以这如果希望备选流能够返回到基本流,可以这样描述:样描述:备选流返回到基本流的步骤备选流返回到基本流的步骤86取款备选事件流取款备选事件流备选流备选流1 1:用户可以在基本流中的任何一步选择退:用户可以在基本流中的任何一步选择退 出,转至基本流步骤出,转至基本流步骤5 5。备选流备选流2 2:在基本流步骤:在基本流步骤1 1中,用户插入无效银行中,用户插入无效银行 卡,系统显示错误并退出银行卡,用例卡,系统显示错误并退出银行卡,用例 结束。结束。备选流备选流3 3:在基本流步骤中,用户输入错误
30、密码:在基本流步骤中,用户输入错误密码 ,系统显示错误并提示用户重新输入密,系统显示错误并提示用户重新输入密 码,重新回到基本流步骤码,重新回到基本流步骤2 2;三次输入;三次输入 密码错误后,银行卡被系统没收,用例密码错误后,银行卡被系统没收,用例 结束。结束。87教学内容教学内容88团队(团队(team)1软件过程软件过程2软件需求软件需求3面向对象分析与设计面向对象分析与设计4软件测试软件测试51 1、概述、概述89需求获取任务完成需求分析软件设计Why分析?分析?90l20122012年年7 7月月2121日北京遭遇了日北京遭遇了6161年年一遇的特大暴雨,死亡一遇的特大暴雨,死亡37
31、37人人l德国人在德国人在100100多年前设计修建的多年前设计修建的青岛下水道仍然运行良好,让青岛下水道仍然运行良好,让青岛远离内涝青岛远离内涝l北京的排水管网干线设计标准北京的排水管网干线设计标准通常为一年一遇至三年一遇通常为一年一遇至三年一遇软件设计软件设计91设计的本质设计的本质在在2020世纪世纪9090年代,年代,Lotus 1-2-3的发明的发明人人Mitch Kapor在在Dr.Dobbs杂志上发杂志上发表表“软件设计宣言软件设计宣言”,其中指出:,其中指出:“什么是设计?设计是你身处两个世界什么是设计?设计是你身处两个世界技术世界和人类的目标世界技术世界和人类的目标世界而而你
32、尝试将这两个世界结合在一起你尝试将这两个世界结合在一起”什么是软件设计什么是软件设计92软件设计的目标软件设计的目标93设计的目标:质量设计的目标:质量设计是软件工程中形成质量的关键阶段设计是软件工程中形成质量的关键阶段外部质量:面向最终用户。如易用性、效外部质量:面向最终用户。如易用性、效率、可靠性、正确性、完整性等率、可靠性、正确性、完整性等内部质量:面向软件工程师。如可维护性、内部质量:面向软件工程师。如可维护性、灵活性、可重用性、可测试性等灵活性、可重用性、可测试性等“设计良好的建筑应该展示出坚固、适用和令设计良好的建筑应该展示出坚固、适用和令人赏心悦目人赏心悦目”-”-罗马建筑批评家
33、罗马建筑批评家VitruviusVitruvius软件设计元素软件设计元素94软件设计元素软件设计元素(2)(2)95体系结构体系结构如同人的骨骼;如同人的骨骼;子系统(或模块)子系统(或模块)如同人的器官,具有如同人的器官,具有特定的功能;特定的功能;数据结构与算法数据结构与算法如同人的血脉和神经,如同人的血脉和神经,分布在体系结构和模块中,协调系统的分布在体系结构和模块中,协调系统的各个功能;各个功能;用户界面用户界面如同人的外表。如同人的外表。象人类追求心灵美和外表美那样,软件象人类追求心灵美和外表美那样,软件系统也追求(内在的)功能强大和(外系统也追求(内在的)功能强大和(外表的)界面
34、友好。表的)界面友好。96 软件分析与设计软件分析与设计结构化方法结构化方法面向对象方法面向对象方法2 2、UML语言言97统一建模语言(统一建模语言(UML)Unified Modeling Language一种可视化建模语言,它提供了一组一种可视化建模语言,它提供了一组具有明确语义的图形符号,可以建立具有明确语义的图形符号,可以建立清晰的模型便于人们交流和理解,并清晰的模型便于人们交流和理解,并为所有重要的分析、设计和实现决策为所有重要的分析、设计和实现决策提供了准确、完整的描述。提供了准确、完整的描述。软件开发过程软件开发过程98上世纪上世纪9090年代初,出现许多年代初,出现许多图形化
35、描述方法图形化描述方法UML的出现的出现99三个主要玩家聚集在三个主要玩家聚集在Booch的公司的公司Booch,Rumbaugh,JacobsonRational Software Corporation将他们的想法合并,推出:将他们的想法合并,推出:UML语言语言相关的软件工具(相关的软件工具(Rational Rose)Rational Software Process并购了其他公司并购了其他公司(Purify,Quantify,)UML的历史的历史100UML 1.0(Jan.97)UML 1.1(Sept.97)UML 1.5(March,03)UML 2.0(2004)Other
36、MethodsBooch 91OMT-1OOSEBooch 93 OMT-2Unified Method 0.8(OOPSLA 95)UML 0.9(June 96)UML 0.91(Oct.96)andCurrent version=2.4UML是什么是什么101UML是什么?是什么?一种图形化表示法,已成为工业标准一种图形化表示法,已成为工业标准覆盖了软件开发的全过程,包括项目覆盖了软件开发的全过程,包括项目规划、需求获取、需求分析、系统设规划、需求获取、需求分析、系统设计、测试等计、测试等只是一种只是一种表达工具表达工具,以图的方式来看,以图的方式来看待系统,便于开发人员的交流和理解,待
37、系统,便于开发人员的交流和理解,而非方法论而非方法论UML是什么是什么102五线谱能精确表达简谱所能表达的所有内容,它的使用范围更广、谱面上能体现的信息更丰富也更精确,它根据谱号的不同音位亦可移动,能满足几乎所有音域、所有乐器、所有作品类型的记谱需要,是音乐中的世界语UML是什么是什么103结构图结构图电力图电力图管道图管道图 UML UML提供不同角度的系统模型提供不同角度的系统模型104Actor AUse Case 1Use Case 2Actor B DocumentFileManagerGraphicFileFileRepositoryDocumentListFileListCust
38、omernameaddrwithdraw()fetch()send()receive()Forward Engineering(Code Generation)and Reverse EngineeringExecutable SystemUser InterfaceDefinitionDomain ExpertUse Case 3Source Code edit,compile,debug,linkUse-Case DiagramClass DiagramCollaboration DiagramSequence DiagramComponent DiagramState DiagramPa
39、ckage DiagramDeployment DiagramClassA model is a complete description of a system from a particular perspective3 3、类图、类图105类图类图(Class Diagram)描述系统的静态结构,表示系统中的描述系统的静态结构,表示系统中的类、类与类之间的关系以及类的属性类、类与类之间的关系以及类的属性和操作和操作可用于需求分析、系统设计和详细设可用于需求分析、系统设计和详细设计等环节计等环节UML:UML:类类106Obj:AClassUMLUML:类:类107UMLUML:关系:关系
40、108关系是建模元素之间的语义联系,它是关系是建模元素之间的语义联系,它是UML将事物联系到一起的方法。将事物联系到一起的方法。泛化关系泛化关系109泛化(泛化(Generalization)“is a”关系,继承关系,一般类关系,继承关系,一般类/特特殊类,父类殊类,父类/子类,基类子类,基类/派生类派生类类与类之间的关系,而非对象类与类之间的关系,而非对象聚合关系聚合关系110聚合(聚合(Aggregation):表示类之间):表示类之间的整体与部分的关系的整体与部分的关系part-of如何实现?组合关系组合关系111组合(组合(Composition):一种特殊形式的):一种特殊形式的聚
41、合,更强的所属关系,组合关系中的聚合,更强的所属关系,组合关系中的部分与整体具有部分与整体具有相同的相同的生存期生存期关联关系关联关系112关联(关联(Association):两个类之间):两个类之间存在某种语义联系存在某种语义联系可有多少个对象参与该关联可有多少个对象参与该关联l1 11 1个(默认值)个(默认值)l*0 0个或多个个或多个l0 0.1,11,1.*区间范围区间范围l2,42,4指定值指定值关联关系关联关系113导航(导航(Navigation):从源类到目):从源类到目标类标类RadiologistLawyer咨询咨询RadiologistLawyer咨询咨询关联关系关联
42、关系114关联和属性关联和属性:源类和目标类之间的关联:源类和目标类之间的关联意味着源类的对象能够具有到目标类对意味着源类的对象能够具有到目标类对象的对象引用。象的对象引用。l 双向关联l 多重关联关联关系关联关系115关联类关联类:当两个类具有多对多关系时,:当两个类具有多对多关系时,有时存在一些属性,它们不能简单地放有时存在一些属性,它们不能简单地放入任何一个类中。入任何一个类中。类图举例类图举例116双骰子游戏:玩家投掷两个骰子,如双骰子游戏:玩家投掷两个骰子,如果总和为果总和为7 7,则为赢;否则为输。,则为赢;否则为输。类图举例类图举例117双骰子游戏:玩家双骰子游戏:玩家投掷两个骰
43、子,如投掷两个骰子,如果总和为果总和为7 7,则为赢;,则为赢;否则为输。否则为输。哪几个类?类的属性哪几个类?类的属性和操作?和操作?类与类之间的关系?类与类之间的关系?DiceGamePlayerDie能否两个类?能否两个类?方案方案1 1118l如果想让如果想让PlayerPlayer类更通用,如类更通用,如允许玩别的游戏允许玩别的游戏l如果想修改游戏规则?应该把如果想修改游戏规则?应该把规则封装在哪里?规则封装在哪里?lDiceGameDiceGame包含了骰子,如何使包含了骰子,如何使这些骰子对这些骰子对PlayerPlayer可见?可见?有何问题?有何问题?方案方案1 1119cl
44、ass Player public boolean play(Die dice)int roll_1=dice0.roll();int roll_2=dice1.roll();/rule:if the sum of the rolls equals 7,player wins return(roll_1+roll_2)=7)?true:false;方案方案2 2120方案方案2 2121class DiceGame private Die dice2;private Display display;public void play()int roll_1=dice0.roll();int ro
45、ll_2=dice1.roll();/rule:if the sum of the rolls equals 7,player wins if(roll_1+roll_2)=7)display.message(You won!);else display.message(You lost.Try again.);4 4、时序图、时序图122时序图(时序图(Sequence Diagram)描述对象间的交互,表示完成某项行描述对象间的交互,表示完成某项行为的对象和这些对象之间传递消息的为的对象和这些对象之间传递消息的时间顺序时间顺序类图描述的是系统的静态观点,而时类图描述的是系统的静态观点,而时
46、序图描述的是系统的动态行为观点序图描述的是系统的动态行为观点时序图时序图1232 2分分4343秒,秒,1 1号,一传号,一传2 2分分4545秒,秒,5 5号,二传号,二传2 2分分4646秒,秒,6 6号,扣球号,扣球时序图时序图124ObjectName:ClassName:ClassNameObjectName时序图时序图125时序图时序图126时序图时序图1275 5、面向对象分析、面向对象分析128面向对象分析面向对象分析(Object Oriented Analysis):分析问题域):分析问题域确定问题域中的类以及类之间的关系确定问题域中的类以及类之间的关系确定类的属性和操作确
47、定类的属性和操作I want the iPod to play musicMusicPlayer分析类的概念分析类的概念129识别分析类识别分析类130识别分析类的方法识别分析类的方法名词名词/动词分析法动词分析法RUP(Rational Unified Process)构构造型造型CRC模型法模型法名词名词/动词分析法动词分析法131名词名词/动词分析法动词分析法这是一种运用语言分析的简单方法,这是一种运用语言分析的简单方法,即从文本描述中识别出有关的名词或即从文本描述中识别出有关的名词或动词,尝试找出类、属性和职责动词,尝试找出类、属性和职责名词和名词短语暗示着类或类的属性,名词和名词短语
48、暗示着类或类的属性,动词和动词短语暗示着职责或者类的动词和动词短语暗示着职责或者类的操作操作举例举例132猫是一种动物,它有一条猫是一种动物,它有一条尾巴,尾巴会摇晃。尾巴,尾巴会摇晃。举例举例133The customer enters the store to buy a toy.It has to be a toy that his daughter likes and it must cost less than 50 Euro.He tries a videogame,which uses a data glove and a head-mounted display.He like
49、s it.An assistant helps him.The suitability of the game depends on the age of the child.His daughter is only 3 years old.The assistant recommends another type of toy,namely the boardgame“Monopoly.从词性到模型元素从词性到模型元素134 Part of speech Proper noun Improper noun Doing verb being verb having verb modal ver
50、b adjective transitive verb intransitive verbUML model componentobjectclassoperationinheritance aggregationconstraintattributeoperationconstraint,class,associationExample“Monopoly”ToyBuy,recommendis-ahas anmust bedangerousenterdepends on生成类图生成类图135videogameThe customer enters the store to buy a toy.