软件工程导论题型大总结简答题总结
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程导论题型大总结简答题总结相关的知识,希望对你有一定的参考价值。
文章目录
一:传统软件工程部分
(1)非常重要
1.
【答案】
软件危机的定义:软件危机是在计算机开发和维护过程中所遇到的一系列的严重问题,主要包含两个方面
- 如何开发软件,以满足日益增长的软件需求
- 如何维护软件数量不断膨胀的已有软件
软件危机的表现:
- 对软件开发成本和进度的估算不准确
- 用户对软件不满意
- 软件质量不可靠
- 软件不可维护
- 没有合适的文档资料
- 软件成本在计算机系统中的成本逐年上升
- 软件开发生产率低
软件危机的原因
①:主观方面
- 忽视需求分析
- 轻视软件维护
- 没有认识到程序只是软件的一部分
- 没有认识到开发只是软件漫长生命周期中一个比较次要的阶段
- 越到后期引入变动代价会越高
②:客观方面
- 软件是逻辑实体,具有不可见性,管理控制很困难
- 软件不会磨碎,维护意味着需要原来的设计,维护困难
- 软件规模庞大,程序的复杂性会随着软件规模增加而增加
如何解决
- 对计算机软件应该有正确的认识
- 要吸取和借鉴人类长期从事各种工程项目积累的原理、概念、技术和方法
- 积极开发和使用计算机辅助开发软件
- 探索更好更有效的管理措施和手段对开发过程进行控制和管理
2.
【答案】
软件工程定义:采用工程的概念、技术、原理和方法,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济的开发出高质量的软件并维护它
软件工程的特征
软件工程的原理
3.软件生命周期阶段如何划分?
【答案】
【答案】
软件过程的定义:是为了获得高质量软件所需要完成的一系列任务框架,它规定了完成任务的工作步骤,通常用软件生命周期模型来描述软件过程
软件工程方法学:把在软件生命周期全过程中所使用的一整套技术方法的集合称之为软件工程方法学。包含三个要素
- 方法:完成软件开发各项任务的技术方法
- 工具:为了运用方法提高的自动或半自动软件工程支撑环境
- 过程:是为了获得高质量软件所需要完成的一系列任务框架
因此软件过程是软件工程方法学的重要组成部分
5.
【答案】
①瀑布模型
优点:
- 强迫开发人员使用规范的方法
- 严格规定了每个阶段提交的文档
- 要求每个阶段交出的产品都必须经过质量保证小组的验证
- 对文档的约束,使得软件维护变得容易一些,且能降低软件预算
缺点
- 在软件开发初期就要求做出正确的,全面的,完整的需求分析对多数应用软件来说是很困难的
- 在需求分析阶段,在需求确定后,无法及时验证需求是否正确,完整
- 作为整体开发的瀑布模型,由于不支持产品演化,缺乏灵活性,对开发过程中很难发现的错误,只有在产品最终运行时才能发现
适用范围
- 用户的需求非常清晰全面,且在开发过程中没有或很少有变化
- 开发人员对软件的应用领域很熟悉
- 用户的使用环境非常稳定
- 开发工作对用户的参与要求很低
②快速原型模型
优点:
- 开发的软件通常满足用户需求
- 软件开发基本是线性过程
缺点
- 准确原型设计困难
- 原型理解可能不同
- 不利于开发人员创新
适用范围
- 对所开发的领域比较熟悉且与快速的原型开发工具
- 项目招投标时,可以以原型模型作为软件的开发模型
- 进行产品移植或升级时,或对已有产品原型进行客户化工作时
③:增量模型
优点
- 短时间内可提交部分功能
- 逐渐增加产品功能,用户适应产品快
缺点
- 增量构件划分及集成困难
- 容易退化成边做边改模型
④:喷泉模型
优点
- 利于把软件质量作为软件的开发目标
- 减少测试
- 维护和开发不分开
缺点
- 风险估计困难
6.
【答案】
可行性研究的必要性:开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的实质是要进行一次大大压缩简化了 的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决
涉及方面
- 经济可行性:经济效益是否大于开发成本
- 技术可行性:现有技术能够实现
- 操作可行性:系统操作方式是否可行
- 其它可行性:法律、社会效益
7.可行性研究的目的、本质、任务、过程(步骤)
【答案】
可行性研究的目的:用最小的代价在最小的时间内确定问题是否可以被解决
可行性研究的本质:系统分析和设计过程的大大压缩和简化,在较高层次上以较为抽象的方式进行系统的分析和设计过程
可行性研究的任务:
可行性研究的过程(步骤):
8.数据流图的概念、特点、符号、用途(目的)
【答案】
DFD的概念:描述信息流和数据从输入到输出所经受的变换。没有任何具体物理部件,只是描绘数据在软件中流动和被处理的逻辑过程
DFD的特点:
DFD的符号:
DFD的用途(目的):
9.数据字典相关的概念、符号、用途
【答案】
数据字典的概念:
数据字典的符号:
数据字典的用途:
10.
【答案】
需求分析的定义:需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题,目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件需求规明书,以书面形式准确地描述软件需求
需求分析的必要性:为了开发出真正满足用户需求的软件产品,首先必须要知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的必要前提,不论人们把设计和编码工作做得如何出色,不能满足用户需求的程序只会让用户失望
软件系统需求
- 功能要求
- 性能要求
- 可靠性和可用性要求
- 出错处理需求
- 接口需求
- 约束
- 逆向需求
- 将来可能提出需求
11.需求分析的准则是什么
12.需求分析的任务
13.
【答案】
14.实体联系图作用、优点
【答案】
- E-R模型比较接近人的思维习惯方式
- E-R模型使用简单的图形符号表达,便于用户理解
15.验证需求的四个方面和方法
【答案】
四个方面
方法
16.总体设计的相关概念
【答案】
总体设计的定义:总体设计的基本目的就是回答“系统应该如何实现”这个问题,又称为概要设计或初步设计
总体设计的任务:确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系
总体设计的概括:
总体设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统
17.总体设计的步骤
【答案】
18.简述设计原理(这一部分中的内容基本会分散在名词解释和填空题中记忆)
询问点1:模块独立性重要性
询问点2:请简述耦合方式
询问点3:请简述内聚方式
【答案】
19.请简述启发式规则
【答案】
- 改进软件结构以提高模块独立性
- 模块的规模应该适当
- 深度、宽度、扇入、扇出数目应该适当
- 模块的作用域应该在控制域之内
- 力争降低模块接口的复杂程度
- 设计单入口单出口的模块
- 模块的功能应该可以预测但要防止过分局限
20.程序流图的符号
【答案】
21.程序流程图的优缺点
【答案】
22.盒图的符号
【答案】
23.盒图的优点
【答案】
- 功能域明确,可以从盒图上一眼就看出来
- 不可能任意转移控制
- 很容易确定局部和全程数据的作用域
- 很容易表现嵌套关系,也可以表示模块的层次结构
24.问题分析图(PAD图)的符号
【答案】
25.问题分析图(PAD图)的优点
【答案】
26.判定表的组成
【答案】
27.判定表的优缺点
【答案】
28.程序复杂度的价值、作用
【答案】
29.环形复杂度计算方法
【答案】
30.程序设计语言如何选择
【答案】
31.简述编码风格
【答案】
32.软件测试的目标
【答案】
33.软件测试的准则
【答案】
34.简述软件测试步骤
【答案】
35.简述单元测试的测试重点
【答案】
36.简述自顶向下集成
【答案】
37.简述自底向上集成
【答案】
38.简述白盒测试中的语句覆盖、判定覆盖等逻辑覆盖过程
【答案】
39.简述黑盒测试中测试用例的设计标准
【答案】
- 能够减少为达到合理测试所需要设计的测试用例的总数
- 能够告诉人们,是否存在某些类型的错误,而不是仅仅指出与特定测试相关的错误是否存在
40.简述等价类划分法(了解,特别注意规则)
【答案】
41.请简述软件维护的分类
【答案】
42.请简述软件维护的特点
【答案】
【答案】
44.
【答案】
- 通常,对一个已有的软件做重大修改意味着对软件功能做较大变更或增加较多新功能,这往往需要修改软件的体系结构。因此,了解原有软件的总体情况是很重要的。程序的规格说明书准确地描述了对软件系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求及将来可能提出的需求,对了解已有软件的总体情况有很大帮助。在对已有软件做重大修改之前仔细阅读、认真研究这份文档, 可以避免许多修改错误。因此,应该选取这份文档
- 有经验的软件工程师通过阅读含有适当数量注解的源程序,不难搞清程序的实现算法,没有描述详细设计结果的文档并不会给维护工作带来太大困难。此外,为了修改程序代码,原有程序的清单是必不可少的。因此,为了对这个软件做重大修改应该选取的第二份文档是源程序清单
(2)可以了解
1.什么是软件?软件的特点是什么?
【答案】
【答案】
在软件开发的不同阶段进行修改所付出的代价是不相同的。在早期引入变动,由于设计的面较少,因而代价也比较低;在开发的中后期,软件配置相关工作已经完成,引入一个变动时常常会引起所有与之有关的成分发生变化,所以代价较高。一个人编码错误是不可避免的,但是修改的成本是很小的,因为这不是整体架构的错误,只要不断进行阶段评审,不要让错误留到后期,在早期就尽可能解决
3.
【答案】
结构化范型
- 采用结构化技术完成软件开发的各项任务
- 把软件生命周期划分不同阶段
- 每个阶段开始和结束都有严格标准
- 每个阶段结束后要有严格审查
面向对象范型
- 把对象作为融合了数据及在数据上的操作行为的统一软件构件
- 把所有对象划分为类
- 按照父类与子类的关系,把若干类组成层次结构的系统
- 对象彼此间仅通过消息互相联系
4。
【答案】
因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号, 因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性
【答案】
优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性
缺点:缺点: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性
Raitional统一过程主要适用于何种项目?
说明敏捷过程适用范围
说明微软过程的适用范围
【答案】
大型的需求不断变化的复杂软件系统项目
适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束
适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式
7.数据模型定义、作用
为了把用户的数据要求清楚、准确地描述出来,通常建立一个概念性的数据模型(信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关
8.简述层次图和HIPO图
【答案】
- 层次图:层次图用于描绘软件的层次结构,其中一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系层次图很适于在自顶向下设计软件的过程中使用。通常用层次图作为描绘软件结构的文档
- HIPO图:HIPO图本质就是层次图加编号。也即HIPO图=层次图+输入/处理/输出图
9.简述结构图
【答案】
10.简述一般的抽象过程和软件工程抽象工程
【答案】
11.什么是流图
【答案】
流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据具体操作以及分支或循环的具体条件,流图通常被用来突出表示程序的控制流
12.流图的符号
【答案】
- 结点:用圆表示,一个圆代表一条或多条语句。一个顺序结构可以合并一个结点
- 边:箭头线称为边,代表控制流。在流图中一条边必须终止于-一个结点,即使这个结点并不代表任何语句
- 区域:由边和结点围成的面积称为区域,计算区域时包括图外部未被围起来的区域
13.映射为流图的方法
【答案】
①:对于顺序结构,一个顺序处理和下一个选择可以映射为一个结点
②:对于选择语句,开始/结束语句映射为一个结点,两条分支至少各映射成一个结点
③:开始语句和结束语句各映射成一个结点
14.简述确认测试的范围
【答案】
二:面向对象设计部分
以上是关于软件工程导论题型大总结简答题总结的主要内容,如果未能解决你的问题,请参考以下文章