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

软件设计师中级概念题

软件过程模型

瀑布模型:

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

增量模型:

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

演化模型:

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

原型模型:

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

螺旋模型:

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

喷泉模型:

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

基于构件的开发模型:

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

形式化方法模型:

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

统一过程模型

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

敏捷方法

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

1.极限编程(XP)

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

2.水晶法(Crystal)

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

3.并列争球法(Scrum)

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

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

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

5.敏捷统一过程(AUP)

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

数据加密

对称加密

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

非对称加密

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

数据库技术

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

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

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

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

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

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

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

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

面向对象

面向对象设计

**共同封闭原则:**包中的所有类对于同一种性质的变化应该是共同封闭的。一个变化若对一个封闭的包产生影响,则将对该包中的所有类产生影响,而对于其他包则不造成任何影响。面相对象设计的原则之一。
**共同重用原则:**面向对象编程术语,指一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么也就相当于重用了包中的所有类
**开放-封闭原则:**对扩展开放,对修改封闭。
**接口隔离原则:**使用多个专门的接口比使用单一的总接口更好。

面向对象分析

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

计算机网络

网络基础知识: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

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

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

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

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

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

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

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

UML图

对一个复杂用例中的业务处理流程进行进一步建模的最佳工具是UML(活动图

算法、时间/空间复杂度

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

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

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

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

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

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

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

知识产权

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

其他

CMM分为五个等级:

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

屏蔽软件错误的容错系统中,冗余附加技术的构成包括:

1.  **冗余备份程序的存储及调用。**2.  **实现错误检测和错误恢复的程序。**3.  **实现容错软件所需的固化程序。**

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

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

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

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

状态模式行为型对象模式,它允许一个对象在其内部状态改变时改变它的行为。

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

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

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

  1. 分治法的核心步骤

    排序并划分点集

    递归求解子问题

    合并时检查中线附近有限范围内的点

  2. 词法分析阶段关键操作:

    分割字符:忽略空格、注释等无关内容

    识别词素:将连续的字符组合成有意义的单元(如变量名、数字、符号等)

    分类标记

    工具:正则表达式、有限自动机

  3. 语法分析阶段关键操作:

    语法检查:确保符合语法规则(如括号匹配、语句结构)

    构件AST:序列转化为树形结构

    工具:上下文无关文法、递归下降解析器

  4. 语义分析关键操作:

    符号表管理:记录变量、函数等标识符的类型和作用域

    类型检查:验证操作是否类型兼容

    语义规则验证:如变量是否声明、函数参数是否匹配、break是否在循环内等

    填写符号表;生成中间代码

http://www.dtcms.com/a/271192.html

相关文章:

  • Vue+ElementUI聊天室开发指南
  • 桌面开发,在线%图书管理系统%开发,基于C#,winform,界面美化,mysql数据库
  • 技术开发栈中 URL地址末尾加不加 “/“ 有什么区别?
  • 028_this关键字的使用场景
  • ABP VNext + Marten:事件溯源与 CQRS 全流程实战
  • Amazon SageMaker 部署 AIGC 应用:训练 - 优化 - 部署 - Web 前端集成应用实践
  • 解决IDEA缺少Add Framework Support选项的可行性方案
  • ObjectClear - 图像处理新革命,一键“抹除”图像中任意物体与阴影 支持50系显卡 一键整合包下载
  • 响应式原理二:响应式依赖收集
  • 前端进阶之路-从传统前端到VUE-JS(第四期-VUE-JS页面布局与动态内容实现)(Element Plus方式)
  • Higress 上架 KubeSphere Marketplace,助力企业构建云原生流量入口
  • 海信IP501H_GK6323处理器免拆卡刷包和线刷救砖包_当贝纯净版
  • 类模板的语法
  • 计算机网络实验——网线的制作和测试
  • 网安-SSRF-pikachu
  • RNN及其变体的概念和案例
  • Vue响应式原理一:认识响应式逻辑
  • python 为什么推荐使用虚拟环境(如 venv)?它解决了什么问题?
  • doris2.1.8连接报错ERROR 1203 (42000): Reach limit of connections解决办法
  • 使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建
  • Oracle:使用ONLINE选项创建索引
  • 【内核基础精讲】I2C 子系统核心概念与结构全解析
  • 类与对象【下篇】-- 关于类的其它语法
  • 蓝凌EKP产品:属性转换器系统优化
  • c语言学习_函数递归2
  • 70、【OS】【Nuttx】【构建】配置 stm32 工程
  • STM32继电器万能控制设备
  • 【04】MFC入门到精通——MFC 自己手动新添加对话框模板 并 创建对话框类
  • SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)
  • 数据结构基础准备:包装类 泛型 泛型的上界 密封类