软件设计师中级概念题

软件过程模型

1. 瀑布模型:

五个阶段:需求分析、设计、编码、测试、运行与维护
为软件的开发和维护提供了一种有效的管理模式,它是以文档作为驱动、合适于软件需求很明确的软件项目模型。瀑布模型假设,一个待开发的系统需求是完整的、简明的、一致的,而且可以先于设计和实现完成之前产生。
优点:容易理解、管理成本低;强调开发的阶段性早期计划及需求调查和产品测试。
缺点:
客户必须能够完整、正确和清晰地表达他们的需求;
在开始的两个或三个阶段中,很难评估真正的进度状态;
当接近项目结束时,出现大量的集成和测试工作;
直到项目结束之前,都不能演示系统的能力
需求或设计中的错误往往只有到了项目后期才能够被发现,对于项目风险的控制能力较弱

2. 增量模型:

优点:
具有瀑布模型的所有优点
第一个可交付版本所需要的成本和时间很少
开发由增量表示的小系统所承担的风险不大
由于很快发布了第一个版本,因此可以减少用户需求的变更
运行增量投资,即在项目开始时,可以仅对一个或两个增量投资
缺点:
如果没有对用户的变更要求进行规划,那么产生的初始化增量可能会造成后来增量的不稳定
如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布
管理发生的成本、进度和配置的复杂性可能会超出组织的能力

3. 演化模型:

迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。适用于对软件需求缺乏准确认识的情况。

4. 原型模型:

适合于用户需求不清、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法比较好

5. 螺旋模型:

是将瀑布模型和演化模型结合起来,加入了其他两个模型忽略的风险分析
每个螺旋周期分为如下4个工作步骤:1.制定计划、2.风险分析、3.实施工程、4.用户评估
优点:
该模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。
** 该模型特别适用于庞大、复杂且具有高风险的系统。**
** 支持用户需求的动态变化;**
** 为用户采用软件开发的所有关键决策提供了方便,有助于提高软件的适应能力;**
** 降低了软件开发的风险。**
缺点:
** 需要开发人员具有相当丰富的风险评估经验和专门知识;**
** 过多的迭代次数会增加开发成本,延迟提交时间**

6. 喷泉模型:

** 是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。**
** 具有迭代性和无间隙性**
** 迭代性:模型中的开发活动常常需要重复多次,在迭代过程中不断地完善软件系统**
** 无间隙性:是指在开发活动(如分析、设计、编码)之间不存在明显的边界**;它不像瀑布模型那样,在需求分析活动结束后才开始设计活动,在设计活动结束后才开始编码活动,而是允许开发活动交叉、迭代地进行
优点:
可以提高软件项目的开发效率节省开发时间
缺点:
由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理;
要求严格管理文档,使得审核的难度加大

7. 基于构件的开发模型:

是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的,也可以是商品化成品软件构件

8. 形式化方法模型:

建立在严格数学基础上的一种软件开发方法,其主要活动是生成计算机软件形式化的数学规格说明

9. 统一过程模型

统一过程模型是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。迭代的意思是将整个软件开发项目**划分为许多个小的“袖珍项目”,**每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、集成和测试,以及内部和外部发布。
统一过程定义了4个技术阶段及其制品:
1.起始阶段:生命周期目标
专注于项目的初创活动产生的主要工作产品有构想文档(Vision Document)、初始用例模型、初始项目术语表、初始业务用例、初始风险评估、项目计划(阶段及迭代)、业务模型以及一个或多个原型(需要时)。
2.精化阶段:生命周期架构
在理解了最初的领域范围之后进行需求分析和架构演进,产生的主要工作产品有用例模型、补充需求(包括非功能需求)、分析模型、软件体系结构描述、可执行的软件体系结构原型、初步的设计模型、修订的风险列表、项目计划(包括迭代计划、调整的工作流、里程碑和技术工作产品)以及初始用户手册
3.构建阶段:初始运作功能
关注系统的构建,产生实现模型,产生的主要工作产品有设计模型、软件构件、集成的软件增量、测试计划及步骤、测试用例以及支持文档(用户手册、安装手册和对于并发增量的描述)。
4.移交阶段:产品发布
关注提交方面的工作,产生软件增量,产生的主要工作产品有提交的软件增量、β测试报告和综合用户反馈。

10. 敏捷方法

敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户端满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在开发周期的后期增加或改变需求。

1.极限编程(XP)

XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。
4大价值观:沟通、简单性、反馈和勇气。
5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40个小时、现场客户和编码标准

2.水晶法(Crystal)

认为每一个不同的项目都需要一套不同的策略、约定和方法论,认为人对软件质量有着重要的影响,因此随着项目质量和开发人员素质的提高,项目和过程的质量也随之提高。通过更好地交流和经常性的交付,软件生产力得到提高

3.并列争球法(Scrum)

使用迭代的方法,其中,把每30天一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的“并列争球”。

4.自适应软件开发(ASD)

6个基本原则:有一个使命作为指导;特征被视为客户价值的关键点;过程中的等待是很重要的,因此“重做”与“做”同样关键;变化不被视为改正,而是被视为对软件开发实际情况的调整;确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求;风险也包含其中。

5.敏捷统一过程(AUP)

采用“大型上连续”以及在“在小型上迭代”的原理来构建软件系统。
每个AUP迭代执行以下活动:建模;实现;测试;部署;配置及项目管理;环境管理

数据加密

1. 对称加密

  1. DES(数据加密标准):主要采用替换和位移的方法加密。它用56位密钥对64位二进制数据块进行加密…
  2. 3DES(三重DES,或TDEA):在DES的基础上采用三重DES,即用两个56位的密钥K1和K2,发送方用K1加密,K2解密,在使用K1加密。接收方则使用K1解密,K2加密,再使用K1解密,其效果相当于将密钥长度加倍。
  3. RC-5(Rivest Cipher 5)
  4. IDEA(国际数据加密算法):密钥为128位
  5. AES(高级加密标准):是一个迭代的、对称密钥分组的密码,它可以使用128/192和256位密钥,并且用128位(16字节)分组加密和解密数据。

2. 非对称加密

  1. RSA:
  2. ECC:椭圆曲线加密算法
  3. DSA:数字签名算法

数据库技术

  1. 数据库系统三层结构:物理层、逻辑层、视图层(抽象层次逐步提高)【物理层最低、逻辑层中、视图层最高

  2. 关系规范化在数据库设计的(逻辑设计)阶段。
    数据库逻辑设计的主要任务是建立概念模型并将数据结构规范化,然后把概念模型转为数据模型。
    在这里插入图片描述

  3. 数据库设计范式
    1NF强调的是列的原子性,即列中的每个值都是不可分割的

    2NF建立在1NF的基础上,要求表中的每个非主属性都必须完全依赖于主键,而不是主键的一部分

    3NF在2NF的基础上进一步要求非主属性不能传递依赖于主键。即,一个非主属性不能通过另一个非主属性间接依赖于主键

    BCNF: 进一步消除主键内的部分依赖和传递依赖

    4NF是一种比3NF更高级的范式,它主要是为了解决多值依赖关系而提出的。在4NF中,如果关系中存在多个独立的多值依赖关系,那么这些多值依赖关系应该被分解成单独的关系模式,以消除数据冗余和数据更新异常

  4. 数据库系统中的视图、存储文件和基本表分别对应数据库系统结构中的(外模式、内模式和模式)
    视图:外模式
    存储文件:内模式
    基本表:模式

面向对象

一、面向对象设计

  1. 共同封闭原则: 包中的所有类对于同一种性质的变化应该是共同封闭的。一个变化若对一个封闭的包产生影响,则将对该包中的所有类产生影响,而对于其他包则不造成任何影响。面相对象设计的原则之一。
  2. 共同重用原则: 面向对象编程术语,指一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么也就相当于重用了包中的所有类
  3. 开放-封闭原则:扩展开放,对修改封闭
  4. 接口隔离原则: 使用多个专门的接口比使用单一的总接口更好。**客户端不应该被迫依赖它不使用的接口。**换句话说,一个类不应该实现它不需要的方法,而应该将庞大的接口拆分成更小、更具体的接口。最终目标:降低耦合,提高代码的 可维护性 和 可扩展性。

二、面向对象分析

  1. 面向对象分析包含5个活动:认定对象组织对象描述对象间的相互作用确定对象的操作定义对象的内部信息
  2. 面相对象分析过程中,从给定需求描述中选择(名词短语)来识别对象。
    名词和名词短语暗示着类或类的属性,动词和动词短语暗示着职责或者类的操作

计算机网络

  1. 网络基础知识:A类网络有三个字节的主机号部分,因此每个A类网络中可以有2^24个IP地址。如果指定的子网掩码为255.255.192.0,则该网络被划分为(1024)个子网。

    将255.255.192.0转为二进制可得:11111111 11111111 11000000 00000000

    默认A类网络有8位网络位,24位主机位。

    第一个8位:11111111(A类默认)

    第二个8位:11111111(全部为1,表示这8位都是网络部分)

    第三个8位:11000000(前两位是1,后六位是0)

    所以,从主机部分借用的位数是:第二个8位:8位。第三个8位:2位。总共借用的位数:8 + 2 = 10位,所以子网数量 = 2 ^ 10 = 1024

  2. 各层常用的互连设备
    物理层中继器(Repeater)和集线器(Hub)
    数据链路层网桥(Bridge)和交换机(Switch)
    网络层路由器
    应用层:网关

  3. 在浏览器地址栏输入一个正确的网址后,本地主机首先在(本地hosts文件)查询该网址对应的IP地址。

  4. 组播地址用于在网络中向一组特定的设备发送数据包。

  5. 用户A通过SMTP/MINE协议在邮件客户端中撰写邮件正文,并添加一个Excel附件发送给用户B,该邮件采用的是(正文、附件明文传输
    SMTP(简单邮件传输协议)和MINE(多用途互联网邮件扩展)协议本身并不对邮件正文和附件进行加密。

  6. 计算机病毒具有:隐蔽性、传染性、潜伏性、触发性和破坏性等特点。

  7. 127.0.0.1是回送地址指本地机,一般用来测试使用。主要用于网络软件测试以及本地进程间通信。可用于检测网络是否可用

  8. 在浏览器地址栏输入一个正确的网址后,本地主机首先在(本地hosts文件)查询该网址对应的IP地址。

  9. MP3是目前最流行的数字音乐压缩编码格式之一,其命名中“MP”是指(MPEG-1 Audio)**,3是指(layer 3)

  10. 10.目前的MPEG格式有如下标准,分别是MPEG-1、MPEG-2、MPEG-4、MPEG-7与MPEG-21。其中MPEG-1、MPEG-2、MPEG-4主要针对音、视频编码技术,而MPEG-7是多媒体内容描述接口标准MPEG-21是多媒体应用框架标准VCD使用了MPEG-1标准作为其音、视频信息压缩编码方案;DVD采用MPEG-2标准作为其音、视频信息压缩编码方案。

  11. VLAN tag在OSI参考模型的(数据链路层)实现。
    IEEE 802.1Q协议规定在目的MAC地址和源MAC地址之后封装4个字节的VLAN Tag,用以标识VLAN的相关信息。Mac地址属于数据链路层。

UML图

  1. 对一个复杂用例中的业务处理流程进行进一步建模的最佳工具是UML(活动图
  2. 状态模式行为型对象模式,它允许一个对象在其内部状态改变时改变它的行为。

算法、时间/空间复杂度

在这里插入图片描述

  1. 背包问题时间复杂度:01背包O(nW)部分背包:O(nlgn)

  2. 按列存储方式下,a[i, j]之前的元素个数为**(j-1)*N+i-1**。因此该数组空间地址base+((j-1) x N+i-1) x K

  3. 广度优先采用的是分支限界法

  4. 优先队列通常采用()数据结构实现,向优先队列中插入一个元素的时间复杂度为(O(log2n))
    优先队列插入和删除元素的复杂度都是O(log2n)

  5. 在求解某问题时,经过分析发现该问题具有最优子结构性质,求解过程中子问题被重复求解,则采用(动态规划)算法设计策略;若定义问题的解空间,以深度优先的方式搜索解空间,则采用(回溯)算法设计策略。

  6. 下列排序算法中,占用辅助存储空间最多的是(归并排序

    • 归并排序

    • 快速排序

    • 堆排序

    • 冒泡排序

      归并排序需要n个空间,快速排序需要logn个空间,堆排序需要1个空间,冒泡排序需要1个空间。

知识产权

由于知识技术同时被多个人使用,所以知识专利具有独占性

其他

  1. CMM分为五个等级:
    (1). 初始级工作无序,项目进行过程中常放弃当初的计划
    (2). 可重复级管理进度化建立了基本的管理制度和规程,管理工作有章可循。
    (3). 已定义级,开发过程,包括技术工作和管理工作,均已实现标准化、文档化。
    (4). 已管理级,产品和过程已建立了定量的质量目标。
    (5). 优化级,可通过采用新技术、新方法,集中精力改进过程。

  2. 屏蔽软件错误的容错系统中,冗余附加技术的构成包括:
    (1). 冗余备份程序的存储及调用。
    (2). 实现错误检测和错误恢复的程序。
    (3). 实现容错软件所需的固化程序。

  3. 当对系统、类或用例的动态方面建模时,通常是对反应型对象建模。

  4. 结构图的基本成分:模块、调用、数据(不包括控制)

  5. 在设计模块M和模块N时(M和N通过通信模块传送数据)是最佳的设计。

  6. 移进-归约语法分析是自底向上(或自上而下)的一种形式。它使用一个栈来保存文发符号,并用一个输入缓冲区来存放将要进行语法分析的其余符号。

  7. 矢量图是常用的图形图像表示形式,图元是描述矢量图的基本组成单位

  8. 在CPU的寄存器中,(指令寄存器对用户是完全透明的

  9. 分治法的核心步骤
    排序并划分点集
    递归求解子问题
    合并时检查中线附近有限范围内的点

  10. 词法分析阶段关键操作:
    分割字符:忽略空格、注释等无关内容
    识别词素:将连续的字符组合成有意义的单元(如变量名、数字、符号等)
    分类标记
    工具:正则表达式、有限自动机

  11. 语法分析阶段关键操作:
    语法检查:确保符合语法规则(如括号匹配、语句结构)
    构件AST:序列转化为树形结构
    工具:上下文无关文法、递归下降解析器

  12. 语义分析关键操作:
    符号表管理:记录变量、函数等标识符的类型和作用域
    类型检查:验证操作是否类型兼容
    语义规则验证:如变量是否声明、函数参数是否匹配、break是否在循环内等
    填写符号表;生成中间代码

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

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

相关文章

Elasticsearch安装、入门、基础API操作、全文检索、精准查询、地理查询、复合查询、排序、分页、高亮、数据聚合、自动补全、数据同步、ES集群

学习资料: 通过网盘分享的文件:Elasticsearch 链接: https://pan.baidu.com/s/18BxA0BH0G–jwy95uFmFZQ 提取码: yyds 初识ES正向索引倒排索引ES与MySQL 概念对比安装ES操作索引库mapping属性创建索引库{"mappings": {"properties":…

教程:如何查看浏览器扩展程序的源码

在学习前端、自动化或扩展开发时,我们常常会想研究某个浏览器插件的实现逻辑。即使扩展没有公开源码,只要我们本地安装了它,就可以查看它的完整源代码进行学习。✅ 方法一:从浏览器插件目录提取源码 第一步:打开扩展程…

虚拟储能与分布式光伏协同优化:新型电力系统的灵活性解决方案

安科瑞顾强摘要: 在全球能源结构向低碳化、智能化加速转型的背景下,分布式光伏的大规模接入为电力系统带来机遇的同时,也因其波动性与间歇性带来了运行挑战。本文聚焦于虚拟储能系统(Virtual Energy Storage System, VESS&#xf…

java valueOf方法

一,什么是valueOf方法?valueOf是java包装类(比如Long,Integer等)中提供的一个静态方法二,valueOf的主要作用是什么主要作用是将其他类型的数据转换为当前包装类的对象三,代码实例:咱们以Long.valueOf为例,1,他可以接受一个long类型的数值,返回对应的Long对象(把基本类型long包…

工业平板电脑 vs 消费级平板:从防护等级到使用寿命全方面对比

平板电脑已经广泛应用于各个行业。但你知道吗?市面上常见的“平板”其实可以分为两大类:工业平板电脑和消费级平板电脑。虽然它们看起来都是“平板”,但用途、性能和适用场景却大不相同。今天,我们就来聊聊这两者的区别&#xff0…

MySQL技术笔记-索引+慢 SQL+锁 全链路优化实战

目录 前言 MySQL索引 一、概述 二、索引分类 (一)按功能特性分类 (二)按存储方式分类 (三)按数据结构分类 (四)按索引字段数量分类 三、索引的优缺点 (一&…

S7-1200 与 S7-300 PNS7-400 PN UDP 通信 TIA 相同项目

7-1200 与 S7-300 PN/S7-400 PN UDP 通信 TIA 相同项目S7-1200 与 S7-300 PN 口之间的以太网通信可以通过 UDP 协议来实现,使用的通信指令是在双方 CPU 调用通信-开放式用户通信TSEND_C,TRCV_C(1200支持,300不支持)或T…

java进阶(二)+学习笔记

面向对象设计原则1. 面向对象概念面向对象 是一种编程思想,面向过程是关注实现的步骤,每个步骤定义一个函数,调用函数执行即可。面向对象关注的是谁(对象)来执行, 把具有相同属性和行为的一类事物(对象)进行抽象成类&#…

[附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统

摘要 随着互联网的普及,学生在学习和生活中面临着海量信息,如何高效获取有价值的内容成为亟待解决的问题。本文基于 Spring Boot 框架,结合内容推荐算法,设计并实现了一个学生咨询系统。系统采用 Spring Boot MyBatis MySQL Vu…

DeepSeek 微调实践:DeepSeek-R1 大模型基于 MS-Swift 框架部署 / 推理 / 微调实践大全

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 GPT多模态大模型与AI Agent智能体书籍本章配套视频课程【陈敬雷】 文…

python基础知识pip配置pip.conf文件

pip.conf一、 INI格式二、 级别三、 文件位置四、 加载顺序五、 常用一、 INI格式 配置文件可以更改pip命令行选项的默认值,这个文件是使用INI格式编写的。 INI格式 主要包含三个内容:1.节section 2.键值对 3.注释 [section1] key1 value1 \\注释 key2…

深入理解 Java JVM

文章目录📕1. JVM简介📕2. JVM运行流程📕3. JVM运行时数据区📕4. JVM类加载✏️4.1 类加载过程✏️4.2 双亲委派模型✏️4.3 破坏双亲委派模型📕5. JVM垃圾回收机制(GC机制)✏️5.1 判断死亡对象…

Linux内核高效之道:Slab分配器与task_struct缓存管理

前言 在Linux内核中,进程创建与销毁是最频繁的操作之一。想象一下:当系统每秒需要处理成百上千次fork()和exit()调用时,如何保证task_struct(进程描述符)的分配与释放既快速又不产生内存碎片?这就是Slab分配…

双esp8266-01之间UDP透传传输,自定义协议

使用AT模式的透传,串口打印的数据包含pd1,4,数据打印的数据不是直接将数据打印出来,包含了pd1,4,特殊字符,针对想要直接开机直接透传,打印数据且按照自主协议帧头的功能进行开发。1.server程序:/*************SERVER**…

BGP 路由优选属性(7)【MED】官方考试综合实验题【bgp】【acl】【ip-prefix】【route-policy】【icmp 环路】精讲

目录 一、MED 属性介绍 二、实验 2.1 实验目的 2.2 拓扑图 2.2 实验说明 2.3 配置脚本 2.4 验证配置 2.5 问题分析 2.7 题目需求解析 2.8 场景 1:只允许在 AS12 上操作 2.9 场景 2:只允许在 AS34 上操作 正文 一、MED 属性介绍 MED 全称 mu…

html-初级标签

一.浏览器能识别的标签 1.1 head标签里的编码和title <head><meta charset"UTF-8"><title>Title</title> </head>1.2 标题 <body><h1>Welcome to my website</h1><h2>Welcome to my website</h2><…

【八股消消乐】Kafka集群 full GC 解决方案

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本专栏《八股消消乐》旨在记录个人所背的八股文&#xff0c;包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…

《Java Web程序设计》实验报告二 学习使用HTML标签、表格、表单

目 录 一、实验目的 二、实验环境 三、实验步骤和内容 1、小组成员分工&#xff08;共计4人&#xff09; 2、实验方案 3、实验结果与分析 4、项目任务评价 四、遇到的问题和解决方法 五、实验总结 一、实验目的 1、HTML基础知识、基本概念 2、使用HTML标签、表格进行…

jenkins使用Jenkinsfile部署springboot+docker项目

文章目录前言一、前期准备二、编辑构建文件二、Jenkins构建总结前言 前面使用Jenkinsfile部署了前端vue项目&#xff0c;接着学习Jenkinsfile部署springboot项目。 一、前期准备 已经安装好centos,并且安装了jenkins和docker。本地新建springboot并上传到gitee上。 二、编辑…

使用ESM3蛋白质语言模型进行快速大规模结构预测

文章目录ESM3介绍ESM3在线使用本地使用api批量预测ESM相较于AlphaFold的优势ESM3介绍 ESM3是由EvolutionaryScale&#xff08;前Meta团队&#xff09;开发的一款蛋白质大语言模型&#xff0c;于2025年以《用语言模型模拟 5 亿年的进化》为题正式发表在Science上 文章链接: htt…