您的当前位置:首页西华师范大学 软件工程导论 第五版 张海藩 期末复习资料

西华师范大学 软件工程导论 第五版 张海藩 期末复习资料

2020-12-07 来源:乌哈旅游
软件生命周期

软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型

软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤

软件生命周期:同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。

软件生命周期组成:①软件定义 ②软件开发 ③运行维护

软件生命周期阶段:

1.问题定义

本阶段需要明确回答:“要解决的问题是什么?”。

统分析员应该提出问题的性质、目标和规模的书面报告。通过对实际用户和使用部门的调查、研究,以及讨论、交流,得出一份双方都满意的文档

2.可行性研究

本阶段需要回答的是:“上一阶段确定的问题有无可行的解决方案,是否值得解决?”。

更进一步明确项目的规模和目标,从技术可行性、经济可行性、操作可行性、法律可行性、社会可行性等方面进行研究,确定是否开发本项目。

3.需求分析

本阶段确定为解决该问题,目标系统必须应具备哪些功能。

系统分析员在本阶段必须与用户密切配合,充分交流,得到经用户确认的系统逻辑模型,用数据流图、数据字典等描述系统的逻辑模型。

需求分析阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,必须准确、完整的体现用户的需求。

4.总体设计

本阶段确定目标系统的主要功能如何完成。采用流程图或其他工具描述出每种可能的系统,推荐出一个最佳的方案,并制定出实现该系统的详细计划。

本阶段的另一个主要任务是设计软件的结构,确定软件应由哪些模块构成,以及模块之间的关系。

还应考虑系统的开发和应用环境,如计算机系统的配置,计算机网络等。

5.详细设计

详细设计阶段的任务就是把问题的求解具体化,设计出程序的详细规格说明。

通常用HIPO图(层次图/输入/处理/输出)或PDL语言(过程设计语言)描述详细设计的结果。

6.编码和单元测试

本阶段的任务是编写软件程序。程序员应根据目标系统的要求,选取适合的程序设计语言,把详细设计的结果编制成程序,并对每一个模块进行单元测试。

需要考虑软件平台、开发工具等等。

7.综合测试

本阶段的任务是通过各种测试以及相应的调试,使软件达到预定的要求。

应该把测试计划、测试方案、测试结果等以文档的形式保存下来,作为软件配置的一个组成部分。

8.软件维护

软件维护的任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

通常有4类维护活动:改正性维护;适应性维护;完善性维护;预防性维护。

每一项维护活动都应该准确地记录下来,作为正式的文档保存。

建立数据流图步骤:

1.画出基本数据流图

2.画出功能数据流图

3.描述处理方的功能

几种软件过程模型:

1.瀑布模型2.快速原型模型3.增量模型4.螺旋模型5.喷泉模型

瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用的最广泛的过程模型。

传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。

传统瀑布模型开发软件的特点:

1.阶段间具有顺序性和依赖性

①必须等前一阶段的工作完成后,才能开始后一阶段的工作。

②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段才能获得正确的结果。

2.推迟实现的观点

3.质量保证的观点

⑴每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。

⑵每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

快速原型模型:

快速原型(验证)——规格说明(验证)——设计(验证)——编码(测试)——综合测试——维护 变化的需求(验证)

螺旋模型

风险分析/快速原型/验证——风险分析/规格说明/验证——风险分析/设计/验证——风险分析/编码/测试——风险分析/综合测试——维护 风险分析/变化的需求/验证

数据流图

符号

正方形(或立方体)表示数据的源点/终点

圆角矩形(或圆形)代表变换数据的处理

开口矩形(或两条平行线)代表数据存储

箭头表示数据流,即特定数据的流动方向

数据字典

数据流图和数据字典共同构成系统的逻辑模型

数据字典的内容

1.数据流2数据流分量3数据存储4处理

数据元素组成数据的方式的基本类型:

1.顺序性2选择性3.重复性4.可选性

数据字典的用途

数据字典最重要的用途分析阶段的工具

实体——联系图

1数据对象是对软件必须理解的复合信息。

所谓复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物不是数据对象

2.属性

3.联系

⑴一对一 联系(1:1)⑵一对多 联系(1:N) ⑶多对多 联系 (M:N)

4.实体联系图的符号

数据规范化 :

范式级别越高,存储数据越多,越复杂

范式级别提高,访问表增多,性能下降

第一范式冗余程度最大、

分类 :第一范式 第二范式 第三范式

从哪些方面验证软件需求的正确性: 1.一致性2完整性3现实性4有效性

总体设计主要阶段组成:

1.系统设计阶段,确定系统具体方案。

2.结构设计阶段,确定软件结构。

总体设计9个步骤:

1.设想供选择的方案2.选取合理方案3.推荐最佳方案4.功能分解5设计软件结构6设计数据库7制定测试计划8书写文档(a.系统说明b.用户手册c.测试计划d.详细实现计划e.数据库设计结果)9审查和复查

模块独立:模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果

为什么模块独立性很重要:1.有效的模块化的软件比较容易开发出来2.独立的模块化容易测试和维护

模块独立化的两个标准:1.内聚2.耦合

耦合是对一个软件结构内不同模块之间互联的程度的度量。耦合的强弱取决于模块间接口 的复杂度,进入或访问一个模块的点,以及通过接口的数据。

内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展

内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间松耦合

启发规则:1.改进软件结构提高模块独立性2.模块规模适中3.深度、宽度、扇出和扇入都应适当4模块的作用域应该在控制域之内5力争降低模块接口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测

描绘软件结构的图形工具:1.层次图和HIPO图2.结构图

层次图用来描绘软件的层次结构

面向数据流的设计方法:

数据流的类型:1.变化流2.事物流

事务中心完成的任务:1.接受输入数据2.分析每个事物以确定它的类型3.根据事物类型选取一条活动通路

判定表组成:左上部列出所有条件 左下部是所有可能的动作 右上部表示各种条件组合的一个矩阵 右下部是和每种条件组合相对应的动作

测试步骤:1模块测试 2子系统测试 3系统测试(系统测试是把经过测试的子系统装配程一个完整的系统来测试) 4验收测试 5平行测试

测试阶段的信息流:1.软件配置,包括需求说明书、设计说明书和源程序清单等2测试配置,包括测试计划和测试方案

单元测试期间对模块进行测试测试重点:1.模块接口2局部数据结构3重要的执行通路4出错的处理通路5边界条件

集成测试:集成测试是测试盒组装软件的系统化技术。

模块组装程序时两种方法:1.非渐增式测试方法(先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序)

2渐曾式测试方法(把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完后在把下一个应该测试 模块结合起来测试)

测试和组装软件途径:自顶向下集成 自底向上集成

面向对象建模

面向对象方法开发软件,建立三种形式的模型:

1.对象模型:描述系统数据结构

2.动态模型:描述系统控制结构

3.功能模型:描述系统功能

用例图模型元素:系统、行为者、用例、用例之间的关系

创建用例建模:定义系统、寻找行为者和用例、描述用例、定义用例之间的关系、确认模型

类构件重用方式:实例重用、继承重用、多态重用

可重用软构建应具备的特点:1.模块独立性强2.具备高度可塑性3接口清晰、简明、可靠

面向对象语言的要点:1.一致的表示方法2.可重用性3.可维护性

面向对象语言的技术特点:1.支持类与对象概念的机制2.实现整体-部分结构的机制3

实现一般-特殊结构的机制4实现属性和服务的机制5类型检查6类库7效率8持久保存对象9参数化类10开发环境

面向对象方法学的优点:1与人类习惯的思维方法一致2稳定性好3可重用性好4容易开发大型软件产品5可维护性好

UML是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML的作用就是用很多图从静态和动态方面来全面描述我们将要开发的系统。 跟java语言的关系:也就是UML的类模型对java编程,java设计程序结构有用处。

因篇幅问题不能全部显示,请点此查看更多更全内容