软件工程 课堂测验 简答

结构化的软件设计的工具有哪些?各有什么特点?

表示软件结构的图形工具:

1)层次图和HIPO图:层次图描绘软件的层次结构,一个矩形框代表一个模块,框间的连线表示调用关系,每个方框可带编号,带编号的层次图称为HIPO图

2)结构图:结构图是进行软件结构设计的工具,同层次图。位于上方的方框代表的模块调用下方的模块,可不用箭头只用直线表示模块间的调用关系。带注释的箭头表示模块调用过程中来回传递的消息。尾部是空心圆表示传递的是数据,尾部是实心圆表示传递的是控制信息。

面向数据流的设计方法:

数据流图:在概要设计阶段使用。数据流分为变换型数据流和事务型数据流。变换:把输入的数据处理后转变成另外的输出数据。事务:非数据变换的处理,将输入的数据流分散成许多数据流,形成若干加工,选择其中一个路径来执行。

面向数据结构的设计方法:

1)Jackson:将数据结构分为:顺序型结构、选择型结构、循环型结构。顺序型结构:数据由一个或多个元素组成,按照确定的次序出现一次。

2)Warnier

数据设计:

1)程序级的数据结构设计:伪代码的方式定义数据结构

2)应用级的数据库设计:物理级的E-R图

过程设计:

流程图:

1)数据流程图

2)程序流程图:顺序型、选择型、先判定型循环、后判断型循环、多分支选择型。不便于逐步求精;可随意控制转移

3)系统流程图

4)程序网格图

5)系统资源图

N-S图:用类似盒子的矩形及矩形之间的嵌套来表示语句或语句序列。内部无箭头,控制流程不能随意控制转移;方便确定作用域、嵌套关系和模块间的层次

PAD图:也称问题分析图,用二维树形结构的图来表示程序的控制流及逻辑结构。执行顺序,自上而下,自左向右;自顶向下、逐步求精;只用于结构化设计;不仅表示程序逻辑,还表示数据结构

#######

请简述面向数据流的设计方法。

面向数据流的设计方法:

数据流图:在概要设计阶段使用。数据流分为变换型数据流和事务型数据流。变换:把输入的数据处理后转变成另外的输出数据。事务:非数据变换的处理,将输入的数据流分散成许多数据流,形成若干加工,选择其中一个路径来执行。

#######

如何理解软件生命周期的内在特征?

软件生命周期是从设计该软件的构思开始,到软件的需求确定、软件设计、软件实现、产品测试与验收、投入使用以及产品的不断更新、到最终被市场淘汰的全过程。分为若干个阶段,每个阶段都完成特定的相对的独立的任务,由于每个阶段的任务相对于总任务的难度大幅降低,在资源分配和时间把握和项目管理上都比较容易控制,合理划分生命周期的各个阶段,是每个阶段即相互联系又相互区别,为每个阶段赋予特定任务。

分为:可行性研究、需求分析、软件设计、编码、软件测试、软件维护

#######

简述E-R图的作用。

表明了数据库的概念结构,提供了表示实体数据对象、属性、联系的方法,用来描述现实世界的概念模型,

#######

请对比白盒测试和黑盒测试。分别有哪些方法?

黑盒测试:将软件系统看作黑盒子,不关心盒子的内部结构和特性,只关注软件的输入数据和输出结果

1)等价类划分法、边界值分析法、错误推测法、因果图法、正交实验设计法

等价类划分法:有效、无效等价类

2)边界值分析法:选择等价类边界的测试用例

3)错误推测法:直觉+经验

4)因果图法:输入条件的各种组合方式、各个输入条件之间的相互制约关系

白盒测试:又称玻璃盒测试,将被观测程序看作透明盒子,关注软件产品的内部细节、逻辑结构

1)逻辑覆盖法:语句、分支、条件、分支-条件、条件组合、路径覆盖

语句覆盖:设计若干测试样例,运行被测试程序,每个可执行程序至少执行一次

分支覆盖:每个判断的取真、取假分支至少执行一次

条件覆盖:每个判断的所有逻辑条件的每种可能取值至少执行一次

分支-条件覆盖:同时满足分支覆盖和条件覆盖的要求

条件组合覆盖:每个判断语句的所有逻辑条件的可能取值组合至少执行一次

路径覆盖:覆盖被测试程序中所有可能的路径

2)基本路径法:在程序控制流程图的基础上,通过分析控制构造的环路复杂度,导出基本可执行程序的路径集合,从而设计测试用例的方法

#######

软件测试应该划分为几个阶段,各个阶段应重点测试的内容是什么?

软件测试步骤:单元测试、集成测试、系统测试、验收测试

单元测试:软件测试的基础,侧重模块的内部处理逻辑、数据结构,利用构件级设计描述作为指南,测试重要的控制路径以发现模块内的错误

集成测试:多个单元的集合,单元组合成模块,模块聚合成子系统 / 系统

体系结构设计、模块设计、接口设计、集成测试策略分析

1)非增量式集成测试:"一步到位"

2)增量式集成测试:自顶向下、自底向上

#######

请比较结构化软件设计方法和面向对象软件设计方法?

结构化软件设计的任务从软件需求规格说明书出发,设计整体结构,形成具体设计方案,解决"怎么做"。

1)概要设计

2)详细设计

面向对象设计原则:

1)模块化

2)抽象化

3)信息隐藏

4)低耦合

5)高内聚

6)复用性

#######

类间的外部关系有几种类型?每种关系表达什么语义?

对象或类之间的关系:依赖、关联、聚合、组合、泛化、实现

1)依赖:"非结构化",短暂,一个对象会影响另一个对象

2)关联:"结构化",对象之间的连接

3)聚合和组合:特殊的关联,强调整体和部分之间的从属性,组合是聚合的一种,组合的整体和部分具有很强的归属关系和一致的生命周期

4)泛化和类间的继承相似

5)实现针对类与接口的关系

#######

如何着手从自然语言描述的用户需求中画出用例图?

用例图从用户的角度描述系统的功能,由用例和参与者及它们之间的连线组成。

用例:从用户骄傲都描述系统的行为,将系统的一个功能描述为一系列的事件,这些事件最终对操作者产生有价值的观测结果

参与者:与系统交互的外部实体,可能是使用者,也可能是与系统交互的外部系统、基础设备等

分析用例名称是否合适时,将参与者和用例连在一起,是否构成一个完整的场景或句子

1)包含:不同用例的共同行为,带箭头的虚线

2)拓展:异常行为,带箭头虚线

3)泛化:用例的一般与特殊,带三角形箭头的实线

相关推荐
是刃小木啦~几秒前
三维模型点云化工具V1.0使用介绍:将三维模型进行点云化生成
python·软件工程·pyqt·工业软件
zhongcx1 小时前
鸿蒙应用示例:DevEco Testing 工具的常用功能及使用场景
harmonyos
@海~涛4 小时前
鸿蒙OpenHarmony
华为·harmonyos
zhongcx9 小时前
鸿蒙应用示例:镂空效果实现教程
harmonyos
训山9 小时前
【11】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-模块化语法与自定义组件
笔记·学习·华为·harmonyos·鸿蒙系统
helloxmg11 小时前
鸿蒙harmonyos next flutter混合开发之开发package
flutter·华为·harmonyos
GFCGUO19 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
zhongcx1 天前
鸿蒙应用示例:ArkTS UI框架中的文本缩进技巧
harmonyos
东林知识库1 天前
鸿蒙NEXT开发-自定义构建函数(基于最新api12稳定版)
华为·harmonyos
GFCGUO1 天前
Ubuntu18.04配置OpenPCDet并运行demo过程记录
linux·python·学习·ubuntu·conda·pip