【软件建模与设计】-04-软件设计和体系结构概念

目录

1、类与对象

2、信息隐藏

2.1、示例

3、继承和泛化/特化

4、并发处理

4.1、并发对象间的协作

5、设计模式

6、软件体系结构和构件

7、软件质量属性


1、类与对象

一个对象是现实世界中物理的或概念的实体。

一个对象盖了数据(data)以及作用于数据之上的过程(procedure),这些过程通常被称为操作(operation)或者方法method)。

一个操作的签名(signature)代表该操作的名字、参数以及返回值。

一个对象的接口(interface)是它提供的操作的集合,
 

一个对象的类型通过它的接口来定义,对象的实现则由它的类来定义。

属性(attribute)是由类中的对象所持有的一个数据值,每一个对象的属性都有一个特定的取值。

操作是由一个对象所执行的一项功能的规约。一个对象可拥有一个或多个操作。操作对对象所包含的属性值进行操控。操作可具有输入和输出参数。

一个对象是一个类的实例。在执行阶段,单个对象按照需求被实例化。

每一个对象都有一个独一无二的标识,该标识是将该对象与其他对象进行区分的特征。

2、信息隐藏

体现了面向对象中的封装、抽象的理念。

仅能通过对操作进行调用而被外界间接地访问(访问过程或函数)

操作的规约(即操作的名字和参数)被称为对象接口。

对象接口也被称为抽象接口、虚拟接口或外部接口。

接口表示了对象的可见部分,即对象中与用户相关的部分。其他对象则通过接口调用这个对象所提供的操作。

数据抽象:仅能通过调用对象的操作来间接地访问被封装起来的数据结构。

2.1、示例

通过将数据存储在栈/数组中,对外暴露调用接口,实现数据隐藏。

栈类的设计

以下是栈的操作流程(下图不符合标准UML构图)

以下是链表表示形式

一个对象(或类)的设计分为两步:

首先设计作为外部视图的接口,随后设计内部细节。

第一步是高层设计的一部分,而第二步则是详细设计的一部分。

3、继承和泛化/特化

继承是在不同类中分享和复用代码的机制。一个子类(childclass)继承其父类(parentclass)的特性(被封装的数据和操作)。随后它能够修改其父类的结构(被封装的数据)和行为(操作)。

父类被称为超类(superclass)或者基类(baseclass)。子类被称为子类(subclass)或者是派生类(derived class)。

将父类进行修改从而形成子类的过程被称为特化。子类可以被进一步特化,这样就创建出了类的层次结构,这也叫做泛化/特化层次结构

4、并发处理

一个对象可能是主动的(主动类,可独立运行),也可能是被动的(等待其他线程调用)。

并发对象也叫做主动对象、并发过程、并发任务或者线程。一个并发对象(主动对象)拥有自己的控制线程并能独立于其他的对象而执行。

被动对象拥有被并发对象所调用的操作。被动对象也能调用其他被动对象中的操作。被动对象没有控制线程,因此它们是被动类的实例。被动对象中的一个操作一旦被并发对象调用,就会在并发对象的控制线程中执行。

4.1、并发对象间的协作

三种协作问题:

1)访问互斥资源:多读-多写

2)互相同步数据:同步问题

3)并发对象间相互通信:生产者/消费者问题,进程间通信IPC

5、设计模式

可复用模型分类:

1)设计模式:一个小组协作的对象

2)体系结构模式:比设计模式的粒度更大, 用于定义一个系统中的主要子系统结构

3)分析模式:分析不同领域,找到共性,并用静态模型(类图)进行描述

4)特定产品线模式:关注特定应用领域

5)习惯法:最低层次,特定编程语言的设计模式

6、软件体系结构和构件

软件体系结构使用构件及其连接的方式,将系统的整体结构与单个构件的内部实现细节进行分离。

供给接口、请求接口以及连接构件的连接器

1、构件和构件接口:显示的暴露接口

2、连接器:封装构件间的交互协议,使得构件可以异步、松耦合的方式进行通信。

7、软件质量属性

非功能性需求,评价最终软件产品的质量

性能(performance)。系统满足其性能目标的程度,例如吞吐量和响应时间。


安全性(security)。系统抵御安全威胁的程度。


可用性(availability)。系统能够解决系统失效问题的程度

可维护性(maintainability)。在软件部署之后它能够被更改的程度。


可修改性(modifability)。在最初开发期间和最初开发之后软件能够被修改的程度

可测试性(testability)。软件能够被测试的程度。


可追踪性(traceability)。每一个阶段的产品能够被追踪到上一个阶段产品的程度


可伸缩性(scalability)。在最初部署之后系统能够成长的程度。


可复用性(reusability)。软件能够被复用的程度。

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

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

相关文章

缓存和数据库双写的四种策略分析

概述 缓存是提升系统性能的极为简便的手段之一。相较而言,数据库(或者 NoSQL 数据库)的运行速度较为迟缓,然而速度在很多时候却是决胜的关键要素。采用缓存能够降低响应时间、减轻数据库负载并且节约成本。 正因如此,往…

HTML2048小游戏

源代码在效果图后面 效果图 源代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2048 Game&l…

银河麒麟搭建ftp服务器

1.先 查看系统架构&#xff0c;一般银河麒麟都是arrch64的 lscpu uname -a cat /etc/os-release 去下载对应版本的vsftp.rpm包和ftp包 Index of /NS/ (cs2c.com.cn) 1.安装rpm rpm -ivh *.rpm --nodeps --force #强制安装 2.修改配置文件 vi /etc/vsftpd/vsftpd.conf anon…

【STC89C51单片机】串口通信

【STC89C51单片机】串口通信 串口简介1. 串口接线方式2. 通信过程 相关寄存器1. SBUF&#xff08;Serial Buffer Register&#xff09;2. SCON&#xff08;Serial Control Register&#xff09;3. PCON&#xff08;Power Control Register&#xff09;4. TCON&#xff08;Timer…

北京青蓝智慧科技CCRC-DCO数据合规官:人工智能遭遇寒冬?

人工智能技术是否真正迈入了新纪元&#xff1f; 历史上&#xff0c;人工智能已经经历了多次起伏&#xff0c;每次都伴随着寒冷的冬天。 然而&#xff0c;为什么这一次的技术变革被看作是人类社会重大转型的关键节点呢&#xff1f;在CES 2024上&#xff0c;吴恩达和李飞飞预言了…

【HZHY-AI300G智能盒试用连载体验】RTC示例程序测试

本文首发于&#xff1a;【   】【HZHY-AI300G智能盒试用连载体验】 智能工业互联网网关 - 北京合众恒跃科技有限公司 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) HZHY-AI300G智能盒默认的系统是Ubuntu&#xff0c;这样非常方便使用&#xff0c;接上USB键盘和…

开发一个自己的chrom插件

开发一个自己的chrom插件 一、创建一个文件夹 二、配置文件manifest.json 创建名字为&#xff1a;manifest.json的配置文件&#xff0c;模板如下&#xff1a; {"manifest_version": 3,"name": "Hello World Extension","version": …

如何防范场外个股期权的交易风险?

场外个股期权交易&#xff0c;作为金融衍生品市场的重要组成部分&#xff0c;为投资者提供了更为灵活和多样化的投资策略。然而&#xff0c;其高杠杆、高风险特性也使得投资者在追求高收益的同时&#xff0c;面临着较大的交易风险。为了有效防范这些风险&#xff0c;投资者需要…

生成式之CycleGAN图像风格迁移互换

模型介绍 CycleGAN是一种循环对抗生成网络&#xff0c;用于实现在没有配对示例的情况下学习将图像从一个域转换到另一个域的方法。它的重要应用领域是域迁移&#xff0c;即图像风格迁移。与之前的模型不同&#xff0c;CycleGAN不需要训练数据成对出现&#xff0c;因此可以实现…

沙尘传输模拟教程(基于wrf-chem)

沙尘传输模拟教程(基于wrf-chem) 文章目录 沙尘传输模拟教程(基于wrf-chem)简介实验目的wrf-chem简介 软件准备wps、wrf-chem安装conda安装ncl安装ncap安装 数据准备气象数据准备下垫面数据准备 WPS数据预处理namelist.wps的设置geogrid.exe下垫面处理ungrib.exe气象数据预处理…

AI、ML、DL 和 DS 之间的区别

人工智能 数据分析 数据科学 深度学习 机器学习 神经网络 在本文中&#xff0c;我们将了解 AI&#xff08;人工智能&#xff09;、ML&#xff08;机器学习&#xff09;、DL&#xff08;深度学习&#xff09;和 DS&#xff08;数据科学&#xff09;之间的区别。这些术语经常互换…

K8S 上部署 Emqx

文章目录 安装方式一&#xff1a;快速部署安装方式二&#xff1a;定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 Pod3. 使用 Services 公开 EMQX Broker Pod 服务4. 通过 kubernetes 自动集群 EMQX MQTT 服务器5. 修改 EMQX Broker 的配置6. 赋予 Pod 访…

第11章 规划过程组(11.5规划资源管理)

第11章 规划过程组&#xff08;四&#xff09;11.4规划质量管理&#xff0c;11.5规划资源管理在第三版教材第414~419页&#xff1b; 图片文字音频方式 视频38 第一个知识点&#xff1a;主要输出 1、质量管理计划 描述如何实施适用的政策、程序和指南以实现质量目标&#xff…

【Socket套接字编程】(实现TCP和UDP的通信)

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

数据分析01——系统认识数据分析

1.数据分析的全貌 1.1观测 1.1.1 观察 &#xff08;1&#xff09;采集数据 a.采集数据&#xff1a;解析系统日志 当你在看视频的时候———就会产生日志———解析日志———得到数据 b.采集数据&#xff1a;埋点获取新数据&#xff08;自定义记录新的信息&#xff09; 日志…

数据建模标准-关系建模

数据模型定义&#xff1a;DAMA数据治理体系中将数据模型定义为一种文档形式&#xff0c;数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介&#xff1b; 作用&#xff1a;记录数据需求和建模过程中产生的数据…

应用最优化方法及MATLAB实现——第4章代码实现

一、概述 之前对这本书的第三章进行了代码实现&#xff0c;这篇博客是对这本书第4章相关代码进行实现&#xff0c;部分内容安装书中代码无法实现相应功能&#xff0c;MATLAB会报错&#xff0c;对其进行一定程度的更改后&#xff0c;可以正常运行&#xff0c;与书中所给示例运行…

亲测--linux下安装ffmpeg最新版本---详细教程

下载地址 Download FFmpeg 下载最新的https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.xz 上传到服务器 解压 tar xvf ffmpeg-7.0.1.tar.xz 编译 cd ffmpeg-7.0.1 ./configure --prefix=/usr/local/ffmpeg make && make install 报错: 解决:在后面加 跳过检测…

Template_C++

C模板 C提供了function template. function template&#xff1a;实际上是建立一个通用函数&#xff0c;其函数类型和形参类型不具体制定&#xff0c;用一个虚拟的类型来代表。这个通用的函数就称为函数模版。 是不是可以这样理解&#xff0c;函数模版就是给了一种功能&…

线程的中断和同步问题

1、自动终断【完成】&#xff1a;一个线程完成执行后&#xff08;即run方法执行完毕&#xff09;&#xff0c;不能再次运行 。 2、手动中断&#xff1a; stop( ) —— 已过时&#xff0c;基本不用。&#xff08;不安全&#xff0c;就像是突然停电&#xff09; interrupt( ) …