软考小记-软件工程

模块的控制范围包括模块本身及其所有的从属模块。模块的作用范围是指模块一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围.,原则上一个模块的作用范围应该在其控制范围之内,若没有,则可以将判定所在模块合并到父模块中,使判定处于较高层次。
在软件设计中,人们总结了一些启发式原则,根据这些原则进行设计,可以设计出较高质量的软件系统。其中,模块的扇入扇出适中,模块大小适中以及完善模块功能都可以改进设计质量。而将相似功能的模块合并可能会降低模块内聚和提高模块之间的耦合,因此并不能改进设计质量。

软件需求

软件需求包括功能需求、非功能需求和设计约束三个方面的内容。

  • 功能需求是所开发的软件必须具备什么样的功能
  • 非功能需求是指产品必须具备的属性或品质,如可靠性、性能、响应时间和扩展性等等
  • 设计约束通常对解决方案的一些约束说明

“软件产品必须能够在3秒内对用户请求作出响应”主要表述软件的响应时间,属于非功能需求。

软件设计模式

单例Singleton:保证一个类只产生唯一的一个实例。
桥接Bridge:抽象设计和具体实现分离,都可以独立变化。
状态State:一个对象内部状态改变时,调用另一个类的方法改变其行为,使得这个对象看起来修改了其他的类。
适配器Adapter:讲一个类的接口转换为另一个接口,解决接口的不兼容问题。既是类结构模式,又是对象结构模式。
外观Facade:单个对象表示整个子系统,一个复杂子系统提供一个简单接口。
生成器Builder:模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
观察者Observer:一个对象在其状态改变时,通知依赖它的所有对象。
代理Proxy:提供与对象相同的接口来控制对这个对象的访问。
中介者Mediator:用一个中介对象封装一系列的对象交互。

数据流图

数据流图是核心的分析模型,用来描述数据流从输入到输出的变换流程。建立数据流图的过程其实就是理解需求的过程,因此建模时应遵循自顶向下、从抽象到具体的原则,构建一组分层的数据流图。

软件结构

其中,软件结构包括功能结构、功能的通用性、模块的层次性、模块结构和处理过程的结构,
而模块结构包括控制流结构、数据流结构、模块结构与功能结构之间的对应关系。

模块化设计

模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。
模块作用域:指受该模块内一个判定所影响的所有模块的集合。
模块的作用域应该在控制域范围之内。

结构化开发方法

结构化开发方法由结构化分析、结构化设计和结构化程序设计构成,是一种面向数据流的开发方法。结构化方法总的指导思想是自顶向下、逐层分解,基本原则是功能的分解与抽象。
它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题,但是不适合解决大规模的、特别复杂的项目,而且难以适应需求的变化。

结构化分析

结构化分析的输出包括数据流图、数据字典和加工逻辑。确定软件体系结构是在软件设计阶段进行的。
其中数据字典用来描述DFD中的每个数据流、文件以及组成数据流或文件的数据项,包括4类条目:数据流、数据项、数据存储和基本加工。

  • 根据加工规格说明和控制规格说明进行过程设计;
  • 根据数据字典和实体关系图进行数据设计;
  • 根据数据流图进行接口设计;
  • 根据数据流图进行体系结构设计。

结构化设计

结构化设计的输出是结构图
结构化设计主要包括:

  • 体系结构设计:定义软件的主要结构元素及其关系。
  • 数据设计:基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。
  • 接口设计:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。
  • 过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。

结构化开发

  • 传入模块:取得数据或输入数据,经过某些处理,再将其传送给其他模块。
  • 传出模块:输出数据,在输出 之前可能进行某些处理,数据可能被输出到系统的外部,或者会输出到其他模块进行进一步处理。
  • 变换模块:从上级调用模块得到数据,进行特定的处理,转换成其他形式,在将加工结果返回给调用模块。
  • 协调模块一般不对数据进行加工,主要是通过调用、协调和管理其他模块来完成特定的功能。

基于构件的软件开发

基于构件的软件开发,主要强调在构建软件系统时复用已有的软件“构件”,在检索到可以使用的构件后,需要针对新系统的需求对构件进行合格性检验、适应性修改,然后集成到新系统中。

模块独立性

本题考查软件设计基础知识。模块独立性是创建良好设计的一个重要原则,一般采用模块间的耦合和模块的内聚两个准则来进行度量。耦合程度越低,内聚程度越高,则模块的独立性越好。

高内聚

模块的内聚是一个模块内部各个元素彼此结合的紧密程度的度量。

  • 巧合内聚:指一个模块内的各处理元素之间没有任何联系。
  • 逻辑内聚:指模块内执行考干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
  • 时间内聚:把需要同时执行的动作组合在一起形成的模块。
  • 过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。
  • 偶然内聚:指一个模块内的各个处理元素之间没有任何联系。
  • 通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
  • 功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。

低耦合


存在多种模块之间的耦合类型,从低到高依次为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。

软件设计阶段

从工程管理的角度,可以将软件设计分为两个阶段:概要设计阶段和详细设计阶段。

  • 结构化设计方法中,概要设计阶段进行软件体系结构的设计、数据设计和接口设计;详细设计阶段进行数据结构和算法的设计。
  • 面向对象设计方法中,概要设计阶段进行体系结构设计、初步的类设计/数据设计、结构设计;详细设计阶段进行构件设计。

结构化设计和面向对象设计是两种不同的设计方法,结构化设计根据系统的数据流图进行设计,模块体现为函数、过程及子程序;面向对象设计基于面向对象的基本概念进行,模块体现为类、对象和构件等。

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

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

相关文章

安装向量数据库milvus及其Attu

前置条件安装docker compose 在宿主机上创建文件目录 mkdir -p /home/sunyuhua/milvus/db mkdir -p /home/sunyuhua/milvus/conf mkdir -p /home/sunyuhua/milvus/etcd下载docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-s…

OpenGL_Learn14(光照贴图)

1. 漫反射贴图 在光照场景中,它通常叫做一个漫反射贴图(Diffuse Map)(3D艺术家通常都这么叫它),它是一个表现了物体所有的漫反射颜色的纹理图像。 我们会将纹理储存为Material结构体中的一个sampler2D 。我们将之前定义的vec3漫反…

AI技术实力认证,宏电股份荣获2023年度AI天马“领军企业”

近日,由中国新一代人工智能发展战略研究院指导,深圳市人工智能产业协会主办,广东未来产业研究院承办的2023年度“AI天马”认定最终结果公布,宏电股份荣获AI天马“领军企业”奖项。 宏电股份基于20余年的技术沉淀,在工业…

基于猎食者算法优化概率神经网络PNN的分类预测 - 附代码

基于猎食者算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于猎食者算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于猎食者优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

关于lenra你需要了解的

monorepo:项目代码管理方式,单个仓库中管理多个项目是一种设计思想 lenra:是一种工具,对于使用npm和git管理多软件包代码仓库的工作流程进行优化 使用这些工具的优点: 公共依赖只要安装一次,Monorepo 中…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大关键点分析

数字化时代银行网点厅堂营销需要抓住以下5大关键点: 1、精准识别客户:在数字化时代,银行网点厅堂营销的关键在于精准识别客户。通过利用大数据和人工智能技术,银行可以分析客户的行为和需求,从而更好地了解客户&#…

面试题:你怎么理解System.out.println() ?

文章目录 首先分析System源码out源码分析println分析拓展知识点 你如何理解System.out.println() ? 学了这么久的面向对象编程,那如何用一行代码体现呢? 如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义 面向对…

如何理解低代码开发工具?

目录 一、低代码平台是什么 1. 数据输入 2. 数据流转 3. 数据加工 4. 数据输出 (1)视图:单表的数据的简单展示 (2)看板:提供单表、多表数据的多种图表组合展示 二、低代码能力 ➪ 全栈可视化编程&#xff1…

大彻大悟,期末的大学生请码住!!

不装了,我摊牌了,这东西大学生太太太需要了啊! 就是这个 写作火火,只需要输入需求,一键生成,几秒就给我写出来一篇,不满意还可以重新写,关键每次内容都不一样,完全不怕…

Redis常用的八种场景

作为一名 Java后端人员,对 Redis肯定并不陌生,Redis作为一种内存数据库,以其速度之快在编程的舞台上纵横多年,那么,Redis到底适合哪些业务场景?今天就来聊一聊。 1. 缓存/数据库 缓存(Cache&am…

电压放大器实验可以研究哪些领域

电压放大器是一种电子电路,能够对输入信号进行放大,使得输出信号具有更大的幅度。在实验中,电压放大器可以应用于许多领域,从电子学到通信领域,都能够进行研究与实践。 在电子学领域,电压放大器实验可以用于…

算法---腐烂的橘子

题目 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格…

STM32在进行CAN总线多节点通信时,同时发数据会一直收不到某设备数据的问题及解决

CAN多设备通信收不到某设备数据的问题及解决 遇到的问题问题的发现CAN总线的一般冲突机制STM32中的CAN冲突机制 遇到的问题 问题的发现 最近在开发Canopen项目中,进行一主多从设备通信时,主站发送同步帧,两个从站往往只有帧ID优先级高的设备…

【C++进阶之路】第四篇:set和map

文章目录 一、关联式容器健值对二、set & multiset三、map & multimap在这里插入图片描述 四、set和map底层原理 一、关联式容器健值对 关联式容器 & 键值对 二、set & multiset set & multiset 三、map & multimap map & multimap 四、set和…

SocketIo的使用和基于SocketIO的聊天室

Socket.IO 是一个库,可以在客户端和服务器之间实现 低延迟, 双向 和 基于事件的 通信。 一、Socket.IO的特点 以下是 Socket.IO 在普通 WebSockets 上提供的功能: 1、HTTP 长轮询回退 如果无法建立 WebSocket 连接,连接将回退到 HTTP 长轮…

Cesium 加载geojson数据类型点线面

1.获取geojson数据,本地新建一个.ts文件放置数据导出,并引入 获取geojson数据: DataV.GeoAtlas地理小工具系列 import { scGeojson } from ./geojson; 2.加载面 const addPolygonEvt () > {viewer.dataSources.add(Cesium.GeoJsonDataSo…

【计算机网络学习之路】Windows下的socket编程

文章目录 前言Windows下的socket编程1.预备工作2. socket编程 结束语 前言 本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步。 本篇文章仅记录Windows下socket编程和Linux的不同,并没…

云ES容灾方案

一、ES集群可用性容灾 1.1 云ES集群可用性容灾(使用跨可用区实例) 云ES集群部署在三个可用区,单可用区故障,云ES集群依然可能对外提供服务;两个可用区故障,需要进行控制台切流(集群会自动切的选择主节点) 应用服务部署在二个可用区,单可用区故障,依然可对提供服务1.2 …

开源网安解决方案荣获四川数实融合创新实践优秀案例

​11月16日,2023天府数字经济峰会在成都圆满举行。本次峰会由四川省发展和改革委员会、中共四川省委网络安全和信息化委员会办公室、四川省经济和信息化厅等部门联合指导,聚焦数字经济与实体经济深度融合、数字赋能经济社会转型发展等话题展开交流研讨。…