软考高级-软件系统架构师-02-软件工程(重点)

用工程化的思想做软件

一、软件开发方法(/原则)

  1. 软件开发方法(重点)

    1. 结构化法(面向过程/函数) C

      1. 概念
        1. 用户至上
        2. 严格区分工作阶段,每个阶段有各自的任务和成果
        3. 强调系统开发的整体性和全局性
        4. 系统开发工程化,文档标准化
        5. 自顶向下,逐步分解(求精)
      2. 缺点
        1. 写死,不灵活,修改起来困难;
        2. 而需求是不断变化的,因此出现了面向对象
    2. 原型法 特殊

      1. 需求分析阶段,适用于需求不明确的开发
      2. 做一个原型化的界面呈现给客户,让客户有直观感受并反馈提出自己的详细需求,避免完成后再返工
      3. 包括 抛弃型原型、进化型原型
    3. 面向对象 C++、Java

      1. 复用性好
      2. 建立一个全面、统一、合理的模型
      3. 分析、设计、实现三个阶段没有明确的界限(做前一个阶段时,一并将后一阶段的一部分做完;而结构化方法每一个阶段做完并且评审后才开始下一个阶段,界限很明确)。
    4. 面向服务 (颗粒度比对象大)

      1. SO方法 三个抽象层级
        1. 操作,传统函数、方法。(抽象类)
        2. 服务(模块)
        3. 业务流程,由服务协作完成。(应用程序)
      2. SOAD 三个层次
        1. 基础设计层(底层服务件)
        2. 应用结构层(服务之间的接口和服务级协定)
        3. 业务组织层(业务流程建模和服务流程编排)
      3. 服务建模 三阶段
        1. 服务发现(做什么)
        2. 服务规约(做的过程中遵循的规则约定、参数)
        3. 服务实现(做出来)
  2. 软件开发模型(重点)

    1. 瀑布模型(结构化方法产物,适用于需求明确项目)一阶阶下来像瀑布流水,每个阶段需要进行需求评审,如果评审阶段或者下一阶段发现本阶段有问题不符合要求,需要回退(红色箭头)进行修改。

      1. 定义阶段
        1. 软件计划
        2. 需求分析(论文)
          1. 缺点 不适合需求不明确的项目,因为需求分析一旦错误,所有阶段都错了,再迭代时间、人力成本太高,且失败概率大于九成。
          2. 优化 加一个原型给客户,经过几轮修改反馈得到明确的项目;如果还不明确或者客户喜欢创新,从以下两方面解决
            1. 项目管理,不要制定总价合同,写明迭代的责任方和成本利润
            2. 选择原型模型
          3. 演化出其他模型
            1. 和原型模型演化出
              1. 增量模型
              2. 螺旋模型
      2. 开发阶段
        1. 软件设计
        2. 程序编码
        3. 软件测试
      3. 运行维护
    2. 演化模型

    3. 增量模型

      1. 一个功能模块一个功能模块的实现,每个功能模块实现了都能单独上线一个版本 
    4. 螺旋模型(重点)

      1. 迭代模型的一种
        1. 加入迭代思想
        2. 多轮迭代而成,每轮有个单独的目标(原型);像做画,比如第一轮打线稿,第二轮上色等,最终多轮迭代成最终的产品
      2. 演化
        1. 由瀑布模型和原型模型演化而来
        2. 每轮有一个原型,根据本轮确定的原型进行瀑布模型,一阶段一阶段完成;多轮原型+瀑布迭代成最终产品
        3. 适合大型项目,并加入风险分析
    5. 原型模型(重点)

      1. 快速原型模型(抛弃型)
        1. 在需求阶段就固定原型然后抛掉原型模型使用其他模型,比如瀑布模型按照瀑布模型各个阶段往下做
      2. 演化模型(变换型)
        1. 在最初原型的基础上慢慢演化成最终的模型,随时调整,不像螺旋模型一轮迭代完再进行下一轮那样有明确的界限
    6. 喷泉模型 SDLC

      1. 面向对象的开发模型
        1. 迭代
        2. 无间隙
      2. 形态像喷泉喷出开花一样上面大,再从四周洒下来
    7. V模型

      1. 强调测试
        1. 测试计划提前做,测试用例角度是在什么场景,用什么输入,得到什么输出;这种思考对问题比较聚焦,能提前发现很多问题并提前完善
        2. 在需求分析阶段就做验收测试和系统测试的测试计划,在概要设计的时候做集成测试的测试计划,在详细设计的时候做单元测试的测试计划;但是是一轮完成,并非螺旋那种多轮
      2. 瀑布模型的优化
    8. 迭代模型/迭代开发方法
    9. 快速应用开发 RAD
      1. 来源
        1. 基于构件的开发(核心)
        2. 瀑布模型
    10. 构件组装模型/基于构件的开发方法 CBSD
    11. 统一过程模型/也可界定为统一开发方法(重点)

      1. 三个特点
        1. 用例驱动
          1. (面向对象的表现),一开始就构建用例,一步步设计用例并实现出来,测试也会根据用例设计一系列测试用例;
          2. 在这个方法里用例就是整个开发过程的驱动力
        2. 以架构为核心
        3. 迭代和增量
      2. 四个阶段
        1. 初始(需求评审)
          1. 确定项目范围和边界
          2. 识别系统的关键用例
          3. 展示系统的候选架构
          4. 估计项目费用和时间
          5. 评估项目风险
        2. 细化(设计架构)
          1. 分析系统问题领域
          2. 建立软件架构基础
          3. 淘汰最高风险元素
        3. 构建(构件)
          1. 开发剩余的构件
          2. 构件组装与测试
        4. 交付(上线)
          1. 进行贝塔测试
          2. 制作发行版本
          3. 用户文档定稿
          4. 确认新系统
          5. 培训、调整产品
    12. 敏捷模型--实际是方法(重点)

      1. 四种模型的结合
        1. 自适应开发
        2. 水晶方法
        3. 特性驱动开发
        4. 极限编程
    13. 模型驱动的开发方法
    14. 基于架构的开发方法(重点)
  3. 逆向工程

    1. 实现方式
      1. 从已有系统拆开逆向得到实现方法,再结合新需求生产新系统
      2. 现有系统-》逆向工程-〉考虑新需求-》正向工程-〉新系统
      3. 现有系统-》再工程-〉新系统
    2. 四个层级(重点)
      1. 实现级
        1. 程序设计:抽象语法树、符号表、过程
      2. 结构级
        1. 程序分量间相互依赖关系
        2. 比如调用图、结构图、程序和数据结构
      3. 功能级
        1. 程序段功能及程序段间关系
        2. 比如数据和控制流模型
      4. 领域级
        1. 包括反应程序分量/程序实体与应用领域概念之间对应关系的信息
        2. 比如实体关系模型
  4. 净室软件工程

    1. 去除人为干扰,比如从数学模型通过程序直接转换为可以运行的产品

二、需求工程(重点)

  1. 需求获取(重点

    1. 软件需求是用户对软件在功能、性能、行为、设计约束等方面的期望
    2. 软件需求是指帮用户达到目标或解决问题所需的条件和能力;是系统满足合同规范所具有的条件和能力;以及反映这些能力的文档说明
  2. 需求分析(重点

    1. 结构化分析SA
      1. 四个模型
        1. 功能模型
          1. 对应数据流图
        2. 行为模型
          1. 对应状态转换图
        3. 数据模型
          1. 对应ER图
        4. 数据字典
          1. 配合上面的三种模型,在各自中提供明确的信息,帮助用户理解
      2. 三个图
        1. DFD数据流图
        2. ER图/模型
        3. 状态转换图
    2. 面向对象分析OOA 
      1. 概念

        1. SA以数据流为核心,关注系统的功能模块和数据流动,适合流程明确的系统。

        2. OOA以对象为核心,关注系统中的实体及其关系,适合复杂且需要灵活扩展的系统。

      2. 常用工具

        1. UML

  3. UML图(重点,案例分析)

    1. 静态图(结构图)(选择
      1. 类图​​​​​​​
    2. 动态图(行为图)(案例分析
      1. 用例图
      2. 选择题
        1. 三大关系
          1. 包含/使用关系
            1. 必须用到的基本用例
          2. 扩展关系
            1. 可选的,可能用到也可能用不到
            2. 和包含关系都属于依赖关系
          3. 泛化
            1. 父子关系
            2. 把共性抽出来作为父
        2. 选择题
          1. 根据三大关系选择UML流程的天空
          2. 注意:调整用例模型是可选的​​​​​​​
  4. UML视图(重点,案例分析

  5. UML关系(重点,案例分析

三、软件系统建模

四、系统设计

五、测试与评审

六、系统运行与软件维护

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32的HAL库开发---通用定时器(TIMER)---定时器脉冲计数

一、脉冲计数实验原理 1、 外部时钟模式1:核心为蓝色部分的时基单元,时基单元的时钟源可以来自四种,分别是内部时钟PCLK、外部时钟模式1,外部时钟模式2、内部定时器触发(级联)。而脉冲计数就是使用外部时钟…

甘肃省医保刷脸设备激活步骤

医保刷脸设备激活开通操作流程 激活社保 一、拆下刷脸设备,按右侧按键设置Wi-Fi和内网 Wi-Fi可连接个人热点,用于获取安装地址 配置Wi-Fi成功以后,输入机构代码,点击“获取”,安装地址获取成功; 断开Wi-…

一个sql只能有一个order by

ORDER BY 子句在 SQL 中只能出现一次,静态部分和动态部分只能写一个 ORDER BY

【Linux网络编程】之守护进程

【Linux网络编程】之守护进程 进程组进程组的概念组长进程 会话会话的概念会话ID 控制终端控制终端的概念控制终端的作用会话、终端、bash三者的关系 前台进程与后台进程概念特点查看当前终端的后台进程前台进程与后台进程的切换 进程组 进程组的概念 当我们使用以下命令查与…

MySQL的底层原理与架构

前言 了解MySQL的架构和原理对于很多的后续很多的操作会有很大的帮助与理解。并且很多知识都与底层架构相关联。 了解MySQL架构 通过上面的架构图可以得知,Server层中主要由 连接器、查询缓存、解析器/分析器、优化器、执行器 几部分组成的,下面将主要…

自动化测试工具selenium的安装踩坑

先安装Python 然后pip install selenium 浏览器安装驱动 火狐版本:132.0 geckodriver应用W3C WebDriver兼容远程服务器与根据gecko的浏览器互动的代理,该程序流程出示WebDriver协议书叙述的HTTP API,用以与Gecko浏览器(如Firefox)通讯 下…

apisix网关ip-restriction插件使用说明

ip-restriction插件可以在网关层进行客户端请求ip拦截。 当然了,一般不推荐使用该方法,专业的事专业工具做。建议有条件,还是上防火墙或者waf来做。 官方文档:ip-restriction | Apache APISIX -- Cloud-Native API Gateway whit…

Baklib赋能数字内容体验个性化推荐提升用户体验的未来之路

内容概要 随着数字化时代的不断发展,用户对内容消费的需求日益多样化,个性化推荐成为提升用户体验的重要手段。Baklib以其先进的技术手段,在数字内容领域内积极推动个性化推荐的实施,从而满足用户在信息获取和内容消费中的独特需…

【SqlServer】SQL Server Management Studio (SSMS) 下载、安装、配置使用及卸载——保姆级教程

超详细的 SQL Server Management Studio (SSMS) 下载、安装、连接数据库配置及卸载教程 SQL Server Management Studio (SSMS) 是微软提供的图形化管理工具,主要用于连接、管理和开发 SQL Server 数据库。以下是详细的 SSMS 下载、安装、连接数据库以及卸载的完整教…

【慕伏白教程】Zerotier 连接与简单配置

文章目录 下载与安装 WindowsLinux apt安装官方脚本安装 Zerotier 配置 新建网络网络配置 终端配置 WindowsLinux 下载与安装 Windows 进入Zerotier官方下载网站,点击下载 在下载目录找到安装文件,双击打开后点击 Install 开始安装 安装完成后&…

BUU22 [护网杯 2018]easy_tornado 1

打开题目以后出现三个文件,查看源代码,突破口在于这三个文件都有特殊的格式 python的tornado漏洞 Tornado 是一个用 Python 编写的 Web 框架(和flask一样,只不过flask是轻量级的,而tornado可以处理高流量&#xff09…

Windows Docker笔记-Docker拉取镜像

通过在前面的章节《安装docker》中,了解并安装成功了Docker,本章讲述如何使用Docker拉取镜像。 使用Docker,主要是想要创建并运行Docker容器,而容器又要根据Docker镜像来创建,那么首当其冲,必须要先有一个…

接入 deepseek 实现AI智能问诊

1. 准备工作 注册 DeepSeek 账号 前往 DeepSeek 官网 注册账号并获取 API Key。 创建 UniApp 项目 使用 HBuilderX 创建一个新的 UniApp 项目(选择 Vue3 或 Vue2 模板)。 安装依赖 如果需要在 UniApp 中使用 HTTP 请求,推荐使用 uni.requ…

攻防世界 文件上传

题目名称-文件包含 今天的题大概提一下解题思路就好了 这里要使用php://filter 在此基础上因为网页过滤了一些关键字 我们要进行爆破 UCS-4* UCS-4BE UCS-4LE* UCS-2 UCS-2BE UCS-2LE UTF-32* UTF-32BE* UTF-32LE* UTF-16* UTF-16BE* UTF-16LE* UTF-7 UTF7-IMAP UTF-8* ASCII…

胜任力冰山模型:深入探索职业能力的多维结构

目录 1、序言 2、什么是胜任力? 3、任职资格和胜任力的区别 4、胜任力冰山模型:职场能力的多维展现 4.1、冰山水面上的部分 4.2、冰山水面下的部分 4.3、深层的个人特质与价值观 5、如何平衡任职资格与胜任能力 6、结语 1、序言 在快速发展的I…

在 Flownex 中创建自定义工作液

在这篇博文中,我们将了解如何在 Flownex 中为流网添加和定义一种新的流体温度相关工作材料。 Flownex 物料管理界面 在 Flownex 中使用与温度相关的流体材料时,了解其特性与温度的关系非常重要。这种了解可确保准确预测各种热条件下的流体行为&#xff0…

工业物联网平台-视频识别视频报警新功能正式上线

前言 视频监控作为中服云工业物联网平台4.0的功能已经上线运行。已为客户服务2年有余,为客户提供多路视频、实时在线监视和控制能力。服务客户实时发现现场、产线、设备出现随机故障、事故等,及时到场处理维修。 视频识别&视频报警新功能当前正式上…

4.PPT:日月潭景点介绍【18】

目录 NO1、2、3、4​ NO5、6、7、8 ​ ​NO9、10、11、12 ​ 表居中或者水平/垂直居中单元格内容居中或者水平/垂直居中 NO1、2、3、4 新建一个空白演示文稿,命名为“PPT.pptx”(“.pptx”为扩展名)新建幻灯片 开始→版式“PPT_素材.doc…

NetCore Consul动态伸缩+Ocelot 网关 缓存 自定义缓存 + 限流、熔断、超时 等服务治理

网关 OcelotGeteway 网关 Ocelot配置文件 {//单地址多实例负载均衡Consul 实现动态伸缩"Routes": [{// 上游 》》 接受的请求//上游请求方法,可以设置特定的 HTTP 方法列表或设置空列表以允许其中任何方法"UpstreamHttpMethod": [ "Get", &quo…

数据结构与算法(test1)

一、树和二叉树 1. 看图,完成以下填空 (1).树的度为________。 (2).树中结点的最大层次,称为树的_____或树的______,值是______。 (3).结点A和B的度分别为________ 和 ________。 (4).结点A是结点B的________。 (5).结点B是结点A的________…