软件设计和架构设计

news/2024/12/14 12:10:53/

软件设计和架构设计

 1.软件设计

1.1设计

设计是从架构 构件 接口以及系统其他特征定义的过程。

软件设计的结果必须描述系统的架构,系统如何分解和组织构件。

描述构件间的接口。

描述构件必须详细到可进一步构造的程度。

设计是把分析模型转换成设计模型的过程。

  • 结构设计
  • 构件设计

1.2软件设计

设置策略

  1. D设计:从系统需求开始,对需求进行分解,分成构件片,适合信息系统等应用的软件。
  2. FP设计:适合通用产品的设计。
  3. I设计:基于概念模型化作系统分析和设计,定义系统以满足所发现的需要和需求。

从分析到设计

  1. 分析是设计的输入,设计是分析的细化
  2. 分析是做什么:业务问题
  3. 设计是如何构件目标系统。采用何种技术,何种平台来实现分析模型。专注于系统的技术和实现的细节。

步骤:需求到分析 分析到设计

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页面的。


http://www.ppmy.cn/news/76006.html

相关文章

c++虚函数详解(多态特性)

1.c多态的概念 多态是c的特征之一 多态的分类:静态多态(静态联编)、动态多态(动态联编) 静态多态(静态联编):函数入口地址 是在 编译阶段 确定(运算符重载、函数重载&…

IOS新建应用

一:Application App。普通app。Document App。打开是记事本类似App。Game。新建游戏相关app。RealityKit为新建一个打开摄像机,一个Ar立方体的应用。 SenceKit为有一架飞机旋转的游戏App。 SpirteKit为一个手指头按上会出一个手指特效的应用。 Metal为一…

MySql常用命令总结

1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)…

抖音账号运营技巧,让你的短视频更火爆

抖音是目前最火爆的短视频平台之一,拥有着庞大的用户群体和广阔的市场前景。在这个平台上,每天都有大量的用户在发布自己的短视频内容,让自己的账号脱颖而出并吸引更多的粉丝,成为每个用户所追求的目标。下面就来介绍一些抖音账号…

应用程序和 API 攻击呈上升趋势

Akamai Technologies 发布了一份新的互联网现状报告,标题为“突破安全漏洞:针对组织的应用程序和 API 攻击的兴起”。 报告显示,亚太地区和日本(APJ)的金融服务业仍然是该地区受攻击最严重的行业,Web 应用…

mqtt服务管理配置

mqtt服务管理配置mosquitto.conf配置文件 windows查找占用端口 netstat -aon|findstr 1883 linux查找占用端口 netstat -antlp|grep “1883” 服务启动 mosquitto -c mosquitto.conf -v 指定端口启动 mosquitto -p 指定端口号码 添加用户 mosquitto_passwd -b “C:/Program Fi…

Docker介绍、常用命令、项目部署

什么是Docker 简单说:Docker就是一个虚拟机,专业说:它是一个开源的容器平台。它和我们常用的VMware有很多相似的地方。 名词解释 镜像/images 由本体打包出来的文件。并不是文件本身,但是具有该文件的功能。举个不太贴切的例子&…

基于Rancherwebhook微服务的弹性伸缩实现

一、引言 随着云计算技术的不断发展,弹性伸缩已成为云环境下实现高可用性、可扩展性、资源优化和负载均衡的重要手段。Rancherwebhook微服务是一种基于容器的云原生应用管理平台,提供了一种方便、快捷、高效的方式来管理容器编排和弹性伸缩。本文将介绍如…