当前位置: 首页 > news >正文

软考小记-软件工程

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

软件需求

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

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

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

软件设计模式

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

数据流图

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

软件结构

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

模块化设计

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

结构化开发方法

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

结构化分析

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

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

结构化设计

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

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

结构化开发

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

基于构件的软件开发

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

模块独立性

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

高内聚

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

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

低耦合


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

软件设计阶段

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

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

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

相关文章:

软考小记-软件工程

模块的控制范围包括模块本身及其所有的从属模块。模块的作用范围是指模块一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围.,原则上一个模块的作用范围应该在其控制范围之内,若没有,则可以将判定所在模块…...

【开源】基于Vue和SpringBoot的创意工坊双创管理系统

项目编号: S 049 ,文末获取源码。 \color{red}{项目编号:S049,文末获取源码。} 项目编号:S049,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、…...

COBOL排序问题

*SORT排序文件文件超长,将主键保存在临时文件里,超长的数据从数组里面去检索获取。 IDENTIFICATION DIVISION. PROGRAM-ID. TEST002. * ENVIRONMENT DIVISION. CONFIGURATION SECTION. …...

数字化转型过程中面临最大的问题是什么?如何借助数字化工具实现快速转型?

在科技快速发展的时代,数字化转型已经成为企业的重要战略。当企业努力适应数字化时代并取得成功时,他们可能会面临各种必须有效应对的挑战。   数字化转型不仅仅是将新技术应用到企业的运营中,还需要对企业的运营方式、与客户的互动方式和价…...

视频剪辑有妙招:批量置入封面,轻松提升视频效果

随着社交媒体的兴起,视频已经成为分享和交流的重要方式。无论是专业的内容创作者还是普通的社交媒体用户,都要在视频剪辑上下一番功夫,才能让视频更具吸引力。而一个吸引的封面往往能在一瞬间抓住眼球,提高点击率。还在因如何选择…...

Java查询多条数据放入word模板 多个word文件处理成zip压缩包并在前端下载.zip文件

需求:Java查询多条数据放入word模板 多个word文件处理成zip压缩包并在前端下载.zip文件 解决方法:在模板的位置定义参数如 {{name}} {{age}}等等,使用 poi 处理 伪代码: PostMapping("/exportPracticeAppr")public S…...

PC8223(CC/CV控制)高耐压输入5V/3.4A同步降压电路内建补偿带恒流恒压输出

概述 PC8233(替代CX8853)是一款同步降压调节器,输出电流高达3.4A,操作范围从8V到32V的宽电源电压。内部补偿要求最低数量现成的标准外部组件。PC8233在CC(恒定输出电流)模式或CV(恒定输出电压)模式&#x…...

【webrtc】ModuleRtpRtcpImpl2: RtpRtcp DEPRECATED_Create 废弃了

基于m98 代码。Deprecate the static RtpRtcp::Create() method. 提交记录RtpRtcp::Create factory method 工厂方法废弃了。std::unique_ptr<RtpRtcp> RtpRtcp::DEPRECATED_Create(const Configuration& configuration) {RTC_DCHECK...

八股文面试day5

测试即&#xff08;验证产品特性是否符合用户需求、检测系统是否能满足客户需求&#xff0c;是否能正常运行&#xff0c;数据会有没有正确&#xff09; 测试流程就是&#xff1a;需求评审&#xff0c;编写测试计划&#xff0c;设计测试用例&#xff0c;执行测试用例&#xff0…...

数据处理生产环境_获取当前日期的前一天日期

需求描述&#xff1a; 我现在有一个dataframe,名为dfin,样例数据如下 a1_id_lxha2_PHtime比亚迪_汉1232023-11-15 12:12:23比亚迪_汉1252023-11-15 13:14:51比亚迪_汉1232023-11-15 12:13:23比亚迪_汉1262023-11-16 14:12:34比亚迪_秦2312023-11-15 14:12:28比亚迪_秦2342023…...

5.过滤敏感词 + 发布帖子 + 帖子详情

目录 1.过滤敏感词 1.1 定义前缀树 1.2 根据敏感词,初始化前缀树 1.3 编写过滤敏感词方法...

大数据基础设施搭建 - Flume

文章目录 一、上传压缩包二、解压压缩包三、监控本地文件&#xff08;file to kafka&#xff09;3.1 编写配置文件3.2 自定义拦截器3.2.1 开发拦截器jar包&#xff08;1&#xff09;创建maven项目&#xff08;2&#xff09;开发拦截器类&#xff08;3&#xff09;开发pom文件&a…...

华为OD机试 - 找朋友(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述大白话解释一下就是&#xff1a;1、输入&#xff1a;2、输出&#xff1a;3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专…...

ESP32 MicroPython 颜色及二维码识别⑫

ESP32 MicroPython 颜色及二维码识别⑫ 1、颜色识别2、二维码识别 1、颜色识别 使用AI颜色识别功能&#xff0c;可以实现颜色辨别、颜色追踪等应用。颜色识别模型内置有9种常见的颜色识别和一种颜色学习识别模式。他们分别是&#xff1a; ai.COLOR_RED 表示识别红色 ai.COLOR…...

数据结构与算法编程题15

设计一个算法&#xff0c;通过遍历一趟&#xff0c;将链表中所有结点的链接方向逆转&#xff0c;仍利用原表的存储空间。 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #define OK 1;typedef struct LNode {Elemtype data; …...

基于Mapmost Alpha工具快速搭建3D场景可视化大屏

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

OpenAI再次与Sam Altman谈判;ChatGPT Voice正式上线

11月22日&#xff0c;金融时报消息&#xff0c;OpenAI迫于超过700名员工联名信的压力&#xff0c;再次启动了与Sam Altman的谈判&#xff0c;希望他回归董事会。 在Sam确定加入微软后&#xff0c;OpenAI超700名员工签署了一封联名信&#xff0c;要求Sam和Greg Brockman&#x…...

技术是增长关键驱动!传音控股新专利亮相,看未来手机趋势

近日&#xff0c;有媒体报道从国家知识产权局发现传音控股取得多项突破性的技术专利&#xff0c;包括图像处理技术、准共址关系指示、panel状态处理等。当下的智能手机行业&#xff0c;已进入高度成熟阶段&#xff0c;技术是产业新一轮增长点已成为业内共识。 传音控股认为&am…...

C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值]

C# - Opencv应用&#xff08;2&#xff09; 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值] 矩阵创建图像显示与保存像素读取与赋值新建sample02项目&#xff0c;配置opencv4相关包&#xff0c;新建.cs进行测试 1.矩阵创建 //创建空白矩阵 var dst new Mat()//创建并赋…...

执行npm的时候报权限问题的解决方案

我们在执行npm操作的过程中&#xff0c;会出现以下权限问题&#xff0c;解决方案: 管理员身份 运行cmd 切换目录到要执行命令的文件下 再进行npm操作即可...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的&#xff0c;如果需要进行.NET开发&#xff0c;则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET&#xff0c;所以要进…...

Java中栈的多种实现类详解

Java中栈的多种实现类详解&#xff1a;Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...

Cursor AI 账号纯净度维护与高效注册指南

Cursor AI 账号纯净度维护与高效注册指南&#xff1a;解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后&#xff0c;许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...