软件工程导论(三)系统概要设计

news2024/11/28 23:43:19

一、系统设计概述

1.1系统设计概述

设计和抽象

  • 系统行为驱动完成设计
  • 面向对象设计
  • 系统数据驱动完成设计

面向操作的设计        面向数据的设计

设计主要分为三个步骤:
概要设计:接收需求的文档,完成模块的分解
详细设计:根据分解后的模块,设计其内部的细节(算法、数据结构、变量等)

模块

(模块是一个词汇上邻接的程序语句序列,由边界元素限制范围,有一个聚合标识符)

语义邻接的程序语句组成
存在开始和结束的标志即存在边界
具有聚合标识符

高内聚,低耦合

1.2模块内聚

偶然内聚

一个模块执行多个完全不相同的功能,没有任何逻辑关系

某些规定规定了每个模块必须具有一定的规模

可维护性下降
重用难度大

内聚度最低

解决:

完成功能分割

逻辑内聚

一个模块可以执行许多相关操作,由调用模块来进行选择的内聚情况

存在接口难以理解的问题
修改模块内容容易影响其他模块

难以重用

时间内聚

许多操作的执行与时间相关,没有逻辑性(动作有时间先后,没有逻辑先后)

模块内部相互关联比较弱,与外部关联比较强
软件模块可重用性差

解决:

完成功能分割

过程内聚 (内聚高于前三者)

许多操作有逻辑的先后关系(顺序颠倒则功能无法实现)

动作关联关系不是很强
重用性差

通信内聚

执行一系列操作,与产品要执行的顺序有关,并且是对同一数据进行操作

重用性差

功能内聚

只执行一个操作,或者只完成一个功能

重用可能性是最大的
比较容易进行改正性维护
容易实现产品的扩展

信息内聚(理想内聚最高)

许多操作,每一个操作都有自己的入口。每一个操作有自己的代码,每一个操作都基于相同的数据

在这里插入图片描述

 1.3模块耦合

内容耦合

两个模块中,一个模块的内容直接引用另一个模块的内容

一个模块的修改会引起两个模块的变化,增加维护成本

公共耦合

两个模块同时存取相同的全局数据

问题

  • 具有边界影响,存在并发影响和控制影响,维护困难
  • 维护一个模块的全局变量的时候,会影响其他模块
  • 难以在新的目标系统中重用
  • 使边界影响变得不清晰
  • 导致计算机犯罪

控制耦合

两个模块,一个模块给另一个模块传递控制要素(简单信息 or 控制信息-动作指令)

两个模块相互制约相互影响,独立性差
一个模块必然会存在逻辑内聚

标记耦合

两个模块之间传递一个数据结构,调用模块只对数据结构的一部分进行操作

不清晰,传递的数据结构名称不能判断使用了什么信息
维护困难
重用可能性低
传递了多余数据

数据耦合(理想)

两个模块的所有的参数都是同类数据项(传递简单参数 or 传递的数据结构中所有数据项都被使用)

1.4面向操作的设计

前期数据流程图必须能够详细的描述操作

  • 变换型(由数据流图判断两个最高抽象点,得到逻辑输入、逻辑输出和逻辑处理)
  • 事务型(分解成事务分析器和事务派发器)

1.5面向数据的设计

首先确定数据结构再确定产品结构

Jackson

  • 数据结构表示(用Jackson图的方式)
  • 找出输入数据结构和输出数据结构之间的关系(有直接因果关系,能同时处理的 || 对于重复的数据必须是重复的次序和次数都相同才有可能有对应关系)
  • 按输入和输出数据结构画出处理框(如果层次不同,要按照层次较低的那个设计)
  • 列出所有的操作和条件,
  • 并标注到程序结构图的位置
  • 采用伪代码描述

二、系统详细设计

确定每个模块内采用的算法和数据结构
外部接口和用户界面设计
用某种表达工具详细表达

NS图

PAD图(问题分析图)

在这里插入图片描述

 判定表

判定树在这里插入图片描述 H图,IPO图,HIPO图

在这里插入图片描述

在这里插入图片描述 面向对象的分析建模

  • 需求建模
  • 分析建模
  • 设计建模

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

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

相关文章

Linux 实操篇-网络配置

Linux 实操篇-网络配置 Linux 网络配置原理图 查看网络IP 和网关 查看虚拟网络编辑器和修改IP 地址 查看网关 查看windows 环境的中VMnet8 网络配置(ipconfig 指令) 查看linux 的网络配置ifconfig ping 测试主机之间网络连通性 基本语法 ping 目的主机(功能描述…

CXGRid实现拖动鼠标多选

要实现在CXGrid中拖动鼠标多选,您可以按住鼠标左键并拖动鼠标,直到选择了要选择的单元格或行。您可以在拖动过程中按住Shift键来限制选择范围。拖动选择的单元格或行时,您可以按住Ctrl键来添加或删除单元格或行的选择。当您完成选择时&#x…

ChatGPT最全问答,你想知道的都在这里!

导读:ChatGPT最全问答,你想知道的都在这里!本文为你详细解答了ChatGPT是什么、有哪些应用场景、如何更好地向ChatGPT提问以及ChatGPT的进阶技巧,让你轻松成为ChatGPT专家! ChatGPT是什么? ChatGPT是一种自然…

简单Demo实现Javaweb的搭建在Tomcat

文章目录 环境准备程序编写 环境准备 本机:MacBook Pro 系统:MacOS 13.4 Tomcat 下载:Apache Tomcat - Welcome! 这里我下载的是9.0.75版本 启动Tomcat容器碰到Bug:Tomcat started.但是就是没法访问到相关页面,同时jps也没有相关…

Java数据驱动:CData JDBC Drivers 2022 Crack

JDBC 驱动程序 易于使用的 JDBC 驱动程序,具有强大的企业级功能 无与伦比的性能和可扩展性。 对实时数据的简单 JDBC/SQL 访问。 从流行的 BI 工具访问实时数据。 集成到流行的 IDE 中。 CData JDBC Drivers Software 是领先的数据访问和连接解决方​​案提供商。我…

附录4-微信开发者工具

目录 1.安装 2 微信开发者工具常用操作 2.1 创建项目 2.2 预览效果 2.3 查看小程序信息 2.4 自定义编译 2.4.1 创建编译模式 2.4.2 使用创建好的编译模式 2.4.3 删除编译模式 1.安装 【微信开发者工具下载】2023年最新官方正式版微信开发者工具免费下载 - 腾…

【企业化部署】Nginx之Rewrite与location的用法

文章目录 前言一、正则表达式1. Nginx 的正则表达式2. 正则表达的优势3. Nginx 使用正则的作用 二、location 的概念1. location 和 rewrite 区别2. location 匹配的分类3. location 常用的匹配规则3.1 location 匹配优先级3.2 location 匹配的实例3.3 实际网站规则定义第一个必…

Netty之EventLoop 解读

是什么 EventLoop (事件循环对象)本质是一个单线程执行器(同时维护了一个 Selector),里面有 run 方法处理 Channel 上源源不断的 io 事件。 它的继承关系比较复杂 一条线是继承自 j.u.c.ScheduledExecutorService 因…

CenterSpace.NMath.Standard.Windows.X64 7.4 Crack

适用于所有 .NET 语言,包括 C#、Visual Basic 和 F#。 CenterSpace Software的NMath TM .NET 数学和统计库为.NET平台上的金融、工程和科学应用程序提供数值组件。 基础 .NET 数学和统计库NMath包括复数类、一般向量和矩阵类、结构化稀疏矩阵类和因式分解、一般稀疏…

华为OD机试真题 Java 实现【找出通过车辆最多颜色】【2023Q1 100分】

一、题目描述 在一个狭小的路口,每秒只能通过一辆车,假如车辆的颜色只有3种,找出n秒内经过的最多颜色的车辆数量。 三种颜色编号为0、1、2。 二、输入描述 第一行输入的是通过的车辆颜色信息 [0 1 1 2] 代表4秒钟通过的车辆颜色分别是0 1…

Rust每日一练(Leetday0020) 最后单词的长度、螺旋矩阵II、排列序列

目录 58. 最后一个单词的长度 Length of Last Word 🌟 59. 螺旋矩阵 II Spiral Matrix II 🌟🌟 60. 排列序列 Permutation Sequence 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日…

Java企业级信息系统开发学习笔记14 Spring Boot(使用Spring Initializr方式构建Spring Boot项目)

文章目录 一、使用Spring Initializr方式构建Spring Boot项目(一)创建Spring Boot项目(二)创建控制器(三)运行入口类(四)访问Web页面(五)修改访问映射路径 一…

OpenMMLab-AI实战营第二期-MMPose代码介绍

课程介绍 原始视频链接: 安装MMDetection和MMPose:https://www.bilibili.com/video/BV1Pa4y1g7N7 MMDetection三角板目标检测:https://www.bilibili.com/video/BV1Lm4y1879K MMPose、RTMPose三角板关键点检测:https://www.bilibi…

chatgpt赋能python:Python取消Import:改变编程世界的未来发展趋势

Python取消Import:改变编程世界的未来发展趋势 Python是一门非常流行的编程语言,它是开源的,因此得到了许多人的喜爱。然而,在Python的发展过程中,有些人认为现有的模块和包管理方式不够理想,需要进行改进…

视频压缩的工作原理

一、说明 当你正在观看你最喜欢的节目,出现缓冲的时候,这是什么原因?当 Wi-Fi 带宽不足以下载传输视频流所需的数据时,就会发生缓冲。也有可能是视频网站发布了未压缩版本的视频文件,因此视频文件太大而无法流畅地流式…

Linux常用命令——grpconv命令

在线Linux命令查询工具 grpconv 用来开启群组的投影密码 补充说明 grpconv命令用来开启群组的投影密码。Linux系统里的用户和群组密码,分别存放在/etc目录下的passwd和group文件中。因系统运作所需,任何人都得以读取它们,造成安全上的破绽…

Linux——TCP协议2

目录 确认应答(ACK)机制 超时重传机制 连接管理机制 流量控制 滑动窗口 快重传VS超时重传 拥塞控制 延迟应答 捎带应答 面向字节流 粘包问题 TCP异常情况 基于TCP应用层协议 TCP/UDP对比 用UDP实现可靠传输 listen 的第二个参数 确认应答(ACK)机制 TCP将每个字节的数…

力扣高频SQL50题(基础版)——第五天

力扣高频SQL50题(基础版)——第五天 1 至少有5名直接下属的经理 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 #①找到经理的所有编号②让其与员工表内连接,然后分组筛选即可 SELECT e1.name FROM (SELECT id,nameFROM EmployeeWHERE managerId IS…

Vmware虚拟机实例配置静态IP

最近在给虚拟机配置静态IP的时候,出了一些小问题,本文主要描述操作过程中一些小问题的解决。 主要参考资料: How to set up Linux in VMWare Workstation with static IP (IPv4) 个人配置信息: VMware Workstation Debian 记录一下虚拟机的网卡信息 …

文本编辑器

章节目录: 一、Vim 编辑器1.1 检查 vim 软件包1.2 vim 基础1.3 命令模式1.4 输入模式1.5 底线命令模式( Ex 模式 ) 二、nano 编辑器三、结束语 一、Vim 编辑器 vi 编辑器是 Unix 系统中最早的编辑器之一。vim 是从 vi 发展出来的一个文本编辑…