软件设计和架构设计

news2025/3/12 11:00:28

软件设计和架构设计

 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.coloradmin.cn/o/549207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三个帮助你整理信息的桌面 WiKi

如果你想在桌面上感受 wiki,而不用做那些复杂的工作,这很容易做到。这有一些轻量级 wiki,可以帮助你组织你的信息、跟踪你的任务、管理你的笔记等等。 这个词时,可能会想到 MediaWiki 或 DokuWiki 这样的例子。它们开源、好用、强…

Go 并发之channel(通道)

一、前言 作为 Go 语言最有特色的数据类型,通道(channel)完全可以与 goroutine(也可称为 go 程)并驾齐驱,共同代表 Go 语言独有的并发编程模式和编程哲学。 通道(channel)可以利用…

TOGAF架构开发方法—G阶段:实施治理

本章提供了对实现的体系结构监督。 一、目标 G阶段的目标是: 通过实施项目确保符合目标架构为解决方案和任何实施驱动的架构更改请求执行适当的架构管理功能 二、 输入 本节定义阶段 G 的输入。 1 、企业外部参考物质 架构参考资料 2、 非架构输入 架构工作请…

K8s之污点、容忍度与Pod重启策略详解

文章目录 一、污点-Taint二、容忍度-Tolerations二、Pod重启策略1、Pod常见状态2、Pod重启策略 一、污点-Taint 在 Kubernetes 中,污点(Taint)是一种标记,用于标识一个Node节点上的某些资源或条件不可用或不可接受。当一个节点被…

基于springboot的社区疫情防控平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:HTML、Vue 数据库:MySQL5.7和Navicat管理工具结合 开发软件:IDEA / Eclipse 是否Maven项目:是 前言 基于springboot…

模板类与友元

目录 分类 一、非模板友元:友元函数不是模板函数,而是利用模板类参数生成的函数; 代码 分析 运行结果 二、约束模板友元:模板类实例化时,每个实例化的类对应一个友元函数;并且这个模板友元适用多种类模…

AtCoder Beginner Contest 302(A-D)

TOYOTA MOTOR CORPORATION Programming Contest 2023#2 (AtCoder Beginner Contest 302) Contest Duration: 2023-05-20(Sat) 20:00 - 2023-05-20(Sat) 21:40 (local time) (100 minutes) 暴搜场,1个小时出了4道,以为很有机会,结果E交了十发没…

栈和队列OJ题:LeetCode--232.用栈实现队列

朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode--232.用栈实现队列 数 据 结 构 专 栏:数据结构 个 人 主 页 :stackY、 LeetCode 专 栏 :LeetCode刷题训练营 LeetCode--232.用栈实现队列&#xff…

使用 compose 封装一个通用的关于页面库

前言 现在很多 APP 都会有一个关于页面,用于放置一些必要的信息,例如:版本号、版权信息等。有时也会用于展示设置、帮助、反馈等功能的入口。 通常,我们都会自己挨个创建不同的 item ,略显繁琐。 所以我就在想&…

ad18学习笔记一

如何自学altium designer如何自学altium designer? - 知乎如何自学altium designer 这里面有ad官方推荐的b站的视频:可以直接去b站关注ad官方账号 AltiumChina,它本身就发布了很多实用教程。 在知乎的这个界面也有Altium Designer Ver18_官…

万字长文,为你送上全网最全Flutter学习资料!

话不多说直接上目录,干货较多内容很长,建议先收藏供以后慢慢查阅。 目录 文章视频组件导航模板插件框架实验性游戏开源App实用工具社区书籍福利 文章 介绍 Google IO 2018 [1.1K👏] - 构建美观,灵活的用户界面。Presentation …

Stm32待机模式的进入与唤醒

1.基础介绍 1-1:单片机的“低功耗模式”,像是手机的待机模式,不同于正常运行模式,处于一种省电省资源的状态 1-2:在运行情况下,HCLK为cpu提供时钟,cortex-m3内核执行程序的代码,如…

CleanMyMac X2023Mac上下载最多的第三个实用程序

CleanMyMac X是一款广为人知的Mac优化应用程序,目前是Mac上下载最多的第三个实用程序,并获得苹果官方认证。为了满足用户更好体验Mac和新版系统,它们带来了新功能。这新功能可以帮助用户更好的监控Mac的健康状况,让用户畅享Mac新系…

base编码

https://www.qqxiuzi.cn/bianma/base64.htm 一眼就解密 一看就晓得是base64,问就是做多了(base64大小写加数字和) base编码概念 此博客列举的比较多,我信 https://blog.csdn.net/qq_53105813/article/details/127626450 简单聊几个…

少儿编程 中国电子学会图形化编程等级考试Scratch编程三级真题解析(选择题)2023年3月

2023年3月scratch编程等级考试三级真题 选择题(共25题,每题2分,共50分) 1、计算“2+4+8+……+128”,用变量n表示每项,根据变化规律,变量n的赋值用下列哪个最合适 A、 B、 C、 D、 答案:D 考点分析:考查数学逻辑推理能力,从给定的算式中可以看出后一项都是前一…

redis 数据库概述

一 概述 redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关…

基于springboot篮球竞赛预约平台

开发技术与环境配置 以Java语言为开发工具,利用了当前先进的springboot框架,以MyEclipse10为系统开发工具,MySQL为后台数据库,开发的一个篮球竞赛预约平台。 SpringBoot框架 SpringBoot是一个全新开源的轻量级框架。基于Spring…

Callback CBFS .NET 2022所有产品打包Crack

Callback CBFS .NET 所有产品打包 Callback Technologies CBFS Storage 2022 .NET Edition v22.0.8517 Callback Technologies CBFS Filter 2022 .NET Edition v22.0.8485 Callback Technologies CBFS Disk 2022 .NET Edition v22.0.8464 Callback Technologies CBFS Connect …

UART-STM32

UART-STM32 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 第一步,开启时钟,把需要用的USART和GPIO的时钟打开 第二步,GPIO初始化,把TX配置成复用输出,RX配置成输入 第三步,配置USART,直接使…

Kanzi Studio介绍与安装注意

文章目录 Kanzi介绍部署 Kanzi 应用程序到 Windows Kanzi介绍 Kanzi UI Solution是一个完整的UI解决方案,为嵌入式的UI的设计、开发和部署提供了一套完善的开发平台。它成功解决了实现和众多图形化用户界面分化的问题,使得用户界面的设计者和编程者可以…