软件设计师考试学习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 模块解析构建工具,…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...