软件工程习题答案文档格式.docx
《软件工程习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程习题答案文档格式.docx(63页珍藏版)》请在冰点文库上搜索。
1.软件就是程序,编写软件就是编写程序。
(×
)
2.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
3.结构化方法的工作模型是使用螺旋模型进行开发。
4.结构化方法和JSP方法都不适合于大型软件的开发。
(√)
5.原型化开发方法包括生成原型和实现原型两个步骤。
6.面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
(√)
7.软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
8.软件工具的作用是为了延长软件产品的寿命。
9.软件工程过程应该以软件设计为中心,关键是编写程序。
10.RCP法与RSP法的主要区别是前者采用循环渐进的开发方式,原型将成为最终的产品,而后者将被废弃。
三、简答题
1.软件产品的特性是什么?
答:
● 软件是一种逻辑产品,具有无形性;
● 软件产品的生产主要是研制;
● 软件不存在磨损和老化问题,但存在退化问题;
● 软件产品的生产主要是脑力劳动;
● 软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;
●软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
2.软件发展有几个阶段?
各有何特征?
①程序设计阶段。
硬件特征:
价格贵、存储容量小、运行可靠性差。
软件特征:
只有程序、程序设计概念,不重视程序设计方法。
②程序系统阶段。
速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。
程序员数量猛增,开发人员素质低。
③软件工程阶段。
向超高速、大容量、微型化及网络化方向发展。
开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。
3.什么是软件危机?
其产生的原因是什么?
“软件危机”(SoftwareCrisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。
致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。
软件危机主要表现在两个方面:
(1)软件产品质量低劣,甚至开发过程就夭折。
(2)软件生产率低,不能满足需要。
4.什么是软件生存周期模型?
它有哪些主要模型?
软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
主要模型包括:
瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。
5.有哪些主要的软件开发方法?
主要的软件开发方法有:
结构化开发方法、Jackson(JSP、JSD)方法、原型化开发方法、维也纳开发方法(VDM)和面向对象的开发方法。
6.软件生命期各阶段的任务是什么?
软件生命期瀑布模型分为六个阶段:
●可行性研究与计划(确定系统的目标和规模,分析项目的可行性);
●需求分析与规格说明(明确系统的规格和要求);
●设计(包括概要设计和详细设计,将系统分解为模块);
●编程(用程序语言实现每个模块,简单容易);
●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);
●运行维护(扩充功能、纠错等)。
习题二参考答案
一.填空题
1.值得去开发,其中的问题能否解决,需求分析,设计
2.技术,经济,社会
3.研究正在运行的系统,建立新系统的高层逻辑模型
4.所建议系统的技术可行性分析,所建议系统的经济可行性分析,社会因素可行性分析
5.经济角度开发成本比较和权衡
二、选择题
1.A
2.B
【解析】:
经济可行性是从开发费用和软件回报的角度来分析开发该软件系统是否可行。
技术可行性是从软件实现的功能、用户要求的软件性能、是否有技术难题等方面等考虑开发该软件的可行性问题。
操作可行性判断系统的操作方式在该用户组织内是否可行,法律可行性对方在考虑开发的软件系统可能会涉及的任何侵犯、妨碍、责任等问题做出决定。
所以答案为B。
3.B4.D
5.D
在软件开发中,开发人员的交流似乎非常主要的,而一个开发人员进入一个新的软件系统做开发,需要相当长的一个阶段以适应该软件的开发,这主要是由于新的人员需要一定时间的培训以熟悉该软件系统的开发状况及该软件的需求分析、定义和相关已经生成的文档,以便在软件开发中与老开发人员的交流和通信,一推动软件开发前进。
所以答案为D。
6.D
软件的计划主要是根据软件开发的要求、软件系统的规模等,对软件开发的各种资源(包括软硬见资源及开发人员)进行合理的规划,以便在开发过程中得到合理的调度,从而使软件开发最充分地利用资源,以在最短的时间内取得最大的经济效益;
软件工程经济学的任务是对软件开发的成本、效益等进行分析和估算;
软件工程管理学的任务是有效组织和管理软件开发,软件工程开发技术的任务之一是设计和测试软件系统。
所以答案是D。
7.A8.A9.C10.D
1.可行性研究首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制。
把它们清楚地列举出来。
然后,分析员进行简要的需求分析,经过压缩的设计,探索出若干种可供选择的主要解决方法。
对每种解决方法都要研究它的可行性。
可从以下三个方面分析研究每种解决方法的可行性。
(1)技术可行性。
要确定使用现有的技术能否实现系统,就要对要开发项目的功能、性能、限制条件进行分析,确定现有的资源条件下,技术风险有多大,项目能否实现。
这里的资源包括已有的或可搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
(2)经济可行性。
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
对于大多数系统,一般衡量经济上是合算,应考虑一个最小利润值,经济可行性研究范围较广,包括成本_效益分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景。
(3)社会可行性。
要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运动行方式在用户组织内是否得通,现有管理制度、人员素质、操作方式是否可行。
社会可行性所涉及的范围也比较广,它包括:
合同、责任、侵权、用户组织的管理模式及规范,其他一些技术人员常常不了解的陷阱等。
2.技术可行性一般要考虑的情况包括:
(1)开发的风险。
在给出的限制范围内,能否设计出系统并实现必须的功能和性能。
(2)资源的有效性。
可用于开发的人员是否存在问题。
可用于建立系统的其他资源是否具备。
(3)技术。
相关技术的发展是否支持这个系统。
(4)开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。
3.典型的可行性研究有下列步骤:
(1)系统定义。
为了定义好一个系统,需要分析人员对有关人员进行调查访问,仔细阅读和分析有关的资料,对项目的规模和目标进行定义和确认,清晰地描述项目的一切限制和约束,确保分析人员正在解决的问题确实是要解决的问题。
(2)研究正在运行的系统。
正在运行的系统可能是一个人工操作的系统,也可能是旧的计算机系统,要开发一个新的计算机系统来代替旧的系统。
因此,现有繁荣系统是信息的重要来源,要研究它的基本功能,存在什么问题,运行现有系统需要多少费用,对新系统有什么新的功能要求,新系统运行时能否减少费用等等。
应收集、研究、分析现有系统的文档资料,实地考察现有系统,在考察的基础上,访问有关人员,然后描绘现有系统的高层系统流程图,与有关人员一起审查该系统流程图是否正确。
这个系统流程图反映了现有系统的基本功能和处理流程。
(3)导出新系统的逻辑模型。
根据对现有系统的分析研究,逐渐明确了新系统的功能,处理流程以及所受的约束,然后使用建立逻辑模型的工具--数据流图和数据字典来描述数据在系统中的流动和处理情况。
(4)设计方案。
分析人员建立了新系统的高层逻辑模型之后,要从技术角度出发,提出实现高层逻辑模型的不同方案,即导出若干较高层次的物理解法。
根据技术可行性,经济可行性,社会可行性对各种方案进行评估,去掉行不通的解法,就得到可行的解法。
(5)推荐可行的方案。
根据上述可行性研究的结果,应该决定该项目是否值得去开发。
若值得开发,那么可行性的解决方案是什么,并且说明该方案可行的原因和理由。
(6)编写可行性研究报告。
将上述可行性研究过程的结果写成相应的文档,即可行性研究报告,提请用户和使用部门仔细审查,从而决定该项目是否进行开发,是否接受可行的实验方案。
4.一个可行性研究报告的主要内容如下:
(1)引言。
说明编写本文档的目的;
项目的名称,背景;
本文档用到的专门术语和参考资料。
(2)可行性研究前提。
说明开发项目的功能,性能和基本要求;
达到的目标;
各种限制条件;
可行性研究方法和解决可行性的主要因素。
(3)对现有系统的分析。
说明现有系统的处理流程和数据流程;
工作负荷;
各项费用支出;
所需各类专业技术人员和数量;
所需各种设备;
现有系统存在什么问题。
(4)所建议系统的技术可行性分析。
所建议系统的简要说明;
处理流程和数据流程;
与现有系统比较的优越性;
采用所建议系统对用户的影响;
对各种设备,现有软件,开发环境,运行环境的影响;
对经费支出的影响;
对技术可行性的评价。
(5)所建议系统的经济可行性分析。
说明所建议系统的各种指出,各种效益,收益投资比;
投资回报周期。
(6)社会因素可行性分析。
说明法律因素,对合同责任,侵犯专利权,侵犯版权等问题的分析;
说明用户使用可行性,是否满足用户行政管理工作制度,人员素质的要求。
(7)其他可供选择方案。
逐一说明其他可供选择的方案,说明未被推荐的理由。
(8)结论意见。
说明项目是否值得开发;
还需什么条件才能开发;
对项目目标有何变动等。
5.成本-效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。
成本-效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。
效益分有形效益和无形效益两种。
有形效益可以用货币的时间价值,投资回收期,纯收入等指标进行度量:
无形效益主要从性质上,心理上进行衡量,很难直接进行量的比较。
系统的经济效益等于使用新的系统而增加的收入加上使用新的系统可以节省的运行经费。
运行经费包括操作人员数,工作时间,消耗的物资等。
下面主要介绍有形效益的分析。
(1)货币的时间价值。
成本估算的目的是对项目投资。
经过成本估算以后,得到项目开发时需要的经费,该费用就是项目的投资。
项目开发后,应取得相应的效益,有多少效益才合算,这就要考虑货币的时间价值。
通常用利率表示货币的时间价值。
设利率为i,现存入P元,n年后可得钱数为F元,则:
F=P(1+i)n
F就是P元在n年后的价值。
反之,若n年后能收入F元,那么这些钱现在的价值是:
P=F/(1+i)n
(2)投资回报周期。
通常用投资回收期衡量一个开发项目的价值。
投资回收期就是使累计经济效益等于最初的投资费用所需时间。
投资回收期越短,就越快获得利润,则该项目就越值得开发。
(3)纯收入。
衡量项目价值的另一个经济指标是项目的纯收入,也就是在整个生存周期之内累计经济效益(折合成现在价值)与投资差。
这就相当与投资开发一个项目与把钱存入银行中进行比较,看这两种方案的优劣。
若纯收入为零,则项目的预期效益和在银行存款一样,但是开发一个项目要冒风险,因此,从经济观点看,这个项目可能是不值得投资开发的。
若纯收入小于零,那么这个项目显然不值得投资开发。
6.项目开发计划的主要内容有:
(1)项目概述。
说明项目的各项主要工作,说明软件的功能,性能;
为完成项目应具备的条件;
拥护及合同承包者承担的工作,完成期限及其他条件限制;
应交付的程序名称,所使用的语言及存储形式;
应交付的文档等。
(2)实施计划。
说明任务的划分,各项任务的责任人;
说明项目开发进度,按阶段应该完成的任务,用图表说明每项任务的开始时间和完成时间;
说明项目的预算,各阶段的费用支出预算。
(3)人员组织及分工。
说明开发该项目所需人员的类型,组成结构,数量等。
(4)交付期限。
说明项目最后完工交付的日期。
(5)给出下一阶段(需求分析)的详细进度和成本。
习题三参考答案
一、填空题
1.需求分析
2.新系统的目标,“做什么”
3.功能需求,性能需求,环境需求,用户界面需求
4.客户说不清楚分析人员和用户理解有误
5.数据流数据存储加工源和终点
6.“做什么”,加工规则
7.数据流图,数据字典,描述加工逻辑的结构化语言,判定表,判定树
8.各个成分的具体含义,逻辑模型,需求说明书
9.结构化语言判定表判定树
10.数据处理方面,“做什么”,静态模型,控制模型
1.D2.C3.A4.D5.C6.A7.C8.D9.C10.D
1.需求分析阶段的基本任务是什么?
需求分析的难点主要表现在哪几个方面?
需求分析的基本任务是要准确地定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。
本阶段要进行以下几方面的工作.
(1)问题识别。
双方确定对问题的综合需求,这些需求包括.
①功能需求.所开发的软件必须具备什么样的功能,这是最重要的。
②性能需求.待开发的软件的技术性能指标。
如存储容量、运行时间等限制。
③环境需求.软件运行时所需要的软、硬件(如机型、外设、操作系统、数据库管理系统等)的要求。
④用户界面需求.人机交互方式、输入输出数据格式等等。
另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求,这些需求一般通过双方交流、调查研究来获取,并达到共同的理解。
(2)分析与综合,导出软件的逻辑模型。
分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。
这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成分,并用图文结合的形式,建立起新的系统的逻辑模型。
(3)编写文档。
①编写“需求规格说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。
②编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。
③编写确认测试计划,作为今后确认和验收的依据。
④修改完善软件开发计划。
在需求分析阶段对待开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。
需求分析的困难主要体现在以下几个方面.
●问题的复杂性。
因用户需求所涉及的因素繁多引起,如运行环境和系统功能等等。
●交流障碍。
需求分析涉及人员较多,如软件系统用户、问题领域专家、需求工程师和项目管理员等,这些人具备不同的背景知识,处于不同的角度,扮演不同角色。
造成了相互之间交流的困难。
●不完备性和不一致性。
由于各种原因,用户对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾,需求分析要消除矛盾,形成完备及一致性的定义。
●需求易变性。
用户需求的变动是一个极为普遍的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一致性和不完备性。
●为了克服上述困难,人们主要围绕着需求分析的方法及自动化工具(如CASE技术)等方面进行研究。
2.画数据流图的步骤是什么?
画数据流图应该注意什么事项?
解答如下.
(1)画数据流图的步骤.
为了表达较为复杂问题的数据处理过程,用一张数据流图是不够的。
要按照问题的层次结构进行逐步分解,并以一套分层的数据流图反映这种结构关系。
首先画系统的输入输出,即先画顶层数据流图。
顶层流图只包含一个加工,用以表示被开发的系统,考虑该系统有哪些输入数据,这些输入数据从哪里来;
有哪些输出数据,输出到哪里去。
这样就定义了系统的输入、输出数据流。
顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。
顶层图只有一张。
画系统内部,即画下层数据流图。
一般将层号从0开始编号,采用自顶向下、由外向内的原则画0层数据游戏图时,一般根据当前系统工作情况,并按新系统应有的外部功能,分解顶层流图的系统为若干子系统决定每个子系统间的数据接口和活动关系。
画更下层数据流图时,则分解上层图中的加工,一般沿着输入流的方向,凡数据流的组成或值发生变化的地方则设置一个加工,这样一直进行到输出数据流(也可以输出流到输入流方向画)。
如果加工的内部还有数据流,刚对此加工在下层图中继续分解,直到每一个加工足够简单,不能再分解为止,不再分解的加工称为基本加工。
(2)画数据流时要注意的事项.
在软件的系统分析之前,系统的技术负责要制订一个系统的标准。
其内容之一就是画数据流图的规范。
画数据流图时要注意以下几点.
命名。
不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。
数据流的名字代表整个数据流的内容,而不仅仅是它的某些成分,不便用缺乏具体含义的名字,如“数据”、“信息”等,加工名也应反映整个处理的功能,不使用“处理”,“操作”这些笼统的词。
画数据流而不是控制流。
数据流图反映系统“做什么”,不反映“如何做”因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
一般不画物质流。
数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流。
每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
加工点的编号。
如果一张数据流图中的某个加工点分解成另一张数据流图时,则上层图为父图,直接下层图为子图。
子图应编号,子图上的所有加工也应编号,子图的编号就是父图中相应加工的编号,加工的编号由子图号、小数点及局部符号组成。
父图和子图的平衡。
子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。
有时考虑平衡可忽略一些枝节性的数据流(如出错处理)。
父图与子图的平衡,是分层数据流图中的重要性质,保证了数据流图的一致性,便于分析人员的阅读与理解。
局部数据存储。
在分层处理的过程中,当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
一个局部数据存储只要当它作为某些加工的数据接口或某个加工特定的输入或输出时,就把它画出来,这样有助于实现信息隐藏。
提高数据流图的易理解性。
注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间的输入、输出数据流的数目,增加数据流图的可理解性。
分解时要注意子加工的独立性,还应注意均匀性,特别是画上层数据流时,要注意将一个问题划分成几个大小接近的组成部分,这样做便于理解;
不要在一张数据流图中,某些加工已是基本加工,某些加工还要分解好几层。
3.描述加工逻辑有哪些工具?
加工逻辑也称为“小说明”,描述加工逻辑一般用以下三种工具.结构化语言、判定表、判定树。
(1)结构化语言。
结构化语言是介于自然语言(英语或汉语)和形式语言之间的一种半形式语言。
它是在自然语言基础上加了一些限定,使用有限的词汇和有限的语句来描述加工逻辑,它的结构可分为外层和内层两层.
.外层.用来描述控制结构,采用顺序、选择、重复三种基本结构。
a.顺序结构。
是一组实例语句、选择语句、重复语句的顺序排列。
祈使语句指至少包含一个动词及一个名词,指出要执行的动作及接受动作及接受动作的对象。
b.选择结构。
一般用IF-THEN-ELSE-ENDIF、CASE-OF-ENDCASE等关键字。
c.重复结构。
一般用DO-WHILE-ENDDO、REPEAT-UNTIL等关键字。
.内层。
一般是采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其动词含义要具体,尽量不用形容词和副词来修饰。
还可使用一些简单的自述运算和逻辑运算符号。
判定表。
在有些情况下,数据流图中的某个加工的一组动作依赖于多个逻辑条件的取值。
这时,用自然语言或结构化的语言都不易清楚地描述出来。
而用判定表就能够清楚地表示复杂的条件组合与应做的动作之间的对应关系。
判定表由四部分组成,如图4-2所示。
条件定义
条件取值的组合
动作定义
在各种取值的组合下应执行的动作
判定表能够把在什么条件下系统应该做什么动作准确无误地表示出来,但不能描述循环的处理特性,循环处理还需结构化语言。
判定树。
判定树是判定表的变形,一般情况下它比判定表更直观,且易于理解和使用。
4.什么是结构化分析方法?
该方法使用什么描述工具?
具有什么样的优缺点。
结构化分析方法是面向数据流进行需求分析的方法。
它是一种建模活动,该方法使用简单易读符号,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
结构化分析的主要思想是采取自顶向下的逐层分解的分析策略,即面对一个复杂的问题,分析人员不可能一开始就考虑到问题的所有方面以及全部细节,采取的策略往往是分解,把一个复杂的问题划分成若干个小问题,然后再分别解决,将问题的复杂性降低到人可以掌握的程度。
分解可分层进行,先考虑问题最本质的方面,忽略细节,形成问题的高层概念,然后再逐层添加细节,即在分层过程中采用不同程度的“抽象”级别,最高层从问题最抽象,而低层的较为具体。
结构化分析方法利用图形等半形式化的描述方式表达需求,简明易懂,用它们形成需求说明书中的主要部分。
这些描述工具是.
(1)数据流图。
(2)数据字典。
(3)描述加工逻辑的结构化语言、结构表、判定树。
其中,“数据流图”描述系统的分解,抒描述系统由哪几个部分组成,各部分之间有什么联系等等。
“数据字典”定义了数据流图中每一个图形元素。
结构化语言、判定表或判定树则详细描述数据流图中不能被再分解的每一个加工。
结构