1.OOAD(Object Oriented Analysis and Design)面向对象分析和设计
--OOA 分析阶段,主要解决以下问题:
--建立对业务问题域的清晰视图
--列出必须要完成的核心业务
--针对问题域建立公共词汇表
--列出针对此问题域的最佳解决方案
--要解决的核心问题:What to do
--OOD 设计阶段,主要解决以下问题:
--如何解决具体的业务问题
--引入系统工作所需的支持元素
--定义系统的实现策略
--要解决的核心问题:How to do
域模型:
域模型是面向对象的,在OO中,域模型也称设计模型,主要有以下内容组成:
--具有状态和行为的域对象
--域对象之间的关系(关联Association、依赖Dependency、聚集Aggregation、一般化(泛化)Generalization)
关联关系:
一对一:从Person到IDCard的一对一的单向关联,Person中持有IDCard的标志,如id
多对一:从Order到Customer的多对一的单向关联,Order中持有Customer的标志,如id
一对多:从Customer到Order的一对多的单向关联,Customer持有Order的标志集合,如id的List
多对多:Customer和Order间的双一对多向关联,互相持有彼此的标志集合,如id的List
依赖关系:
一个类A中访问另一个类B中的方法,并构造B类的实例,称A依赖B
聚集关系:
聚集指整体和部分间的关系,在实体域对象间很常见
一般化关系:
一般化关系指类之间的继承关系
内聚域耦合:
内聚:度量一个类独立完成某项工作的能力
耦合:度量系统内或系统之间依赖关系的复杂度
设计原则:增加内聚,减少耦合
软件开发过程:
传统开发过程
--瀑布模型,不适应多变的需求
统一软件开发过程(USDP)
OOAD的开发过程
--大的项目分解为一些子项目
--使用UML工具
--统一开发过程是一个迭代的、递增的开发过程,每一次迭代是生命周期中的一个步骤
--每一个迭代的阶段,应做的工作:
---选择并分析相关用例
---根据所选的架构进行设计
---在组件层次实现设计
---验证组件满足用例的需要---每次设计前要预先设计好用例
--每一次迭代完成目标后,开发将进入下一个迭代周
迭代的好处:一定程度适应用户变化、每一次迭代周期只是完成既定的特定功能,迭代周期开始后不再加入新的内容,新的功能需求可以在下一个周期加入,每一个周期完成后可以给用户展示获取用户反馈,以方便把握用户需求。
软件迭代过程
-初始化阶段
--项目启动
--建立业务模型
--定义业务问题域
--找出主要的风险因素
--定义项目需求的外延
--创建业务问题域的相关说明文档
-细化阶段
--高层分析与设计
--建立项目的继承框架
--监督主要的风险因素
--质地昂达成项目目标的创建计划
-构建阶段
--完成代码及功能的实现
-交付阶段
--向用户发布产品
--beta测试
--性能调优、用户培训和接收测试,注意,一个项目开始时不应过于考虑性能,任务重点应该防止功能实现上,否则会耽误项目的进度。性能调优往往需要经过大量的测试进行的。
每一个迭代阶段所含工作流:
-需求-分析-设计-实现-测试-,如此周而复始
2 UML中9种基本图形
UML(Unified Modeling Language),是一种图形化的语言,可以OOAD过程中标识元素、构建模块、分析过程、并可以通过文档说明系统中的重要细节
UML图分类
-静态模型(static model)
--创建并记录一个系统的静态特征
--反映一个软件系统基础、固定的框架结构
--创建相关问题域的主要元素的视图
--静态建模包括:
---用例图(use case diagrams)
---类图(class diagrams)
---对象图(object diagrams)
---组件图(component diagrams)
---部署图(deployment diagrams)
-动态模型(dynamic model)
--动态建模用以展示系统的行为
--动态建模包括:
---时序图(sequence diagrams)
---协作图(collaboration diagrams)
---状态图(state chart diagrams)
---活动图(activity diagrams)
用例图
-展示系统核心功能及与其交互的用户,用户被成为活动者(Actor),用例使用椭圆表示,为了简化建模过程,用例可以标注优先级
上图表示的意思:不同用户可以进行不同的操作
类图
-表示类的特征,描述了多个类、接口的特征、以及对象直接的协作与交互,由一个或多个矩形区域构成,内容包括类型(类名)、属性(可选)、操作(可选)
对象图:
对象图用于展现对象的特征和对象间的交互关系
组件图:
表示组件直接的关系
部署图:
表现用于部署软件应用的物理设备信息