`
yimlin
  • 浏览: 139485 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

再提面向对象分析与设计

阅读更多
(注:最早发在blog上,不过没有讨论,一个大概是我自己没有描述清楚,一个限于blog的形式吧。转到这里来看看)

先看下Booch对面向对象分析和设计的经典论述:
OOP:面向对象编程是一种实现方法,程序被组织成对象的协作集合,每一个对象代表某个类的实例,对象的类是通过继承关系联合在一起的类层次中的所以成员。
OOD:面向对象设计是一种设计方法,它包含面向对象的分解过程,以及一种表示方法,用来描写设计中的系统的逻辑模型与物理模型,以及静态模型与动态模型。
OOA:面向对象分析是一种分析方法,它以可在问题域的词汇表中找到的类和对象的观点来审视需求。

经典是经典,不过总是不那么容易实践,我自己在工作中总结了一下面向对象分析和面向对象设计的区别:
1. 面向对象分析的关键点,是其产出物能够映射到业务系统的需求。因此,面向对象分析的产物称为业务模型(Business Model)和业务行为,关注在:领域对象(Domain Model),领域服务(Domain Service),以及相关的边界对象(Boundary Object)和控制对象(Controller Object);以及在此之上业务模型交互视图,包括了测量观察行为,以及账目(或类账目)处理行为。此时的设计不涉及任何具体的框架,工具包以及相关处理具体实现技术的对象。

2. 面向对象设计的关键是,其产出物能映射到计算机系统的要求。因为,面向对象设计建立在面向对象分析之上,细化业务模型和业务行为,给出面向对象技术的技术实现。表现为结合了大量具体框架,工具包以及相关技术实现对象(以Factory为代表,Factory对象是处理实例化的,而这是计算机系统的概念)。

虽然面向对象分析和设计存在重大区别,然后它们有时并不能被明显区分。面向对象设计是对面向对象分析有限制作用。从实用角度讲,如果分析的成果在转化为设计的成果存在巨大困难时,分析成果的价值是有限的。

以下简单列出自己的面向对象分析设计的实践过程:
1.分析阶段
分析对象模型,不细化对象模型的抽象和封装
分析业务行为,不细化行为的层次分解
连接对象模型和业务行为,分析相关的各种Specification
初步细化行为的层次分解
初步细化对象模型的抽象层次
分析行为和请求的响应模式

2.设计阶段
设计各种Specification的实现策略
进一步细化行为的层次分解
设计行为和控制器的关联逻辑分解
进一步细化对象模型的抽象体系
结合框架设计行为和请求的响应模式
结合框架设计行为和控制器的关联逻辑分解

不知道其它的兄弟们怎么工作的。
分享到:
评论

相关推荐

    软件工程期末考试试题题集

    10. IDEF 方法:IDEF 方法是美国空军在 1981 年针对集成化计算机辅助制造(简称 ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。 IDEF 方法是软件设计的主要方法之...

    软件工程名词解释.docx

    IDEF方法是美国空军在 1981 年针对集成化计算机辅助制造(简称ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化分析与设计技术的基础上提出来的。 JSP方法定义了一组以数据结构为指导的映射过程,他...

    北大青鸟教育集团(数据库设计与开发)

    对象关系数据库则在此基础上,引入了面向对象的概念,使数据库能够更好地处理复杂数据类型,提高了数据处理的灵活性和能力。 在数据存储技术方面,讲义涵盖了文件存储、索引、散列和多键访问等多种技术。这些技术是...

    数据库技术发展动态.pptx

    从早期的层次模型、网状模型,到关系模型的普及,再到面向对象模型和NoSQL(非关系型)数据库的兴起,数据模型不断适应新的应用需求和计算环境。 新一代数据库技术如主动数据库、时态数据库、模糊数据库等,分别...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,...

    北京大学计算机研究所组件技术介绍

    课程将深入讨论软件领域的发展历程,从早期的功能分解法到结构化、面向对象,再到现在的组件化程序设计,反映了软件需求、环境和开发模式的演变。此外,课程还将关注软件开发过程,从原始代码到最终用户的软件分发...

    ggplot2:数据分析与图形艺术

    足以让人窒息,光是一份xyplot()函数的帮助文档,恐怕就够我们消磨一天时间了,更重要的是,lattice仍然面向特定的统计图形,像基础图形系统一样,有直方图、箱线图、条形图等等,它没有一套可以让数据分析者说话的...

    软件工程-原理、方法及应用(史济民第三版)答案归类.pdf

    面向对象软件工程是指以面向对象程序设计为基础的软件工程方法。它与传统软件工程在各型软件开发中的作用是不同的。面向对象软件工程可以更好地解决软件危机,提高软件的质量和可维护性。 软件可以按照规模大小分为...

    面向矿井用风点的通风网络安全分区方法研究.pdf

    广度优先搜索算法(BFS)是一种用于图结构遍历的算法,该算法从一个起点开始,先访问所有与起始节点相邻的节点,然后再对每一个已访问的节点,访问其相邻的未被访问的节点。在通风网络结构分析中,BFS算法被用来分析...

    C#数据结构

    随着C#语言以其简洁、高效、面向对象的特性在软件开发领域占据一席之地,对于以C#为基础的数据结构教材的需求日益增长。传统上,数据结构的教学往往依赖于如C、C++或Java等语言的教材,然而,这些教材并未充分利用C#...

    java 耿祥义 课件

    从变量、数据类型、运算符等基础概念,到控制结构如if语句和循环,再到面向对象编程的核心概念,如类与对象、封装、继承、多态,都为学习者打下了扎实的编程基础。面向对象的思想是现代软件开发的核心,通过理解这些...

    数据挖掘教学大纲.docx

    课程对学生有一定的先修知识要求,包括《数据库原理》、《概率论与数理统计》、《数据分析》、《面向对象程序设计》和《运筹学》等课程的学习经历。这些课程为学生提供了必要的基础,有助于他们更好地理解和掌握数据...

    新闻app及报告文档

    JavaBean作为一种面向对象的设计模式,被用于封装数据和业务逻辑,简化了代码结构,提高了代码的可读性和可维护性。 AJAX(Asynchronous JavaScript and XML)技术在这款app中起到了关键作用,它允许前端页面在不...

    C#微软培训资料

    9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 方 法 ....

    IITGAA:IIT古瓦哈提校友会Android应用

    开发者利用Java的面向对象编程能力来设计用户界面,处理业务逻辑,以及与设备硬件和服务进行交互。例如,他们可能使用了Intent来启动其他Activity,BroadcastReceiver来监听系统事件,或者SQLite数据库来存储校友...

    字节跳动应届生大数据面试提,面试时长一小时

    - **可达性分析**:通过跟踪对象引用关系判断对象是否可达,未被引用的对象被视为垃圾。 - **垃圾回收器**:G1、CMS、Parallel 等不同类型的垃圾回收器,每种都有各自的适用场景。 - **垃圾回收算法**:标记-清除、...

    关于python的学习.zip

    Python的面向对象特性也值得一提,它支持类和对象的概念,使得代码更加结构化和可重用。通过继承、封装和多态,Python能够实现复杂的设计模式,提高代码的复用性和可维护性。 在数据分析方面,Python有丰富的库支持...

    网易云课堂嵩天Python入门代码

    从代码库的具体内容来看,它可能包含了从基础的变量定义和数据类型使用,到控制语句、函数编写和模块导入,再到面向对象的类和对象操作等多个方面。每一部分都与嵩天在网易云课堂上的视频教程紧密相连,形成理论与...

    基于Python的二阶混沌比例投影同步控制实验.pdf

    Python的跨平台特性、面向对象的编程范式以及动态类型系统,使其应用领域非常广泛,从网站开发到数据分析再到人工智能,Python都有涉猎。 总结来说,本文通过Python语言在二阶混沌系统的比例投影同步控制实验中,...

Global site tag (gtag.js) - Google Analytics