面向对象的分析和设计

面向对象的分析和设计)是一种通过应用程序分析和设计应用程序,系统或业务的技术方法面向对象的编程,以及在整个软件开发过程中使用视觉建模来指导利益相关者的沟通和产品质量。

现代软件工程中的OOAD通常以迭代和增量方式进行。OOAD活动的输出分别是分析模型(用于OOA)和设计模型(用于OOD)。其目的是要连续完善和进化,这是由风险和业务价值等关键因素驱动的。

历史

在1990年代中期之前的面向对象技术的早期,软件开发和面向对象的建模,经常与特定计算机辅助软件工程(案例)工具供应商。当时没有标准符号,一致的条款和过程指南是主要问题,这降低了沟通效率并延长了学习曲线。

一些著名的早期面向对象的方法来自并受到诸如诸如的专家的启发Grady Booch詹姆斯·伦贝伊瓦尔·雅各布森(这三个Amigos),罗伯特·马丁彼得·科德莎莉·谢勒(Sally Shlaer)斯蒂芬·梅洛(Stephen Mellor), 和丽贝卡·维尔夫(Rebecca Wirfs-Brock).

在1994年,三个Amigos理性软件的开始共同开发统一的建模语言(UML)。后来,和Philippe Kruchten和沃克·罗伊斯(Walker Royce)温斯顿·罗伊斯(Winston Royce)),他们领导了一个成功的使命,以合并自己的方法论,OMTOose布希方法,具有其他行业领导者的各种见解和经验合理的统一过程(RUP),《学习行业的软件开发和项目管理最佳实践》的全面迭代和增量过程指南和框架。[1]从那以后,统一过程家庭可能已成为面向对象的分析和设计的最受欢迎的方法和参考模型。

概述

软件生命周期通常分为从问题的抽象描述到设计,然后再进行编码和测试,然后再进行部署。此过程的最早阶段是分析和设计。分析阶段通常也称为“需求获取”。

OOAD是以迭代和增量方式进行的,由统一过程.

在某些软件开发的方法中(统称为瀑布模型),每个阶段之间的边界旨在相当僵化和顺序。为这种方法创造了“瀑布”一词,以表示进度仅在一个方向上依次进行,即,一旦完成分析完成,只有那时才开始设计,并且在设计问题时很少见(并被认为是错误的来源)需要更改分析模型或编码问题需要更改设计时。

瀑布模型的替代方法是迭代模型。这种区别被普及Barry Boehm在他的螺旋模型上的一篇非常有影响力的论文中,用于迭代软件开发。通过迭代模型,可以并行在模型的各个阶段进行工作。因此,例如,在同一天进行分析,设计甚至代码,并从一个阶段遇到影响问题的问题。对迭代模型的强调是,软件开发是一个知识密集的过程,并且在不理解设计问题的情况下,无法真正完全理解诸如分析的过程,编码问题可能会影响设计,测试可以产生有关代码甚至如何的信息设计应修改,等等。[2]

尽管可以使用瀑布模型进行面向对象的开发,但实际上,大多数面向对象的系统都是通过迭代方法开发的。结果,在面向对象的过程中,通常同时考虑“分析和设计”。

面向对象的范式强调模块化和可重复性。面向对象的方法的目标是满足“开放原则”。如果模块支持扩展,则打开一个模块,或者该模块提供了添加新行为或描述新状态的标准化方法。在面向对象的范式中,这通常是通过创建现有类的新子类来完成的。如果模块具有所有其他模块必须使用的稳定接口,则关闭该模块,并限制了可以通过更改将可以引入一个模块的相互作用和潜在错误。在面向对象的范式中,这是通过定义在对像上调用服务的方法来完成的。方法可以是公共或私人的,即对象所唯一的某些行为不会暴露于其他对象。这减少了计算机编程中许多常见错误的来源。[3]

软件生命周期通常分为从问题的抽象描述到设计,然后再进行编码和测试,然后再进行部署。此过程的最早阶段是分析和设计。分析和设计之间的区别通常被描述为“什么与如何”。在分析中,开发人员与用户和域专家合作,定义系统应该做什么。在此阶段,实施细节应该大部分或完全(取决于特定方法)忽略。分析阶段的目的是创建系统的功能模型,而不管适当的技术等约束。在面向对象的分析中,这通常是通过用例和最重要对象的抽象定义完成的。随后的设计阶段完善了分析模型,并做出了所需的技术和其他实施选择。在面向对象的设计中,重点是描述各种对象,它们的数据,行为和交互。设计模型应具有所需的所有详细信息,以便程序员可以在代码中实现设计。[4]

面向对象的分析

任何分析活动的目的软件生命周期是为独立于实现约束的系统功能要求创建模型。

面向对象的分析和其他形式的分析之间的主要区别在于,通过面向对象的方法,我们组织了围绕对象的要求,这些方法整合了以对象(过程)和以现实世界对象进行建模的行为(过程)和状态(数据)。在其他或传统的分析方法中,这两个方面:过程和数据被单独考虑。例如,数据可以通过ER图和行为流程图或者结构图.

OOA中使用的常见模型是用例,对像模型.用例描述系统必须完成的标准域功能的方案。对像模型描述了名称,类关系(例如圆圈是形状的子类),主要对象的操作和属性。也可以创建用户界面样机或原型来帮助理解。[5]

面向对象的设计

在面向对象的设计(OOD)期间,开发人员将实现约束应用于面向对象的分析中产生的概念模型。这样的约束可能包括硬件和软件平台,性能要求,持续存储和交易,系统的可用性以及预算和时间施加的限制。分析模型中独立的概念,映射到实施类和界面上,导致解决方案域的模型,即,详细描述如何该系统将建立在混凝土技术的基础上。[6]

OOD期间的重要主题还包括软件体系结构通过应用建筑模式设计模式具有面向对象的设计原理。

面向对象的建模

面向对象的建模(OOM)是通过在整个整个过程中使用面向对象的范例来建模应用程序,系统和业务领域的常见方法发展生活周期。OOM是OOD和OOA活动在现代软件工程中大量使用的主要技术。

面向对象的建模通常分为工作的两个方面:诸如业务流程和用例,以及类和组件等静态结构的建模。OOA和OOD是OOM期间的两个不同的抽象级别(即分析级别和设计级别)。这统一建模语言(UML)sysml是针对对象建模的两种流行的国际标准语言。[7]

OOM的好处是:

高效有效的沟通

用户通常在理解综合文档和编程语言代码方面遇到困难。视觉模型图可能更易于理解,并且可以使用户和利益相关者可以向开发人员提供有关系统的适当要求和结构的反馈。面向对象的方法的一个关键目标是减少系统与现实世界之间的“语义差距”,并使用与利益相关者在日常业务中使用的术语几乎相同的术语来构建系统。面向对象的建模是促进此事的必要工具。

有用稳定的抽象

建模有助于编码。大多数现代软件方法论的目标是首先解决“什么”问题,然后解决“如何”问题,即首先确定系统要提供的功能而无需考虑实施约束,然后考虑如何对这些摘要制定特定的解决方案要求,并通过技术和预算等限制将它们完善成详细的设计和代码。面向对象的建模可以通过对系统需求和设计的抽象和可访问的描述(即楷模这定义了它们的基本结构和行为,例如过程和对象,它们是重要且有价值的开发资产,其抽像水平高于混凝土和复杂的源代码。

也可以看看

参考

  1. ^“软件开发团队的理性统一流程最佳实践”(PDF).理性软件白皮书(TP026B)。 1998。检索12月12日2013.
  2. ^Boehm b,“软件开发和增强的螺旋模型“,IEEE计算机,IEEE,21(5):61-72,1988年5月
  3. ^迈耶,伯特兰(1988)。面向对象的软件构建。剑桥:Prentise Hall国际计算机科学系列。p。23。ISBN 0-13-629049-3.
  4. ^雅各布森,伊瓦尔;马格努斯·克里斯特森(Magnus Christersson)帕特里克·琼森(Patrik Jonsson);Gunnar Overgaard(1992)。面向对象的软件工程。 Addison-Wesley ACM出版社。 pp。15,199.ISBN 0-201-54435-0.
  5. ^雅各布森,伊瓦尔;马格努斯·克里斯特森(Magnus Christersson)帕特里克·琼森(Patrik Jonsson);Gunnar Overgaard(1992)。面向对象的软件工程。 Addison-Wesley ACM出版社。 pp。77–79.ISBN 0-201-54435-0.
  6. ^Conallen,Jim(2000)。使用UML构建Web应用程序。艾迪生·卫斯理。 p。147.ISBN 0201615770.
  7. ^雅各布森,伊瓦尔;马格努斯·克里斯特森(Magnus Christersson)帕特里克·琼森(Patrik Jonsson);Gunnar Overgaard(1992)。面向对象的软件工程。 Addison-Wesley ACM出版社。 pp。15,199.ISBN 0-201-54435-0.

进一步阅读

外部链接