当前位置:文档之家› 软件工程期中16章

软件工程期中16章

软件工程期中16章
软件工程期中16章

第一章

名词解释

1.软件工程:

1968年在第一届NATO会议上曾经给出了软件工程的早期定义:”软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”

1993年IEEE进一步给出了一个更全面更具体的定义:”软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究(1)中提到的途径。”

2.软件过程:

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任

务的工作步骤。

3.软件危机:

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

4.软件生命周期:

软件生命周期由软件定义、软件开发、运行维护,三个部分组成。

软件定义时期的任务:确定软件开发工程必须完成的总目标;确定工程的可行性;导出

实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项目需要的资源和成

本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完

成。软件定义时期通常进一步划分成三个阶段:定义、可行性研究、需求分析。

开发时期:具体设计和实现在前一个时期定义的软件,它通常由四个阶段组成:总体设

计、详细设计、编码和单元测试、综合测试。

维护时期:主要任务是使软件持久地满足用户的需要。

5.软件生命周期每个阶段的基本任务:

定义时期:问题定义、可行性研究、需求分析。

开发时期:总体设计、详细设计、编码和单元测试、综合测试。

维护时期:软件维护。

习题

1.什么是软件危机?它有哪些典型表现?为什么会出现软件危机?

(概念在上面)

(1)对软件开发成本和进度的估计常常很不正确

(2)用户对“已完成的”软件系统不满意的现象经常发生

(3)软件产品的质量往往靠不住

(4)软件常常是不可维护的

(5)软件通常没有适当的文档资料

(6)软件成本在计算机系统总成本中所占的比例逐年上升

(7)软件开发生产率提高的速度,远远跟不上计算机应用驯熟普及深入的趋势

。一方面与软件本身的特点有关,另一方面也和软件开发和维护的方法不正确有关。

2.什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?

(概念在上面)

(1)软件工程关注于大型程序的构造

(2)软件工程的中心课题是控制复杂性

(3)软件经济变化

(4)开发软件的效率非常

(5)和谐的合作是开发软件的关键

(6)软件必须有效地支持它的用户

(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品

。必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好跟有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。3.简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

目前使用得最广泛的软件工程方法(2种)

1.传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基

干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而

降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求

是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然

很困难。

2.面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件

的开发和维护工作;促进了软件重用。

4.什么是软件软件过程?它与软件工程方法学有何关系?

软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤

软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型

5.什么是软件生命周期?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适应范围?

第二章

填空题

1.估计软件规模的方法主要有()和()等等。

2.可行性研究阶段的任务中,一般来说应该从(技术)可行性,(经济)可行性,(操作)

3代表(输入输出)含义。

名称解释

1.数据流图:

(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变

换,描绘数据在软件中流动和被处理的逻辑过程。

2.数据字典:

是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

补充:1.数据流图和数据字典共同构成系统的逻辑模型。

2.一般来说,数据字典应该由对下列四类元素的定义组成。

(1)数据流(2)数据流分量(即数据元素)(3)数据存储(4)处理

3.系统流程图:

概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系

统的每个部件。系统流程图的习惯画法是使信息在图中从顶向下或从左向右流动。

4.软件项目纯收入:

在整个生命周期之内系统的累计经济效益与投资只差。

5.技术可行性:

使用现有的技术能实现这个系统吗

简答题

1.简述可行性研究的过程步骤有哪些?

(1)复查系统规模和目标

(2)研究目前正在使用的系统

(3)导出新系统的高层逻辑模型

(4)进一步定义问题

(5)导出和评价供选择的解法

(6)推荐行动方针

(7)草拟开发计划

(8)书写文档提交评审

2.在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行

性?

技术上的可行性——使用现有的技术能实现这个系统吗?

经济上的可行性——这个系统的经济效益能超过它的开发成本吗?(投资与效益)

操作可行性——系统的操作方式在这个用户组织内行得通吗?

社会、政策允许的可行性

3.补充:

输入输出连接换页连接数据流

数据的原点、终点

或变换数据的处理

或数据存储

数据流

第三,四章

填空题:

1.需求分析过程应该建立3种模型,它们分别是(数据模型)、(功能模型)和(行为模型)。2.按照形式化的程度,可以把软件工程使用的方法划分成(非形式化)、(半形式化)和(形式化)等3类。

3.验证软件需求应该从以下4个方面进行验证,即(一致性)、(完整性)、(现实性)和(有效性)。4.需求分析的任务包括系统综合要求、数据要求、导出逻辑模型和修正系统开发计划等。其中常见的接口需求有:用户接口需求、(硬件接口需求)、(软件接口需求)和通信接口需求等等。5.需求分析的任务包括(确定对系统的综合要求)、(分析系统的数据要求)、(导出系统的逻辑模型)和修正系统开发计划等。

6.需求分析的任务包括系统综合要求、数据要求、导出逻辑模型和修正系统开发计划等。其中设计约束或实现约束常见的有:(精度)、工具和语言约束、(设计约束)、应该使用的标准和应该使用的(硬件平台)等。

判断题:

1.形式化方法有许多优点,因此在实际软件工作中应该依赖形式化方法来保证开发出的软件绝对正确和降低由于设计缺陷产生的维护代价。()

2.可以用形式化方法证明软件的需求和设计的正确性和合理性,因此,如果为了降低软件的测试成本和改正错误代价等,可以不用对软件进行测试,也可以保证软件的质量和降低开发成本等软件工程的目标。()

3.验证软件需求的方法主要靠人工审查的方法。()

名词解释:

1.实体-联系图(ER图):

描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。

2.状态转换图:

指明了作为外部事件结果的系统行为。

3.数据流图:

描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,因此,数流图是建立功能模型的基础。

4.IPO图:

是输入、处理、输出图的简称,它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。

5.Petri网:

用于确定系统中隐含的定时问题的一种有效技术是Petri网。

简答题:

1.简述需求分析的原则。

(1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型

(2)必须定义软件应完成的功能,这条准则要求建立功能模型

(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型

(4)必须对描述信息,功能和行为的模型进行分解,用分层的方式展示细节

2.简述形式化方法的准则。

(1)应该选用适当的表示方法

(2)应该形式化,但不要过分形式化

(3)应该估算成本

(4)应该有形式化方法顾问随时提供咨询

(5)不应该放弃传统的开发方法

(6)应该建立详尽的文档

(7)不应该放弃质量标准

(8)不应该盲目依赖形式化方法

(9)应该测试、测试再测试

(10)应该重用

课后题

1. 为什么要进行需求分析?通常对软件系统有哪些需求?

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答“系统必须做什么?”这个问题。

需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整,准确,清晰,具体的要求。

2.怎样与用户有效地沟通以获取用户的真实需求?

为了详细的了解并正确的理解用户的需求,必须使用适当方法与用户沟通。访谈是与用户通信的历史悠久的技术,至今仍被许多系统分析员采用。从可行性研究阶段得到的数据流图出发,在用户的协助下面向数据流自顶向下逐步求精,也是与用户沟通获取需求的一个有效的方法。为了促使用户与分析员齐心协力共同分析需求,人们研究出一种面向团队的需求收集法,称为简易的应用规格说明技术,现在这种技术已称为信息系统领域使用的主流技术。

3. 举例对比形式化方法和欠形式化方法的优缺点?

非形式化方法的缺点:用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。为了克服非形式化方法的缺点,把数学引入软件开发过程,创造了基于数学的形式化方法。能够带来下述的几个优点:它能够简洁准确地描述物理现象、对象或动作的结果。另一个优点是,可以在不同的软件工程活动之间平滑地过渡。最后一个优点是,它提供了高层确认的手段。

4.在什么情况下应该使用形式化说明技术?使用形式化说明技术应遵守哪些准则?

(1)应该选用适当的表示方法

(2)应该形式化,但不要过分形式化

(3)应该估算成本

(4)应该有形式化方法顾问随时提供咨询

(5)不应该放弃传统的开发方法

(6)应该建立详尽的文档

(7)不应该放弃质量标准

(8)不应该盲目依赖形式化方法

(9)应该测试、测试再测试

(10)应该重用

第五章

填空题:

1.总体设计过程通常由系统设计阶段和结构设计阶段两个主要阶段组成。

2.软件结构图中,模块框之间若有直线连接,表示它们之间存在调用关系。

3.模块设计中,最不希望的内聚是偶然内聚。

4.软件设计一般包括(总体设计)和详细设计阶段等两个阶段,在软件设计过程中应该遵循的基本原理和相关概念有(模块化)、(抽象)、(逐步求精)、(信息隐藏和局部化)和(模块独立)。

5.结构设计是一种应用最广泛的系统设计方法,是以(数据流)图为基础、自顶向下、逐步求精和模块化的过程。

6.面向数据流的软件设计方法,一般是把数据流图中数据流划分为(变换流)和(数据流),再将数据流图映射为软件结构。

简答题:

1.为什么模块独立性很重要?

第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来;第二,独立的模块比较容易测试和维护。

2.总体设计的两个主要任务是什么?

通过这个阶段的工作划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。另一项重要任务是设计软件结构。

3.总体设计过程包括哪2个阶段?说明典型的总体设计过程包括的9个步骤。

总体设计包括:系统设计阶段和结构设计阶段。

9个步骤:1.设想供选择的方案;2.选取合理的方案;3.推荐最佳方案;4.功能分解;

5.设计软件结构;

6.设计数据库;

7.制定测试计划;

8.书写文档;

9.审查和复审;

4、简述软件结构设计的启发式原则。

(1)改进软件结构提高模块独立性;

(2)模块规模应该适中;

(3)深度、宽度、扇出和扇入都应该适当;

(4)模块的作用域应该在控制域之内;

(5)力争降低模块接口的复杂程度;

(6)设计单入口单出口的模块;

(7)模块功能应该可以预测;

5、模块的内聚性包括哪些类型?

低内聚:偶然内聚、逻辑内聚、时间内聚;

中内聚:过程内聚、通信内聚;

高内聚:顺序内聚、功能内聚。

6、模块的耦合性包括哪些类型?

数据耦合、控制耦合、特征耦合、公共耦合、内容耦合。

7、简述变换分析或事务分析的7个步骤?

(1)复查基本系统模型。

(2)复查并精华数据流图。

(3)确定数据流图具有变换特性还是事物特性。

(4)确定输入流和输入流的边界,从而孤立出变换中心。

(5)完成“第一级分解”。

(6)完成“第二级分解”。

(7)使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。

名词解释:

1.HIPO图:是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。

2.模块独立:是模块化、抽象、信息隐藏和局部化概念的直接结果。

3.耦合:是对一个软件结构内不同模块之间互连程度的度量。

4.内聚:内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。

5.抽象:人们在实践中认识到,在现实世界中一定事物。状态或过程之间总存在着某些相似的方面。把这些相似方面集中和概括起来,暂时忽略它们之间的差异,这就是

抽象。

6.模块:模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。7.模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定功能满足用户的需求。

8.变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当

数据流图具有这些特征时,这种信息流就叫作变换流。

9.事务流:这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划分为一类特殊的数据流,称为事务流。

第六章

填空题:

1.在设计人机界面的过程中,必须充分重视并认真处理好(系统响应时间)、(用户帮助设施)、(出错信息处理)和(命令交互)等四个问题。

2.程序的三种基本控制结构是(顺序)、(选择)和(循环)。

3.在详细设计阶段,采用的工具有(程序流程图)、(盒图)、(PAD图)、(判定表)、(判定树)和(过程设计语言)。

4.详细设计的目标包括(逻辑上正确地实现每个模块的功能)和(设计出的处理过程应该尽可能简明易懂)。

5.Jackson图既可用表达程序结构,也可用表达(数据结构)。

6.衡量系统响应时间的两个重要属性是(长度)和(易变性)。

7.用户界面设计指南主要包括(一般交互指南)、(信息显示指南)和(数据输入指南)。8.当算法中包含多重嵌套的条件选择时,使用(判定表)能够清晰的表示复杂的条件组合与应作的动作的对应关系。

名词解释:

1、结构化程序设计:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制

结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

更全面的说结构程序设计是尽可能少用GO TO语句的程序设计方法。最好仅在检测出错误时才使用GO TO语句,而且应该总是使用前向GO TO语句。

简答题:

1.在设计用户帮助设施时,必须解决哪5个主要问题?

(1)在用户与系统交互期间,是否在任何时候都能获得关于系统任何功能的帮助信息?(2)用户怎样请求帮助?

(3)怎样显示帮助信息?

(4)用户怎样返回到正常的交互方式中?

(5)怎样组织帮助信息?

2.简述用户界面的评估周期?

完成初步设计之后就创建第一级原形;用户试用并评估该原型,直接向设计者表述对界面的评价;设计者根据用户意见修改设计并实现下一级原型。上述评估过程持续进行下去,知道用户感到满意,不需要再修改界面设计时为止。

3、简述Jackson方法的5个步骤?

(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。

(3)用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图

的相应层次画一个处理框;第二,根据输入数据结构中剩余的每个数据单元所处的

层次,在程序结构图的相应层次分别为它们画上对应的处理框;第三,根据输出数

据结构中剩余的每个数据单元所处的层次,在程序结构图的相应的层次分别为它们

画上对应的处理框;

(4)列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

(5)用伪码表示程序。

相关主题
文本预览
相关文档 最新文档