软件设计师考试学习3
开发模型
瀑布模型
现在基本被淘汰了
是一种结构化方法中的模型,一般用于结构化开发
问题在于需求阶段需求不可能一次搞清楚,很可能做完推翻重做
适用于需求明确或二次开发
原型模型、演化模型、增量模型
原型是为了解决需求不明确的问题
原型在项目初期,构建一个简易的系统,例如简单的界面、系统,让用户直观的操作,如果有问题再改
原型法往往只应用于需求分析的阶段
增量模型是先将核心需求做出来,然后再在此基础上加其他模块或进行更改
增量模型风险比较小
螺旋模型
由多个模型组合,引入了风险分析
V模型
测试占到了更重要的地位,提早进行测试
分析和测试对应,在需求分析阶段就写验收测试和系统测试计划
概要设计阶段会做集成测试的计划
详细设计阶段会做单元测试的计划
喷泉模型与RAD
是面向对象的模型
RAD是快速开发模型,是由瀑布模型和CBSD(构件化开发模型)组合形成的
如VB这种可视化模型就属于RAD模型
最大的特点就是能快速构建业务系统
构件组装模型CBSD
把软件开发中的各个模块做成标准的构件,然后组装,就得到了需要的软件
极大提高了软件开发的复用性,是开发时间减少,节省成本,提高可靠性(用其他系统中的构件,用在新的系统中出错概率小)
第一个标准是OMG组织提出的
第二个标准是微软家族的
第三个标准是JAVA体系用到的
统一过程(UP)
缩写也可以为RUP(以前)
细化阶段,重点是建立架构
交付阶段,β测试,针对产品,在用户环境里,由用户发起测试;对应的α测试是在开发环境测试的
统一过程也会循环迭代
敏捷开发方法
信息系统开发方法
结构化方法最大的方法就是不灵活,不容易改变
面向对象就是对现实对象抽象,解决结构化方法的问题,有更好的复用性
原型法适合需求不明确的开发,做初步简易的系统来探明需求
需求的分类
设计约束比如用户明确提出只能用某种数据库
QFD质量改善模型
期望需求是用户没说,但是隐晦的需求
兴奋需求是超越用户期望的需求,会让用户开心但是不提倡,会浪费成本,一般杜绝
结构化设计
扇入表示别人调用自己比较多,服用程度比较高
扇出表示自己需要调用的其他模块比较多,不太好
从上往下内聚程度降低
耦合从上到下越来越高
图B需要掌握
测试原则与类型
必考
动态测试是利用到计算机的测试
静态测试是纯人工测试
代码走查是人工运行
代码审查是与别人交叉检查
测试用例设计
黑盒测试是不知道里面的结构
白盒测试能看到系统的结构,将所有路径都能覆盖,往往效果比较好
边界值一般是取略小于或略大于边界,及边界值
例如0到150,取的是-1 0 150 151
错误推测强调经验灵感
语句覆盖/判定/条件/路径覆盖考的多
测试阶段
确认测试和系统测试顺序不一定;对于软件项目来说,一般到确认测试就停止了;但是有软硬件的系统,会先做系统测试,然后再确认验收工作
系统测试主要考虑性能压力稳定性方面
冒烟测试就是最初步的测试
McCabe复杂度计算
系统运行与维护
软件能力成熟度模型集成(CMMI)
软件开发的成熟度
阶段式:
第一级是混乱级
二级考虑项目级的问题
三级考虑组织级的问题(文档化/标准化)
第四级强调量化,管理量化
五级做持续优化
国内企业比较急功近利,为了能通过等级,但是实际会觉得浪费成本而不按这个标准做(论文里可以提)
项目管理基础知识
一般考时间管理/风险管理
甘特图不能直观的表达任务之间的逻辑关系
先计算最早开始时间,然后逆推得到每个事件的最晚开始时间
需求工程
面向对象的需求分析
实体类,跟数据相关的
边界类,跟外界系统交互的类
类与类之间的衔接的类
多态:做同样的操作,控制的是不同的对象
接口是一种特殊的类,只有方法的定义,没有方法的实现
消息是对象之间通信的方式,消息是异步的
面向对象设计(设计原则)
当子类方法有重载时,可能不能替换父类
所以子类应该尽可能少的重载
而接口就是为了解决这个问题
计算机硬件其实就是针对接口编程,都是插槽;而电视机都是焊接的,不容易更换
继承是紧耦合关系,所以应该尽量少
最少知识法则一般通过封装实现
UML
主要了解一系列图
图为结构图(静态图)、行为图(动态图)
用例图有分歧(考试时看情况,大部分情况是动态)
静态图一般表示之间的关系
部署图:软件的部件应该部署在哪个硬件节点之上
行为图各有特征
用例图表示系统和外部的交互关系
通信图和顺序图区别就在于前者没有强调时间关系
状态图表示状态变迁转移情况
活动图和流程图的结构是一致的
其他不用管
设计模式的概念
设计模式与语言无关,构建设计
设计模式的分类
创建型模式指用于创建对象的模式,为设计类实例化、新对象提供指南
结构型模式主要处理类或对象的组合问题,形成更大的结构提供指导
行为型模式,主要描述类或对象交互的模式,以及职责分配的问题
创建型模式
原型模式又称为克隆模式
结构型模式
行为型模式
模板方法模式和访问者模式了解概念即可
数据流图
必考(15分)
数据流图基本概念
区分数据流图和ER图,数据流图没有联系
数据流图的分层(DFD)
数据流图又称为分层数据流图
顶层中间椭圆表示要开发的系统,两边的方块表示外部实体
将顶层图细化,将中间的系统分为几个节点,代表处理职能部件
下面再细化
分层的思路和结构化的开发方法是完全匹配的,所以数据流图是结构化开发方法最为主流的工具
绘制的时候要注意父图和子图要保持平衡
数据字典
配合数据流图使用
数据流图的平衡原则
对于一个加工节点,应该有输入也有输出
数据流试题解题技巧
- 详细分析试题说明,从需求中提取关键点
- 利用数据平衡的原则进行判断
案例分析1
绘制加工时,数据流不平衡:黑洞、奇迹、数据流命名问题(输入流和输出流一样、输入流不可能产生输出流)
案例分析2
数据库设计
重点ER模型、关系模式
数据库设计过程
关系模式是对ER模型进行转化得到的
每个阶段的产物要掌握
ER模型
数据库设计例题1
ER模型补充,ER模型转关系模式,关系模式补充,一些概念
客房和客户之间也是多对多,一个客房可以被多个客户分时段预定(???)
第二题
4:员工号 部门号
5:客房号
6:身份证号
7:岗位
8:身份证号 客房号
第四题,逆规范化,权限存储多次,造成了数据冗余;但是减少了一次链接操作,查询数据快
例题2
a:商场编号
b:部分编号
c:员工编号
经理也是员工,属于一种特殊的关系,用一根线加一个圈表示
第四题:
紧急联系人(员工编号 紧急联系人姓名 电话)
UML建模
用例图和类图+其他类型的图
用例图
类图与对象图
0…*和*是对应的
泛化是对类的,实现是对接口,要注意线的形状
顺序图
每个对象引出一条生命线,用虚线画
整体流程执行是从上往下走
每个箭头表示消失
顺序图特点就是按顺序来,表现对象之间的交互关系,是动态图
考察重点是消息或对象名
活动图
表现流程情况,分支状态
粗横线表示从这里产生了多少个并行的线程
带泳道的活动图,指示了不同的对象,表示哪个活动的责任人是谁
一个流程和图的对应
状态图
状态图表现状态的变迁,所以是动态图
箭线表示事件,节点表示状态
通信图
和顺序图差不多,时间上没有那么明晰
例题1
问题3,音轨和音轨存在联系,0到1
例题2
设计模式是状态模式
必须有的属性是CLavel
数据结构与算法应用
分治法
用到递归
递归技术
二分查找
回溯法
贪心法
动态规划
子问题不是独立的,最后需要查表
例题1
(1) j = 0
(2) b[j] = b[j] + s[i]
(3) min = temp
(4) b[m] = b[m] + s[i]
两种方法都是贪心,时间复杂度都是O(n^2)
例题2
分治法
时间复杂度的递归式,
比较次数是n1+n2
面向对象程序设计
例题1
创建型模式
例题2
专业英语词汇
相关文章:

软件设计师考试学习3
开发模型 瀑布模型 现在基本被淘汰了 是一种结构化方法中的模型,一般用于结构化开发 问题在于需求阶段需求不可能一次搞清楚,很可能做完推翻重做 适用于需求明确或二次开发 原型模型、演化模型、增量模型 原型是为了解决需求不明确的问题 原型在项目…...

使用LDA(线性判别公式)进行iris鸢尾花的分类
线性判别分析((Linear Discriminant Analysis ,简称 LDA)是一种经典的线性学习方法,在二分类问题上因为最早由 [Fisher,1936] 提出,亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术,也就是说它的数据集的每个样本都…...

王学岗生成泛型的简易Builder
github大佬地址 使用 //class 可以传参DataBean.classpublic static <T> T handlerJson(String json, Class<T> tClass) {T resultData null;if (CommonUtils.StringNotNull(json) && !nullString.equals(json)) {if (isArray(json)) {resultData BaseN…...
kafka消息队列简单使用
下面是使用Spring Boot和Kafka实现消息队列的简单例子: 引入依赖 在pom.xml中添加以下依赖: <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.5&l…...
性能优化实战使用CountDownLatch
1.分析问题 原程序是分页查询EventAffinityScoreDO表的数据,每次获取2000条在一个个遍历去更新EventAffinityScoreDO表的数据。但是这样耗时比较慢,测试过30万的数据需要2小时 private void eventSubjectHandle(String tenantId, String eventSubject) …...

基于视频技术与AI检测算法的体育场馆远程视频智能化监控方案
一、方案背景 近年来,随着居民体育运动意识的增强,体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时,可能发生受伤意外,甚至牵扯责任赔偿纠纷问题。同时,物品丢失、人力巡逻成本问题突出,体育场…...

leetcodetop100(29) K 个一组翻转链表
K 个一组翻转链表 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…...

最新影视视频微信小程序源码-带支付和采集功能/微信小程序影视源码PHP(更新)
源码简介: 这个影视视频微信小程序源码,新更新的,它还带支付和采集功能,作为微信小程序影视源码,它可以为用户 提供丰富的影视资源,包括电影、电视剧、综艺节目等。 这个小程序影视源码,还带有…...
C++:vector 定义,用法,作用,注意点
C 中的 vector 是标准模板库(STL)提供的一种动态数组容器,它提供了一组强大的方法来管理和操作可变大小的数组。以下是关于 vector 的定义、用法、作用以及一些注意点: 定义: 要使用 vector,首先需要包含 …...

Firecamp2.7.1exe安装与工具调试向后端发送SocketIO请求
背景: 笔者在python使用socket-io包时需要一个测试工具,选择了firecamp这个测试工具来发送请求。 参考视频与exe资源包: Firecamp2.7.1exe安装包以及基本使用说明文档(以SocketIO为例).zip资源-CSDN文库 15_send方法…...

MySQL到TiDB:Hive Metastore横向扩展之路
作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整…...
算法通关村-----寻找祖先问题
最近公共祖先 问题描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…...

Sentinel结合Nacos实现配置持久化(全面)
1、前言 我们在进行分布式系统的开发中,无论是在开发环境还是发布环境,配置一定不能是内存形式的,因为系统可能会在中途宕机或者重启,所以如果放在内存中,那么配置在服务停到就是就会消失,那么此时就需要重…...
Verilog中什么是断言?
断言就是在我们的程序中插入一句代码,这句代码只有仿真的时候才会生效,这段代码的作用是帮助我们判断某个条件是否满足(例如某个数据是否超出了范围),如果条件不满足(数据超出了范围)࿰…...

Oracle分区的使用详解:创建、修改和删除分区,处理分区已满或不存在的插入数据,以及分区历史数据与近期数据的操作指南
一、前言 什么是表分区: Oracle的分区是一种将表或索引数据分割为更小、更易管理的部分的技术。它可以提高查询性能、简化维护操作,并提供更好的数据组织和管理。 表分区和表空间的区别和联系: 在Oracle数据库中,表空间(Tablespace)是用于存储表、索引和其他数据库对…...

SLAM从入门到精通(amcl定位使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 学习slam,一般就是所谓的边定位、边制图的知识。然而在实际生产过程中,比如扫地机器人、agv、巡检机器人、农业机器人&…...

【C/C++】C/C++面试八股
C/C面试八股 C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的?构造函数为什么不能是虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存对齐是什么?为什么要内存对齐static关键…...

Scala第八章节
Scala第八章节 scala总目录 章节目标 能够使用trait独立完成适配器, 模板方法, 职责链设计模式能够独立叙述trait的构造机制能够了解trait继承class的写法能够独立完成程序员案例 1. 特质入门 1.1 概述 有些时候, 我们会遇到一些特定的需求, 即: 在不影响当前继承体系的情…...
k8s-实战——kubeadm二进制编译
文章目录 源码编译获取源码修改证书有效期修改 CA 有效期为 100 年(默认为 10 年)修改证书有效期为 100 年(默认为 1 年)CentOS7.9环境准备centos脚本安装执行脚本脚本内容手动安装验证编译查看编译后的版本信息参考链接脚本修改源码编译 源码编译kubeadm文件、修改证书的默…...
vite 和 webpack 的区别
1. 构建原理: Webpack 是一个静态模块打包器,通过对项目中的JavaScript、css、Image 等文件进行分析,生成对应的静态资源,并且通过一些插件和加载器来实现各种功能。 Vite 是一种基于浏览器元素 ES 模块解析构建工具,…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...