软考高级 | 系统架构设计师笔记(一)

news2024/11/17 18:22:38

一. 系统规划

1.1 项目的提出与选择

该步骤生成” 产品/项目建议书”.

1.2 可行性研究与效益分析

包括经济可行性/技术可行性/法律可行性/执行可行性/方案选择 5 个部分. 该步骤生 成”可行性研究报告”.

1.3 方案的制订和改进

包括确定软件架构/确定关键性要素?/确定计算体系(NET,J2EE).

1.4 新旧系统分析和比较

根据技术水平和商业价值进行评价, 演化策略有 4 种: 改造/集成/继承/淘汰

移植工作大体上分为计划阶段、 准备阶段、 转换阶段、 测试阶段、 验证阶段。
 

1、 计划阶段, 在计划阶段, 要进行现有系统的调查整理, 从移植技术、 系统内容(是
否进行系统提炼等)、 系统运行三个方面, 探讨如何转换成新系统, 决定移植方法, 确立移
植工作体制及移植日程。
2、 准备阶段, 在准备阶段要进行移植方面的研究, 准备转换所需的资料。 该阶段的作
业质量将对以后的生产效率产生很大的影响。
3、 转换阶段, 这一阶段是将程序设计和数据转换成新机器能根据需要工作的阶段。 提
高转换工作的精度, 减轻下一阶段的测试负担是提高移植工作效率的基本内容。
4、 测试阶段, 这一阶段是进行程序单元、 工作单元测试的阶段。 在本阶段要核实程序
能否在新系统中准确地工作。 所以, 当有不能准确工作的程序时, 就要回到转换阶段重新工
作。
5、 验证阶段, 这是测试完的程序使新系统工作, 最后核实系统, 准备正式运行的阶段。


二. 系统分析与设计


2.1 定义问题与归结模型

目录

一. 系统规划

1.1 项目的提出与选择

1.2 可行性研究与效益分析

1.3 方案的制订和改进

1.4 新旧系统分析和比较

二. 系统分析与设计

2.1 定义问题与归结模型

2.2 需求

2.2.1 需求工程

2.2.2 需求分析

2.3 系统设计(软件设计)

2.4 结构化分析与设计

2.4.1 分析步骤

2.4.2 分析工具

2.4.3 结构化设计

2.4.4 数据流图、 流程图

2.5 面向对象分析与设计

 2.5.1 基本概念

2.5.2 UML(统一建模语言)

2.5.3 用例模型

2.5.4 分析模型

2.5.5 设计模型

2.6 用户界面设计

2.7 工作流设计

2.8 简单分布式计算机应用系统设计

2.8.1 分布式系统开发

 2.8.2 分布式计算架构

2.9 系统运行环境的集成与设计

2.10 系统过渡设计



2.2 需求


2.2.1 需求工程


        需求工程包括需求管理和需求开发。
        需求开发: 包括需求捕获、 需求分析、 编写规格说明书和需求验证 4 个阶段。 需求开
发是努力更清晰、 更明确地掌握客户对系统的需求。
        需求管理: 通常包括定义需求基线、 处理需求变更、 需求跟踪等方面的工作。 而需求管
理则是对需求的变化进行管理的过程。

2.2.2 需求分析

  • 包括内容

  1. 问题识别: 用于发现需求、 描述需求。 预先估计以后系统可能达到的目标。
  2. 分析与综合: 对问题进行分析, 然后在此基础上整合出解决方案。
  3. 编制需求分析文档: 对已经确定的需求进行文档化描述, 该文档通常称为“需求规格说明书” 
  4. 需求分析与评审: 对功能的正确性、 完整性和清晰性, 以及其他需求给予评价。
  • 需求分类 1
  1. 功能需求
  2. 非功能需求
  3. 设计约束
  • 需求分类 2
  1. 业务需求
  2. 用户需求
  3. 系统需求: 包括 功能需求/质量属性/非功能需求/设计约束
  • 需求获取方式
  1. 收集资料
  2. 联合需求计划: 召集多部门开会
  3. 用户访谈: 结构化, 准备好了问题; 非结构化, 随机应变问问题.
  4. 明确访谈目的/ 确:书面(问卷)调查/情节串联板/现场观摩/参加业务实践/阅读历史文档/ 抽样调查

2.3 系统设计(软件设计)

 步骤: 概要设计(高层设计)/详细设计(低层设计)
 设计方法: 结构化设计/面向对象设计

2.4 结构化分析与设计


2.4.1 分析步骤


研究物质环境/建立系统逻辑模型/划清人机界限


2.4.2 分析工具


数据流图/数据字典/结构化语言/判定表/判定树
一个数据流图里面有数据流、 加工、 外部实体、 数据存储.因此在描述完数据流图之后,
可紧接着描述数据字典(数据流名称、 来源、 去向、 结构、 组织等)和处理(加工).

2.4.3 结构化设计


概要设计----模块结构图/层次图/HIPO 图(层次+input process output)
详细设计----程序流程图/盒图 NS/PAD 问题分析图/PDL 程序设计语言(伪码)
模块(化)---- 指执行某一特定任务的数据结构和程序代码


外部特征: 模块的接口和功能/
内部特征: 模块的局部数据和程序代码
关键原则: 信息隐蔽/模块独立性(高内聚、 低耦合)


 

 

2.4.4 数据流图、 流程图


数据流图:作为一种图形化工具,用来说明业务处理过程、 系统边界内所包含的功能和系
统中的数据流。 (1 Context 图 / 2 DFD 0 层图)


设计原则:

  • 父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流一致。
  •  数据守恒: 指加工的输入、 输出数据流是否匹配, 即每一个加工既有输入数据流又有输出数据流。
  • 守恒加工: 对于同一个加工, 其输入与输出的名字必须不同。
  • 加工细节隐蔽: 父图内部细节留给子图去画。
  • 简化加工之间的关系: 尽量减少加工间输入/输出数据流的数目.

 

 流程图:以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。

区别数据流图流程图
并行性处理过程可并行某个时间点只能处于一个处理过程
展示流展示数据流展示控制流
计时标准展示全局的处理过程,过程之
间遵循不同计时标准
遵循一致的计时标准
用途系统分析中的逻辑建模系统设计中的物理建模

2.5 面向对象分析与设计


 2.5.1 基本概念


类/对象; 继承/泛化; 多态/重载


2.5.2 UML(统一建模语言)


a 组成

  • 构造块
    • 事物(建模元素)---结构事物/行为事物/分组事物/注释事
    • 关系---关联/依赖/泛化/实现 http://c.biancheng.net/view/1319.html
    • 图 (如下)---(结构)静态模型(类图、 对象图、 包图、 构件图、 部署图、 制品图) / (行为)动态模型( 用例图、 顺序图、 通信图、 定时图、 状态图、 活动图、 交互概览图)
  • 公共机制
    • 规格说明/修饰/公共分类/扩展机制
  • 规则

b 软件架构(4+1 视图模型), (非 UML 特有)

速记: “逻进部实用” , ” 逻进物开场”
 

  • 逻辑视图: 以问题域的语汇组成的类和对象集合。 (功能)
  • 进程视图: 可执行线程和进程作为活动类的建模, 它是逻辑视图的一次执行实例。 (运行). 主要关注一些非功能性需求, 例如, 系统的性能和可用性等。 进程视图强调并发性、分布性、 系统集成性和容错能力。
  • 实现(开发)视图: 对组成基于系统的物理代码的文件和组件进行建模。 (模块组织管理)
  • 部署(物理)视图: 把组件物理地部署到一组物理的、 可计算的节点上。
  • 用例(场景)视图: 最基本的需求分析模型

c 类间关系表示

  • 依赖: 某个类的方法通过局部变量、 方法的参数或者对静态方法的调用来访问另一个类(被依赖类)

  • 关联: (包括一般关联关系、 聚合关系和组合关系). 将一个类的对象作为另一个类的成
    员变量来实现关联关系. 关联可以是双向的, 也可以是单向的。

  • 聚合: 关联关系的一种. 通过成员对象来实现的, 其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在

 

  • 组合: 关联关系的一种, 也表示类之间的整体与部分的关系, 部分对象不能脱离整体对象而存在, 即共存.

  •  泛化: 父类与子类之间的关系

  • 实现: 接口与实现类之间的关系

d 各种图

用例图(系统与外部的交互关系, 详见下一节): 参与者/用例/包含和扩展/通信关联

  • 包图: 表示软件体系结构图
  • 类图: 描述类的内部属性和行为, 以及类集合之间的交互关系;
  • 对象图: 描述一组对象及它们之间的关系;
  • 类关系: 依赖(箭头虚线)/泛化(空心箭头实线)/关联(实线)/聚合(空心菱形实线)
  • 多重性: 如下图, 1 本书籍包含 0 个或者 1 个借阅记录, 即 1 对 0..1

  •  交互图: 表示各组对象如何依某种行为进行协作。 可以用来表示用例的行为。
    • 分类: 顺序图/通信图/定时图

 

  • 状态图: 主要用于描述一个对象在其生存周期的动态行为, 表现一个对象所经历的状态序列,引起状态转移的事件, 以及因状态转移而伴随的动作。 侧重描述行为的结果。(又: 描述一个特定的复杂对象的所有可能状态及其引起状态转移的事件) 

  • 活动图: 用于描述系统的工作流程和并发行为。 活动图可以看作是状态图的特殊形式。 侧重描述行为的动作。 活动图中一个活动结束后将立即进入下一个活动, 而在状态图中状态的转移可能需要事件的触发。

  •  构件图: 一组源代码文件、 二进制代码文件和可执行文件(构件)之间的关系

 

  •  部署图(实施图): 在构件图基础上更进一步地描述系统硬件的物理拓扑结构及在此结构上执行的软件。
    • 组成: 结点和连接 / 构件和接口

2.5.3 用例模型

用例图:用来描述系统需求, 用例图的元素包括参与者、 用例和通信关联。
建模步骤包括 4 步:

  • a 识别参与者
  • b 合并需求获得用例
  • c 细化用例描述
    • 用例名称、简要说明、事件流、非功能需求、前置条件和后置条件、扩展点、优先级
  • d 调整用例模型
    • 用例之间的关系包括 包含/扩展/泛化, 基于这些关系对用例进行调整. 

2.5.4 分析模型


        利用图: 用例图/类图/交互图
        用来描述系统的基本逻辑结构, 展示对象和类如何组成系统(静态模型),以及它们如何
保持通信,实现系统行为(动态模型). 由顶层架构图、 用例与用例图和领域概念模型构成
         步骤:

  • a 定义概念类
  • b 确定类之间的关系
    • 关系包括: 关联/依赖/泛化/聚合/组合/实现
    • 用类图表示
  • c 为类添加职责
    • 成员变量(属性) 和 成员方法
  • d 建立交互图
    • 包括顺序图/交互概览图/通信图/定时图
  • e 分析模型的详细程度问题
     

2.5.5 设计模型


包含: 以包图表示的软件体系结构图; 以交互图表示的用例实现图; 完整精确的类图;
针对复杂对象的状态图; 描述流程化处理的活动图
 

2.6 用户界面设计


黄金法则:置用户于控制之下/减少用户记忆负担/保持界面一致

过程:用户、 任务和环境分析/界面设计/实现/界面确认
 

2.7 工作流设计


流程定义工具
工作流管理系统


2.8 简单分布式计算机应用系统设计


基于实例的协作:对远程实例有较大控制权,小范围内” 近连接” ,常使用代理方式.
基于服务的协作:只能调用远程对象的接口方法,无法创建销毁远程对象.跨平台” 远连
接” .


2.8.1 分布式系统开发


五个逻辑计算层:

  • 表示层实现用户界面;
  • 表示逻辑层为了生成数据表示而必须进行的处理任务, 如输入数据编辑等;
  • 应用逻辑层包括为支持实际业务应用和规则所需的应用逻辑和处理过程, 如信用检查、 数据计算和分析等;
  • 数据处理层包括存储和访问数据库中的数据所需的应用逻辑和命令, 如查询语句和存储过程等;
  • 数据层是数据库中实际存储的业务数据。
     

 2.8.2 分布式计算架构


①分布式表示架构是将表示层和表示逻辑层迁移到客户机, 应用逻辑层、 数据处理层和
数据层仍保留在服务器上;
②分布式数据架构是将数据层和数据处理层放置于服务器, 应用逻辑层、 表示逻辑层和
表示层放置于客户机;
③分布式数据和应用架构是将数据层和数据处理层放置在数据服务器上, 应用逻辑层放
置在应用服务器上, 表示逻辑层和表示层放置在客户机上。

2.9 系统运行环境的集成与设计


软件运行环境: 包括 系统运行的设备/操作系统/网络配置
集中式系统: 单计算机结构/集群结构/多计算机结构
分布式系统: 基于网络
C/S 结构: 如数据库/网络打印服务系统/网络游戏
多层结构 3: 扩展了 C/S, 由存储数据的数据库服务器作为数据层、 实现商业规则的程
序作为逻辑层、 管理用户输入输出的视图层
Internet、 Intranet、 Extranet


2.10 系统过渡设计


直接过渡/并行过渡/阶段过渡

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1614514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis 框架学习(II)

MyBatis 框架学习(II) 文章目录 MyBatis 框架学习(II)1. 介绍2. 准备&测试2.1 配置数据库连接字符串和MyBatis2.2 编写持久层代码 3. MyBatis XML基础操作3.1 Insert 操作3.2 Delete 操作3.3 Update 操作3.4 Select 操作 4. #{} 与 ${}的使用5. 动态SQL操作5.1 < if >…

通过DaoCloud DCE的场景化应用看容器云平台的核心能力(三)

以下场景来自DaoCloud官方文档场景化视频&#xff0c;这里以文字形式简单提取下要点&#xff0c;包括操作步骤和一些问题。 一共13个场景&#xff0c;本篇包含5个&#xff1a;9.快速定位异常与排障、10.基于CICD的应用发布、11.基于GitOps持续部署云原生应用、12.使用中间件与…

5大自动化测试的Python框架 | 实用干货

自从2018年被评选为编程语言以来&#xff0c;Python在各大排行榜上一直都是名列前茅。 目前&#xff0c;它在Tiobe指数中排名第三个&#xff0c;仅次于Java和C。随着该编程语言的广泛使用&#xff0c;基于Python的自动化测试框架也应运而生&#xff0c;且不断发展与丰富。 因…

微信小程序:基于MySQL+Nodejs的汽车品牌管理系统

各位好&#xff0c;接上期&#xff0c;今天分享一个通过本地MySQLNodejs服务器实现CRUD功能的微信小程序&#xff0c;一起来看看吧~ 干货&#xff01;微信小程序通过NodeJs连接MySQL数据库https://jslhyh32.blog.csdn.net/article/details/137890154?spm1001.2014.3001.5502 …

阶段性学习汇报 4月19日

目录 一、毕业设计和毕业论文 二、学习python和vue 三、阅读知识图谱 四、下周规划 一、毕业设计和毕业论文 毕业设计后端功能基本实现&#xff0c;但是还有些具体的细节需要优化。前端小程序部分只有个前端页面以及部分交互逻辑&#xff0c;还需进一步完善。在疾病预测这里本…

力扣hot100(python解析)

文章目录 13. 合并区间14. 轮转数组 13. 合并区间 合并区间 数组 排序 思路&#xff1a; 代码&#xff1a; class Solution:def merge(self, intervals):result []if len(intervals) 0:return result # 区间集合为空直接返回intervals.sort() # 默认按照区间的左边界进…

个人开发 App 最简单方法:使用现代开发工具和平台

在移动应用市场的蓬勃发展下&#xff0c;个人开发者也有机会将自己的创意转化为实际的应用程序&#xff0c;并通过应用商店实现盈利。然而&#xff0c;对于许多初学者来说&#xff0c;如何开始个人开发一个应用可能会感到困惑。本文将介绍个人开发 App 的最简单方法&#xff0c…

【树莓派学习】系统烧录及VNC连接、文件传输

【树莓派学习】系统烧录及VNC连接、文件传输 Raspberry Pi is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in association with Broadcom. Since 2013, Raspberry Pi devices have been developed and…

Vitis HLS 学习笔记--优化指令-ARRAY_PARTITION

目录 1. ARRAY_PARTITION 概述 2. 语法解析 2.1 参数解释 2.1.1 variable 2.1.2 type 2.1.3 factor 2.1.4 dim 2.2 典型示例 2.2.1 dim1 2.2.2 dim2 2.2.3 dim0 3. 实例演示 4. 总结 1. ARRAY_PARTITION 概述 ARRAY_PARTITION 指令中非常重要&#xff0c;它用于优…

银河麒麟redis安装

一.编译和安装Redis wget http://download.redis.io/releases/redis-4.0.9.tar.gz 执行如下命令&#xff0c;解压包。 tar -zxvf redis-4.0.9.tar.gz 执行如下命令&#xff0c;进入deps目录 cd redis-4.0.9/deps 执行如下命令&#xff0c;编译Redis依赖库。 make -j4 hiredis l…

民航电子数据库:CAEMigrator迁移工具

目录 一、场景二、迁移步骤 一、场景 1、对接民航电子数据库 2、需要将mysql数据库迁移到民航电子数据库 3、使用CAEMigrator迁移工具 二、迁移步骤

VMware 15 虚拟机网络遇到的问题

剧情提要 通过Cent os7 的镜像文件&#xff0c;创建了一个虚拟机A&#xff08;后面简称A&#xff09;&#xff0c;事后发现&#xff0c;宿主机无法ping通A 在虚拟机中通过IP a 看到的IP信息也没有只管的ip信息如图 然后执行&#xff0c;宿主机才能访问A。 sudo dhclient ens…

MySQL 基础语法(2)

文章目录 创建表查看表修改表表数据插入 本文为表结构相关的基础语言库相关的基础语句 创建表 CREATE TABLE table_name ( field1 datatype comment xxx, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;CREATE TABLE&#xff1…

白蚁自动化监测系统解放方案

一、系统介绍 白蚁自动化监测系统是基于物联网的各项白蚁监测点数据的采集形成智能控制系统。提供白蚁实时预警及解决方案&#xff0c;真正实现区域内白蚁种群消灭。白蚁入侵&#xff0c;系统第一时间自动报警&#xff0c;显示入侵位置&#xff0c;实现抓获白蚁于现场的关键环…

算法库应用-有序单链表插入节点

学习源头: 模仿贺利坚老师单链表排序文章浏览阅读5.9k次。  本文针对数据结构基础系列网络课程(2)&#xff1a;线性表中第11课时单链表应用举例。例&#xff1a;拆分单链表 &#xff08;linklist.h是单链表“算法库”中的头文件&#xff0c;详情单击链接…&#xff09;//本程…

JS 分片任务的高阶函数封装

前言 在我们的实际业务开发场景中&#xff0c;有时候我们会遇到渲染大量元素的场景&#xff0c;往往这些操作会使页面卡顿&#xff0c;给用户带来非常不好的体验&#xff0c;这时候我们就需要给任务分片执行。 场景复现 我们看一段代码&#xff1a; <!DOCTYPE html> &l…

P2P面试题

1&#xff09;描述一下你的项目流程以及你在项目中的职责&#xff1f; 一个借款产品的发布&#xff0c;投资人购买&#xff0c;借款人还款的一个业务流程&#xff0c;我主要负责测注册&#xff0c;登录&#xff0c;投资理财这三个模块 2&#xff09;你是怎么测试投资模块的&am…

T1级,生产环境事故—Shell脚本一键备份K8s的YAML文件

大家好&#xff0c;我叫秋意零。 最近对公司进行日常运维工作时&#xff0c;出现了一个 T1 级别事故。导致公司的“酒云网”APP的无法使用。我和我领导一起搞了一个多小时&#xff0c;业务也停了一个多小时。 起因是&#xff1a;我的部门直系领导&#xff0c;叫我**删除一个 …

vcruntime140.dll文件丢失的解决办法,为什么导致vcruntime140.dll文件丢失

废话少说&#xff0c;今天这篇文章直接和大家聊聊vcruntime140.dll文件丢失的解决办法&#xff0c;同时给大家分析vcruntime140.dll文件为什么会导致文件丢失。一起来看看吧。 vcruntime140.dll文件缺失的可能原因 A. 文件损坏或删除&#xff1a;vcruntime140.dll文件可能会…

《人工智能》大作业反馈

0 写在前面 春学期带了一门很有意思的课《人工智能与机器学习》&#xff0c;在学期初就在构思怎么才能把这门课上好&#xff0c;怎么才能让一群土木大类专业的小孩对人工智能这个领域感兴趣&#xff0c;怎么才能让他们将这个专业与自己专业结合起来。我对自己的要求就是希望自…