软件工程知识点复习

软件工程知识点复习

1.详细设计的工具中,N-S图,PAD图及判定表和判定树各有何特点和适用情况。
N-S图(盒图)特点:
1、功能欲明确,可以从盒图上一眼就看出来。
2、不可能任意转移控制。
3、很容易确定局部和全程数据的作用欲。
4、很容易表现嵌套关系,也可以表示模块的层次结构。
PAD:
1、使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。
2、所描绘的程序十分清晰。
3、表现程序逻辑,易读、易懂、记忆。
4、易转换成高级语言源程序。
5、可表示程序逻辑,也可描绘数据结构。
6、图符号支持自顶向下、逐步求精方法的使用。
判定表:
能够简洁而又无歧义地描述处理规则,不适于作为一种通用的设计工具。
判定树:
是判定表的变种,清晰地表示复杂的条件组合与应做的动作之间的对应关系,形式简单不需要任何说明,易掌握和使用。是一种常用的系统分析和设计的工具。

2.白盒测试和黑盒测试技术的区别。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。

黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。

白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。

3.白盒测试中的逻辑覆盖测试包含哪几种类型。
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。

4.软件维护的类型有哪些,及各自所占比重。
完善性维护50%–60%、改正性维护17%–21%、适应性维护18%~25%、其他维护4%左右。

5.软件项目的可行性研究的实质是什么?
进行一次大大压缩简化了的系统分析和设计程序的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计工程。

6.可行性研究包括哪些内容。
技术可行性、经济可行性、操作可行性

7.衡量模块独立性的标准有哪些?
内聚和耦合。
耦合:衡量不同模块彼此间互相依赖的紧密联系;
内聚:衡量一个模块内部各个元素彼此结合的紧密程度。

8.模块间的耦合有哪些类型,如何区分?
1.内容耦合:一个模块引用或者修改另一个模块内部的数据。
一个模块修改另一个模块的语句 (Lisp 具有此种能力) 。
一个模块不通过正常入口而跳转到另一个模块的内部。
2.公共耦合:两个模块共享全局的数据区域,称他们为公共耦合。
3.控制耦合:一个模块向另一个模块传递控制信息,接收信息的模块的动作根据信息值进行调整。
4.标记耦合:若两个模块间传递的参数中至少有一个是数据结构,如字符串或记录,并且在模块中仅 用到该数据结构中的部分元素,则称这两个模块之间存在标记耦合。
5.数据耦合:模块彼此间通过参数交换信息,交换的信息仅仅是数据。

9.模块内的内聚有哪些类型,如何区分?
偶然内聚:如果一个模块的各成分之间毫无关系,则称为偶然内聚
逻辑内聚:几个逻辑上相关的功能被放在同一模块中。
时间内聚:如果一个模块完成的功能只是因为时间因素关联在一起。
过程内聚:如果一个模块内部的各个处理成分必须以特定的次序执行,则称为过程内聚。
通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
功能内聚:模块的所有成分对于完成单一的功能都是基本的。

10. 结构化程序设计的定义及特点。
定义:主要观点是采用自顶向下、逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。结构化程序设计主要强调的是程序的易读性
特点:结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。

11.软件测试的定义及目的。
定义:为了发现程序中的错误而执行程序的过程。
目的:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。

12.软件生命周期的阶段划分及每个阶段的任务。
软件生命周期:由软件定义软件开发运行维护,直到最终被废弃所经历的时期。
软件定义时期的任务是:问题定义、可行性研究和需求分析。
开发时期的任务是:总体设计,详细设计,编码和单元测试,综合测试。
维护时期的主要任务是:使软件持久地满足用户的需要。(具体地说:当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。)

13.面向对象方法的特点、特征。
(1)对象唯一性。
(2)抽象性。
(3)继承性。
(4)多态性(多形性)

14.类、对象的概念,多态、重载、封装的含义。
:类是具有相同操作功能和相同的数据格式(属性)的对象的集合。
对象:代码和数据的结合。
类为对象集合的抽象,它规定了这些对象的公共属性和方法;
对象为类的一个实例。
多态:指允许不同类的对象对同一消息作出响应。
重载:一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
封装:把过程和数据包围起来,对数据的访问只能通过已定义的界面

15.总体设计阶段使用的软件结构图,模块及模块间的调用关系如何表示。
结构图基本符号:
方框——模块
方框间连线——模块调用关系(上方的模块调用下方的模块)
带注释的箭头——模块间传递的信息
箭头尾部空心圆——数据信息
箭头尾部实心圆——控制信息
结构图用带注释的箭头表示模块调用过程中来回传递的信息。

16.什么是变换流、什么是事务流,如何区分。
变换流:具有较明显的输入、变换(或称主加工)和输出界面的数据流图。
事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。
变换流:
信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。
事物流:
(1) 接收输入数据(输入数据又称为事务);
(2) 分析每个事务以确定它的类型;
(3) 根据事务类型选取一条活动通路。

17.McCall质量模型中的质量因素有哪些。
McCall等认为,特性是软件质量的反映,软件属性可用做评价准则,定量化地度量软件属性可知软件质量的优劣。
McCall认为软件的质量模型应该包括 产品的修正、产品的转移,产品的运行。
而产品的修正又包括 可维护性、可测试性、灵活性等子特点。
产品的转移包括 可移植性、可复用性、互连性等。
产品的运行包括 正确性、可靠性、效率、可使用性和完整性。

18.E-R图中包含哪些图形元素,如何表示。P64
菱形框,表示实体间的联系;矩形框是表示实体;椭圆框表示实体的属性。

19.软件的可靠性与可用性。P179
软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。随着运行时间的增加,运行时出现程序故障的概率也将增加,可靠性随着给定的时间间隔的加大而减少。
软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
可靠性和可用性之间的主要差别是:
1、可靠性意味着在0到t这段时间间隔内系统没有失效,
2、可用性只意味着在时刻t,系统是正常运行的。

20.什么是软件的调试。P176
调试也称排错,作为成功测试的后果的出现,也就是说,调试是在测试发现错误之后排除错误的过程。
(详细讲解:调试与测试的关系主要体现在以下几个方面:
(1)测试的目的是暴露错误;而调试的目的是发现错误,改正错误。
(2)测试是揭示设计人员的过失,通常应由非设计人员来承担;而调试是帮助设计人员纠正错误,可以由设计人员自己承担。
(3)测试发现错误后,立即进行调试并改正错误,然后进行再测试(回归测试)。
(4)调试用例与测试用例可以一致,也可以不一致。
调试过程从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,表明在软件中存在隐藏的问题。调试过程试图找出问题的原因,以便改正错误。
调试过程总会有以下两种结果之一:
①找到了问题的原因并把问题改正和排除掉了;
②没找出问题的原因。此时,调试人员可以猜想一个原因,并设计测试用例附加测试,重复此过程直至找到原因并改正了错误。)

21.常用软件调试技术有哪些?
调试途径:试探法、回溯法、对分查找法、归纳法、演绎法。

22.软件工程方法学主要包括哪几部分的研究内容。P9
基本内容包括:
(1)结构化理论和方法。
(2)模块技术与数据抽象。
(3)软件测试与程序正确性证明。
(4)软件分析与设计方法、工具和环境。
(5)软件工程管理与质量评价。

23.面向对象的软件工程包含哪几个号阶段。
问题域、面向对象分析、面向对象设计、面向对象编程、面向对象测试、计算机

24.什么是软件,什么是软件工程,什么是软件危机。P1
软件:软件是计算机程序、程序所用的数据以及有关文档资料的集合。
软件工程:是指导计算机软件开发和维护的一门工程学科。
软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

25.软件测试中驱动模块和存根模块的用途是什么。P151
1.模块测试:把每个模块作为一个单独的实体来测试。模块测试通常又称为单元测试。在测试中所发现的往往是编码和详细设计的错误。
2.存根模块:

26.能力成熟度模型中成熟度等级分为哪几级,各有何特点。
五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。
初始级:工作方式处于救火状态,不断的应对突如其来的危机。
可重复级:规则化,引入需求管理、项目管理、质量管理、配置管理、子合同管理等。
已定义级:文档化,标准的一致的,软件过程标准化文档化,质量可以得到控制。
已管理级:量化,可预测,软件过程具有精确的评测方法,量化的控制软件过程的产品和质量。
优化级 :持续改善。

27.总体设计中模块的内聚及耦合应把握哪些原则。P97
影响耦合强度的因素:
1)一个模块对另一个模块的引用
2)一个模块向另一个模块传递的数据量
3)一个模块施加到另一个模块的控制的数量
4)模块之间接口的复杂程度
在软件设计中应该追求尽可能松散耦合。对模块的测试或维护时,不需要对系统的其他模块有很多了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。
设计时尽量使用高内聚,低耦合模块。
高内聚:尽量使用内聚度高的模块;中内聚也可;低内聚很坏,不要采用。
低内聚:偶然内聚,逻辑内聚,时间内聚
中内聚:过程内聚,通信内聚
高内聚:顺序内聚,功能内聚;
低耦合:尽量使用数据耦合,少用控制耦合和标记耦合,限制公共耦合的范围,完全不用内容耦合。

28.软件过程模型是什么,常用的软件过程模型及各自特点。P14
软件过程模型:就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。
模型种类:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
瀑布模型:

  1. 阶段间具有顺序性和依赖性
  2. 推迟实现的观点
  3. 质量保证的观点
    快速原型模型:
    快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌,快速原型模型是不带反馈环的,这正是这种过程模型的主要优点:软件产品的开发基本上是线性顺序进行的。
    增量模型:
    使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
    增量模型的优点:
    1、能在较短时间内向用户提交可完成部分工作的产品。
    2、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。
    螺旋模型:
    螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险,在每个阶段之前都增加了风险分析过程的快速原型。
    喷泉模型:
    喷泉模型也称迭代模型,认为软件开发过程的各个阶段是相互重叠和多次反复的,就象喷泉一样,水喷上去又可以落下来,既可以落在中间,又可以落到底部。各个开发阶段没有特定的次序要求,完全可以并行进行,可以在某个开发阶段中随时补充其他任何开发阶段中遗漏的需求。
    优点:提高开发效率,缩短开发周期。

29.人机界面设计过程中,有哪些问题要考虑。P119
存在的4个问题:系统响应时间;用户帮助设施;出错信息处理;命令交互。

30.可行性研究包含哪些步骤。P35

  1. 复查系统规模和目标
  2. 研究目前正在使用的系统
  3. 导出新系统的高层逻辑模型
  4. 进一步定义问题
  5. 导出和评价供选择的解法
  6. 推荐行动方针
  7. 草拟开发计划
  8. 书写文档提交审查

31.什么是结构化分析,包含哪些步骤。
结构化分析:使用数据流程图、数据字典、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
步骤:系统开发、系统运行、系统维护期
结构化分析方法(SA法):1、结构化分析方法是面向数据流进行需求分析的方法,适合于数据处理类型软件的需求分析。 2、结构化设计方法(SD 法) 。3、 结构化程序设计方法(SP 法)

32.什么是基于数据流的设计方法,如何实施。
面向数据流的设计是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此“又称结构化设计(Structured Design,简称SD)。
面向数据流设计方法的过程如下:
(1)精化DFD。指把DFD转换成软件结构图前,设计人员要仔细地研究分析DFD并参照数据字典,认真理解其中的有关元素,检查有无遗漏或不合理之处,进行必要的修改。
(2)确定DFD类型,如果是变换型,确定变换中心和逻辑输入、逻辑输出的界线,映射为变换结构的顶层和第一层;如果是事务型,确定事务中心和加工路径,映射为事务结构的顶层和第一层。
(3)分解上层模块,设计中下层模块结构。
(4)根据优化准则对软件结构求精。
(5)描述模块功能、接口及全局数据结构。
(6)复查,如果有错,转向(2)修改完善,否则进入详细设计。

33.给出一组数从小到大的排序算法,分别用下列工具描述其详细过程:
  (1)流程图;(2)N-S图;(3) PDL语言。
  
在这里插入图片描述
在这里插入图片描述

34.如图显示某程序的逻辑结构。试为它设计足够的测试用例,分别实现对程序的判定覆概、条件覆概和条件组合覆概。

在这里插入图片描述

  • 1
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值