- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.面向对象分析和设计 对创建对象系统来说,了解面向对象语言是必要的,单不是首先要做的。 了解“对象思想”才是关键所在。 1.1UML和对象思想 UML是标准的图形化表示法,并不是OOA/D,没有掌握如何创建优秀的面向对象设计,或者如何评估和改进现有设计,那么学习UML或者UML CASE工具是毫无意义的。 对象思想才是重点和难点。 1.2OOD的原则和模式 系统设计中的关键问题: 应该如何为对象分配职责(Responsibility)? 对象之间应该如何协作? 什么样的类应该做什么样的事? 模式:某些针对设计问题的,经过反复验证的解决方案可以(和已经)被表示为最佳时间的原则、起始或模式(pattern),即问题-解决方案公式,这些公式是系统化的、典范的设计原则。 1.3用例 OOD(以及所有软件设计)与作为其先决活动的需求分析(requirements analysis)具有紧密联系,而在需求分析中通常包含用例的编写。 1.4什么是分析和设计 分析(analysis)强调的是对问题和需求的调查和研究,而不是解决方案。 需求分析:对需求的调查研究。 面向对象分析:对领域对象的调查研究。 设计(design):强调的是满足需求的概念(逻辑)上的解决方案(在软件和硬件方面),而不是实现。例如,对数据库方案和软件对象的描述。设计细想通常排斥底层或“显而易见”的细节。最终,设计可以实现,而实现(入如代码)则表达了真实而完整的设计。 1.5什么是面向对象分析和设计 在面向对象分析过程中,强调的是在问题领域内发现和描述对象(或概念)。 例如,在航班信息系统中包含飞机、航班、和飞行员 在面向对象设计过程中,强调的是定义软件对象以及如何写作以实现需求。 例如,软件对象Plane可以有tailNumber属性和getFlightHistory方法。 最后,在实现或面向对象程序设计过程中,会实现设计出来的对象,入Java中的Plane类。 1.5面向对象的分析与设计例子 一个简单的例子—“掷骰子游戏”(dice game),在这个游戏中游戏者掷出两个骰子。如果总点数为7就赢了,否则就输了。 1.5.1定义用例 需求分析可能包括人们如何使用应用的情节或场景,这些情节或场景可以被编写为用例(Use Case)。 用例不是面向对象制品,而只是对情节的记录。但用例是需求分析中的一种常用工具。 骰子游戏: 1.5.2定义领域模型 面向对象分析关注从对象的角度创建领域描述,需要鉴别重要的概念、属性和关联。结果可以表示为领域模型(domain model)(展示重要的领域概念或对象)。 领域模型不是对软件对象的描述,而是真是世界领域中的概念和想象的可视化。因此也被称为概念对象模型(conceptual object model)。 1.5.3分配对象职责并绘制交互图 1.5.4定义设计类图 2.迭代、进化和敏捷 迭代开发是OOA/D成为最佳实践的核心。 敏捷实践是有效应用UML的关键。 UP是相对流行的、示范性的迭代方法。 相对于顺序或“瀑布”(waterfall)生命周期,迭代和进化式开发对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常会在还没有详细定义所有需求的情况下开始开发,同时使用反馈来明确和改进演化中的规格说明。 依赖于短时快速的开发步骤、反馈和改写来不断明确需求和设计。 2.1UP 软件开发过程:描述了构造、部署以及维护软件的方式。 统一过程已经成为一中流行的构造面向对象系统的迭代软件开发过程。 UP把普遍认可的最佳实践结合起来,成为联系紧密并具有良好文档的过程描述。 2.2迭代和进化式开发 迭代开发(iterative development)是UP和大多数其他现代方法中的关键实践。在这种生命周期法中,开发被组织成一系列国定的短期小项目,称为迭代(iteration);每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试活动。 迭代生命周期基于对经过多次迭代的系统进行持续扩展和精化,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。随着时间和一次又一次迭代的递进,系统增量式地发展完善,因此这一方法也被称为迭代增量式开发。 因为反馈和调整使规格说明和设计不断进化,所以这种方法也被称为迭代和进化式开发。 2.3为什么要使用迭代开发 减少项目失败的可能性,提高生产率,降低缺陷率。 在早期缓解高风险 早期可见的进展 早期反馈、用户参与和调整,会产生更接近涉众真是需求的精化系统。 可控复杂性:团队不会被“分析瘫痪”或长期且复杂的步骤所淹没。 一次迭代中的经验可以被系统地用于改进开发过程本身,并如此反复进行下去。 2.4一次迭代持续的时间 在每个开发周期中有一个实用的策略,那
文档评论(0)