系统架构师备考——软件工程基础知识篇(软件测试&净室软件工程&基于构件的软件工程)

系统架构师备考日记(3.25)

第5章 软件工程基础知识篇(四)------软件测试&净室软件工程&基于构件的软件工程


文章目录


考点

涉及单项选择题和下午案例分析题,约占 8~15 分,论文也会有涉及


一、软件测试

软件测试工作主要是发现软件的错误、有效定义和实现软件成分由低层到高层到组装过程、验证软件是否满足任务书和系统定义文档所规定的技术要求、为软件质量模型的建立提供依据。

1.1 测试方法

(1)以测试过程中程序执行状态为依据可分为静态测试和动态测试

(2)以具体实现算法细节和系统内部结构的相关情况为根据可分黑盒测试、白盒测试和灰盒测试。

(3)以程序执行的方式来分类,可分为人工测试和自动化测试。

(4)从阶段上划分:单元测试、集成测试和系统测试,系统测试又包含功能测试、性能测试、验收测试、压力测试等。

1.2 测试阶段

(1)单元测试:对该软件的模块进行测试,通过测试以发现该模块的功能不符合/不满足期望的情况和编码错误。

(2)集成测试:明确该程序结构组装的正确性,发现和接口有关的问题。

(3)系统测试:一般采用黑盒测试,以此来检查该系统是否符合软件需求。又包含:功能测试、性能测试、健壮性测试、压力测试、可靠性及安全性测试等。

(4)性能测试:通过自动化工具模拟多种正常、峰值以及异常负载条件对系统等各项性能指标进行测试。

(5)验收测试:主要目标是为用户展示所开发出来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用该软件顺利完成既定的任务和功能。

二、净室软件工程

净室软件工程(Cleanroom Software Engineering,CSE)是一种软件开发过程中强调在软件中建立正确定的需要的方法。

2.1理论基础

CSE的理论基础主要是函数理论和抽样理论。

(1)函数理论:一个函数定义了从定义域到值域到映射。一个特定的程序好似定义了一个从定义域到值域的映射。这样,一个程序的规范就是一个函数的规范。

(2)抽样理论:不可能对软件的所有可能应用都进行测试。进行抽样测试。

2.2 技术手段

  • 统计过程控制下的增量式开发
  • 基于函数的规范与设计
  • 正确性验证
  • 统计测试和软件认证:使用盒子结构规约进行分析和设计建模,并强调正确性验证(而不是测试)

2.3 应用与缺点

  • CSE太理论化
  • CSE开发小组不进行传统的模块测试不现实
  • CSE不可避免地带有传统软件工程的一些弊端。

三、基于构件的软件工程(CBSE)

CBSE是一种基于分布对象技术、强调通过可复用构件设计与架构软件系统的软件复用途径。

3.1 构件和构件模型

(1)构件

一般认为构件是一个独立的软件单元,可以与其他构件构成一个软件体系。

CBSE的构件应该具备一下特征:

  • 可组装型
  • 可部署性
  • 文档化
  • 独立性
  • 标准化
    (2)构件模型
    构件模型定义了构件实现、文档化以及开发的标准。
    构件模型包含了一些模型要素:包括接口、使用信息和部署
    构件模型提供了一组被构件使用的通用服务,包括以下两种:
  • 平台服务,允许构件在分布式环境下通信和互操作
  • 支持服务,例如身份认证服务

3.2 CBSE过程

CBSE过程主要活动包括:

(1)系统需求概览

(2)识别候选构件

(3)根据发现的构件修改需求

(4)体系结构设计

(5)构件定制与适配

(6)组装构件,创建系统。

与传统软件开发不同点:

(1)CBSE早期需要完整的需求,以便尽可能多地识别出可复用的构件。

(2)在过程早起阶段根据可利用的构件来细化和修改需求。

(3)系统体系结构设计完成后,会有进一步对构件搜索及设计精华的活动

(4)开发就是将已经找到的构件集成在一起的组装过程

3.3 构件组装

3种构件组装方式:顺序组装、层次组装和叠加组装

3种不兼容情况:参数不兼容、操作不兼容和操作不完备


总结

本章节介绍软件测试方法,净室软件工程基本概念以及基于构件的软件工程的方法论,选择题会常考。

相关推荐
碳学长2 小时前
软件工程:如何在项目中把软件做好
软件工程
碳学长16 小时前
软件工程:如何做好软件产品
软件工程
Scabbards_17 小时前
CPT304 Software Engineering II 题型收集
软件工程
PXM的算法星球17 小时前
【软件工程】可行性研究
软件工程
HAPPY酷18 小时前
Kafka 和Redis 在系统架构中的位置
redis·kafka·系统架构
奇妙之二进制21 小时前
低内聚高耦合的衡量指标
软件工程·架构设计
奇妙之二进制1 天前
软件功能模块归属论证方法
软件工程·架构设计
掘金-我是哪吒1 天前
分布式微服务系统架构第144集:FastAPI全栈开发教育系统
分布式·微服务·架构·系统架构·fastapi
张较瘦_2 天前
[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究
软件工程·需求分析
半桔2 天前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构