笔记 | 软件工程06-1:软件设计-软件设计基础

news2024/11/24 14:58:10

1 软件设计概述

1.1 为什么要软件设计

image.png

1.2 何为软件设计

image.png

何为软件系统的解决方案?

image.png

  • 软件设计关注与软件需求的实现问题
  • 软件设计是需求分析和软件实现间的桥梁

1.3 软件设计的质量要求

image.png
image.png

1.4 软件设计的过程

image.png

1.4.1 软件体系结构设计

image.png

1.4.2 用户界面设计

image.png

1.4.3 软件详细设计

image.png

1.4.4 其他工作

image.png

1.5 软件设计元素

image.png

2 软件设计原则

2.1 软件设计要考虑的因素

image.png

2.2 软件设计的基本原则

image.png

2.2.1 抽象原则

image.png

数据抽象和过程抽象

image.png

image.png

2.2.2 模块化、高内聚度和低耦合度原则

image.png

高内聚度原则

image.png

2.2.2.1 偶然内聚(Coincidental cohesion)

image.png

2.2.2.2 逻辑内聚(Logical Cohesion)

image.png

2.2.2.3 时间内聚(Temporal cohesion)

image.png

2.2.2.4 过程内聚(Procedural cohesion)

image.png|500

2.2.2.5 通信内聚(Communicational cohesion)

image.png

2.2.2.6 顺序内聚(Sequential cohesion)

image.png

2.2.2.7 功能内聚(Functional cohesion)

image.png

2.2.2.8 内聚度与软件结构好坏的关系

image.png

低耦合度原则

image.png

2.2.2.9 零耦合

image.png

2.2.2.10 数据耦合

image.png

2.2.2.11 特征耦合

image.png

2.2.2.12 控制耦合

image.png

2.2.2.13 公共环境耦合

image.png

2.2.2.14 内容耦合

image.png

示例:

image.png

2.2.2.15 耦合度与软件结构

image.png

2.2.3 信息隐藏原则

image.png

面向对象软件设计与实现中的信息隐藏

image.png

2.2.4 关注点分离原则

image.png

2.2.5 面向切面的编程(AOP)

image.png

2.2.6 软件重用原则

image.png

image.png

2.2.7 软件设计的其他原则

image.png

3 面向对象软件设计方法学

3.1.1 软件设计方法的发展

image.png

3.1.2 软件设计方法—结构化方法

image.png

系统结构图:

image.png

3.1.2.1 面向数据流的结构化设计

image.png

  1. 变换流(Transform Flow):所有信息流都可归结为变换流
    image.png
  2. 变换型的软件结构图:相应于取得数据、变换数据、给出数据,变换流型系统结构图由输入、变换中心和输出等三部分组成
    image.png
  3. 事务流(Transaction Flow)
    image.png
  4. 事务型的软件结构图
    image.png
3.1.3 面向对象软件设计方法学

image.png
image.png

3.1.3.1 面向对象软件设计过程

image.png

  • 用包图表示的软件体系结构设计
  • 用交互图来表示用户界面设计
3.1.3.2 面向对象的软件设计原则
  1. 单职责原则(Single Responsibility Principle)
    image.png
  2. 开-闭原则 (Open Closed Principle)
    image.png
  3. 里氏替换原则 (Liskov Substitution Principle)
    image.png
    1. Liskov替换原则的实现:
      image.png
  4. 接口分离原则 (Interface Segregation Principle, ISP)
    image.png

示例:

image.png

  1. 依赖倒置原则 (Dependency Inversion Principle, DIP):依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类。
    image.png
    image.png
  2. 最少知识原则
    image.png
3.1.3.3 面向对象软件设计的优势

image.png
image.png

3.1.4 软件设计的CASE工具

image.png

4 软件设计输出及评审

4.1.1 软件设计的输出

image.png

4.1.2 软件设计文档的规范

image.png

4.1.3 软件设计中的缺陷

image.png

4.1.4 软件设计的评审

image.png

4.1.5 软件设计的管理

image.png

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

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

相关文章

最短路径Dijkstra算法详解

目录 最短距离问题 最短路径问题 进阶--标尺增多 升级方法 例题应用 最短距离问题 Dijkstra算法的策略: 设置集合S存放已被访问的顶点,然后执行n次下面的两个步骤(n为顶点个数): (1)每次…

go-zero整合Excelize并实现Excel导入导出

go-zero整合Excelize并实现Excel导入导出 本教程基于go-zero微服务入门教程,项目工程结构同上一个教程。 本教程主要实现go-zero框架整合Excelize,并暴露接口实现Excel模板下载、Excel导入、Excel导出。 go-zero微服务入门教程:https://blo…

科技云报道:“元年”之后,生成式AI将走向何方?

科技云报道原创。 近两年,以大模型为代表的生成式AI技术,成为引爆数字原生最重要的技术奇点,人们见证了各类文生应用的进展速度。Gartner预测,到2026年,超过80%的企业将使用生成式AI的API或模型,或在生产环…

分布式光纤测温DTS与红外热成像系统的主要区别是什么?

分布式光纤测温DTS和红外热成像系统在应用领域和工作原理上存在显著的区别,两者具有明显的差异性。红外热成像系统适用于表现扩散式发热、面式场景以及环境条件较好的情况下。它主要用于检测物体表面的温度,并且受到镜头遮挡或灰尘等因素的影响会导致失效…

论文中表格跨页了做续表的正确方法

在上方加表格 粘贴即可 文章来源于论文中表格跨页了做续表的正确方法!论文人快来学习_哔哩哔哩_bilibili 小姐姐用WPS弄的,微软的不理想,我试了试,觉得在上面增加格子再粘贴表头,效果还行

Python | Leetcode Python题解之第145题二叉树的后序遍历

题目&#xff1a; 题解&#xff1a; class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def addPath(node: TreeNode):count 0while node:count 1res.append(node.val)node node.righti, j len(res) - count, len(res) - 1while i < j:res…

使用fprintf函数实现写日志文件的功能(附源码)

输出打印日志是排查软件异常问题一个非常重要的手段,无论是业务上的异常,还是软件异常崩溃。一个成熟的软件产品,必然有一个功能完备的日志记录与打印系统。本文就来介绍一种简单易用的写日志文件的方法,给大家提供一个参考。 1、实现思路 主要使用C库中的fopen、fprintf和…

问题:设开环系统的频率特性为则其相频特性穿越-180°线时对应的频率为()。 #学习方法#微信

问题&#xff1a;设开环系统的频率特性为则其相频特性穿越-180线时对应的频率为&#xff08;&#xff09;。 ? A、10rad1s B、3rad/s C、lradIs D、√3rad/s 参考答案如图所示

AIGC简介

目录 1.概述 2.诞生背景 3.作用 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 5.1.十个应用场景 5.2.社交媒体内容 6.如何使用 7.未来展望 8.总结 1.概述 AIGC 是“人工智能生成内容”&#xff08;Artificial Intelligence Generated Content&#xff09;的缩写&#x…

uniapp自定义tabbar——中间特殊按钮放大

在APP.vue里面 .uni-tabbar__item:nth-child(4) .uni-tabbar__icon {width: 50px !important;height: 50px !important;position: relative;bottom: 30rpx;}.uni-tabbar__item:nth-child(4) .uni-tabbar__label {position: relative;bottom: 25rpx;}

Stability AI发布AI音频模型Stable Audio Open,文本生成47秒高清音效

前言 Stability AI这家以开源图像生成模型 Stable Diffusion 而闻名的公司&#xff0c;在 6 月 6 日宣布开源其最新的 AI 音频模型 Stable Audio Open。这一新模型可以根据简单的文本提示生成最多 47 秒的高质量音频数据&#xff0c;为音乐制作和声音设计领域带来了新的可能性…

背景渐变动画登录页

b站视频演示效果: 效果图: 完整代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>背景…

分布式安装安装LNMP_......

分布式安装安装LNMP LNMP是什么Nginx源码编译安装准备工作关闭安全防护配置上传源码包并解压安装编译源码依赖包创建运行用户 编译安装预配置安装选项编译源代码&&安装 配置优化优化路径添加 Nginx 系统服务 Mysql源码编译安装准备工作关闭安全防护配置卸载mariadb上传…

【云原生】创建harbor私有仓库及使用aliyun个人仓库

1.安装docker #删除已有dockersystemctl stop docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine #安装docker yum install -y docker-ce-20.10.1…

经济订货批量EOQ模型

一、什么是EOQ模型 EOQ是economic order quantity&#xff08;经济订货&#xff09;原理非常简单。就是把订货带来的成本&#xff0c;分为采购成本和持有成本两部分。 采购成本&#xff1a;每次订货时发生的&#xff0c;谈判、签约、物流等成本 持有成本&#xff1a;货物入仓后…

Linux kernel本地权限提升漏洞(CentOS8升级内核的解决方案)

一、CentOS8升级kernel内核的必要性 1、增强系统的安全性。 升级CentOS内核可以提供更好的安全性保障。新的内核版本通常包含了的安全补丁和漏洞修复&#xff0c;可以有效防止系统遭受恶意攻击&#xff0c;提高系统的稳定性和安全性。 2、优化硬件兼容性。 CentOS升级内核可以…

HTML静态网页成品作业(HTML+CSS)—— 小米商城首页网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

【ARM Cache 及 MMU 系列文章 1.3 -- 如何判断 L2 Cache 是否实现?】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 CPU Configuration Register代码实现CPU Configuration Register 在 Armv9 架构中,我们可以通过arm 提供的自定义寄存器IMP_CPUCFR_EL1 来判断当前系统中是否实现了 L2 Cache, 如下所…

【stm32】——基于I2C协议的OLED显示

目录 一、I2C通讯 二、U8G2 1.U8g2简介 2.CubexMX配置 3.移植U8g2 4.编写移植代码 三、显示汉字 四、字体滚动 五、图片显示 总结 一、I2C通讯 IIC(Inter&#xff0d;Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设…

【Ardiuno】使用ESP32单片机创建web服务通过网页控制小灯开关的实验(图文)

经过实验测试ESP32单片机的网络连接还是很方便的&#xff0c;这里小飞鱼按照程序实例的代码亲自实验一下使用Esp32生成的网页服务来实现远程无线控制小灯开关功能&#xff0c;这样真的是离物联网开发越来越近了&#xff0c;哈哈&#xff01; 连接好开发板和电路&#xff0c;将…