面向对象的分析与设计
即OOAD ,即OOA(面向对象的分析阶段)和OOD(面向对象的设计阶段)。
大体理解:分析阶段就是将用户的描述整理成相关的文档,了解需求之后,再进行相关的设计。
OOA阶段主要解决以下问题:
—建立针对业务问题域的清晰视图
—列出系统必须要完成的核心任务
—针对问题域建立公共词汇表
—列出针对此问题域的最佳解决方案
此阶段的核心问题是”what to do”,并不涉及”how to do”。
OOD阶段主要解决以下问题:
—如何解决具体的业务问题
—引入系统工作所需的支持元素
—定义系统的实现策略
此阶段主要解决的核心问题是”How to do”。
OOP的主要特征:
抽象
忽略掉一个对象或实体的细节而只关注其本质特征的过程,简化功能与格式,帮助用户与对象交互。
忽略掉了细节,关注于核心,具体的细枝末节由后续慢慢的深化。
封装
隐藏数据和实现,提供公共方法供用户调用功能。
封装将对象分成视图:
—-外部视图:对象能做的工作。
—-内部视图:对象如何完成工作。
继承
通过存在的类型定义新类型的机制,通过继承可以实现代码的重用,继承也是多态的基础。
多态
HOOK程序就是最好的例子。
关联
对象之间交互时的一种引用方式,当一个对象通过对另一个对象的引用去使用另一个对象的服务或操作时,两个
对象之间便产生了关联。如,人使用电脑,人就和电脑产生了关联。
聚合
关联关系的一种,一个对象成为另一个对象的组成部分,是一种较强的关联,两个对象之间存在”has a”的关系,
一个对象作为另一个对象的属性存在,在外部对象被生产时,可由客户端指定与其关联的内部对象。
如:汽车与轮胎,轮胎作为汽车的一个组成部分,他和汽车可以分别生产以后装配起来使用,但汽车可以换
新轮胎,轮胎可以卸下来给其他汽车使用。
组合
也是关联关系的一种,当一个对象包含另一个对象时,外部对象负责管理内部对象的生命周期的情况。
是关联关系最为强烈的一种,内部对象的创建由外部对象自己控制,外部对象不存在时,内部对象也不能存在,
如电视与显示器或者轮胎与汽车。
说两个对象的关系到底是组合还是聚合,是没用正确答案的,是见仁见智的问题,主要在于我们的看法,能说出理由就行。
内聚与耦合
内聚:度量一个类独立完成某项工作的能力。
耦合:度量系统内或系统之间依赖关系的复杂度。
设计原则:高内聚、弱耦合。
域模型
域模型是面向对象的。在面向对象的术语中,域模型也可以称为设计模型,是具有状态和行为的域对象。
域对象之间的关系
关联:对象之间的一对一 多对一 多对多的关系
依赖:一个对象要完成一个操作,需要先获得被依赖的对象,如;service.save() 需要依赖dao对象。
聚集:整体和部分之间的关系
一般化(泛化):指对象之间的继承关系。
软件开发的过程
1.传统开发过程,如瀑布模型
太过理想化,基本上不可能。
2.统一软件开发过程(USDP)–是基于OOAD的开发过程,是迭代、递增的开发过程
①.迭代是指生命周期中的一个步骤,迭代导致递增或者是整个项目的增长
②.迭代开发就是先开发一套能交付的简单的系统,当然这仅仅是一个大体的框架,然后再制定第二次迭代的方案,就是基于第一次迭代的基础上进行功能的递增,以此类推,达到系统功能的不断的增加和增强。
③.在每一次迭代的阶段,应该做以下工作:
选择并分析相关用例
根据所选架构进行设计
在组件层次实现设计
验证组件满足用例的需要
当一次迭代满足目标后,开发进入下一个迭代周期。
注意:迭代的过程中,即使需求变了或者新增了另一些需求,我们也不用管,即使这些需求是多么的重要,我都把它放在下一个迭代周期。
每一个项目周期包含一次或者多次迭代。
一个阶段的结束称之为”里程碑”
迭代的过程
初始化阶段,该阶段的增量集中于
项目启动
建立业务模型
定义业务问题域
找出主要的风险因素
定义项目需求的外延
创建业务问题域的相关说明文档
细化阶段,该阶段的增量集中于
高层的分析与设计
建立项目的基础框架
监督主要的风险因素
制定达成项目目标的创建计划
构建阶段,该阶段的增量集中于
代码及功能的实现
交付阶段,本阶段的增量集中于
向用户发布产品
beta测试(让用户帮我们测试) 【阿尔法测试(是我们内部人员来测试)】
执行性能调优,用户培训和接收测试
每一次迭代的增量都有五部分组成
需求与初始分析
分析,设计,实现,测试
每一次迭代执行工作流的深度不同
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!