软件工程与计算总结(十二)详细设计的基础

news2025/1/25 9:12:52

 

目录

一.详细设计概述

1.出发点

2.上下文

二.结构化设计

1.思想

2.过程

三.面向对象设计

1.思想

2.过程

3.通过职责建立静态模型

4.通过协作建立动态模型

四.为类间协作开发集成测试用例

五.详细设计文档描述

六.详细设计的评审 


一.详细设计概述

1.出发点

详细设计在体系结构设计之后进行,以需求开发的结果(需求规格说明和需求分析文档)和软件体系结构的结果(软件体系结构设计方案与原型)为出发点~

体系结构设计主要关注的是高层设计,即给予反映高层抽象的构建层次;而详细设计一般进行中层设计和底层设计,更关注组成模块的内部结构及模块和类的内部

2.上下文

软件体系结构设计方案解决了需求中关键性的要求和约束,体系结构原型代码为详细设计提供了主要的代码框架。

详细设计的目的是实现所有的功能性需求和非功能性需求,所以要以需求作为详细设计的方向指引(即需求驱动)

详细设计的结果是能够知道程序员编程的详细设计文档详细设计原型代码~

在详细设计文档中需要明确定义:

  • 模块结构及其接口(进一步的模块分解)
  • 类结构、类的协作、类接口(面向对象分析方法)
  • 控制结构与函数接口(结构化分析方法)
  • 重要的数据结构和算法逻辑

原型代码则是在体系结构的基础上扩展落实详细设计的实现,以及对相应的详细设计进行验证~

二.结构化设计

1.思想

分解是一种降低复杂度的方法,按算法分解是一种最自然的分解方式~

设计者每次只需要将关注放在完整复杂算法中一个相对较简单的子过程,就会觉得系统的复杂性大大降低。按过程分解就是以算法为中心,对算法部分进行相应的分解——但同时会带来模块之间的复杂联系,不利于软件的团队开发~

2.过程

在结构化分析方法中数据流图是主要的建模技术~

结构化设计中使用的主要建模技术是结构图:按照自顶向下分解法,将系统分解为一个树状结构,每个节点代表一个模块或者一个方法,逐层分解直到将系统分解为一些列可操控的小的模块~

相邻的图之间通过线连接在一起,线上会通过箭头标明三种参数:输入、输出及输入输出参数~

通过结构图,我们可以知道系统的复杂程度,以及每个方法能否可管理或者再被分解~

总的来说,结构化设计的工作重心之一就是将数据流图转换成结构图,过程如下:

  • 寻找到输入的最高抽象点and输出的最高抽象点(重点关注那些输入数据停止作为输入并变成某种内部数据的点)
  • 根据输入、输出的最高抽象点,对模块进行划分
  • 再依次对每个模块寻找最高抽象点,再进行模块分解,从而逐步求精得到树状的结构图

三.面向对象设计

1.思想

将世界抽象为一系列具有一定职责的自由数据个体,他们相互协作,共同完成高级的行为~

每个数据个体除了自己独有的数据信息之外,还包含一些依赖这些数据信息所能够做的事情(算法)

个体只是行使自己的职责,而遇到自己无法完成的事情,则会通过互相发送信息,要求其他个体来做他们能够做的事情,从而共同组成一些复杂的行为~

2.过程

设计模型建立:

  • 通过职责建立静态设计模型
  • 通过协作建立动态设计模型

设计模型重构:

  • 根据模块化的思想进行重构,目标为高内聚、低耦合
  • 根据信息隐藏的思想重构,目标为隐藏职责与变更

 

3.通过职责建立静态模型

  • 抽象对象的职责:类是对对象的抽象,是对所有具有相同属性和相同行为的对象族的一种抽象;一个对象就是类的一个实例:类的职责主要由两部分组成:属性职责和方法职责,属性主要表示对象的状态,方法主要表示对象的行为
  • 抽象类之间的关系:类和类之间也不是孤立存在的,他们之间关系的强弱是没有异议的:依赖<关联<聚合<组合<继承
  • 添加辅助类:在需求分析阶段,我们分析用例表述,得到许多概念类——这些类也是我们设计模型中间的候选类;但是候选类往往不可能实现所有的功能,所以可能需要添加一些辅助类,例如接口类、记录类、启动类、控制器类等

4.通过协作建立动态模型

抽象对象之间的协作设计方法:

  • 从小到大,将对象的小职责聚合形成大职责
  • 从大到小,将大职责分配给各个小对象

顺序图可以用来表示对象之间的协作:

明确对象的创建:某种意义上,对象也是对象创建出来的

选择合适的控制风格:一般可以分为集中式、委托式、分散式~

四.为类间协作开发集成测试用例

软件体系结构的多个模块因为被独立开发而需要进行集成测试,同样的道理,每个类也是被独立开发的,也可能会产生集成的问题,也需要进行集成测试~

五.详细设计文档描述

为了团队协作与交流,软件详细设计方案也需要进行文档描述——软件详细设计文档更加强调模块内部的结构和行为,例如类图、类接口定义、类协作、复杂数据结构定义等

六.详细设计的评审 

评审的过程与体系结构评审时基本相同,只是关注点有所不同~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094406.html

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

相关文章

Java前后端交互实现班级管理(查询)

1&#xff0c;数据库创建存储专业信息的表 2&#xff0c;后端&#xff1a; 连接数据库工具类DBUtil.java&#xff1a; package com.ffyc.webserver.util;import java.sql.*;public class DButils {static {try {Class.forName("com.mysql.cj.jdbc.Driver");} catch…

施耐德Unity通过Modbus控制变频器

硬件设备 PLC: Unity Premium (CPU:TSX P57154) 通讯卡: TSX SCP 114 连接电缆: TSX SCP CM 4030 VSD: ATV 58 硬件连接 Unity Premium (CPU: TSX P57154)本身不带Modbus接口&#xff0c;因此&#xff0c;采用TSX SCP 114扩展一个Modbus接口。TSX SCP 114是一个RS-485接…

java集合之Collection接口体系

一、集合概述 java集合框架标准化了程序处理对象组的方式&#xff0c;它是在J2SE 1.2版本时增加的。 在集合框架之前&#xff0c;Java提供了特定的类来存储和管理对象组&#xff0c;如Dictionary、Vector、Stack、Properties。尽管这些类很有用&#xff0c;但是缺少了集…

甲醇燃料电池(DMFC) 系统

甲醇燃料电池&#xff08;DMFC&#xff09; 系统框图 ~~

宅在家里也能干的副业,每天挣60—300元,人人可做

想在家搞副业&#xff0c;每天挣60-300元&#xff0c;大家觉得难吗&#xff1f;我告诉你&#xff0c;一点也不难。找对路子&#xff0c;足不出户也能搞钱。今天我就给大家分享一下三个网上靠谱的副业&#xff0c;门槛低上手快&#xff0c;只需一部手机&#xff0c;每天利用碎片…

【Java每日一题】— —第三十一题:银行账号管理程序设计(2023.10.15)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Elasticsearch系列组件:Kibana无缝集成的数据可视化和探索平台

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…

Java课程设计——图书管理系统

文章目录 一、需求分析二、技术介绍2.1相关技术2.2开发环境 三、功能实现1、登录2、图书管理2.1图书列表2.2添加图书2.3修改图书信息2.4查询图书信息 3、用户管理3.1借阅图书3.2修改借阅信息3.3归还图书 4、退出系统 四、部分代码实现获取源码 文章最下方获取源码&#xff01;&…

【Retinex theory】【图像增强】-笔记

1 前言 retinex 是常见的图像增强的方法&#xff0c;retinex 是由两个单词合成的&#xff1a;retina conrtex &#xff0c;即视网膜皮层。 2 建立的基础 Land 的 retinex theory 建立在三个假设之下&#xff1a; 真实世界是无色的&#xff0c;我们所谓的颜色是光和物质相互…

VARMA模型的原理与实现

文章目录 1.多变量模型的基本思想2.VAR模型与VARMA模型3.VARMA模型的实现 1.多变量模型的基本思想 ​ 在现实和竞赛中&#xff0c;时序数据往往是多变量时间序列&#xff0c;我们往往需要借助除了时间之外的变量的帮助来完成预测。比如&#xff0c;如果我们需要预测居民消费支…

数据结构与算法--其他算法

数据结构与算法--其他算法 1 汉诺塔问题 2 字符串的全部子序列 3 字符串的全排列 4 纸牌问题 5 逆序栈问题 6 数字和字符串转换问题 7 背包问题 8 N皇后问题 暴力递归就是尝试 1&#xff0c;把问题转化为规模缩小了的同类问题的子问题 2&#xff0c;有明确的不需要继续…

yolov5+车辆重识别【附代码】

本篇文章主要是实现的yolov5和reid结合的车辆重识别项目。是在我之前实现的yolov5_reid行人重识别的代码上修改实现的baseline模型。 目录 相关参考资料 数据集说明 环境说明 项目使用说明 vehicle reid训练 yolov5车辆重识别 从视频中获取想要检测的车(待检测车辆) 车…

Attention Is All You Need原理与代码详细解读

文章目录 前言一、Transformer结构的原理1、Transform结构2、位置编码公式3、transformer公式4、FFN结构 二、Encode模块代码解读1、编码数据2、文本Embedding编码3、位置position编码4、Attention编码5、FFN编码 三、Decode模块代码解读1、编码数据2、文本Embedding与位置编码…

centos6/7 SOCKS5 堆溢出漏洞修复(RPM方式)curl 8.4 CVE-2023-38545 CVE-2023-38546

引用 https://darkdark.top/update-curl.html centos6 rpm 升级包下载&#xff1a;https://download.csdn.net/download/sinat_24092079/88425840 yum update libcurl-8.4.0-1.el6.1.x86_64.rpm curl-8.4.0-1.el6.1.x86_64.rpmcentos7 rpm 升级包下载&#xff1a;https://down…

ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?

目录 疑问 编译、链接和装载&#xff1a;拆解程序执行 ELF 格式和链接&#xff1a;理解链接过程 小结 疑问 既然我们的程序最终都被变成了一条条机器码去执行&#xff0c;那为什么同一个程序&#xff0c;在同一台计算机上&#xff0c;在 Linux 下可以运行&#xff0c;而在…

Linux | 关于入门Linux你有必要了解的指令

目录 前言 1、ls指令 2、pwd指令 3、cd指令 4、touch指令 5、stat指令 6、mkdir指令 7、rmdir 与 rm指令 8、man指令 9、cp指令 10、mv指令 11、cat指令 &#xff08;1&#xff09;输入重定向 &#xff08;2&#xff09;输出重定向与追加重定向 12、less指令 1…

多模态模型文本预处理方式

句子级别 句子级别的表征编码一整个句子到一个特征中。如果一个句子有多个短语&#xff0c;提取这些短语丢弃其他的单词。 缺点&#xff1a;这种方式会丢失句子中细粒度的信息。 单词级别 将句子中的类别提取出来&#xff0c;结合成一个句子。 缺点&#xff1a;会在类别之…

【数据结构】线性表的抽象数据类型

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 线性表抽象数据类型(LinearListAbstractDataType&#xff0c;简称 ADT)是一种非常重要的抽象数据类型&#xff0c;它是一种使用抽象的方式表示和实现一组数据元素的集合以及与…

宝塔面板服务器内存使用率高的三招解决方法

卸载多余PHP版本。假若安装了多个PHP版本&#xff0c;甚至把 php 5.3、5.4、7.0、7.3 全都安装上了&#xff0c;就会严重增加系统负载和内存使用率。 安装memcached 缓存组件&#xff0c;建议在宝塔面板后台直接安装。 卸载不常用软件。如&#xff1a;宝塔运维、宝塔一键安装…

php如何查找地图距离

要在PHP中使用高德地图、百度地图或腾讯地图获取位置信息&#xff0c;您可以使用它们的相应API服务。以下是获取位置信息的一般步骤&#xff1a; 思路: 获取API密钥&#xff1a;首先&#xff0c;您需要注册并获取相应地图服务提供商的API密钥。这将允许您访问他们的API以获取位…