当前位置: 首页 > 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操作即可...

职场加班记录程序,加班时间,内容上链,不可篡改,用于薪资核算维权。

一、实际应用场景描述在软件开发、互联网运营、运维等岗位中&#xff0c;加班现象较为普遍。典型流程为&#xff1a;1. 员工在下班后继续处理工作2. 通过聊天工具或口头告知主管3. 人事/财务在月底统计加班时长4. 薪资核算时存在争议或遗漏本系统通过客户端自主上链 哈希存证的…...

视觉数学问题求解:多模态融合与图表理解技术

1. 项目背景与核心挑战视觉数学问题求解是教育科技领域长期存在的难点。传统OCR技术虽然能识别图表中的文字信息&#xff0c;但无法理解图表与数学问题之间的逻辑关联。我在参与某在线教育平台智能解题系统开发时&#xff0c;发现学生提交的题目中约37%包含图表元素&#xff0c…...

ARM PMU架构与性能监控实战指南

1. ARM PMU架构概述性能监控单元(Performance Monitoring Unit, PMU)是现代处理器中用于硬件性能分析的关键模块。在ARM架构中&#xff0c;PMU通过事件计数器(Event Counter)机制实现对指令执行、缓存命中、分支预测等微架构事件的监测。这种硬件级的性能监控能力为系统调优、瓶…...

PIM技术:从内存计算原理到AI加速实践

1. PIM技术发展史&#xff1a;从实验室概念到商业落地的演进之路1969年&#xff0c;当William Kautz在《IEEE Transactions on Computers》发表关于"内存中的蜂窝逻辑"论文时&#xff0c;恐怕不会想到这个概念会在50多年后成为突破"内存墙"的关键技术。作为…...

Go语言的runtime.MemProfile方法论

Go语言作为一门高效、简洁的编程语言&#xff0c;其内存管理机制一直备受开发者关注。在性能优化和内存泄漏排查中&#xff0c;runtime.MemProfile方法论是开发者不可或缺的工具之一。它能够帮助开发者深入理解程序的内存分配情况&#xff0c;从而精准定位问题。本文将从几个关…...

云原生边缘计算:设计与实践

云原生边缘计算&#xff1a;设计与实践 一、边缘计算的概念与价值 1.1 边缘计算的定义 边缘计算是一种分布式计算范式&#xff0c;将计算、存储和网络资源部署在靠近数据源或用户的边缘位置&#xff0c;以减少延迟、节省带宽、提高安全性和可靠性。在云原生环境中&#xff0c;边…...

Cursor Pro破解工具完整指南:3步实现永久免费AI编程

Cursor Pro破解工具完整指南&#xff1a;3步实现永久免费AI编程 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial…...

从“路怒症”到“老司机”:在SUMO里用四种变道模型,模拟真实城市交通博弈

从“路怒症”到“老司机”&#xff1a;在SUMO里用四种变道模型模拟城市交通博弈 环岛入口处五辆车同时减速&#xff0c;最外侧车道的卡车突然打转向灯&#xff0c;后方三辆轿车同时做出不同反应&#xff1a;一辆急刹让行&#xff0c;一辆加速抢道&#xff0c;另一辆则微妙地调…...

人流量统计功能设计

1 客户几乎不可能一天不关闭app&#xff0c;当他关闭app的时候&#xff0c;需要把数据实时保存-------其实非常类似计步器&#xff0c;建议每隔开1分钟&#xff0c;保存一次数据&#xff0c;就可以了。打开以后可以判断日期&#xff0c;然后累加...

流处理引擎:事件时间与处理时间窗口的语义区别

流处理引擎&#xff1a;事件时间与处理时间窗口的语义区别 在实时数据处理领域&#xff0c;流处理引擎的核心挑战之一是如何准确处理时间维度。事件时间&#xff08;Event Time&#xff09;与处理时间&#xff08;Processing Time&#xff09;是两种关键的时间语义&#xff0c…...