【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级 创新引领级 通过技术和管理的创新,实现组织业务目标的持续提升,++引领++行业发展

能力域与成熟度对应关系

相关推荐
艾思科蓝 AiScholar5 小时前
【连续多届EI稳定收录&出版级别高&高录用快检索】第五届机械设计与仿真国际学术会议(MDS 2025)
人工智能·数学建模·自然语言处理·系统架构·机器人·软件工程·拓扑学
A_cainiao_A1 天前
【软考】【2025年系统分析师拿证之路】【啃书】第七章 软件工程(八)
软件工程
开开心心就好1 天前
极速、免费、体积小,一款PDF转图片软件
人工智能·智能手机·eclipse·pdf·软件工程·软件需求
夏旭泽2 天前
软件工程的基本原理
软件工程
夏旭泽2 天前
软件工程的本质特征
软件工程
風落2 天前
《告别复杂PDF编辑,PDF Eraser开启便捷办公新体验》
pdf·软件工程·软件需求
计软考研大C哥2 天前
【25考研】考清华的软件工程专业的研究生需要准备什么?
经验分享·考研·软件工程
诗和远方ya3 天前
visual studio连接sql server数据库
数据库·sqlserver·软件工程·visual studio
犬余5 天前
漫话架构师|什么是系统架构设计师(开篇)
架构·软件工程·软考·系统架构设计师
AWM巴卡6 天前
无降智o1 pro——一次特别的ChatGPT专业模式探索
软件工程