笔记 | 软件工程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.mzph.cn/bicheng/27754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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、性能比较 总结 上一弹我们…

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

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

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

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

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

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

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

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

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

Denoising Prior Driven Deep Neural Network for Image Restoration

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

【idea】解决springboot项目中遇到的问题

一、Maven报错Could not find artifact com.mysql:mysql-connector-j:pom:unknown in aliyunmaven解决及分析 报错 创建springboot项目,勾选数据库驱动,springboot版本为3,现在改成了2.7.2,Maven就发生了报错Could not find art…

CCAA质量管理【学习笔记】​​ 备考知识点笔记(三)质量管理方法与常见工具

第二部分 质量管理领域专业知识 《质量管理体系基础考试大纲》中规定的考试内容: 3.2 质量管理领域专业知识 a) 了解质量管理方法与工具相关知识,包括: 质量管理方法与工具的内涵与作用、发展历程与应用现状、分类与选择常用的应用软件…

Vue使用vue-esign实现在线签名 加入水印

Vue在线签名 一、目的二、样式三、代码1、依赖2、代码2.1 在线签名组件2.1.1 基础的2.1.2 携带时间水印的 2.2父组件 一、目的 又来了一个问题,直接让我在线签名(还不能存储base64),并且还得上传,我直接***违禁词。 好…

每日5题Day25 - LeetCode 121 - 125

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:121. 买卖股票的最佳时机 - 力扣(LeetCode) class Solution {public int maxProfit(int[] prices) {if(prices.length 1){return 0;}//dp…

TJA1145休眠唤醒调试

目录 项目场景:TJA1145引脚图问题描述SPI链路验证休眠唤醒休眠唤醒配置唤醒报文配置代码相关寄存器:模式寄存器使能CAN唤醒设置唤醒边沿检测事件状态及捕获寄存器CANFD报文不会被识别为有效的唤醒帧项目场景: 最近开发过程中,选择了这颗芯片,踩了很多坑,总算是把这个芯片…

mysql报错Access denied for user ‘root‘,navicat可以连接mysql,spring不能连mysql

首先修改配置文件跳过验证,编辑你自己挂载的配置文件的位置 #查找my.cnf位置 sudo find / -name "my.cnf"编辑mysql配置文件 vim /opt/soft/mysql/conf/my.cnf #在[mysqld]下面添加 skip_grant_tables#重启mysql docker restart mysql#进入容器 docke…