系统分析师案例知识点
目录
- 1 必做题
- 1.1 状态机图
- 1.2 活动图
- 1.3 统一软件开发过程RUP
- 2 需求分析
- 2.1 数据流图DFD
- 2.2 ER图
- 2.3 状态转换图STD
- 2.4 数据字典
- 2.5 流程图
- 2.6 需求评审
- 2.7 设计类
- 2.8 FAST分析
- 2.9 常见的关系类
- 3 嵌入式
- 3.1 容器技术
- 3.2 虚拟机技术
- 3.3 虚拟机和容器的不同点
- 4 数据库
- 4.1 NoSQL数据库
- 4.2 云数据库
- 5 架构设计
- 5.1 中间件
- 5.2 SOA
- 6 其他
- 6.1 数据脱敏方法
- 6.2 订单服务
- 6.3 区块链
系统分析师考试时候自己整理的资料,仅供参考。
1 必做题
1.1 状态机图
状态机图用来描述对象状态和事件之间的关系,强调一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同事件做出的反应。状态图包含开始、结束标志,状态及转换等。
状态机图是对属性值(状态)变化的的描述,描述对象状态及状态之间的转移。它关注的是对象的状态和行为。
1.2 活动图
活动图描述业务流程或工作流中的操作序列,强调了行为活动的顺序和条件控制。它着重表现系统的行为,活动图中一个活动结束后立即进入下一个活动,通过活动图可以看到各个活动之间的衔接关系内容。包含开始、活动、判断、结束标志等。
活动图是对流程的描述,它关注的是功能的实现和操作的顺序。
1.3 统一软件开发过程RUP
9个核心工作流,6个核心过程工作流:业务建模、需求、分析和设计、实现、测试、部署
3个核心支持工作流:配置和变更管理、项目管理、环境
业务建模:描述了如何为新的目标组织开发了一个构想,并基于这个构思在商业用例模型和商业对象模型中定义组织的过程、角色和责任。
需求:描述系统应该做什么,并使开发人员和用户就这一描述达成共识。
分析和设计:将需求转化成未来下系统的设计,为系统开发一个健壮的结构并调整设计使其实现环境相匹配,优化其性能。
实现:以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
测试:要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。
部署:描述了那些与确保软件产品对用户具有可用性相关的活动,成功的生成版本并将软件分发给最终用户。
配置和变更管理:描绘了如何在多个成员组成的项目中控制大量的产物,提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。
项目管理:平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。
环境:向软件开发组织提供软件开发环境,包括过程和工具。
2 需求分析
2.1 数据流图DFD
DFD是结构化分析中的重要方法和工具,是表达系统内数据的流动并通过数据描述系统功能的一种方法。DFD从数据传递和加工的角度,利用图形符号通过逐层细分地描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系统所完成的功能。
描述系统数据流程的图形工具。它展示了系统中数据的流动路径,从输入到输出,帮助开发人员理解数据的处理过程。
过程(Process):表示数据处理的步骤或功能。通常用圆形或椭圆形表示,内部写上过程名称或编号。
数据流(Data Flow):表示数据在过程之间的移动。用带箭头的直线表示,箭头指向数据的流向,线上标注数据名称。
加工:对数据流的变换处理
数据存储(Data Store):表示系统中存储数据的地方。用开放矩形(或两条平行线)表示,内部写上数据存储名称或编号。
外部实体(External Entity):描述了与系统交互的事务表示系统外部的实体,如用户、外部系统等。用矩形表示,内部写上实体名称。
2.2 ER图
描述数据库中实体及其关系的图形表示。它展示了系统中各个实体之间的联系,帮助开发人员理解数据的结构。
2.3 状态转换图STD
描述系统状态的变化和转换。它展示了系统在不同状态之间的转换路径,帮助开发人员理解系统的行为和逻辑。
2.4 数据字典
定义系统中所有数据元素的详细说明。它包括了数据的名称、类型、长度、描述等信息,是开发人员编写代码和进行测试的重要参考。
2.5 流程图
能清晰展示业务执行的流程顺序,强调控制流。
2.6 需求评审
需求评审主要评审需求范围与目标、需求文档细节、完整性与一致性、技术可行性、业务价值与优先级、法律风险与合规性、用户体验与可用性,以及需求变更管理。
作用:发现遗漏需求、确保需求的质量和准确性、降低开发风险、促进团队沟通和协作、提高项目的透明度和可控性、为项目干系人在需求问题上达成共识提供支撑、提高软件质量。
2.7 设计类
实体类:映射需求中的每个实体,保存需要存储在永久实体中的信息,例如员工信息、请假申请表
控制类:用于控制用例工作的类,用于对一个或几个用例所特有的控制行为进行建模,例如:提交请假、审批请假
边界类:用于封装在用例内、外流动的信息或数据流,边界例如:请假申请页面、请假审批单、读者证
2.8 FAST分析
需求分析案例
范围定义:又叫初始研究阶段或计划阶段等。列出问题和机会、协商项目的初步范围、评估项目价值、计划项目进度表和预算、汇报项目计划
问题分析阶段:又叫研究阶段或可行性分析阶段等。研究问题领域、分析问题和机会、分析业务过程、制定系统改进目标、修改项目计划、汇报调查结果和建议
需求分析阶段:定义需求、排列需求的有限次序、此U改项目计划、交流需求陈述
逻辑设计:结构化功能需求、建立功能需求的原型(可选)、验证功能需求、定义验收测试用例
决策分析阶段:确定候选方案、分析候选方案、比较候选方案、修改项目计划、推荐一种系统
系统约束条件可以分为四类:进度、成本、技术、政策
需求定义:
一份需求定义文档可能是项目文档中被阅读和引用得最多的文档。应该包含以下内容:
系统应该提供的功能和服务。
非功能需求,包括系统的特征、特点和属性;限制系统开发或者系统运行必须遵守的约束条件。
系统必须连接的其他系统的信息。
系统所有者和用户使用需求定义文档来确认需求以及任何可能产生的变化,并作为验收的依据。
系统分析人员、设计人员和构造人员使用它来理解需要什么以及处理需求变更,开发用于验证系统的测试用例。
项目经理使用它作为制定项目计划、处理变更及验收的依据。
2.9 常见的关系类
(1)关联关系。关联提供了不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。关联体现的是对象实例之间的关系,而不表示两个类之间的关系。其余的关系涉及类元自身的描述,而不是它们的实例。
(2)依赖关系。两个类 A 和 B,如果 B 的变化可能会引起 A 的变化,则称类 A 依赖于类 B。依赖可以由各种原因引起,例如,一个类向另一个类发送消息、一个类是另一个类的数据成员、一个类是另一个类的某个操作参数等。
(3)泛化关系。泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。继承关系是泛化关系的反关系,也就是说,子类继承了父类,而父类则是子类的泛化。
(4)继承关系。本质上就是泛化关系。继承是在某个类的层次关联中不同的类共享属性和方法的一种机制。父类与子类的关系是一般与特殊的关系,一个父类可以有多个子类,这些子类都是父类的特例。
(5)聚合关系。表示类之间的整体与部分的关系,其含义是“部分”可能同时属于多个“整体”,“部分”与“整体”的生命周期可以不相同。例如,汽车和车轮就是聚合关系,车子坏了,车轮还可以用;车轮坏了,可以再换一个。
(6)组合关系。表示类之间的整体与部分的关系。与聚合关系的区别在于,组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,“部分”随着“整体”的创建而创建,也随着“整体”的消亡而消亡。例如,一个公司包含多个部门,它们之间的关系就是组合关系。公司一旦倒闭,也就无所谓部门了。
(7)实现关系。实现关系将说明和实现联系起来。接口是对行为而非实现的说明,而类中则包含了实现的结构。一个或多个类可以实现一个接口,而每个类分别实现接口中的操作。
3 嵌入式
3.1 容器技术
容器是一个不依赖操作系统运行的应用程序的环境。它通过linux的Namespace和Cgroups技术对应用程序进行隔离和限制;Namespace的作用是隔离,它让应用程序只能看到Namespace内的世界;而Cgroups的作用是限制分配给进程的宿主机资源。但对于宿主机来说,这些被隔离了的进程跟其他进程并没有太大区别。容器只是运行在宿主机上的一种特殊进程,多容器之间使用的还是同一个宿主机的操作系统内核,该特点导致隔离性比虚拟机差。
应用场景:多租户云服务、开发与测试环境、灾难恢复与备份
优点:资源隔离性强、操作系统多样性、成熟的管理工具
缺点:性能开销大、启动时间长、占用资源多
3.2 虚拟机技术
虚拟机技术是指通过软件的技术将一台物理主机虚拟化为多台逻辑计算机,每台逻辑计算机可独立运行不同的操作系统和各种应用程序。通过虚拟机技术,使得每台虚拟计算机都拥有自己的虚拟硬件(虚拟CPU、网卡、内存等),并让运行在虚拟机的操作系统认为自己独占一台物理主机。
应用场景:微服务架构、持续集成/持续部署(CI/CD)、跨平台部署
优点:轻量级、一致性、易于部署和扩展、支持快速扩展、可以快速启动和销毁
缺点:隔离性不如虚拟机、依赖宿主操作系统、管理复杂性
3.3 虚拟机和容器的不同点
虚拟机和容器对资源的隔离层次不同,虚拟机从系统层面出发,通过虚拟化硬件资源达到隔离不同的操作系统,从而隔离不同的应用;容器是从进程层面出发,运行在操作系统之上的进程,通过分离进程资源达到隔离不同的应用。容器的优势在于性能和效率;虚拟机的优势在于稳定和安全。
系统升级的初衷是资源快速提升,对系统资源和性能要求更高,所以选择了容器技术。
4 数据库
4.1 NoSQL数据库
在线社交网络服务(SNS)中的即时通讯系统,需要存储的数据种类多,比如图片、视频、文件、语音、文字,需要存储的数据量大。传统关系型数据库的特点是适合存储结构化数据,NoSQL数据库比如键值存储、列存储、图存储等都适合SNS应用场景。它们的特点:扩展性好,灵活性强,大数据量,大量操作时性能高,支持复杂的图形算法、高可用等。
4.2 云数据库
云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。根据数据库类型一般分为关系型数据库和非关系型数据库(NoSQL 数据库)。
云数据库的特性有:实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog 备份、SQL 审计、访问白名单、监控与消息通知等。
5 架构设计
5.1 中间件
消息中间件:可选着消息中间件技术对突发流量进行削峰、异步、解耦。消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供异步或同步、可靠的消息传输的支撑性软件系统。优势:
异步通信:消息中间件支持异步通信,发送方不需要等待接收方的响应,从而提高系统的响应速度和吞吐量。
可靠性:消息中间件通常支持消息的持久化和事务处理,确保消息能够被可靠地传输和处理,从而提高系统地可靠性和稳定性。
解耦合:消息中间件可以将应用程序之间地直接依赖关系解耦,从而提高系统地可扩展性和可维护性。
灵活性:消息中间件支持多种消息传递模式,如点对点和发布/订阅。
透明性:消息中间件可以提供监控、追踪、统计等功能,方便开发人员继续宁调试和性能优化。
消息缓冲:消息中间件可以作为消息缓冲区,暂时存储未处理的消息,从而平衡系统的负载和压力。
5.2 SOA
6 其他
6.1 数据脱敏方法
数据脱敏的方法主要包括替换法、掩码法、加密法、数据扰动、数据分割、伪数据生成、数据屏蔽、数据分类、虚拟化以及数据分区
替换脱敏:将敏感数据替换为符合规则的非敏感数据。例如,将姓名替换为随机生成的字符串,将手机号码替换为统一格式的虚拟号码
加密脱敏:对敏感数据进行加密处理,只有具有解密密钥的人才能还原数据。常见的加密算法有对称加密(如AES)和非对称加密(如RSA)
通用化脱敏:将敏感数据通用化处理,使其失去特定意义,但保留数据的格式和结构。例如,将日期统一替换为一个特定的日期,将地址替换为一个特定的地点
删除脱敏:直接删除敏感数据,只留下其他非敏感数据。这种方法适用于身份证号码、银行卡号等敏感程度较高的数据项
掩码法:类似于替换法,但更为灵活,适用于具有固定格式的敏感数据。例如,信用卡号常保留前六位和后四位,中间部分用星号或其他字符替换
数据扰动:通过在数据集中引入微小、随机的变化,使个体数据点难以被识别,但保持整体数据分布、相关性和趋势不变。常见的扰动技术包括差分隐私和加噪(如拉普拉斯噪声、高斯噪声)
数据分割:将敏感数据拆分为多个部分,并分别存储在不同的物理或逻辑位置,通过分散存储降低单一攻击导致数据泄露的风险
伪数据生成:生成与原始数据相似的合成数据,这些数据在保留原始数据特性的同时,不包含任何真实的敏感信息
条件脱敏:根据设定的条件(如时间、地点、用户角色等)来决定是否对数据进行脱敏处理
实时脱敏:在查询数据库时,根据用户权限和需求,实时对数据进行脱敏处理
6.2 订单服务
订单服务接收订购请求,创建一个订单,该记录状态为未支付,发布一个创建订单事件;支付服务接收创建订单事件,记录为支付信息,发布一个支付完成事件;订单服务接收支付完成事件,修改订单记录状态为已支付。
6.3 区块链
特性:
去中心化:区块链采取了分布式计算和存储,不存在中心化的硬件或管理机构,因此使得任意节点的权利和义务都是均等的。
开放性:区块链系统的一个开放性性质,除了交易各方的私有信息被加密外,区块链的数据对所有人公开的。
自治性(可共同维护):在整个区块链系统中,无论是价值的提供者还是价值的接收者,都可以充当维护者,共同维护整个区块链信息的可靠性。
匿名性(信息不可篡改):区块链上的个人信息都是加密之后的,是一串数字和字母组成的字符串,不会出现信息泄露的问题。
技术:
分布式交易账本:分布式账本是区块链的基础,它将数据分散存储在多个节点上,每个节点都保存一份完整的账本数据。这种去中心化的存储方式提高了数据的冗余度和容错性,确保了数据的真实性和可靠性。
公私钥签名:使用非对称加密机制,做签名,以验证持有人以及防止伪造效果,这种技术极难被破解,能验证持有人自然能一定程度解决数据可信度的问题。
哈希散列函数:将繁杂的交易信息加密压缩成固定字节的简单哈希值,并成为该区块的标识,保证区块链中交易信息不被篡改。
时间戳:时间戳是一种数字签名技术,通过将数据与特定时间点关联起来,确保数据在该时间点之后无法被篡改。