软件设计和架构设计
1.软件设计
1.1设计
设计是从架构 构件 接口以及系统其他特征定义的过程。
软件设计的结果必须描述系统的架构,系统如何分解和组织构件。
描述构件间的接口。
描述构件必须详细到可进一步构造的程度。
设计是把分析模型转换成设计模型的过程。
- 结构设计
- 构件设计
1.2软件设计
设置策略
- D设计:从系统需求开始,对需求进行分解,分成构件片,适合信息系统等应用的软件。
- FP设计:适合通用产品的设计。
- I设计:基于概念模型化作系统分析和设计,定义系统以满足所发现的需要和需求。
从分析到设计
- 分析是设计的输入,设计是分析的细化
- 分析是做什么:业务问题
- 设计是如何构件目标系统。采用何种技术,何种平台来实现分析模型。专注于系统的技术和实现的细节。
步骤:需求到分析 分析到设计
1.3分析和设计
比较点 | 分析 | 设计 |
出发点 | 关注对业务问题的理解 | 关注解决方案的理解 |
关注点 | 侧重描述系统的功能需求 | 要全面考虑性能,可维护性等各类非功能需求 |
模型内容 | 理想化的设计 | 充分考虑各方面的实现相关的问题 |
模型规模 | 一个较小的规模,体现系统的核心元素 | 一个大的模型,包含系统各个方面的细节 |
分析和设计不是从上到下也不是从下到上的关系。
设计逐步深入,分析模型就会消失。
1.4架构和架构设计
架构是一个系统的组织结构。包含系统分解的各个部分,他们的连接性交互机制和指导系统设计的相关的规则。
架构设计在分析阶段就已经开始了。
设计阶段是针对分析阶段的备选架构的各个方面进行了详细的定义,以设计出符合系统的架构。
常见的架构设计
包图 包 依赖关系 子系统 层
- 包图
在利用包图进行架构设计的时候在不同的抽象层次对系统内的组成元素进行合理的封装,以构件稳定的系统架构。是一个不断迭代并逐步完善的过程。
- 初期依赖于分析阶段的包
- 中期的时候设计新的包,替换响应的接口和子系统
- 部署环境的时候分割成若干个子包
- 通用的地方单独作为包来封装
1.5架构设计元素
1.设计元素是可以直接用于实现(编码)模型的元素。
- 包
- 设计类:可以直接进行实现的
- 子系统:复杂操作的职责集
- 接口:职责的抽象说明
- 主动类:系统内的控制线程
- 事件:信号 调用 时间和状态迁移
- 信号:异步机制
确定设计元素的好处是可以调整分析类,从而设计出好的设计元素。
2.从分析类到设计元素
从原先找出的边界类,实体类,控制类进而转换成我们需要进行的架构设计的元素。
分析类的关系可能变成设计中的一个类(关联类)
一个分析类或部分可以被硬件或者已有的构件实现,而且根本不需要设计
3. 封装技巧:边界类
如果系统中的边界(用户界面,系统接口)可以进行相当大的修改的话。边界类应该放置在单独的几个包中。
如果系统边界没有很大的修改的话边界类和功能相近的可以打包放到一起。
消除边界包和控制包之间的依赖关系。将边界包中的接口类独立出来。简历新的外部接口包。剩余的用户界面保留位单独的界面包,
控制类和申请业务相关的实体类打包位申请业务包,负责和前端进行交互,并处理与申请相关的业务。
与参与者相关业务可以考虑和其他的系统之间进行服用
4.打包设计类
展示的是一个旅游相关的包的结构图。
1.6确定子系统和接口
1.子系统作用
封装了相关的行为
利用清晰的接口复用
可以定义不同的实现
2.子系统和包
子系统的特点在于封装性非常强
子系统 | 包 |
提供行为 | 无行为 |
封装实现细节 | 不完全封装实现的细节 |
方便替换 | 不方便 |
3.子系统的好处
- 方便部署
- 方便划分
4.候选子系统
什么样的可以成为子系统
- 分析类
- 通信软件
- 边界类
- 数据库访问支持
- 通用程序
- 专业程序
- 数据结构
5.如何确定子系统
- 当分析类十分复杂的时候,没法直接采用单行的形式进行单独的运行的时候,就可以采用子系统的方式划分成单独的子系统。
- 方便的提供服务
6.如何确定子系统的接口
- 基于子系统的职责
接口名:系统中的作用
接口描述:表达的是职责
操作定义:操作的结果
接口文档:交互图,状态图和测试计划
1.7架构机制
1.架构机制:本身就是一种模式,将系统公共的问题提取处理进行描述,并给出的一个通用的解决的方法。
2.三种常见架构机制:分析 设计 和实现机制
3.设计机制:用于实现相应的分析机制,就是在分析机制的框架中添加实现的细节。
4.设计机制:设计模式算是设计机制中的一种。
5.实现机制:是运用特定的实现技术和编码实现相应的设计机制。
6.应用架构机制:架构机制的一种模式。
7.旅游系统中的架构机制
- 旅游申请系统中的分析机制:持久性,安全性,遗留接口等
- 旅店预定系统中的架构机制:持久性等
8.如何确定设计机制
- 给出每个设计机制的具体的静态和动态结构(一个模板)
- 指导后续的构件的设计过程。并在构件设计期间将这些模板替换成相应的元素。
1.8定义运行时架构
对于多进程的是有效的,单个进程的话是没有意义的。
1.需要创建进程视图:表示进程的控制。需要确定系统所需要的进程和线程。
2.并发机制
- 多处理器
- 多任务
- 基于应用程序的解决方案
3.进程建模
- 类图和交互图
- 构件图
4.构造型
- process
- thread
5.医院挂号的进程建模
1.9描述系统部署
1.描述物理结点间分布系统功能,仅去分布式的系统是有效的。
2.描述分布式系统活动在开发架构的部署视图。
3.如果系统只运行一个结点上,就不需要一个单独的部署模型,即不需要进行部署视图建模。
4.常见的分布式部署模型
- CS模型:胖的和瘦的
- BS:三层,数据 业务和应用层。分布式客户机/服务器:应用器 业务服务器和数据服务器
- PTP:对等结构
5.描述系统部署
web服务器:就是可以提供http请求的就是web服务器
应用服务器:可以处理相关的操作,jsp,asp页面的等的操作
Tomcat就是一个应用服务器
Apache就是一个web服务器,可以响应web页面的。