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

一、需求工程
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」
夜雨聆风