课程代码02333软件工程课后习题答案--陆丽娜11

1.软件产品的特性是什么?
  a.软件产品是一种逻辑产品,它与物质产品有很大的区别。软件产品具有无形性,它以程序和文档的形式保存在计算机存储器的磁盘或光盘介质上,通过计算机的执行才能体现它的功能和作用。
  b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。
  c.软件产品不会用坏,不存在磨损、消耗问题。
  d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而大部分产品是"定做"的。
  e.软件费用不断增加,成本相当昂贵。
2.软件产品有几个阶段?各有何特征?
阶段 A.程序设计时代(1946-1956) B.程序系统时代(1956-1968 C.软件工程时代(1968-今)
生产方式 个体手工劳动 小集团合作生产 工程化的生产
工具 机器语言、汇编 高级语言 数据库、开发工具、开发环境、网络、 分布式、面向对象技术
开发方法 追求编和技巧,追求程序运行效率 个人技巧,开始提出结构化方法
硬件特征 价格贵、存储容量小、运行可靠性差 速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长 向超高速、大容量、微型化以及网络化方
软件特征 只有程序、程序设计概念,不重视程序设计方法 程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生 开发技术有很大进步,但未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机
3.什么是软件危机?其产生的原因是什么?
  答:当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致软件开发中遇到的问题不到解决的办法使问题积累下来,形成了尖锐的矛盾,因而导致了软件的危机。主要表现在以下几个方面:
    a.经费预算经常突破,完成时间一再拖延。
    b.开发的软件不通满足用户要求。
    c.开发的软件可维护性差。
    d. 开发的软件可靠性差。
软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:
a.软件的规模越来越大,结构越来越复杂。
b.软件开发管理困难而复杂。
c.软件开发费用不断增加。
d.软件开发技术落后。
e.生产方式落后。
f.开发工具落后,生产率提高缓慢。
4.什么是软件工程?它的目标和内容是什么?
软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。
软件工程的目标是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:
a.付出较低的开发成本;
b.达到要求的软件功能;
c.取得较好的软件性能;
d.开发的软件易于移植;
e.需要较低的维护费用;
f.能按时完成开发任务,及时交付使用;
g.开发的软件可靠性高;
软件工程的内容:
1) 软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。
2) 软件开发管理:软件管理学、软件经济学、软件心理学。
5.软件工程面临的问题是什么?
软件工程面临的问题:
  a.软件费用。b.软件可靠性。c.软件维护。d.软件生产率。e.软件重用。
6.什么是软件生存周期?它有哪几个活动?
  软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等.
7.什么是软件生存周期模型?有哪些主要模型?
软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。(模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。)
软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等
8.什么是软件开发的方法?有哪些主要方法?
软件开发的方法:是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。
主要方法:结构方法、Jackson方法、维也纳开发方法(VDM)、面向对象的开发方法。
9.可行性研究的任务是什么?
a.技术可行性:
  考虑的因素(1).开发的风险(2)资源的有效性(3)技术(4)开发人员在主段技术可行性时,一旦估计错误,将会出现灾难性后果。
b.经济可行性。
c.社会可行性。
10可行性研究有哪些步骤?
a.确定项目规模和目标
b.研究正在运行的系统
c.建立新系统的高层逻辑模型
d.导出和评价各种方案
e.推荐可行的方案
f.编写可行性研究报告
11可行性研究报告有哪些就要内容?
a.引言
b.可行性研究前提
c.对现有系统的分析
d.所建议系统的技术可行性分析
e.所建议系统的经济可行性分析
f.社会因素可行性分析
g.其他可供选择方案
h.结论意见
12.成本---效益分析可用哪些指标进行度量?
有形效益度量:
  a.货币的时间价值
  b.投资回收期
  c.纯收入
无形效益:主要从性质上、心理上进行衡量,很难直接进行量的比较。
通常以有形效益度量作为成本---效益分析的度量。
13.项目开发计划有哪些内容?
a.项目概述 b.实施计划c.人员组织及分工d.交付期限
14.什么是需求分析?需求分析阶段的基本任务是什么?
需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。
需求分析阶段的基本任务是:
  (1) 问题识别:双方对问题的综合需求:a.功能需求b.性能需求c.环境需求d.用户界面需求.
等。
  (2) 分析与综合,导出软件的逻辑模型.
  (3) 编写文档
15.什么是结构化分析方法?该方法使用什么描述工具?
        结构化分析方法:是面向数据流进行需求分析的方法。
    描述工具:a、数据流图b、数据字典c、描述加工逻辑的结构化语言、判定表、判定树。
16.结构化分析方法通过哪些步骤来实现?
结构化分析方法步骤:
      a.了解当前系统的工作流程,获得当前系统的物理模型.
      b.抽象出当前系统的逻辑模型.
      c.建立上标系统的逻辑模型.
      d.作进一步补充和优化.
17.什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?
数据流图:简称DFD,SA(结构化分析)方法中用于表示系统逻辑模型的一种工具,是一种功能模型。
    用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能.
基本符号有四种: 
  →,箭头,表示数据流; ○,圆或椭圆,表示加工;  =,双杠,表示数据存储;□,方框,表示数据的源点或终点.
18.画数据流图应该注意什么事项?
画数据流图注意事项:
a.命名。数据流的名字代表整个数据流的内容吗,应恰当、易理解、不使用缺乏具有含义的名字或笼统的词汇。
b.画数据流而不是控制流.
c.一般不画物质流.
d.每个加工到少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果.
e.编号.
f.父图与子图的平衡.
g.局部数据存储.
h.提高数据流图的易理解性.
19.什么是字据字典?其作用是什么?它有哪些条目?
字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。
  用:1)为系统的分析\设计及维护提供了有关元素的一致的定义和详细的描述.
        2)为分析人员查数据流图中有关名字的详细定义而服务的.
        3)它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分.
  目:数据流、数据项、数据存储、基本加工。
20.描述加工逻辑有哪些工具?
a,结构化语言b,判定表c.判定树
21.什么是IDEF0方法?IDEF0方法有什么特点?
  IDEF方法:是美国空军在1981年针对集成化计算机辅助制造(Integrated Computer Aided Manufacturing,简称ICAM)工程项目中用于进行复杂系统分析和设计的方法,是在结构化
分析与设计技术的基础上提出来的。
  IDEF0方法特点:
    a.采用方框和箭头等简单的图形符号描述系统的活动和数据流,描述活动所受到的约束及实现机制。
b.采用严格的自顶向下、逐层分解的方式建立系统功能模型。
22简述SA方法的优缺点。
优点:
1)公认的、有成效的、技术成熟、使用广泛的一种方法,比较适合于开发数据处理类型软件的需求分析。
    2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试、 评价提供了有利条件。
缺点:
1)传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统"做什么"的功能,但它仅是一个静态模型,没有反映处理的顺序,即控制流程。因此,不适合描述实时控制系统。
2SA方法在使用DFD在分析与描述"数据要求"方面是有局限的。
3) DFD不适合描述人机界面系统的要求。
4)为了更精确地描述软件包需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA方法可与形式方法结合起来。
23.简述自顶向下逐层分解的分析策略?
  答:面对一个复杂的问题,分析人员不可能一开始就考虑到问题的所有方面以及全部细节,采取的策略往往是分解,把一个复杂的问题划分成若干个小问题,然后在分别解决,将问题的复杂性降到人可以掌握的程度。分解可分层进行,先考虑问题最本质的方面,忽略细节,形成问题的最高层概念,然后在逐层添加细节,即在分层过程中采用不同程度的“抽象”级别,最高层的问题最抽象,而低层的教具体。


24.什么是软件概要设计?该阶段的基本任务是什么?
软件概要设计:在需求分析的基础上通过抽象和分解将系统分解成模块,确定系统功能是实
,即把软件需求转换为软件包表示的过程。
基本任务:
  (1)设计软件系统结构(简称软件结构)
  a.采用某种设计方法,将一个复杂的系统按功能划分成模块(划分)
  b.确定模块的功能。        (功能)
  c.确定模块之间的调用关系。      (调用)
  d.确定模块之间的接口,即模块之间传递的信息。        (接口)
  e.评价模块结构的质量。        (质量)
  (2)数据结构及数据库设计
  a.数据结构设计
  b.数据库设计:(概念设计、逻辑设计、物理设计)
  (3)编写概要设计文档(文档主要有:概要设计说明书、数据库设计说明书、用户手册、修订测试计划)
  (4)评审
25.软件设计的基本原理包括哪些内容?
软件设计的基本原理:
  (1)模块化(四个属性:接口、功能、逻辑、状态)
  (2)抽象
  (3)信息隐蔽
  (4)模块独立性(两个定性的度量标准:耦合性与内聚性)
26.衡量模块独立性的两个标准是什么?它们各表示什么含义?
两个定性的度量标准:耦合与内聚性
耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
内聚性:也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。
27.模块间的耦合性有哪几种?它们各表示什么含义?
耦合性有六种:无直接耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合
无直接耦合:两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。    (无直接关系)
数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。          (数据值   
标记耦合:指两个模块之间传递的是数据结构。              (数据结构 
控制耦合:指控制模块调用另一个模块时,传递的是控制变量,被调用块通过该控制变量的值有选择地执行块内某一功能(控制变量
公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。        (一个公式数据环境)
内容耦合:一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部      (内部数据 
28.模块的内聚性有哪几种?各表示什么含义?
模块间的内聚性有6种:偶然内聚、逻辑内聚、时间内聚、通信内聚、顺序内聚、功能内聚。
偶然内聚:一个模块内的各处理元素之间没有任何联系。   
逻辑内聚:模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚:把需要同时执行的动作组合在一起。
通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或产生相同的输出数据。
顺序内聚:一个模块中各处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出是下一功能元素的输入。
功能内聚:最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。
29.什么是软件结构?简述软件结构设计优化准则。
  软件结构:软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制体系。
  软件结构设计优化准则:
a.划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,以此为原则优化初始的软件结构。
b.一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近
c.软件的深度、宽度、扇入、扇出应适当。
D.模块的大小要适中。
E.模块的控制范围模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。
30.什么是模块的影响范围?什么是模块的控制范围?它们之间应该建立什么关系?
    模块的影响范围:受该模块内的一个判定影响的所有模块的集合。
    模块的控制范围:模块本身及其所有下属模块(直接或间接从属于它的模块)的集合。
    一个模块的影响范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。
31.什么是"变换流"?什么是"事务流"?试将相应形式的数据流图转换成软件结构图。
由输入、变换(或称主加工)、输出界面的数据流图称之为变换流。
某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入选择其中一个路径来执行这种特征的DFD称为事物流。
32.试述"变换分析""事务分析"的设计步骤。
变换分析:
a.确定DFD中的变换中心,逻辑输入和逻辑输出。
b.设计软件结构的顶层和第一层-------变换结构。
c.设计中下层模块。(输入模块下属模块的设计,输出模块下属模块的设计,变换模块下属模块的设计,设计的优化)
事务分析:
a.确定DFD中的事务中心和加工路径。
b.设计软件结构的顶层和第一层------事务结构。(接收、发送给支)
c.事务结构中、下层模块的设计、优化工作同变换结构。
33.详细设计的基本任务是什么?有哪几种描述方法?
详细设计的基本任务:
(1)为每个模块进行详细的算法设计。
(2)为每个模块内的数据结构进行设计。
(3)对数据库进行物理设计,即确定数据库的物理结构。
(4)其他设计:
  a.代码设计
  b.输入/输出格式设计。
  c.人机对话设计。
(5)编写详细设计说明书。
(6)评审。
  描述方法(三种):
a.程序流程图
b.PAD
C.过程设计语言
34.结构化程序设计基本要求要点是什么?
a.采用自顶向下、逐步求精的程序设计方法。
b.使用“顺序、选择、重复“三种基本控制结构构造程序。
c.主程序员组的组织形式。
35.简述Jackson 方法的设计步骤。
Jsp 方法一般通过以下5个步骤来完成设计:
a.分析并确定输入/出数据的逻辑结构,并用Jackson 结构图表示这些数据结构。
b.出输入数据结构和输出数据结构中有对应关系的数据单元。
c.按一定的规则由输入、输出的数据结构导出程序结构。
d.列出基本操作与条件,并把它们分配到程序结构图的适当位置。
e.用伪码写出程序。
36.过程设计语言一般具有哪些特点?
答:(1)所有关键字都有固定语法,以便提供结构化控制结构、数据说明和模板的特征。
  2)描述处理过程的说明性语言没有严格的语法。
3)具有数据说明机制,包括简单的与复杂的数据说明。
    4)具有模板定义和调用机制,因此开发人员应根据系统编程所有的语种,说明PDL表示的有关程序结构。
37程序语言有哪些共同特征?
答:程序语言的共同特征(似为特性更符合题意)是指程序设计语言的语言特性,包括心理特性、工程特性和技术特性三个方面。语言的心理特性对人机通信的质量有主要的影响;语言的工程特性对软件开发成功一否有重要的影响,此外,语言的技术特性也会影响软件设计的质量。
38、在项目开发时选择程序设计语言通常考虑哪些因素?
答:通常要考虑的因素有:
项目的应用领域、软件开发的方法、软件执行的环境、算法和数据结构的复杂性以及软件开发人员的知识等。
394代语言(4GL)有哪些主要特征?
答:4GL的主要特征是:
(1)友好的用户界面,操作简单。
(2)兼有过程性和非过程性双重特性
(3)高效的程序代码
(4)完备的数据库 
(5)应用程序生成器
40举例说明各种程序设计语言的特点及适用范围?
答:以常见的一些编程语言为例:
FORTRAN语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算
Pascal语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严
谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算,操作系统的编写
C语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。
Coble语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。
SQL:结构化查询语言,用于对数据库进行存取管理。
汇编语言和Ada语言,主要用于实时处理和编写系统软件。
PrologLisp语言。Lisp是一种函数型语言,特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。
C++Java语言,是面向对象的设计语言,用于面向对象的方开发软件。
41什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?
答:程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。
要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意:(1)源程序文档化。(2)数据说明(3)语句构造。(4)输入输出(5)效率
42软件测试的目的是?软件测试中要注意那些原则?
答:软件测试的目的是的发现软件中存在错误的活动。好的测试用例可以发现至今没有发现的错误、好的测试用例可以发现至今没有发现的错误测试。要提供输入数据还要提供输出数据、保留测试用例、检查它是否做了应该做的还要检查它是否做了不该做的、避免自己测试自己的程序、多错误多的地方要更严格的测试。
43什么是白盒法?有那些覆盖标准?比较他们的检错能力。
答:将程序看成是白盒子,认真的分析程序的结构和功能制定测试用例来测试。有逻辑覆盖(语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖)
44什么是黑盒法?有那些测试方法?特点?
答:将程序当成是黑盒子以设计中的功能为标准在程序的接口出进行测试看它能否达到功能要求。等价类划分、边界值分析、因果图、错误推测。
45软件测试要经过那些步骤?这些步骤和开发那些阶段对应?
答:单元测试对应详细设计和编码、集成测试、确认测试对应需求分析。
46单元测试有那些内容?
答:测试模块的接口、数据结构、重要的执行路径、错误处理、边界条件。
47什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?
答:将模块组合起来成为一个完整的系统对其进行测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。
渐增式组装模块有自顶向下和自底向上两种组装方式。
48什么是确认测试?该阶段有那些工作?
答:按照需求规格说明书中的确定指标对系统进行功能与性能的测试。进行确认测试(对照需求规格说明书用黑盒法进行测试)、软件配置检查。(文档的完整性、正确性,发现遗漏和错误及时补充和修改)
49 调试的目的是什么?调试的技术有那些?
答:调试的目的是发现错误的位置并改正错误。简单调试、演绎调试、递归调试、回溯调试。
50软件工程专业课程软件维护有哪些内容?
a、校正性维护b、适应性维护c、完善性维护d、预防性维护
51.软件维护的特点是什么?
a、非结构化维护和结构化维护
b、维护的困难性
c、软件强维护的费用
52.软件维护的流程是什么?
a、制定申请维护报告b、审查申请报告并批准c、进行维护并作详细记录d、覆审
53.软件维护的副作用有哪些?
编码、数据、文档副作用
54.什么是软件的可维护性?可维护性的度量的特性是什么?
软件的可维护性指软件能够被理解、校正、适应及增强功能的容易程度。
可维护性的度量的特性是:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
55.提高可维护性的方法有哪些?
A、建立明确的软件质量目标。B、利用先进的软件开发技术和工具。
C、建立明确的质量保证工作。D、选择可维护的程序设计语言。
E、改进程序的文档。
56 渐增模型有那几种?特点?
答:渐变模型是瀑布模型的变种,它有两类:增量构造和演化提交。增量构造是瀑布模型的基础上,对一些的阶段进行整体开发,对另一些的阶段进行增量开发。也就是说在前面的开发阶段按瀑布模型进行整体开发,后面的开发阶段按增量阶段方式开发。演化提交是在瀑布模型的基础上,所有阶段都使用增量开发也就是不仅使用增量开发也使用增量提交。   
57 快速原型模型有那几种?各有何特点?
答:探索型、试验型、演化型。探索型:在需求阶段帮助明确理解需求用完抛弃。试验型:在设计阶段考核现行方案是否合适用完抛弃。演化型:及早的向用户展示一个系统的原形包含主要的功能得到用户的认可后将原形不断的扩充直到系统完成。
58 快速原型模型的开发步骤是什么?
答:(1)快速分析(2)构造原型(3)评价原型(4)修改
59 评价快速原形的优缺点?
答:可以更清楚的理解用户的需求、开发阶段可以用原形解决局部的困难,通过原形的开发可以让用户看见系统的初步功能的实现有利与用户的开发人员更好的交流,及早的解决存在的问题减少开发的风险。
缺乏好的管理工具和开发环境、缺乏管理机制、对开发人员的技术要求高、更新文档比较困难。
60 对比瀑布模型和增量模型,指出增量模型的新思路。
答:瀑布模型是一种整体的开发模型,开发的每一阶段必须按线性的顺序来进行,前一阶段的工作没有完成后一阶段的工作就不能开始。由于需求分析的易变性使的软件开发工作不顺利,同时瀑布模型的每个阶段有不可避免的错误出现,那么延伸到以下的各个阶段错误就会放大。增量模型是非整体开发的模型它采用渐增模型和原形模型,软件的开发是用增量开发和增量提交。




版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。