【系统架构】第五章-软件工程基础知识(需求工程和系统分析与设计)

news2024/11/25 16:28:04

软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版)

需求工程

软件需求3个层次:

  • 业务需求:反映了组织机构或客户对系统、产品高层次的目标要求
  • 用户需求:描述了用户使用产品必须要完成的任务,是用户对该软件产品的期望,
  • 功能需求:定义了开发人员必须实现的软件功能

需求工程是指应用已证实有效的原理、方法,通过合适的工具和记号,系统地描述待开发系统及其特征和相关约束。需求工程覆盖了体系结构设计之前的各项开发活动,主要包括分析客户要求、对未来系统的各项功能性及非功能性需求进行规格说明,目标是:确定客户需求,定义设想中系统的所有外部特征。

需求活动的阶段:需求获取、需求分析、形成需求规格(需求文档化)、需求确认与验证、需求管理。
需求管理活动在形成需求文档初稿时就开始。
强调内容如下:
1、控制对需求基线的变动
2、保持项目计划与需求一致
3、控制单个需求和需求文档的版本情况
4、管理需求和联系链,或管理单个需求和其他项目可交付产品之间的依赖关系
5、跟踪基线中的需求状态
在这里插入图片描述
一、需求获取
需求获取参考步骤:
1、开发高层的业务模型
2、定义项目范围和高层需求
3、识别用户角色和用户代表
4、确定目标系统的业务工作流
5、需求整理与总结(功能需求、性能需求、可靠性需求、安全保密需求、用户界面需求、资源使用需求、软件成本消耗与开发进度需求等)

需求获取方法:
1、用户面谈
2、需求专题讨论会(优点:协助建立一支高效的团队,围绕项目成功的目标、所有的风险承担人都畅所欲言、促进风险承担人和开发团队之间达成共识、揭露和解决那些妨碍项目成功的行政问题、能够很快地产生初步的系统定义、可以有效地解决不同涉众之间的需求冲突)
3、问卷调查
4、现场观察
5、原型化方法
6、头脑风暴法

二、需求变更
需求变更管理过程:
1、问题分析和变更描述
2、变更分析和成本计算
3、变更实现

常见的需求变更策略:
1、所有需求变更必须遵循变更控制过程
2、对于获得批准的变更,不应该做设计和实现工作
3、变更应该由项目变更控制委员会决定实现哪些变更
4、项目风险承担者应该能够了解变更的内容
5、绝不能充项目配置库中删除或者修改变更请求的原始文档
6、每一个集成的需求变更必须能跟踪到一个经核准的变更请求,以保持水平可追踪性

变更控制委员会做出决策的过程及操作步骤:
1、制定决策
2、交流情况
3、重新协商约定

三、需求追踪
需求跟踪提供了由需求到产品实现整个过程范围的明确查阅能力,目的是建立与维护“需求-设计-编程-测试”之间的一致性,确保所有的工作成果符合用户需求。

需求跟踪的两个方式:
1、正向跟踪(产品需求规格说明书)
2、逆向跟踪

系统分析与设计

一、结构化方法
结构化分析:给我一组帮助系统分析人员产生功能规约的原理与技术
步骤:
1、分析业务情况,做出反映当前物理模型的数据流图(DFD)
2、推导出等价的逻辑模型DFD
3、设计新的逻辑系统,生成数据字典和基元描述
4、建立人机接口,提出可供选择的目标系统物理模型的DFD
5、确定各种方案的成本和风险等级,据此对各种方案进行分析
6、选择一种方案
7、建立完整的需求规约
在这里插入图片描述
在这里插入图片描述

结构化设计:面向数据流的设计方法

结构化编程:采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口和一个出口

数据库设计:内容包括,需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护

二、面向对象方法
以用例驱动的、以体系结构为中心的、迭代的和渐增式的开发过程,主要包括需求分析、系统分析、系统设计和系统实现

面向对象分析方法(OOA)
面向对象分析:
OOA原则:抽象、封装、继承、分类、聚合、关联、消息通信、粒度控制、行为分析
基本步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法

面向对象设计(OOD):
OOD中,类可以分为:实体类、控制类、边界类

面向对象编程(OOP):
基本特点:封装、继承、多态

数据持久化和数据库:
一般会引入持久层,专注于实现数据持久化,将数据使用者和数据实体相关联,实现了数据处理层内部的业务逻辑和数据逻辑的解耦


作者其他要推荐的文章,欢迎来学习:
基于Spring Boot 3.1.0 系列文章

  1. Spring Boot 源码阅读初始化环境搭建
  2. Spring Boot 框架整体启动流程详解
  3. Spring Boot 系统初始化器详解
  4. Spring Boot 监听器详解
  5. Spring Boot banner详解
  6. Spring Boot 属性配置解析
  7. Spring Boot 属性加载原理解析
  8. Spring Boot 异常报告器解析
  9. 使用GraalVM 构建 Spring Boot 3.0 原生可执行文件
  10. Spring Boot 3.x微服务升级经历

Prometheus 系列文章

  1. Prometheus 的介绍和安装
  2. 直观感受PromQL及其数据类型
  3. PromQL之选择器和运算符
  4. PromQL之函数
  5. Prometheus 告警机制介绍及命令解读
  6. Prometheus 告警模块配置深度解析
  7. Prometheus 配置身份认证
  8. Prometheus 动态拉取监控服务
  9. Prometheus 监控云Mysql和自建Mysql

Grafana 系列文章,版本:OOS v9.3.1

  1. Grafana 的介绍和安装
  2. Grafana监控大屏配置参数介绍(一)
  3. Grafana监控大屏配置参数介绍(二)
  4. Grafana监控大屏可视化图表
  5. Grafana 查询数据和转换数据
  6. Grafana 告警模块介绍
  7. Grafana 告警接入飞书通知

Spring Boot Admin 系列

  1. Spring Boot Admin 参考指南
  2. SpringBoot Admin服务离线、不显示健康信息的问题
  3. Spring Boot Admin2 @EnableAdminServer的加载
  4. Spring Boot Admin2 AdminServerAutoConfiguration详解
  5. Spring Boot Admin2 实例状态监控详解
  6. Spring Boot Admin2 自定义JVM监控通知
  7. Spring Boot Admin2 自定义异常监控
  8. Spring Boot Admin 监控指标接入Grafana可视化

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

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

相关文章

rust abc(3): 布尔和字符类型的使用并与C/C++对比

文章目录 1. 目的2. 布尔类型2.1 只能赋值为小写的 true, false2.2 不能把数字赋值给bool类型变量2.3 正确写法汇总 3. 字符类型3.1 UTF-8 编码3.2 字符的意思是单个字符,多个字符不能用单引号 4. 总结 1. 目的 继续熟悉 rust 语言的基本数据类型, 感受 rust 编译期…

Redis【实战篇】---- 短信登录

Redis【实战篇】---- 短信登录 1. 导入黑马点评项目1. 导入SQL2. 有关当前模型3. 导入后端项目4. 导入前端项目5. 运行前端项目 2. 基于Session实现登录流程3. 实现发送短信验证码功能4. 实现登录拦截功能5. 隐藏用户敏感信息6. session共享问题7. Redis代替session业务1. 设计…

Spark10-11

10. 广播变量 10.1 广播变量的使用场景 在很多计算场景,经常会遇到两个RDD进行JOIN,如果一个RDD对应的数据比较大,一个RDD对应的数据比较小,如果使用JOIN,那么会shuffle,导致效率变低。广播变量就是将相对…

【C/C++】使用类和对象 练习EasyX图形库

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

【关联式容器】之map和set

【关联式容器】之map和set 容器类型树形结构的关联式容器mapset&#xff0c;multiset&#xff0c;multimap的区别与联系 容器类型 在STL中&#xff0c;我们接触过许多容器&#xff0c;例如&#xff1a;vector&#xff0c;list&#xff0c;stack&#xff0c;queue&#xff0c;m…

conll2003数据集下载与预处理

CoNLL-2003 数据集包括 1,393 篇英文新闻文章和 909 篇德文新闻文章。我们将查看英文数据。 1. 下载CoNLL-2003数据集 https://data.deepai.org/conll2003.zip 下载后解压你会发现有如下文件。 打开train.txt文件&#xff0c; 你会发现如下内容。 CoNLL-2003 数据文件包含由单…

逍遥自在学C语言 | 指针陷阱-空指针与野指针

前言 在C语言中&#xff0c;指针是一种非常强大和灵活的工具&#xff0c;但同时也容易引发一些问题&#xff0c;其中包括空指针和野指针。 本文将带你了解这两个概念的含义、产生原因以及如何避免它们所导致的问题。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直…

【玩转Docker小鲸鱼叭】理解DockerFile如此简单

DockerFile构建过程 DockerFile 是Docker的一个配置文件&#xff0c;本质上来说它只是一个文本文件&#xff0c;它是用来构建Docker镜像的。DockerFile配置文件中包含了一系列的指令和配置信息&#xff0c;用于描述如何构建镜像以及如何运行容器。通过编写 Dockerfile&#xf…

RISC-V处理器的设计与实现(二)—— CPU框架设计

前面我们选好了要实现的指令集&#xff0c;并且了解了每个指令的功能&#xff08;传送门&#xff1a;RISC-V处理器的设计与实现&#xff08;一&#xff09;—— 基本指令集_Patarw_Li的博客-CSDN博客&#xff09;&#xff0c;接下来我们就可以开始设计cpu了。当然我们不可能一上…

ChatGPT更新的使用指南,与其他类似的人工智能的软件和服务-更新版(2023-6-25)

文章目录 一、什么是ChatGPT二、如何使用三、如何使用ChatGPT帮助我们的工作和生活四、高阶用法1、角色扮演2、英语口语老师3、在搜索引擎中集成ChatGPT 五、常见问题五、其他类似的软件和服务 如果你还不知道如何注册和使用&#xff0c;可看末尾&#xff0c;手把手教你。 一、…

Linux线程同步

同步的几种方式&#xff1a;信号量&#xff0c;互斥锁&#xff0c;条件变量&#xff0c;读写锁 同步&#xff1a;对程序的执行过程进行控制&#xff0c;保证对临界资源的访问同一时刻只能有一个进程或线程访问。 2.1信号量 存在P操作&#xff1a;获取资源&#xff0c;信号量…

58.最后一个单词的长度

LeetCode-58.最后一个单词的长度 1、题目描述2、解题思路3、代码实现4、解题记录 1、题目描述 题目描述&#xff1a; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任…

通讯录获取APP程序分析

前言 APP非法获取用户通讯录等隐私信息 我用技术分析APP是如何获取信息的 如果你不幸中招了&#xff0c;可以参考下方链接(有偿) 我的方法是替换掉通讯录数据&#xff0c;替换不成功包退&#xff01; 每日16:00-06:00在线&#xff0c;5分钟受理&#xff0c;2~3小时完成 点下面…

下载安装mysql与设置密码详细步骤(压缩包版本)

目录 一、前言 二、操作步骤 &#xff08;一&#xff09;下载与解压缩 &#xff08;二&#xff09;配置环境变量 &#xff08;三&#xff09;安装MySQL服务 &#xff08;四&#xff09;设置ini文件和data文件 &#xff08;五&#xff09;启动MySQL服务和设置密码 三、…

【C++ 程序设计】第 5 章:类的继承与派生

目录 一、类的继承与类的派生 &#xff08;1&#xff09;继承的概念 &#xff08;2&#xff09;派生类的定义与大小 ① 派生类的定义 ② 派生类的大小 &#xff08;3&#xff09;继承关系的特殊性 &#xff08;4&#xff09;有继承关系的类之间的访问 &#xff08;5&am…

多线程单例模式

1、单例模式 顾名思义&#xff0c;单例模式能保证某个类在程序中只存在唯一一份示例&#xff0c;而不会创建出多个实例。就像java的JDBC编程只需要创建一个单例类DataSourece从这个DataSorce中获取数据库连接。没必要创建多个对象。 单例模式具体实现方式分为“饿汉”和“懒汉…

java编译与反编译

参考&#xff1a; Idea 使用技巧记录_source code recreated from a .class file by intell_hresh的博客-CSDN博客 深入理解Java Class文件格式&#xff08;一&#xff09;_昨夜星辰_zhangjg的博客-CSDN博客 实践详解javap命令&#xff08;反编译字节码&#xff09;_天然玩家…

【运筹优化】元启发式算法详解:迭代局部搜索算法(Iterated Local Search,ILS)+ 案例讲解代码实现

文章目录 一、介绍二、迭代局部搜索2.1 总体框架2.2 随机重启2.3 在 S* 中搜索2.4 ILS 三、获得高性能3.1 初始解决方案3.2 Perturbation3.2.1 扰动强度3.2.2 自适应扰动3.2.3 更复杂的扰动方案3.2.4 Speed 3.3 接受准则3.4 Local Search3.5 ILS 的全局优化 四、ILS 的精选应用…

Windows PE怎么修复系统?使用轻松备份解决!

​什么是Windows PE? Windows预先安装环境&#xff08;英语&#xff1a;Microsoft Windows Preinstallation Environment&#xff09;&#xff0c;简称Windows PE或WinPE&#xff0c;是Microsoft Windows的轻量版本&#xff0c;主要提供个人电脑开发商&#xff08;主要为OEM厂…

electron+vue3全家桶+vite项目搭建【20】窗口事件广播,通用事件封装

引入 electron中的渲染进程与主进程之间的数据交互需要利用ipc通信&#xff0c;互相订阅/通知来实现&#xff0c;我们不妨封装一个通用事件广播&#xff0c;利用自定义的事件名称来让主进程遍历窗口挨个推送对应内容&#xff0c;来实现事件的广播。 demo项目地址 实现思路 …