【提升】软考系统架构师
[封面图]
计算机网络和通信知识:涵盖网络协议、路由、交换、传输控制协议/因特网协议(TCP/IP)、网络安全等。
数据库知识:包括关系型数据库管理系统(RDBMS)、非关系型数据库、数据建模、数据仓库等。
操作系统知识:涉及操作系统原理、进程管理、内存管理、文件系统等。
软件工程知识:包括软件开发过程、软件设计原则、软件测试、软件质量保证等。
架构设计知识:包括系统设计原则、架构设计模式、系统性能优化、系统安全等。
课程地址:https://www.bilibili.com/video/BV1P24y1T72K
国家软考办官网:https://www.ruankao.org.cn/
希赛软考报名及查询成绩专题:https://www.educity.cn/rk/zt/bmsj.html
希赛软考报名费汇总专题:https://www.educity.cn/rk/2147845.html
考试时间:11月上旬
通过标准:三科均达到45分以上
考试科目
- 科目一:综合知识【总分:75分】
- 考试时间:9:00~11:30
- 客观题:75空单选题
- 115分钟
- 科目二:案例分析【总分:75分】
- 考试时间:13:30~15:00
- 主观题:5道答题(只做3道)
- 90分钟
- 科目三:论文写作【总分:75分】
- 考试时间:15:30~17:30
- 论文题:4道题选做1道
- 120分钟
调整心态、加强训练、相互鼓励、共同提高
《系统架构设计师(第二版)》
科目一
- 系统工程与信息系统基础
- 软件工程⭐
- 软件架构设计⭐
- 系统可靠性分析与设计
- 系统安全性与保密性设计
系统工程与信息系统基础
系统工程概念
- 是一种组织管理技术
- 是为了最好的实现系统的目的,对系统的组成要素、组织结构、信息流、控制机构进行分析研究的科学方法
- 从整体出发、从系统观念出发,以求整体最优
- 利用计算机作为工具,对系统的结构、元素、信息和反馈等进行分析,以达到最优规划、最有设计、最优管理控制的目的
- 是一种现代的科学决策方法
系统工程方法
- 霍尔三维结构(“硬科学”方法论)
- 逻辑维:即解决问题的逻辑过程
- 时间维:即是工作进程
- 知识维:即是专业科学知识
应用场景:组织和管理大型工程建设项目
- 切克兰德方法(“软科学”方法论)
- 核心不是”最优化”,而是”比较”和”探寻”
- 7步骤:认识问题、根底定义、建立概念模型、比较及探寻、选择、设计与实施、评估与反馈
- 并行工程方法
- “制造过程”与”支持过程”并行
强调三个方面:产品设计开发期间,最快速度按质完成;各项工作问题协调解决;适当的信息系统工具
- “制造过程”与”支持过程”并行
- 综合集成法
- 钱学森命名,【简单系统】和【巨系统】
- 四原则:整体论原则、相互联系原则、有序性原则、动态原则
- WSR系统方法
- 实践准则:【懂物理】-【明事理】-【通人理】
霍尔三维结构
逻辑维
- 明确问题
- 确定目标:奖励价值体系或评价体系
- 系统综合
- 系统分析
- 优化:系统方案的优化选择
- 系统决策
- 实施计划
时间维
- 规划阶段:调研,谋求活动的规划与战略
- 拟定方案:提出具体的计划方案
- 研制阶段:完成研制方案及生产计划
- 生产阶段:生产零部件及提出安装计划
- 安装阶段:安装完毕,完成系统的运行计划
- 运行阶段:系统按照预期的用途开展服务
- 更新阶段:改进原有系统、或消亡原有系统
知识维
- 工程、医药
- 建筑、商业
- 法律、管理
系统工程生命周期阶段及方法
系统工程生命周期阶段
探索性研究 -> 概念阶段 -> 开发阶段 -> 生产阶段 -> 实用阶段 -> 保障阶段 -> 退役阶段
系统工程生命周期方法
- 计划驱动方法:需求 -> 设计 -> 构建 -> 测试 -> 部署
- 渐进迭代式开发:提供连续交付以达到期望的系统
- 精益开发:起源于丰田,是一个动态的、知识驱动的,以客户为中心的过程
- 敏捷开发:更好的灵活性
信息系统生命周期
- 产生阶段:提出建设信息的初步想法、对需求进行调研和分析
- 开发阶段
- 总体规划
- 系统分析
- 系统设计
- 系统实施
- 系统验收
- 运行阶段:通过验收、移交之后
- 消亡阶段:更新改造、功能扩展、报废重建
信息系统建设原则
- 高层管理人员介入原则
- 用户参与开发原则:用户确定范围、核心用户全程参与、用户深度参与
- 自顶向下规划原则:减少信息不一致的现象
- 工程化原则:引入【软件工程】
- 其他原则:创新型原则、整体性原则、发展性原则、经济性原则
信息系统开发方法
结构化法 -> 面向对象方法 -> 面向服务的方法
结构化法
- 自顶向下,逐步分解求精
- 开发目标清晰化
- 工作阶段程式化
- 开发文档规范化
- 设计方法结构化
- 应变能力差
面向对象方法
- 自底向上
- 阶段界限不明
- 更好应变、更好复用
- 符合人们的思维习惯
面向服务方法
- 粗粒度、松耦合
- 标准化和构件化
- 抽象级别:操作【低】->服务【中】->业务流程【高】
原型法【需求阶段】
- 针对需求不明确
- 按功能分:水平原型(界面)、垂直原型(复杂算法)
- 按最终结果分:抛弃式原型、演化式原型
其他信息系统开发方法
- 形式化方法:数学模型化
- 统一过程方法【UP】
- 敏捷方法
- 基于架构的开发方法【ABSD】
信息系统的分类
- 业务处理系统【TPS】:又称”电子数据处理系统”,数据输入、数据处理【批处理、OLTP】、数据库维护、文件报表产生。TPS是服务于组织管理层次中最底层、最基础的信息系统
- 管理信息系统【MIS】:高度集成化的人机信息系统。MIS系统四大部件:信息源、信息处理器、信息用户和信息管理者
- 决策支持系统【DSS】:由语言系统、知识系统和问题处理系统组成。用于辅助决策、支持决策
- 专家系统【ES】:知识 + 推理 = 专家系统。人工智能的一个重要分支
- 办公自动化系统【OAS】:由计算机设备、办公设备、数据通信及网络设备、软件系统组常
- 企业资源计划【ERP】:大同供应链,集成,整合
批处理系统属于【开环系统】,计算机实时处理系统属于【闭环系统】
软件工程
软件界面设计
黄金三法则
- 置于用户控制之下
- 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
- 提供灵活的交互
- 允许用户交互可以中断和撤销
- 当技能级别增加时可以使交互流水化并允许定制交互
- 设计应允许用户和出现在屏幕上的对象直接交互
- 减少用户的记忆负担
- 减少对短期记忆的要求
- 建立有意义的省却
- 定义直觉性的捷径
- 界面的视觉布局应该基于真实世界的隐喻
- 以不断进展的方式揭示信息
- 保持界面的一致性
- 允许用户将当前任务放入有意义的语境
- 在应用系列内保持一致性
- 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它
需求跟踪
原始需求x用例矩阵图
UML
统一建模语言:平台无关、语言无关
构造块(事务、关系、图)、规则、公共机制
- 构造块(事务、关系、图)
- 结构事物:最静态的部分,包括:类、接口、写作、用例、活动类、构件和节点
- 行为事物:代表时间和空间上的动作。包括:消息、动作次序、连接
- 分组事物:看成是个盒子,如:包、构件
- 注释事物:UML模型的解释部分。描述、说明和标注模型的元素
- 规则
- 范围:给一个名字以特定含义的语境
- 可见性:怎样使用或看见名字
- 完整性:事物如何正确、一致地相互联系
- 执行:运行或模拟动态模型的含义是什么
- 公共机制
- 规格说明:事物语义的细节描述,它是模型的真正核心
- 修饰:通过修饰来表达更多的信息
- 公共分类:类与对象、接口与实现
- 扩展机制:允许添加新的规则
2023/07/06 18:42
P6 02:39
UML图
- 静态图(结构图)
- 类图:一组类、接口、协作和它们之间的关系
- 对象图:一组对象及它们之间的关系
- 构件图:一个封装的类和它的接口
- 部署图:软硬件之间映射
- 制品图:系统的物理结构
- 包图:由模型本身分解而成的组织单元,以及它们之间的依赖关系
- 组合结构图
- 动态图(行为图)
- 用例图:系统与外部参与者的交互
- 顺序图:强调按时间顺序
- 通信图:协作图
- 状态图:状态转换变迁
- 活动图:类似程序流程图,并行行为
- 定时图:强调实际时间
- 交互概览图
需求工程
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望
需求工程主要活动的阶段划分
- 需求获取
- 需求分析
- 形成需求规格【形成SRS】
- 需求确认与验证【形成需求基线(经过评审的SRS)】
- 需求管理【变更控制、版本控制、需求跟踪、需求状态跟踪】
需求管理:是指在软件开发项目中,对软件需求进行有效的组织、分析、记录和跟踪的过程。它涉及收集用户需求、分析需求、规范需求、验证需求以及变更控制等活动。
需求开发:是软件需求管理的一个阶段,它主要涉及从用户和其他利益相关者那里获取需求、分析需求、定义需求、规划需求实施等活动。需求开发的目标是识别和建立软件系统的功能和性能特征,为开发团队提供明确、详细的需求基线。
需求获取
- 用户面谈:1对1~3,有代表性的用户,了解主观想法,交互好。成本高,要有领域知识支撑
- 联合需求计划(JRP):高度组织的群体会议,各方参与,了解想法,消除分析,交互好,成本高
- 问卷调查:用户多,无法一一访谈,成本低
- 现场观察:针对较为复杂的流程和操作
- 原型化方法:通过简易系统方式解决早期需求不确定问题
- 头脑风暴法:一群人围绕新业务发,发散思维,不产生新的观点。
需求
- 业务需求(整体全局)
- 用户需求(用户视角)
- 系统需求(计算机化)
- 功能需求
- 性能需求(非功能)
- 设计约束
结构化设计
【概要设计】:外部设计,功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块结构图
【详细设计】:内部设计,为每个具体任务选择适当的技术手段和处理方法
结构化设计原则
- 模块独立性原则(高内聚、低耦合)
- 保持模块的大小适中
- 多扇入,少扇出
- 深度和宽度均不宜过高
净室软件工程
- 净室即无尘室、洁净室。也就是一个受控污染级别的环境
- 使用盒结构规约(或形式化方法)进行分析和设计模型,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制
- 使用统计的测试来获取认证被交付的软件的可靠性所必需的出错率信息
【技术手段】
- 统计过程控制下的增量式开发:控制迭代
- 基于函数的规范和设计:盒子结构
- 定义3中抽象层次:行为视图(黑盒) -> 有限状态机视图(状态盒) -> 过程视图(明盒)
- 正确性验证:净室工程的核心
- 统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法
【缺点】
- 太理论化,正确性验证的步骤比较困难且耗时
- 开发小组不进行传统的模块测试,这是不现实的
- 脱胎于传统软件工程,不可避免带有传统软件工程的一些弊端
逆向工程
逆向工程是设计的恢复过程
- 实现级:包括程序的抽象语法树、符号表、过程的设计表示
- 结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
- 功能级:包括反映程序段功能及程序段之间关系的信息1,例如数据何控制流模型
- 领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型
- 重构/重组:重构是指在【同一抽象级别】上【转换系统描述形式】
- 设计恢复:设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
- 逆向工程:逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程
- 正向工程:指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量
- 再工程/重构工程:再工程是对现有系统的重新开发,包括逆向工程、新需求的考虑过程和正向工程三个步骤
2023/07/07 10:37
P13开始