软件工程导论习题Word格式.docx
《软件工程导论习题Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程导论习题Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
![软件工程导论习题Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/25/9f0b1092-8a35-4bbf-95f8-d30219bac678/9f0b1092-8a35-4bbf-95f8-d30219bac6781.gif)
D.整体设计E.详细设计
F.编码和单元测试G.综合测试
3)运行保护时期的主要任务为:
H.使软件持久地知足用户的需要
传统瀑布型模型开发软件的三大特点:
1)、阶段间具有顺序性和依赖性
2)、推延实现的观点
3)、质量保证的观点
3、软件生命周期的8个阶段别离是什么?
1)、问题概念
2)、可行性研究
3)、需求分析
4)、整体设计
5)、详细设计
6)、编码和单元测试
7)、综合测试
8)、软件保护
4、什么是软件危机?
它有哪些典型表现?
为何会出现软件危机?
软件危机是指在运算机软件的开发和保护进程中所碰到的一系列严峻问题。
(正常、不正常运行软件都具有这种问题)
软件危机的典型表现:
1)对软件开发本钱和进度的估量常常很不准确;
2)用户对完成的软件系统不满意的现象常常发生;
3)软件产品的质量往往靠不住;
4)软件常常是不可保护的;
5)软件通常没有适当的文档资料;
6)软件本钱在运算机系统总本钱中所占的比例逐年上升;
7)软件开发生产率提高的速度跟不上运算机应用的进展趋势。
产生软件危机的原因
1)软件本身特点造成;
程序规模庞大;
程序复杂性随着程序规模的增加而呈指数上升。
2)软件开发与保护的方式不正确。
主要表现:
(a)轻忽软件需求分析;
(b)以为软件开发就是写程序并使之运行;
(c)轻视软件保护;
5、什么是软件工程?
它有哪些本质特性?
如何用软件工程消除软件危机?
软件工程是指导运算机软件开发和保护的一门工程学科。
软件工程的本质特性:
1.软件工程关注于大型程序的构造;
2.软件工程的中心课题是控制复杂性;
3.软件常常转变;
4.开发软件的效率超级重要;
5.和谐地合作是软件开发的关键;
6.软件必需有效地支持它的用户;
7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
解决软件危机的途径:
一、组织管理:
软件开发不是某种个体劳动的神秘技能,软件开发应该是一种组织良好、管理周密、各类人员协同配合、一路完成的工程项目。
二、方式:
应该推行利用在实践中总结出来的开发软件的成功的技术和方式,而且研究探索更好更有效的技术和方式,尽快消除在运算机系统初期进展阶段形成的一些错误概念和做法。
3、工具:
应该开发和利用更好的软件工具。
在软件开发的每一个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员能够把这种工作做得既快又好。
6、简述结构化泛型和面向对象范型的要点,并分析它们的优缺点。
目前利用得最普遍的软件工程方式学(2种):
1.传统方式学:
也称为生命周期方式学或结构化范型。
长处:
把软件生命周期划分成基干个阶段,每一个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发进程的困难程度。
缺点:
当软件规模庞大时,或对软件的需求是模糊的或会经受时刻而转变的时候,开发出的软件往往不成功;
而且保护起来仍然很困难。
2.面向对象方式学:
降低了软件产品的复杂性;
提高了软件的可理解性;
简化了软件的开发和保护工作;
增进了软件重用。
7、什么是软件进程?
它与软件工程方式学有何联系?
软件进程:
是为了取得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤
软件工程方式学:
通常把在软件生命周期全进程中利用的一整套技术方式的集合称为方式学,也称范型
八、什么是软件生命周期模型?
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
瀑布模型:
1.可强迫开发员采用规范的方式2.严格地规定了每一个阶段必需提交的文件3.要求每一个阶段交出的所有产品都必需通过质量保证小组的仔细验证。
传统的瀑布模型过于理想化,是由文档驱动的。
快速原型模型:
通过快速构建起一个可在运算机上运行的原型系统,让用户试用原型并搜集用户反馈意见的方式,获取用户真正的需要。
增量模型:
能在较短时刻内向用户提交可完成部份工作的产品;
慢慢增加产品功能能够利用户有较充实的时刻学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
螺旋模型:
对可选方案和约束条件的强调有利于已有软件的重用;
减少了过量测试;
保护只是螺旋模型中另一个周期。
第二章
填空题
1.估算软件本钱的方式主要有(代码行技术)和(任务分解技术)等等。
2.可行性研究阶段的任务中一般来讲应该从(技术)可行性、(经济)可行性和(操作)可行性等3个方面研究每种实现方案的可行性。
3.系统流程图中的标示符号
代表(输入输出)含义。
名词解释
1.数据流图
数据流图描画系统的逻辑模型,图中没有任何具体的物理元素,只是描画信息在系统中流动和处置的情形。
2.数据字典
数据字典:
对数据流图中包括的所有元素的概念的集合;
3.系统流程图
系统流程图是归纳地描画物理系统的传统工具,它的大体思想是用图形符号以黑盒子形式描画系统里面的每一个部件(程序、文件、数据库、、人工进程等),表达信息在各个部件之间流动的情形。
简答题
1.简述可行性研究的进程步骤有哪些?
1)、复查系统规模和目标
2)、研究目前正在利用的系统
3)、导出新系统的高层逻辑模型
4)、进一步概念问题
5)、导出和评价供选择的解法
6)、推荐行动方针
7)、起草开发计划
8)、书写文档提交审查
2.在软件开发的初期阶段为何要进行可行性研究?
应该从哪些方面研究目标系统的可行性?
可行性研究的目的是:
用最小的代价在尽可能短的时刻内肯定问题是不是能够解决,和是不是值得去解决。
技术上的可行性——利用现有的技术能实现那个系统吗?
经济上的可行性——那个系统的经济效益能超过它的开发本钱吗?
(投资与效益)
操作可行性——系统的操作方式在那个用户组织内行得通吗?
社会、政策允许的可行性
第三、四章练习题
填空题:
一、需求分析进程应该成立3种模型,它们别离是(数据模型)、(功能模型)和(行为模型)。
二、依照形式化的程度,能够把软件工程利用的方式划分成(非形式化)、(半形式化)和(形式化)等3类。
3、验证软件需求应该从以下4个方面进行验证,即(一致性)、(完整性)、(现实性)和(有效性)。
4、需求分析的任务包括系统综合要求、数据要求、导出逻辑模型和修正系统开发计划等。
其中常见的接口需求有:
用户接口需求、(硬件接口需求)、(软件接口需求)和通信接口需求等等。
4、需求分析的任务包括(系统综合要求)、(数据要求)、(导出逻辑模型)和修正系统开发计划等。
五、需求分析的任务包括系统综合要求、数据要求、导出逻辑模型和修正系统开发计划等。
其中设计约束或实现约束常见的有:
(精度)、工具和语言约束、(设计约束)、应该利用的标准和应该利用的(硬件平台)等。
判断题:
一、形式化方式有许多长处,因此在实际软件工作中应该依赖形式化方式来保证开发出的软件绝对正确和降低由于设计缺点产生的保护代价。
(错)
二、能够用形式化方式证明软件的需求和设计的正确性和合理性,因此,若是为了降低软件的测试本钱和更正错误代价等,能够不用对软件进行测试,也能够保证软件的质量和降低开发本钱等软件工程的目标。
(错)
实体-联系图(ER图)
实体-联系图(Entity-RelationDiagram)用来成立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机械,独立于DBMS的ER图模型。
通常将它简称为ER图,相应地可把用ER图描画的数据模型称为ER模型。
ER图提供了表示实体(即)、属性和联系的方式,用来描述现实世界的概念模型。
状态转换图
状态转换图(简称为状态图)通过描述系统的状态及引发系统状态转换的事件,来表示系统的行为。
IPO图
IPO图是输入、处置、输出图的简称,它是由美国IBM公司进展完善起来的一种图形工具,能够方便地描画输入数据的处置和输出数据之间的关系。
Petri网
Petri网是对离散并行系统的数学表示。
Petri网是1960年代由卡尔·
A·
佩特里发明的,适合于描述异步的、并发的运算机系统模型。
Petri网既有严格的数学表述方式,也有直观的图形表达方式,既有丰硕的系统描述手腕和系统行为分析技术,又为运算机科学提供坚实的概念基础。
简答题:
一、简述需求分析的原则。
需求分析的准则:
一、必需并描述的信息域,按照这条准则应该成立数据模型。
二、必需概念软件应完成的功能,这条准则要求建建功能模型。
3、必需描述作为外部事件结果的软件行为,这条准则要求成立行为模型。
4、必需对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
2、简述形式化方式的准则。
(1)选择适合的形式化方式;
(2)应该形式化,但不要过度形式化;
(3)应该估算本钱;
(4)应该有形式化方式顾问随时提供咨询;
(5)不该该舍弃传统的开发方式;
(6)应该成立详尽的文档;
(7)不该该舍弃质量标准;
(8)不该该盲目依赖形式化方式;
(9)应该测试、测试再测试;
(10)应该重用;
3、为何要进行需求分析?
通常对软件系统有哪些需求?
需求分析是软件分析时期的最后一个阶段,它的大体任务是准确地回答“系统必需做什么?
”那个问题。
需求分析的任务是对目标系统提出完整、准确、清楚、具体的要求。
4、如何与用户有效的沟通以获取用户的真实需求?
1)、访谈
正式访谈:
系统分析员提出事前预备好的问题。
非正式访谈:
提出一些用户能够自由回答的开放性问题,鼓励被访者说出自己的想法。
需要访问大量人员时,利用调查表访问较佳。
2)、面向数据流自顶向下求精
借助数据流图、数据字典、IPO图等,细化、完善详细的数据流图,等到遍地置环节对应的功能。
3)、简易的应用规格说明技术
面向团队的需求搜集法:
(用户与开发者配合)
●初步访谈;
●开发者和用户别离写出“产品需求”;
●开会讨论,各自展示需求列表;
●得出一致意见,为需求列表制定小型规格说明;
●按照会议功效,起草完整的软件需求规格说明。
4)、快速成立软件原型
快速成立能演示目标系统主要功能的程序。
(1)第四代技术
包括:
数据库查询和报表语言、程序和应用系统生成器和其他超级高级的非进程语言,其能够快速生成可执行代码
(2)可重用的软件构件
利用一组已有的软件构件来装配原型
(3)形式化规格说明和原型环境
5、举例对比形式化方式和欠形式化方式的优缺点。
形式化方式的长处
(1)数学是理想的建模工具,适合于表示系统状态和描述系统需求;
(2)用数学表达的需求可在不同开发阶段光滑过渡。
(3)数学提供了高层确认的手腕
非形式化方式的缺点
自然语言书写的系统规格说明书可能存在:
1)矛盾;
2)二义性;
如:
“操作员标识由操作员姓名和密码组成,密码由6位数字组成,当操作员登岸系统时它被存储在注册文件中。
”
3)含糊性;
4)不完整性;
5)抽象层次混乱。
6、在什么情形下应该利用形式化说明技术?
利用形式化说明技术时应该遵守哪些准则?
应用形式化方式的准则
第五章
一、整体设计进程通常由系统设计阶段和结构设计阶段两个主要阶段组成。
二、软件结构图中,模块框之间如有直线连接,表示它们之间存在__挪用关系。
3、软件设计一般包括(整体设计)和详细设计阶段等两个阶段,在软件设计进程中应该遵循的大体原理和相关概念有(模块化)、(抽象)、(慢慢求精)、(信息隐藏和局部化)和(模块独立)。
4、结构设计是一种应用最普遍的系统设计方式,是以(层次图)图为基础、自顶向下、慢慢求精和模块化的进程。
五、面向数据流的软件设计方式,一般是把数据流图中数据流划分为(变换流)和(事务流),再将数据流图映射为软件结构。
1、HIPO图
HIPO图是美国IBM公司发明的“层次图加输入/处置/输出图”的英文缩写。
为了能使HIPO图具有可追踪性,在H图(层次图)里除最顶层的方框之外,每一个方框都加了编号。
2、模块独立
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
3、耦合
耦合是对一个软件结构内不同模块之间互连程度的气宇。
耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,和通过接口的数量。
4、内聚
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展,简单的说,理想内聚的模块只做一件情形。
5、抽象
在现实世界中必然事物、状态或进程之间总存在着某些相似的方面(共性)。
把这些相似的方面集中和归纳起来,暂时忽略它们之间的不同,这就是抽象。
6、模块
模块是由边界元素限定的相邻的程序元素(例如,数听说明,可执行的语句)的序列,而且有一个整体标识符来代表它。
7、模块化
模块化就是把程序划分成若干个模块,每一个模块完成一个子功能,把这些模块集中起来组成一个整体,能够完成指定的功能,知足问题的要求。
8、变换流
信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处置后再沿输出通路变换成外部形式离开软件系统。
当数据流图具有这些特性时,这种信息流就叫做变换流。
9、事务流
当数据流图的数据流是“以事务为中心的”,也就是说,数据沿输入通路抵达一个处置T,那个处置按照输入数据的类型在若干个动作序列当选出一个来执行。
这种数据流应该划为一类特殊的数据流,称为事务流。
1、为何模块独立性很重要?
1)、有效的模块化(即具有独立的模块)的软件比较容易开发出来。
2)、独立的模块比较容易测试和保护。
2、整体设计的两个主要任务是什么?
1)、通过那个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工进程和文档等等,可是每一个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。
2)、整体设计阶段的另一项重要任务是设计软件的结构,也就是要肯定系统中每一个程序是由哪些模块组成的,和这些模块彼其间的关系。
3、整体设计进程包括哪2个阶段?
说明典型的整体设计进程包括的9个步骤。
整体设计进程通常由两个主要阶段组成:
1)、系统设计:
肯定系统的具体实现方案。
2)、结构设计:
肯定软件结构。
9个步骤:
1)、假想供选择的方案
2)、选取合理的方案
3)、推荐最佳方案
4)、功能分解
5)、设计软件结构
6)、设计数据库
7)、制定测试计划
8)、书写文档
9)、审查和复审
4、简述软件结构设计的启发式原则。
1)改良软件结构提高模块独立性
2)模块规模应该适中
3)深度、宽度、扇入和扇出都应适当
4)模块的作用域应该在控制域之内
5)力争降低模块接口的复杂程度
6)设计单入口单出口的模块
7)模块功能应该能够预测
5、模块的内聚性包括哪些类型?
七种内聚:
1).巧合(偶然)内聚
2).逻辑内聚
3).时刻内聚
4).进程内聚
5).通信内聚
6).信息内聚顺序内聚
7).功能内聚
6、模块的耦合性包括哪些类型?
耦合的七种类型
1).非直接耦合
2).数据耦合
3).标记(特征)耦合
4).控制耦合
5).外部耦合
6).公共耦合
7).内容耦合
7、简述变换分析或事务分析的7个步骤?
1)、复查大体系统模型。
2)、复查并精化数据流图。
3)、肯定数据流图具有变换特性仍是事务特性。
4)、肯定输入流和输出流边界,从而孤立出变换中心。
5)、完成“第一级分解”。
6)、完成“第二级分解”。
7)、利用设计气宇和启发式规则对第一次分割取得的软件结构进一步精化。
第六章
一、在设计人机界面的进程中,必需充分重视并认真处置好(系统响应时刻)、(用户帮忙设施)、(犯错信息处置)和(命令交互)等四个问题。
二、程序的三种大体控制结构是(顺序)、(选择)和(循环)。
3、在详细设计阶段,采用的工具有(程序流程图)、(盒图)、(PAD图)、(判定表)、(判定树)和(进程设计语言)。
4、详细设计的目标包括(肯定应该如何具体实现所要求的系统)和(设计出程序的“蓝图”)。
五、Jackson图既可用表达程序结构,也可用表达(数据结构)。
六、衡量系统响应时刻的两个重要属性是(长度)和(易变性)。
7、用户界面设计指南主要包括(一般交互指南)、(信息显示指南)和(数据输入指南)。
八、当算法中包括多重嵌套的条件选择时,利用(判定表)能够清楚的表示复杂的条件组合与应作的动作的对应关系。
1、结构化程序设计
结构程序设计是一种设计程序的技术,它采用自顶向下慢慢求精的设计方式和单入口单出口的控制结构。
1)、在整体设计阶段采用自顶向下慢慢求精的方式:
把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。
2)、详细设计或编码阶段采用自顶向下慢慢求精的方式:
能够把一个模块的功能慢慢分解细化为一系列具体的处置步骤或某种高级语言的语句。
1、在设计用户帮忙设施时,必需解决那5个主要问题?
(1)、在用户与系统交互期间,是不是在任何时候都能取得关于系统全数功能的帮忙信息。
(2)、用户如何请求帮忙?
有3种选择:
帮忙菜单,特殊功能键和HELP命令。
(3)、如何显示帮忙信息?
在独立的窗口中,指出参考某个文档(不睬想)和在屏幕固定位置显示简短提示。
(4)、用户如何返回到正常的交互方式中?
有两种选择:
屏幕上的返回按钮和功能键。
(5)、如何组织帮忙信息?
平面结构(所有信息都通过关键字访问),信息的层次结构(用户可在该结构中查到更详细的信息)和超文本结构。
2、简述用户界面的评估周期?
用户界面的评估周期如下所述:
完成初步设计以后就创建第一级原型;
用户试用并评估该原型,直接向设计者表述对界面的评价;
设计者按照用户意见修改设计并实现下一级原型。
上述评估进程持续进行下去,直到用户感到满意,不需要再修改界面设计时为止。
3、简述Jackson方式的5个步骤?
(1)、分析并肯定输入数据和输出数据的逻辑结构,并用Jackson图描画这些数据结构。
(2)、找出输入数据结构和输出数据结构中有对应关系的数据单元。
所谓有对应关系是指有直接的因果关系,在程序中能够同时处置的数据单元(对于重复出现的数据单元必需重复的顺序和次数都相同才可能有对应关系)。
(3)、用下述三条规则从描画数据结构的Jackson图导出描画程序结构的Jackson图:
1 为每对有对应关系的数据单元,依照它们在数据结构图中的层次在程序结构图的相应层次画一个处置框(注意,若是这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处置框在程序结构图中所处的层次与它们当中在数据结构图中层次低的那个对应);
2 按照输入数据结构中剩余的每一个数据单元所处的层次,在程序结构图的相应层次别离为它们画上对应的处置框;
3 按照输出数据结构中剩余的每一个数据单元所处的层次,在程序结构图的相应层次别离为它们画上对应的处置框。
(4)、列出所有操作和条件(包括分支条件和循环结束条件),而且把它们分派到程序结构图的适当位置。
(5)、用伪码表示程序。
第七章
一、填空题:
一、大型软件的测试应该分阶段地进行,通常至少分为(单元测试)、(集成测试)和(验收测试)等3个大体阶段。
二、软件测试的两类大体方式是白盒测试和黑盒测试,通常在测试进程的初期阶段主要利用(白盒测试),而在后期阶段主要利用(黑盒测试)。
3、大型软件系统的测试进程大体上由模块测试、(子系统测试)、系统测试、(验收测试)和平行运行等。
4、一般说来,软件调试途径主要有以下3种即(蛮干法)、(回溯法)和(原因排除法)。
二、名词解释:
一、软件测试:
为了发觉程序中的错误而执行程序的进程。
二、软件靠得住性:
是程序在给定的时刻距离内,依照规格说明书的规定成功运行的概率。
3、软件可用性:
是程序在给定的时刻点,依照规格说明书的规定,成功地运行的概率。
4、白盒测试
若是明白软件内部工作进程,能够通过测试来查验软件内部动作是不是依照规格说明书的规定正常进行,这种测试称为白盒测试。
也称结构测试。
5、黑盒测试
若是已经明白软件应该具有的功能,能够通过测试来查验是不是每一个功能都能正常利用,这种测试称黑盒测试。
也称功能测试。
6、集成测试
集成测试是组装软件的系统化技术,它将通过单元测试的模块联系在一路进行测试。
7、确认测试
也称为验收测试,目标是验证软件的有效性。
若是软件的功能和性能符合用户的期待,软件就是有效的。
软件规格说明书是进行确认测试的基础。
三、判断题:
一、软件测试一般包括黑盒测试和白盒测试两种方式,测