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

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.tpcf.cn/bicheng/27754.html

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

相关文章

如何轻松利用人工智能深度学习,提升半导体制造过程中的良率预测?

背景 这个项目涉及半导体制造过程的监测领域。在半导体制造中,不断收集来自传感器或过程测量点的信号是常态。然而,并非所有这些信号在特定的监测系统中都同等重要。这些信号包括了有用的信息、无关的信息以及噪声。通常情况下,工程师获得的…

将Jar用三种方式生成Windows的安装程序

无论是WEB(spring boot)的JAR,还是JavaFX以及swing的Jar,要生成windows方式。 打包成Windows可执行文件(.exe),你可以使用以下三种方法: ### 方法1:使用Inno Setup 1. **构建JavaFX应用程序**: 使用M…

2779. 数组的最大美丽值

简单翻译一下题目意思: 对于每个 nums[i] 都可以被替换成 [nums[i]-k, nums[i]k] 区间中的任何数,区间左右是闭的。在每个数字可以替换的前提下,返回数组中最多的重复数字的数量。 第一想法是用一个哈希表,Key 是可以被替换的数…

Kotlin 语言基础学习

什么是Kotlin ? Kotiln翻译为中文是:靠他灵。它是由JetBrains 这家公司开发的,JetBrains 是一家编译器软件起家的,例如常用的WebStorm、IntelliJ IDEA等软件。 Kotlin官网 JetBrains 官网 Kotlin 语言目前的现状: 目前Android 已将Kotlin 作为官方开发语言。 Spring 框…

硬件SPI读写W25Q64

硬件SPI读写W25Q64 接线图(和软件SPI一样) 使用SPI1,SCK,接PA5;MISO,接PA6;MOSI,接PA7;NSS,可接PA4。 接线图对应:PA5接CLK引脚,PA6…

【数据结构】第十六弹---C语言实现希尔排序

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、希尔排序( 缩小增量排序 ) 1.1、预排序实现 1.2、希尔排序代码实现 1.3、代码测试 1.4、时空复杂度分析 1.5、性能比较 总结 上一弹我们…

Cheat Engine.exe修改植物大战僵尸阳光与冷却

Cheat Engine.exe修改植物大战僵尸阳光与冷却 打开Cheat Engine.exe和植物大战僵尸,点CE中文件下面红框位置,选择植物大战僵尸,点击打开 修改冷却: 等冷却完毕,首次扫描0安放植物,再次扫描变动值等冷却完…

【产品应用】一体化步进伺服电机在吊装机器人中的应用

随着工业自动化和智能制造的发展,吊挂式智能巡检机器人逐渐成为许多工业场景中的重要角色。这类机器人不仅能够提升工作效率,减少人工干预,还能在复杂或危险环境中完成巡检任务。在这些机器人的设计与制造中,一体化步进伺服电机扮…

windows环境如何运行python/java后台服务器进程而不显示控制台窗口

1.通常我们在windows环境下使用Java或Python语言编写服务器程序,都希望他在后台运行,不要显示黑乎乎的控制台窗口: 2.有人写了一个bat文件: cd /d D:\lottery\server && python .\main.py 放到了开机自启动里,可是开机的…

【立体几何】如何使用两个正方体(特殊骰子)摆出所有日期1~31

问题 如何使用两个正方体(特殊骰子)摆出所有日期? 解答 下标列举了所有日期 日期十位数个位数011号正方体:02号正方体:02号正方体:11号正方体:1021号正方体:02号正方体:02号正方体:21号正方…

网络安全形势迫在眉睫!云WAF保护私有云安全!

业务上云面临新的WEB安全挑战 目前,所有的组织都在积极地接受企业的“云”,推进数字化变革。在服务云计算和私有云平台构建中,用户除了要面对各种常见的网络攻击,还需要面对虚拟环境下的非授权访问、虚拟机逃逸和敏感信息泄漏等问…

Android中的KeyEvent详解

介绍 在Android中,KeyEvent 是用来表示按键事件的类,可根据对应的事件来处理按键输入,具体包含了关于按键事件的信息,例如按键的代码、动作(按下或释放)以及事件的时间戳,KeyEvent 对象通常在用…

主观评测图生3D之 --- Era3D

文章目录 概述真人测试(一般)动物(猫猫狗狗,不ok)Q版真人(惊艳) 概述 抱抱脸可以直接测试 不过抱抱脸只能够生成多视图图像以及对应的法向图。 评测的话,拿三类我们比较关心的图片…

Linux内存从0到1学习笔记(8.16 SMMU详解)---更新中

写在前面 前面博客已经了解过。SMMU是IOMMU在ARM架构上的实现。主要为了解决虚拟化环境中,GuestOS无法直接将连续的物理地址分配给硬件的问题。对于Hypervisor/GuestOS的虚拟化系统来说,所有的VM都运行在Hypervisor上,每一个VM独立运行一个O…

实战tcpdump4.99.4交叉编译

主要是记录交叉编译的一个坑,不知道为什么网上的教程都没遇到过。 环境 libpcap 1.10.4tcpdump 4.99.4WSL 编译步骤 注意事项 注意解压的时候文件夹名需要是libpcap-1.10.4,由于我是在github直接下载zip的压缩包名是libpcap-libpcap-1.10.4.tar.gz解…

【二】【动态规划NEW】91. 解码方法,62. 不同路径,63. 不同路径 II

91. 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法&#xff…

两个矩阵差异分析

进行两个矩阵的差异分析是常见的数据分析任务。以下是使用R语言进行两个矩阵差异分析的详细步骤。我们将使用一个具体示例来说明如何计算两个矩阵之间的差异。 示例数据 假设我们有两个矩阵 matrix1 和 matrix2,分别代表不同条件下的基因表达数据。 # 创建示例矩…

基于Matlab的车牌识别停车场出入库计时计费管理系统(含GUI界面)【W6】

简介: 在当今城市化进程加快的环境下,停车管理成为了一个日益重要和复杂的问题。城市中的停车资源有限,如何高效利用和管理这些资源,不仅关乎市民出行便利性,也涉及到城市交通拥堵、环境污染等诸多问题的解决。 传统的…

【转】PG 插件大全,留着学习用

转自:PostgreSQL插件_postgresql 插件-CSDN博客 PostgreSQL插件_postgresql 插件-CSDN博客

Denoising Prior Driven Deep Neural Network for Image Restoration

之所以能够检索到这篇论文是想看看该论文是如何利用多尺度相似性解决图像去噪问题,除了摘要和结论,论文中两次提到这个术语。next section是指section 4。然后整个section 4,根本没有提多尺度的事儿,更别说解决了。又看了一下The …