【2023年11月第四版教材】《第5章-信息系统工程之软件工程(第二部分)》

《第5章-信息系统工程之软件工程(第二部分)》

1.3 软件设计

1、结构化设计SD是一种面向数据流的方法,它以SRS和SA阶段所产生的DFD和数据字
典等文档为基础,是一个自顶向下、逐步求精模块化的过程。SD方法的基本思想是将软件设
计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段;

2 、在SD中,需要遵循一个基本的原则:高内聚,低耦合
♦++内聚++ 表示++模块内++ 部各成分之间的联系程度;
♦ ++耦合++ 表示++模块之间++联系的程度。

3、面向对象设计(00D)是00A方法的延续,其基本思想包括抽象、封装可扩展性。其
中可扩展性主要通过继承多态来实现。(18下26)

4、设计模式 是前人经验的总结,它使人们可以方便地++复用成功的软件设计++ 。设计模式
含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素。
(1)根据处理范围 不同,设计模式可分为++类模式++ 和++对象模式++ ;
类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来, 属于++静态++ 关系;
对象模式处理对象之间的关系,这些关系在运行时刻变化,更具++动态++ 性。
(2)根据目的和用途 不同,设计模式分为++创建型摸式、结构型模式、行为型模式++。

模式 主要用于 包括的模式
创建型模式 创建对象 工厂方法/抽象工厂/原型/单例/建造者模式
结构型模式 处理类或对象的组合 适配器/桥接/组合/装饰/外观/享元/代理模式
行为型模式 描述类或对象的交互以及职责的分配 职责链/命令/解释器/迭代器/中介者/备忘录/观察者/状态/策略/模板方法/访问者 模式 (18下8)

1.4 软件实现

1、软件配置管理活动包括软件配置管理软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发管理与交等活动。【口诀:计时制,状态审计不符】

配置管理活动 解释说明
1 软件配置管理计划 明确软件配置控制任务
2 软件配置标识 识别要控制的配置项
3 软件配置控制 管理软件生命周期中的变更
4 软件配置状态记录 标识、收集、维护并报告配置管理的配置状态信息
5 软件配置审计 独立评价软件产品和过程是否遵从已有的规则、标准、指南、计划和流程而进行的活动
6 软件发布管理和交付 需要创建特定的交付版本,完成此任务的关键是软件库

2、软件编码就是把软件设计的结果翻译成计算机改以"理解和识别"的形式一用某种程序设计语言书写的程序。

3、软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等除的软件质量要求。通过测试发现软件缺陷,为软件产品的质量测量和评价提供依据。(19上9)

|----------|----------|--------|----------------|
| 测试分类 | 静态测试 | 文档 | 检查单 |
| 测试分类 | 静态测试 | 代码 | 桌前检查、代码走查和代码审查 |
| 测试分类 | 动态测试 | 黑盒 | 等价类划分、边界值分析等 |
| 测试分类 | 动态测试 | 白盒 | 逻辑覆盖 |

区别:(18 上 9) (19 下 9) (21 下 11)

测试类型 作用阶段 特征 常用技术和方法
白盒测试(结构测试) 用于单元测试 考虑程序内部结构和处理算法 测试的方法有控制流测试、数据流测试和程序变异测试等最常用的技术是逻辑覆盖,主要的覆盖标准有语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、修正的条件/判定覆盖和路径覆盖
黑盒测试(功能测试) 用于集成测试、确认测试和系统测试 完全不考虑(或不了解)程序的内部结构和处理算法 等价类划分、边界值分析、判定表、因果图、状态图、随机测试、猜错法和正交试验法等。

[补充第三版教材内容]

软件测试分++单元测试、集成测试、确认测试、系统测试、配置项测试和回归测试等++

👉 ①++单元测试++ :也称为++模块测试++ ,测试的对象是可独立编译或汇编的程序模块、软件构件或oo软件中的类(统称为模块),其目的是++检查每个模块能否正确地实现设计说明中的功能、性能、接口和其他设计约束等条件,发现模块内可能存在的各种差错。++

👉 ②++集成测试++ :目的是检查模块之间,以及模块和已集成的软件之间 的接口关系,并验证已

集成的软件是否符合设计要求。

👉③++确认测试++ :主要用于验证软件的功能、性能和其他特性是否与用户需求一致 。根据用户的参与程度,通常包括以下类型:(18下10)

♦++内部确认测试++ :主要由软件开发组织内部按照SRS进行测试。

♦++Alpha测试和Beta测试++ :Alpha测试 是由用户在开发环境下 进行测试;(21上11)Beta测试 是由用户在实际使用环境下 进行测试。在通过Beta测试后,才能把产品发布或交付给用户。

♦ ++验收测试++ :指针对5限石交付前以用户为主进行的测试。其测试对象为完整的、集

成的计算机系统蓝一

👉 ④++系统测试++ :对象是完整的、集成的计算机系统,系统测试的目的是在真实系统工作环境

下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发

合同规定的要公

👉 ⑤++配置项测试++ :测试的对象是软件配置项,目的是检验软件配置项与SRS的一致性。

👉⑥++回归测试++ :目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。(22下8)

1.5 部署交付

1、软件开发完成后,必须部署在最终用户的正式运行环境,交付给最终用户使用。这些活动包括软件打包、安装、配置、测试、集成和更新等。是一个持续不断的过程

2、持续部署

阶段 具体内容
软件部署与交付 软件部署与交付属于软件开发的后期活动,即通过配置、安装和激活等活动来保障软件制品的后续运行。部署技术影响着整个软件过程的运行效率和成本投入, 软件系统部署的管理代价占到整个软件管理开销的大部分。
持续交付 1.持续交付提供了一套更为完善的解决传统软件开发流程的方案,主要体现在: 👉 在需求阶段:抛弃了传统的需求文档的方式,使用便于开发人员理解的用户故事; 👉 在开发测试阶段:做到持续集成,让测试人员尽早进入项目开始测试; 👉 在运维阶段:打通开发和运维之间的通路,保持开发环境和运维环境的统一。
持续交付 2.持续交付具备的优势主要包括: 👉 能够有效缩短提交代码到正式部署上线的时间,降低部署风险; 👉 能够自动、快速地提供反馈,及时发现和修复缺陷; 👉 让软件在整个生命周期内都处于可部署的状态; 👉 能够简化部署步骤,使软件版本更加清晰; 👉 能够让交付过程成为一种可靠的、可预期的、可视化的过程。
持续部署 1.容器技术目前是部署中最流行的技术,常用持续部署方案Kubemetes+Docker和Matrix系统两种
部署层次 1.部署层次:首先要明确部署的目的并不是部署一个可工作的软件,而是部署一套可正常运行的环境。
部署层次 2.完整的镜像部署包括三个环节:Build---Ship---Run。 👉 Build:将软件编译形成RPM包或者Jar包; 👉 Ship:将所需的第三方依赖和第二方插件安装到环境中; 👉 Run:在不同的地方启动整套环境。
部署层次 3.制作完成部署包之后,每次需要变更软件或者第三方依赖以及插件升级的时候, 不需要重新打包,直接更新部署包即可。
部署层次 4.不可变服务器是一种部署模式,是指除了更新和安装补丁程序以外,不对服务器进行任何更改。
部署层次 5.在部署原则中提到两大部署方式为蓝绿部署和金丝雀部署。 👉 蓝绿部署是指在部署的时候准备新旧两个部署版本,通过域名解析切换的方式将用户使个境切换到新版本中,当出现问题的时候,可以快速地将用户环境切切回旧版本,并对新版本进行修复和调整。 👉 金丝雀部署是指当有新版本发布的时候,先让少量用户使用新版本,并且观察购床是否存在问题。如果出现问题,就及时处理并重新发布;如果一切正常,就稳步地将新版本适配给所有的用户。

3、软件过程能力是组织基于软件过程、技术、资源人员能力达成业务目标的综合能力。 包括治理能力、开发与交付能力、管理与支持能力、组织管理能力等方面。

4、成熟度模型CSMM模型由4个能力域、20个能力子域、161个能力要求组成。

能力域 能力子域
治理 战略与治理、目标管理
开发与交付 需求、设计、开发、测试、部署、服务、开源应用
管理与支持 项目策划、项目监控、项目结项、质量保证、风险管理、配置管理、供应商管理
组织管理 过程管理、人员能力管理、组织资源管理、过程能力管理

5、成熟度等级的总体特征

等级 结果特征
1级 初始级 软件过程和结果具有++不确定性++
2级 项目规范级 项目++基本可按++计划实现预期的结果
3级 组织改进级 在组织范围内能够++稳定地实现++预期的项目目标
4级 量化提升级 在组织范围内能够++量化地管理++和实现预期的组织和项目目标
5级 创新引领级 通过技术和管理的创新,实现组织业务目标的持续提升,++引领++行业发展

能力域与成熟度对应关系

相关推荐
不止会JS1 小时前
软考:系统架构设计师教材笔记(持续更新中)
系统架构·软件工程·软考
Theodore_102216 小时前
4 软件工程——总体设计
java·开发语言·数据库·算法·java-ee·软件工程·设计
Theodore_102217 小时前
1 软件工程——概述
java·开发语言·算法·设计模式·java-ee·软件工程·个人开发
shinelord明1 天前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
人才程序员2 天前
QML z轴(z-order)前后层级
c语言·前端·c++·qt·软件工程·用户界面·界面
Theodore_10222 天前
3 需求分析
java·开发语言·算法·java-ee·软件工程·需求分析·需求
做人求其滴3 天前
GDPU软件工程习题(挖空版)
软件工程
MrFlySand_飞沙3 天前
软件工程
软件工程
jokr_3 天前
【软件工程复习】
软件工程
云空3 天前
《软件工程文档攻略:解锁软件开发的“秘籍”》
软件工程