面向对象的分析和设计

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

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

历史

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

一些著名的早期面向对象的方法论来自Grady BoochJames RumbaughIvar Jacobson三个Amigos ), Robert Martin ,Peter Martin,Peter Coad, Sally Shlaer,Stephen MellorStephen Mellor和Rebecca-wirfs-Brocks-Brocks-Brocks -Brocks-Brocks- Brocks -Brocks-Brocks-Brocks-Brocks -Brocks-Brocks-Brocks-Brocks-Brocks-Brocks-Brocks-

1994年,理性软件的三个Amigos开始共同开发统一的建模语言(UML)。后来,他们与Philippe Kruchten和Walker Royce( Winston Royce的长子)一起领导了一项成功的使命,将自己的方法合并为OMTOOSEBOOCH方法,以及其他行业领导者的各种见解和经验(RUP ),《学习行业的软件开发和项目管理最佳实践》的全面迭代和增量过程指南和框架。从那以后,统一的过程家族可能已成为面向对象的分析和设计的最流行的方法和参考模型。

概述

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

瀑布模型
OOAD是按统一过程提出的迭代和增量方式进行的。

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

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

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

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

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

面向对象的分析

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

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

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

面向对象的设计

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

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

面向对象的建模

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

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

OOM的好处是:

高效有效的沟通

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

有用稳定的抽象

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

也可以看看