软件⼯程期末试卷简答题(答案)
软件⼯程简答
1、软件和软件⽣存周期。(什么是软件⽣存期。)
软件是能够完成预定功能和性能的可执⾏的计算机程序,包括使程序正常执⾏所需要的数据,以及有关描述程序操作和使⽤的⽂档。(软件=程序+⽂档)
软件⽣存周期:由软件定义、软件开发、运⾏维护3个时期组成,每个时期⼜进⼀步划分成若⼲阶段。软件⽣存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。
2、什么是软件危机?他有哪些典型的表现?产⽣的原因?
软件危机是指计算机软件开发和维护过程中所遇到的⼀系列严重问题。
典型表现有:
(1)对软件开发成本和进度的估计常常很不准确
(2)软件产品的质量往往靠不住
(3)⽤户对已完成的软件系统不满意的现象经常发⽣
(4)软件常常是不可维护的
(5)软件中没有适当的⽂档资料
(6)软件成本在计算机系统总成本所占的⽐例逐年上升(成本上升)
(7)软件开发⽣产率提⾼的速度,往往跟不上计算机应⽤迅速普及深⼊的趋势
原因:
(1)软件本⾝独有的特点,给开发和维护带来了困难
(2)与软件开发和维护的⽅法不正确有关
(3)程序只是完整软件的⼀个组成部分
(4)轻视是⼀个最⼤的错误
3、软件项⽬的质量管理
制定软件质量保证计划,按照质量评价体系控制软件质量要素,对阶段性的软件产品进⾏评审,对最终软件产品进⾏确认,确保软件质量。
5、螺旋模型的适应场合有哪些?0104
适应场合:⽀持需求不明确、特别是⼤型软件系统的开发,并⽀持⾯向规格说明、⾯向过程、⾯向对象等多种软件开发⽅法,是⼀种具有⼴阔前景的模型。
6.什么是软件过程?它与软件⼯程⽅法学有何关系?
(1)软件过程是为了获得⾼质量软件所需要完成的⼀系列任务的框架,它规定了完成各项任务的⼯作步骤。
(2) 软件过程是软件⼯程⽅法学的3个重要组成部分之⼀。
(3) 软件⼯程⽅法学包含三个要素:⽅法、⼯具和过程。
7.简述软件设计的过程。
模块化设计的优点答:
软件设计是把许多事物和问题抽象起来,并且抽象它们不同层次和⾓度,是将需求转变为软件陈述的过程,是迭代的过程。软件设计,要根据需求规格说明书,对整个设计过程进⾏计划,然后实施具体的设计过程,即“先整体,再局部”,也是不断迭代和精化的过程。然后需要对⽣成的设计规格说明书进⾏评审,启动质量评价的标准,若未通过评审,需重新修改设计,直⾄评审通过,确定最后定型的过程本⾝。进⼊后续阶段,完成软件设计过程。
8.请⽐较快速原型模型和螺旋模型的优缺点,并说明各⾃的适⽤范围。
9、软件⼯程的⽬标是什么?
答:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重⽤性、可适应性、可移植性、可追踪性和可互操作性并满⾜⽤户需求的软件产品。
10.简述什么是系统流程图。
答:系统流程图是描述物理系统的传统⼯具。它的基本思想是⽤图形符号以⿊盒⼦形式描绘系统⾥的每个部件(程序、⽂件、数据库、表格、⼈⼯过程等)。系统流程图表达的是部件的信息流程,⽽不表⽰对信息进⾏加⼯处理的控制过程。
11.为什么数据流图要分层?
答:这了表达数据处理过程的数据加⼯情况,⽤⼀个数据流图是不够的。为表达稍为复杂的实际问题,需要按照问题的层次结构进⾏逐步分解,并以分层的数据流图反映这种结构关系。
12.简述需求分析⼯作可以分成哪四个⽅⾯?软件需求分析的有哪三个基本原则?
答:需求分析阶段分成四个⽅⾯:对问题的识别、分析与综合、制定规格说明和评审。三个基本原则:必须能够表达和理解问题的数据域和功能域;必须按⾃顶向下、逐步分解的⽅式对问题进⾏分解和不断细化;
要给出系统的逻辑视图和物理视图。
13、需求分析与软件设计⼆个阶段任务的主要区别是什么?
答:需求分析定义软件的⽤户需求,即定义待开发软件能做什么
软件设计定义软件的实现细节以满⾜⽤户需求,即研究如何实现软件。
14、需求分析的任务是什么?
需求分析的任务是确定待开发的软件系统“做什么”。具体任务包括确定软件系统的功能需求、性能需求和运⾏环境约束,编制软件需求规格说明书、软件系统的验收测试准则和初步的⽤户⼿册。
15、模块
是由边界元素限定的相邻程序元素的序列,⽽且有⼀个总标识符代表他。模块是构成
程序的基本构件。
16抽象
抽出事务的本质特性⼆暂时不考虑他们的细节。
17.模块独⽴性
每个模块只完成系统要求的独⽴的⼦功能,与其他模块的联系最少且接⼝简单。
18.模块独⽴重要的理由:
有效的模块化的软件⽐较容易开发
独⽴的模块⽐较容易测试和维护。
19、模块独⽴(考过)
模块独⽴是模块化、抽象、信息隐藏和局部化概念的直接结果。由两个定性标准度量:内聚和耦合。指每个模块只完成⼀个相对独⽴的特定⼦功能,并且和其他模块之间的关系很简单,和其他模块之间没有过多的相互作⽤。
20耦合
对⼀个软件结构内不同模块之间互连程度的度量。
21数据耦合
如果两个模块彼此间通过参数交换信息,⽽且交换的信息仅仅是数据,那马这种耦合称为数据耦合。
22控制耦合
如果传递的信息中有控制信息,则称为控制耦合。
23内聚
内聚标志着⼀个模块内各个元素彼此结合的紧密程度,他是信息隐藏和局部化概念的⾃然扩展。
24作⽤域
受该模块内⼀个判定影响的所有模块的集合。
25控制域
模块本⾝以及所有直接或间接从属于它的模块集合。
26深度
软件结构中控制的层数。
27宽度
软件结构内同⼀个层次上的模块总数的最⼤值。
28扇出
⼀个模块直接控制的模块数⽬。
29扇出
⼀个模块被多少上级模块直接调⽤的数⽬。
30什么是耦合?模块的耦合包括哪些类型?
答:耦合是对⼀个软件结构内不同模块之间互连程度的度量。
模块的耦合包括以下⼏种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容
耦合,标记耦合,⽆耦合/⾮直接耦合
31什么是内聚?模块的内聚包括哪些类型?
答:内聚标志着⼀个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的⾃然扩展
模块的内聚包括以下⼏种类型:低内聚—偶然内聚,逻辑内聚,时间内聚
中内聚—过程内聚,通信内聚;⾼内聚—顺序内聚,功能内聚
32.耦合性有哪⼏种类型? 其耦合度的顺序如何
答:低:⾮直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合:⾼
33衡量模块独⽴性的两个定性标准是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独⽴性我们追求的⽬标是什么?
答:
衡量模块独⽴性的两个定性标准是内聚和耦合(2分)。
耦合是指对⼀个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;⽽内聚则标志⼀个模块内部各个元素彼此结合的紧密程度(2分)。
在我们的软件设计中,关于模块独⽴性我们追求的⽬标是紧密内聚松散耦合(1分)。
34、说明结构化程序设计的主要思想是什么?
答:(1)⾃顶向下、逐步求精的程序设计⽅法
(2)使⽤3种基本控制结构、单⼊⼝、单出⼝来构造程序。
35、⽩盒测试(考过)
⽩盒测试⼜称结构测试。⽩盒测试是⼀种测试⽤例设计⽅法,盒⼦指的是被测试的软件,⽩盒指的是盒
⼦是可视的,在知道程序内杯逻辑情况下进⾏的⼀种测试。
36、简述结构化程序设计⽅法的基本特点。(考过)
(1)尽可能少⽤goto语句的程序设计⽅法;
(2)每个代码块都单⼊单出;
(3)使⽤控制结构:顺序、选择和循环;
(4)⾃顶向下逐步求精。
37、软件⼯程的7条启发规则是什么?(p100)(考过)
1.改进软件结构提⾼模块独⽴性
2. 模块规模应该适中
3.深度、宽度、扇出和扇⼊都应适当
4.模块的作⽤域应该在控制域之内
5.⼒争降低模块接⼝的复杂程度
6.设计单⼊⼝单出⼝的模块
7.模块功能应该可以预测
38、简述⽂档在软件⼯程中的作⽤。(考过)
(1)提⾼软件开发过程的能见度;
(2)提⾼开发效率;
(3)作为开发⼈员阶段⼯作成果和结束标志;
(4)记录开发过程的有关信息便于使⽤与维护;
(5)提供软件运⾏、维护和培训有关资料;
(6)便于⽤户了解软件功能、性能。
39.详细设计的基本任务是什么?有哪⼏种描述⽅法?
答:
详细设计的基本任务:
(1)为每个模块进⾏详细的算法设计。
(2)为每个模块内的数据结构进⾏设计。
(3)对数据库进⾏设计,即确定数据库的物理结构。
(4)其他设计:
a.代码设计
b.输⼊/输出格式设计。
c.⼈机对话设计。
(5)编写详细设计说明书。
(6)评审。
描述⽅法(三种):
a.程序流程图
b.PAD图
c.过程设计语⾔
40.结构化程序设计基本要求要点是什么?
答:
a.采⽤⾃顶向下、逐步求精的程序设计⽅法
b.使⽤三种基本程序控制结构构造程序
1).⽤顺序⽅式对过程分解,确定各部分的执⾏顺序。
2).⽤选择⽅式对过程分解,确定某个部分的执⾏条件。
3).⽤循环⽅式对过程分解,确定某个部分重复的开始和结束的条件。
c.主程序员组的组织形式。
41、软件开发中有哪⼏种过程模型?哪些适⽤于⾯向对象的软件开发?
软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统⼀软件过程等。
其中喷泉模型、统⼀软件过程适⽤于⾯向对象的软件开发。
42、什么是结构分析⽅法?该⽅法使⽤什么描述⼯具?
结构化分析:简称SA,⾯向数据流进⾏数据分析的⽅法。采⽤⾃顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统⼯程的每个细节。中间层则是从抽象到具体的过渡。使⽤数据流图,数据字典,作为描述⼯具,使⽤结构化语⾔,判定表,判定树描述加⼯逻辑。
43、什么是软件概要设计?该阶段的基本任务是什么?
把⼀个软件需求转换为软件表⽰时,⾸先设计出软件总的体系结构。称为概要设计或结构设计。
基本任务:
⑴设计软件系统结构
⑵进⾏数据结构及数据库的设计
⑶编写概要设计的⽂档
⑷评审
44、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试对源程序中每⼀个程序单元进⾏测试,检查各个模块是否正确实现规定的功能,从⽽发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计⽂档。
集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。
确认测试主要是检查已实现的软件是否满⾜需求规格说明书中确定了的各种需求。
系统测试是把已确认的软件与其他系统元素(如硬件、其他⽀持软件、数据、⼈⼯等)结合在⼀起进⾏测试。以确定软件是否可以⽀付使⽤。
45、什么是软件⽣存周期?它有哪⼏个活动?
软件⽣存周期:⼀个软件从提出开发要求开始直到该软件报废为⽌的整个时期。
包括:可⾏性分析和项⽬开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
46、什么是需求分析?需求分析阶段的基本任务是什么?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论