乐于分享
好东西不私藏

软件工程基础知识 – 第二周复习(下)

软件工程基础知识 – 第二周复习(下)

软件工程基础知识 – 第二周复习(下)


一、需求工程

1.1 软件需求层次

软件需求通常分为三个层次:

  • • 业务需求:反映了组织机构和客户对系统的高层次目标要求,说明为什么要做这个项目。
  • • 用户需求:描述了用户使用产品必须完成的任务,是用户对该软件产品的期望。
  • • 功能需求:从系统操作的角度定义了开发人员必须实现的软件功能,用来满足业务需求和用户需求。

简单理解:业务需求回答”为什么做”,用户需求回答”做什么”,功能需求回答”怎么做”。

1.2 需求工程五阶段

需求工程由以下五个阶段组成:

阶段
说明
需求获取
获得系统必要的特征和用户能接受的约束
需求分析
深入分析和理解用户需求
形成需求规格
输出需求规格说明书
需求确认与验证
确保需求的正确性和完整性
需求管理
控制和管理需求变更

1.3 软件需求规格说明书

SRS(Software Requirement Specification,软件的件需求规格说明书)具体包括:

  • • 功能需求:系统必须完成的功能
  • • 非功能需求:性能、可靠性、可用性等质量属性
  • • 约束:设计约束和过程约束

1.4 需求管理

需求管理是对系统需求变更进行了解和控制的过,主要包括:

  • • 变更控制:对需求变更进行评估和审批
  • • 版本控制:管理需求文档的不同版本
  • • 需求跟踪:建立和维护需求跟踪矩阵

1.5 需求获取

需求获取是获得系统必要的特征,或者是获得用户能接受的、系统必须满足的约束的过程。这是一个与技术无关的过程,主要关注沟通技巧。

1.6 需求变更控制委员会

CCB(Change Control Board,变更控制委员会)是一个决策机构,不是作业机构。CCB的工作是通过评审手段来决定项目是否变更,但不提出变更方案

1.7 需求跟踪

需求跟踪提供了由需求到产品实现整个过程范围的明确查阅能力。包括:

  • • 正向跟踪:从需求到实现的可追溯性
  • • 反向跟踪:从实现到需求的逆向追踪

不论哪种跟踪,都要建立与维护需求跟踪矩阵


二、系统分析与设计

2.1 结构化方法

SASD(Structured Analysis and Structured Design,结构化分析和结构化设计)又称为面向功能的软件开发方法。针对软件生命周期各个不同的阶段,有结构化分析、结构化设计和结构化编程等方法。

结构化分析

利用图形表达用户需求中的功能需求,使用的手段主要包括:

工具
说明
数据流图
描述数据在系统中的流动和处理过程
数据字典
定义系统中所有数据元素的集合
结构化语言
用于描述加工规格的半形式化语言
判定表
描述复杂逻辑条件的工具
判断树
描述复杂决策条件的树形工具

数据流图四要素:数据流、处理(加工)、数据存储、外部项

结构化设计 SD

是一种面向数据流的设计方法,以SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD分为概要设计和详细设计两个阶段。

2.2 逆向工程

逆向工程是通过分析已有的程序,寻求比源代码更高级的抽象表现形式的活动,是在不同抽象层中进行的溯源行为。

  • • 重构:是在同一抽象层级中转换系统描述活动
  • • 重构工程:对逆向工程所形成的系统进行修改和重构,生成的新版本

三、软件测试

3.1 软件测试的目的

测试是确保软件的质量,确认软件以正确的方式做了用户所期望的事情

软件的测试通常在规定的时间和成本内完成,以尽量多地发现漏洞,但不能保证发现所有的漏洞。

3.2 软件测试分类

按执行状态分类

  • • 静态测试:不执行程序,通过代码审查、Walkthrough等技术发现问题
  • • 动态测试:执行程序,观察运行结果

按内部结构关注程度分类

类型
说明
黑盒测试
测试人员完全不了解内部结构,仅基于外部需求和功能规格进行测试
白盒测试
测试人员完全了解内部结构,基于代码实现细节设计测试用例
灰盒测试
测试人员部分了解内部结构,结合外部功能和内部逻辑进行测试

按阶段分类

阶段
说明
主要方法
单元测试
对软件的模块进行测试
白盒静态测试、自动化动态测试
集成测试
对单元测试的组装进行测试
白盒+黑盒组合
系统测试
对整个系统进行测试
功能测试、性能测试、健壮性测试、安全性测试
验收测试
确认系统满足用户需求
业务场景测试

四、基于构件的软件工程

4.1 定义

基于构件的软件工程(CBSE)是一种基于分布对象技术,强调通过可复用构件设计与构造软件系统的软件复用途径。

应具备以下五个特征:

特征
说明
可组装性
所有外部交互必须通过公开定义的接口进行
可部署性
必须能作为一个独立实体在提供其构件模型实现的构件平台上运行
文档化
构件必须是完全文档化的
独立性
构件应该是独立的
标准化
必须符合某种标准化的构件模型

4.2 构件组装

常见的构件组装方式:

  • • 顺序组装:按顺序调用多个构件
  • • 层次组装:按层次关系组织构件
  • • 叠加组装:将多个构件组合成新构件

接口不兼容问题

构件组装可能面临接口不兼容的问题:

  • • 参数不兼容:参数类型或个数不匹配
  • • 操作不兼容:操作名称或语义不一致
  • • 操作不完备:缺少某些必要的操作

更多软考知识,欢迎关注「小码哥Lab」