软件设计和架构设计

news/2024/7/24 13:22:18/

软件设计和架构设计

 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微服务是一种基于容器的云原生应用管理平台,提供了一种方便、快捷、高效的方式来管理容器编排和弹性伸缩。本文将介绍如…

LeetCode:29. 两数相除

29. 两数相除 1)题目2)思路3)代码1.初始代码2.第一次优化3.第二次优化 4)结果1.初始结果2.第一次优化结果3.第二次优化结果 1)题目 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,…

基于Freertos的ESP-IDF开发——7.WS2812B彩色灯循环

基于Freertos的ESP-IDF开发——7.WS2812B彩色灯循环 0. 前言1. WS2812B简介2. 完整代码3. 演示效果4. 其他FreeRtos文章 0. 前言 本节使用WS2812B实现彩灯循环 开发环境:ESP-IDF 4.3 操作系统:Windows10 专业版 开发板:自制的ESP32-WROOM-3…

Python关于Pandas的iterrows、itertuples等遍历表格时读取不到第一行的问题

一、问题原因 df.iterrows() 是用来遍历 Pandas DataFrame 的方法,它会把 DataFrame 中的每一行转换成一个元组,其中第一个元素是行号,第二个元素是该行的数据。行号从 0 开始。 在使用 df.iterrows() 遍历 DataFrame 的时候发现表格第二行…

CMD与DOS脚本编程【第六章】

预计更新 第一章. 简介和基础命令 1.1 介绍cmd/dos脚本语言的概念和基本语法 1.2 讲解常用的基础命令和参数,如echo、dir、cd等 第二章. 变量和运算符 2.1 讲解变量和常量的定义和使用方法 2.2 介绍不同类型的运算符和运算规则 第三章. 控制流程和条件语句 3.1 介…

组合数学第二讲

可以把取出来的数从小到大排序,第一个数不变,第二个数1,以此类推... 总共的情况为,数字取完后可再依次减回去,保证数在100以内 k-element multisets 引出下面的二项式系数 binomial coefficients(二项式系…

FAT NTFS Ext3文件系统有什么区别

10 年前 FAT 文件系统还是常见的格式,而现在 Windows 上主要是 NTFS,Linux 上主要是Ext3、Ext4 文件系统。关于这块知识,一般资料只会从支持的磁盘大小、数据保护、文件名等各种维度帮你比较,但是最本质的内容却被一笔带过。它们最…

Glob 文件匹配

前言 glob本质是Unix shell 风格的路径匹配规则。 该规则后续被其它语言支持。 ?:匹配一个任意字符 *:匹配任意个任意字符 [sequence]:匹配出现在sequence里面的一个字符 [!sequence]:匹配没有出现在sequence里面的一个字符 [a…

Spark大数据处理讲课笔记---Spark RDD典型案例

零、本节学习目标 利用RDD计算总分与平均分利用RDD统计每日新增用户利用RDD实现分组排行榜 一、利用RDD计算总分与平均分 (一)提出任务 针对成绩表,计算每个学生总分和平均分 (二)实现思路 读取成绩文件&#xff…

java实现url链接的补全,获取到的链接是以/或 ./ 开头的相对链接,不是以http开头的,需要补全

一、实现的目标 在使用爬虫获取网页html数据时,解析到的链接是/或./ 开头的相对链接,不是以http开头的链接,如:/picture/0/cca65350643c441e80d390ded3975db0.png 。此时需要完成对该链接的补全,以得到正确的链接。 二、实现思路 对比完整的url链接和相对链接,进行分析,…

自动化测试框架搭建步骤教程

说起自动化测试,我想大家都会有个疑问,要不要做自动化测试? 自动化测试给我们带来的收益是否会超出在建设时所投入的成本,这个嘛别说是我,即便是高手也很难回答,自动化测试的初衷是美好的,而测试…

WebLogic:如何查看补丁版本

可以使用 /weblogic/bea/OPatch/下的opatch命令: /opatch lsinventory 执行结果: VOlogiciEDSP-APP-D-269:/opatch lsinventory Oracle Interim Patch Installer version 13.9.4_2_8 Copyright (c) 2023, Oracle Corporation. All rights reserved. Orac…

PHP程序员在外包公司的工作内容是什么,我来跟大伙聊一聊

今天呢,我要跟大家说一下,我在上班的主要工作内容。希望能为大家提供一些参考,让大家了解在外包公司,PHP程序员主要做些什么工作。 我们还会涉及到其他项目,比如Web开发、移动应用开发、数据分析和处理等。不同的项目…