当前位置:文档之家› 软件工程导论复习资料(汇总)

软件工程导论复习资料(汇总)

软件工程导论复习资料(汇总)
软件工程导论复习资料(汇总)

第一章概述

1.IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据的完整集合

2.程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。

3.文档是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和运行阶段的维护。

4.软件的特点:

·软件是一种逻辑产品,无法看到软件本身的形态。

·软件产品的生产主要是开发研制,没有明显的制造过程。

·软件产品在使用过程中,不存在磨损、消耗、老化等问题。

·软件产品的开发主要是脑力活动,还未完全摆脱手工开发方式,大部分产品是“定做的”,生产效率低。

·软件产品的成本昂贵,软件费用不断增加。

·软件对硬件和环境有不同程度的依赖性。

·软件是复杂的。

5.软件的分类:

·传统意义上从计算机系统角度看,软件分为两大类:系统软件和应用软件。·从计算机软件用途来划分三类,大致分为服务类、维护类和操作管理类。6.软件危机(重点):

·如何开发软件以满足软件日益增长的需求

·如何维护数量不断增长的已有软件。

7.软件危机表现形式:

·对软件开发成本和研制进度的估计常常很不精确。

·“已完成”的软件不能满足用户的要求。

·软件产品质量差,可靠性得不到保证。

·软件产品可维护性差

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

·软件开发生产率提高的速度远远跟不上计算机应用速度普及深入的趋势。8.产生软件危机的原因

·软件是计算机系统中的逻辑部件。

·软件开发的管理困难。

·软件开发费用不断增加,维护费用急剧上升

·软件开发技术落后。

·生产方式落后

·开发工具落后,生产效率缓慢

9.解决软件危机途径

·对计算机软件有正确认识,清除“软件是程序”的错误观念

·使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法·有良好的组织、严密的管理,各类人员要相互配合,共同完成任务

·开发和使用好的软件工具。

10.软件工程的定义:是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。

11.软件工程基本目标:

·降低软件开发成本

·满足用户要求的全部软件功能

·符合用户要求,令用户满意的软件性能

·具有较好的易用性、可重用性和可移植性

·较低的维护成本,较高的可靠性

·按合同要求完成开发任务,及时交付用户使用

12.软件工程的研究内容的基本原理:

·软件开发技术:主要研究软件开发方法、软件开发过程、软件开发工具和技术。·软件开发过程管理:主要研究软件工程经济学和软件管理学。

13.软件工程的基本原理:

·用分阶段的生存周期计划严格管理

·坚持进行阶段评审

·实行严格的产品控制

·采用现代程序设计技术

·结果应能清楚地审查

·开发小组人员应该少而精

·承认不断改进软件工程实践的必要性

14.软件工程的发展史:

·程序设计时代

·程序系统时代:IBMDE 360OS==》转折点

·软件工程时代

15.软件过程的定义:把输入转化为输出的一组彼此相关的资源和活动

16.软件生存周期的定义:某一软件项目从被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间

17.软件生存周期:

·计划时期:(1)问题定义(2)可行性研究

·开发时期:(1)需求分析(2)概要设计(3)详细设计(4)编码(5)测试·运行时期:(1)维护

18.软件开发模型的定义:为整个软件建立的模型

19.软件开发模型及优缺点和应用范围:

(1)瀑布模型:

A、定义:存周期各个活动规定为依线性顺序连接的若干阶段的模型。

B、适用范围:适合于需求明确的软件项目的开发。

C、优点:使开发过程可以在分析设计、编码、测试和维护的框架下进行。过程具有系统性,可控性。克服了软件开发的随意性。

D、缺点:a.开始阶段用户很难精确的提出产品需求,修改需求十分普遍。b.项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。c.采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”特别是项目的开始和结束

(2)快速原型模型:

A、适用范围:用户有时间和精力参与原型的开发并与开发者之间进行频繁交流的项目,而且项目容易进行模块化

B、优点:增进软件开发人员和用户对系统服务的理解,用户最容易获取信息和发表自己的意见

C、缺点a、对于大型软件项目,原型模型需要足够的人力资源以建立足够的原型组。

b、原型模型要求开发者和客户在一段时间内共同完成原型系统的开发,如果任何一方没有实现承诺,会导致原型开发的失败。

c、如果系统难以模块化,建造原型所需构件就有问题。

(3)增量模型:

A、适用范围:适合于软件要求不明确,设计方案有一定风险的软件项目。

B、优点:增量模型具有较大的灵活性

C、缺点:与新增量构件集成到现在软件中时,所形成的产品必须是可测试的(4)螺旋模型:

A、适用范围:适合于大规模高风险的软件项目开发

B、优点:使开发人员和用户都能更好的了解每个螺旋周期演化存在的风险,从而做出相应的对策

C、缺点:由于它是风险驱动的,因此使用该模型需要有相当丰富的风险评估经验和这方面的专门技术

(5)喷泉模型,统一过程(RUP)模型,变换模型,净室模型

(6)基于构件的开发模型

(7)统一过程(RUP)模型

(8)基于形式化的开发模型

20.传统软件工程方法步骤:

·采用结构化分析、结构化设计和结构化实现完成软件开发的各项任务

·把软件生存周期划分成若干个阶段,然后按顺序完成各个阶段的任务

·每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准

·在每一阶段结束之前,必须正式地进行严格的技术审查和管理复审

21.面向对象软件工程开发过程的特点:开发阶段界限模糊,开发过程逐步求精,开发活动反复迭代

22.传统软件工程和面向对象软件工程的分析方法对比:

开发思想对比,传统软件工程:以功能划分为导向;面向对象开发方法是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。

开发过程方面,传统软件工程开发过程包括需求设计、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。

第二章可行性研究

2.1(重点)

·可行性研究的目的:用最小的代价再尽可能短的时间内确定问题是否能够解决。·评价可行性的四个方面:经济、技术、操作、法律。

①经济可行性:首先要进行成本----效益分析。从开发所需的成本和资源,潜在的市场前景等方面进行估算,确定要开发的项目是否值得投资开发,既要分析再整个软件生存周期中所花费的代价与得到的效益之间的度量。

②技术可行性:对要开发的项目的功能、性能和限制条件进行分析,评价系统所采用的技术是否先进,使用现在的技术能否实现系统达到的目的,现在技术人员的技术水平是否具备等。

③操作可行性:系统的操作方式再这个应用范围内是否行得通。

④法律可行性:新系统的开发会不会在社会上或政治上引起侵权,可能导致的责任,有无违法问题:应从合同的责任、专利权、版权、等一系列权益方面予以考虑。

2.2

·可行性研究步骤:(7步)

1.复查并确定系统规模和目标

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

3.建立新系统的高层逻辑模型

4.导出和评价各种方案

5.推荐可行方案

6.草拟初步的开发计划

7.编写可行性研究报告提交审查

2.3(重点)

·系统流程图基本符号(5种)及常见的11种其他系统符号,详见P19(要认识)

P20 例题2.1;

·系统流程图习惯画法目的:使信息在图中自顶向下或从左向右流动。

2.4

·成本----效益分析目的:从经济角度评价开发一个新的软件项目是否可行。·系统成本包括 1.开发成本。2.运行维护成本。

·系统效益包括:①有形效益 1.货币的时间价值。2投资回收期。3纯收入。

②无形的社会效益

·货币时间价值例题P20、21

F=P*(1+n*i) 计算求:1.货币时间价值。2.投资

P=F/(1+n*i) 回收期。3.纯收入

2.5 可行性研究报告的主要内容P21

1.引言。

2.可行性研究前提。

3.对现有系统的分析。

4.对所建设系统的分析(1.经济可行性分析。2.技术可行性分析。3.社会因素的可行性分析)

5.其他与设计有关选择方案。

6.其他与设计有关的专门问题。

7.结论意见

第三章软件需求分析

3.1

○1需求分析的任务是:确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰而且具体的要求。

○2需求分析是:完整地、严密的、描述应当“做什么”的一种过程。

○3需求分析具体任务:1、确定对系统的综合要求

2、分析系统的数据需求

3、建立软件的逻辑模型

4、编写软件需求规格说明书

5、需求分析评审

○4需求分析步骤:1、需求获取:调查研究

2、需求提炼:分析建模

3、需求描述:编写SRS

4、需求验证

3.2

○1获取需求的方法 1、客户访谈

2、建立联系分析小组

3、问题分析与确认

○2Andriole提出、判断是否用原型法来帮助获取需求

1、需求已经建立,并且可以预见是相当稳定吗?

2、软件开发人员和用户已经理解了目标系统的应用领域吗?

3、问题是否可被模型化?

4、用户能否清楚地确定基本的系统需求?

5、有任何需求是含糊的吗?

6、已知的需求中存在矛盾吗?

3.3

○1功能分解方法体现了“自顶向下,逐步求精”的思想;

本质上是用过程抽象的观点来看待需求,符合传统程序设计人员的思维特征。○2四种需求分析方法

1、功能分解方法

2、结构化分析方法

3、信息建模方法

4、面向对象方法

3.4(重点!考点!)

○1结构化分析定义:结构化分析就是使用数据流图、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的称为结构化说明书的目标文档。

○2SA描述工具:

1、数据流图

2、数据字典

3、描述加工逻辑的结构化语言、判定表和判定树

○3数据流图(DFD)(必须会画必须认识):

1、DFD定义:数据流图是SA方法中用于表示系统逻辑模型的一种工具。它以直观的图形清晰地描述系统数据的流动和处理过程,图中没有任何具体的物理元素,主要强调的是数据流和处理过程,即使不是计算机专业技术人员也很容易理解。数据流图是软件开发人员和用户之间很好的通信工具。

2、DFD各种符号意义:

→箭头表示数据流

○圆或椭圆表示变换数据的处理

□方框表示数据的三远点或终点

= 双杠或单杠表示数据存储(文件)

* 星号表示数据之间的关系(同时存在)_

+ 加号表示“或”关系

○+表示只能从中选一个(互斥的关系)

3、DFD基本原则

(1)数据流图中所有的符号必须是前面所述的4种基本符号和附加符号

(2)数据流图的主图(顶层)必须含有前面所述的4种符号,缺一不可

(3)数据流图主图上数据流必须封闭在外部实体之间(外部实体可以是一个,也可以是多个)

(4)加工(变换数据处理)至少有一个输入数据流和一个输出数据流,反映出次加工数据的来源与加工的结果

(5)任何一个数据流子图必须与它父图上的一个加工相对应,父图中有几个加工。就可能有几张子图,两者的输入数据流和输出数据流必须一致,即所谓“平衡”

(6)图上的每个元素都必须有名字(流向数据存储或从数据存储流出的数据流除外)

4、DFD步骤

(1)先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了;

(2)找出外部实体的输入和输出数据流;

(3)在图的边上画出系统的外部实体;

(4)从外部实体的输出流(源点)出发,按照系统的逻辑需求,逐步画出一系列变换数据的加工,知道找到外部实体处所需的输入流(终点),形成数据流的封闭(5)按照上述步骤画出所有子图

5、DFD注意事项

(1)画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题

(2)画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。

(3)画数据流图不是画程序流程图,二者有本质的区别。数据流图只描述”做什么”,不描述“怎么做”和做的顺序,而程序流程图表示对数据进行加工的控制和细节

(4)不能期望数据流图一次画成,而是要经过各项反复才能完成

(5)描绘复杂系统的数据流图通常很大,对于画在几张纸上的图很难阅读和理解、一个比较好的方法就是分层的描绘这个系统。在分层细画时,必须保持信息的连续性,父图和子图要凌恒,每次只细画一个加工。

○4DD(数据字典)

(1)DD定义:DD是对数据流图中所包含元素的定义集合

(2)DD作用:主要作用是供人查阅,并应以一种准确的,无二义性的说明方式为系统的分析、设计及维护提供有关元素的一致的定义和详细的描述。

(3)DD内容:由4类条目的定义组成:数据流、数据流分量(数据基本项)、数据存储(文件)和加工(处理)

(4)DD符号:

A.=:表示被定义为或等价于或由……..组成

B.+:表示“与”(和),用来连接两个数据元素

C.[…|…]:表示“或”,对[ ]中列举的数据元素可任选其中一项

D.{…}:表示“重复”,对{…}内容可以重复使用

E.m{…|…}n或者{…}

m n或者n

m

{…}

表示{…}中内容至少出现m次,最多出现n次。其中n,m为重复

次数的上、下限。

F.(…) 表示“可选”,对(…)中的内容可选、可不选。

○5加工逻辑描述(p34)------重点

1、结构化语言

2、判定表

3、判定树

3.5 三种圆型工具:层次方框图、维纳图、IPO图(能认识、分辨、区别)

第四章软件总体设计

4.1 软件总体设计的目标和任务

总体设计基本目标:

(1)总体设计阶段的基本目标就是回答“概括的说,系统应该如何实现?”这个问题。

(2)总体设计的另一项任务是设计软件的总体结构,即确定系统中的每个程序是由哪些模块组成的,每个模块的功能及模块和模块之间的接口、调用关系等,但所有这些都不要求涉及模块内部过程的细节。

4.2 软件结构设计准则

A、软件设计体系结构准则:

(1)体系结构是对复杂失误的一种抽象。

(2)体系结构在一定的时间内保持稳定。

(3)良好的体系结构意味着普通、高效和稳定。

B、软件模块设计准则:

(1)降低模块之间的耦合性,提高模块的内聚性。

(2)模块结构的深度、宽度、扇出和扇入应适当。

(3)模块作用范围应该再控制范围内。

(4)模块接口设计要简单,以便降低复杂程度和冗杂度。

(5)设计功能可预测并得到验证的模块。

(6)适当划分模块规模,以保证其独立性。

C、深度、宽度、扇出、扇入的定义(重点):

深度指软件结构中模块的曾次数;

宽度指同一层次中最大的模块个数;

扇出指一个模块直接调用的模块数目;

扇入指有多少个上级模块直接掉用它。

4.3 软件设计的概念和原理

A、模块的定义:

模块是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合,如高级语言中的过程、函数、子程序等。

B、模块化的定义、目的、致力于:

(1)模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。

(2)模块化的目的是为了降低软件复杂度,使软件设计、测试、维护等操作变得简易。运用模块化技术还可以防止错误蔓延,从而提高系统的可靠性。

(3)软件模块化的过程必须致力于降低模块与外部的联系,提高模块的独立性,才能有效降低软件复杂性,使软件设计、测试、维护等工作变得简单和简易。C、模块的两个特征及特征的定义(重点):

(1)模块最重要的两个特征有两个:一是抽象,二是信息隐蔽。

(2)抽象就是抽出事物本质的共同的特征而暂时忽略它们之间的细节差异;

信息隐蔽原理设计和确定模块原则应该使得包含在模块内的信息(过程和数据),对于不需要这些信息的模块是不能访问的。

D、局部化的定义:

局部化就是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局

部量就是局部化的一个例子。显然局部化有助于信息隐蔽。

E、6种耦合和6种内聚及其详细解释、作用等:(重点!考点!多多理解)

耦合:

(1)无直接耦合:如果两个模块分别从属于不同模块的控制和调用,它们之间不传递任何信息,没有直接的联系,相互独立,称无直接耦合。

(2)数据耦合:如果两个模块之间有调用关系,相互传递的信息以参数的形式给出,而且传递的信息仅仅是简单的数据,则称为数据耦合。

(3)标记耦合:如果两个模块之间传递的是数据结构,而且被调用模块不需要作为参数传递过来的整体数据结构,只需要使用数据结构其中一部分数据元素,则称为标记耦合。

(4)控制耦合:当一个模块调用另一个模块时,传递的信息控制了该模块的功能,则称为控制耦合。

(5)公共环境耦合:两个或多个模块共用一个数据环境,称为公共环境耦合。(6)内容耦合:一个模块直接访问另一个模块的内部数据,一个模块不通过正常入口而转入另一个模块内部,一个模块有多个入口,这都属于内容耦合。

内聚:

(1)偶然内聚:模块内的元素之间没有意义上的联系。

(2)逻辑内聚:将逻辑上相同或相似的一类任务放在同一个模块中,每次被调用时,由传送给模块的参数来确定该模块应完成的某一功能。

(3)时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。

(4)通信内聚:如果模块中所有元素都使用相同的输入数据或者产生相同的输出数据,则称为通信内聚。

(5)顺序内聚:一个模块中各个处理元素都紧密相关于同一个功能个且必须顺序执行,此模块的块内联系属顺序内聚。

(6)功能内聚:模块内所有元素属于一个整体,共同完成一个单一功能,缺一不可,则称为功能内聚。

4.5 软件结构设计的图形工具(要求会画图)

A、结构图(*重点考点*)P58;

B、层次图 P58;

C、HIPO图 P59。

4.6 结构化设计方法(A和B二选一8分大题,要求会画图)

A、变换型数据流图的画法及其转变为软件流程图方法;

B、事务型数据流图的画法;

C、结构化设计方法步骤:

(1)复审数据流图,必要时可进行修改或精化;

(2)确定数据流图类型(变换型/事务型);

(3)分解上层模块,设计中下层模块结构;

(4)根据软件结构设计准则对软件结构求精并改进;

(5)导出接口描述和全程数据结构;

(6)复审,如果有错,转入修改完善,否则进入下一阶段详细设计。

第五章软件详细设计

一.详细设计

(1).根本目的

详细设计的根本目的就是确定应该具体实现所要求的系统。

(2).具体目的

具体的就是为软件结构图中每一个模块确定采用的算法和块内数据结构,用某种选定

的详细设计工具更清晰地描述,从而在编码阶段可以把这些直接翻译成某种设计语言书写的源程序。

二.详细设计工具(重点考点必须会画P68-P72 8分大题)

流程图的优点:

易学、表达算法直观。

流程图的缺点:

(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早考虑控制流程,而不去考虑程序的整体结构;

(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制,容易造成非结构化的程序结构;(3)程序流程图不易表示数据结构和层次结构。

N-S图(盒图)优点

(1)功能域表达明确,功能域从盒式图上可以明显地看出来;

(2)很容易确定局部和全部数据的作用域;

(3)不可能随意转移控制;

(4)很容易表达模块的层次结构,并列或嵌套关系

(5)使得软件设计人员遵守结构化程旭设计的规定,自然地养成良好的程序设计风格。

N-S图(盒图)的缺点:

(1)容易画不下

(2)不易修改

PAD(问题分析图)优点:

(1)用PAD图设计出来的程序必然是结构化程序。

(2)PAD图所描绘的程序结构身份清晰,图中最左面的竖线是程序的主线,即第一层结构。

(3)PAD图的符号支持自顶向下。逐步求精的方法,左边层次的内容可以抽象,然后利用def从逐步细化。

(4)用PAD图表示的程序逻辑易读易懂易记使用方便

(5)即可表示程序逻辑,也可表示描绘数据结构

(6)可自动生成程序‘

PDL图(过程设计语言)特点:

(1)所有关键字都有固定语法,易便提供数据化得控制结构数据说明和模块化的特征。

(2)描述处理过程的说明性语言没有严格的语法限制

(3)具有数据说明限制,即包括简单的是数据结构,有包括复杂的数据结构。

(4)具有模块定义和调用机制。

三.人机界面设计

系统响应有两个属性,分别是长度和易变性。

帮助设施时解决以下五个问题

(1)在用户和系统交互期间,是否在任何时候都能获得关于系统任何功能的帮助信息?有两种选择:提供部分(全部)功能的帮助信息。(2)用户怎样请求帮助?有三种选择:帮助菜单特殊功能键和HETP的命令。

(3)怎样显示帮助信息?有两种选择:在独立的窗口中,指出某个参考文档和在屏幕固定位置显示简短提示

(4)用户怎样返回到正常的交互方式中?屏幕上的返回按钮和功能键(5)怎样组织帮助信息?平面结构信息的层次结构和超文本结构。

出错信息处理的五个问题

(1)信息应该用用户可以理解的术语描写问题;

(2)信息应该提供有助于从错误中恢复建设性的意见

(3)信息应该指出错误可能导致那些负面后果

(4)信息应该伴随这视觉和听觉上的提示

(5)信息不能带有指责色彩。

命令交互考虑以下问题

(1)是否每个菜单选项都有对应的命令

(2)采用何种命令方式?(控制序列功能键键入命令)

(3)学习和记忆难度的命令有多大?忘记了命令怎么办?

(4)用户是否可以定制或缩写命令?

人机界面设计原则

1.让用户驾驭软件,而不是软件驾驭用户‘

2.尽可能减少用户的记忆负担。

3.保持界面的一致性。

人机界面设计过程

(1)建立任务的目标和意图‘

(2)目标和意图确定后,建立需求规格模型‘

(3)以界面需求模型为依据创建用户界面模型

(4)用户试用并评估该界面模型

(5)设计者根据用户的意见修改设计并实现下一代模型

(6)不断进行下去,以界面模型创建进行界面设计迭代。

第六章软件编码

6.1 程序设计语言的分类

6.1.1 基础语言:(1)FORTRAN语言(2)COBOL语言(3)BASIC 语言(4)ALGOL 语言

6.1.2 结构化语言:(1)Pascal语言(2)C语言(3)Ada语言

6.1.3 面向对象语言:(1)c++语言(2)java语言

按代划分:

第一代:1GL主要特征是面向机器的。机器语言和汇编语言是1GL的代表。

第二代:2GL主要代表是FORTRAN,ALGOL,COBOL,BASIC。

第三代:3GL也称现代编程语言,分三大类:通用高级语言,面向对象高级语言和专用语言。主要代表是Pascal,C,Ada等和C++,Objective-C,Smalltalk等,以及专用语言Lisp,PROLOG等。

第四代:4GL主要特征是:友好的用户界面;非过程性;高效的程序代码;完备的数据库;应用程序生成器。

6.2 程序设计语言的选择

选择标准:

1.待开发软件的应用领域

2.用户的要求

3.软件的运行环境

4.软件开发人员的知识

5.软件的可移植性要求

6.3 程序设计风格

6.3.1 程序内部文档

1.标识符的选取

2.程序的注解

3.程序的布局

6.3.2 数据说明

数据说明次序标准化;

多变量按照字典序排列;

复杂数据结构用注解说明。

6.3.3 语句构造

1.不要为了节省存储空间把多个语句写在一行。

2.尽量避免复杂的条件测试,尤其是减少对“非”条件的测试。

3.避免大量使用循环嵌套语句和条件嵌套语句。

4.利用圆括号使逻辑表达式或算术表达式的运算次序清晰直观。

5.变量说明不要遗漏,变量的类型,长度,存储及初始化要正确。

6.让不是编码人的人看懂代码。

6.3.4 输入/输出

1.对所有输入数据都要进行校验。

2.检查输入项重要组合的合法性。

3.保持简单的输入格式。

4.输入一批数据时,使用数据或文件结束标志,不要用计数来控制,更不能

要求用户自己指定输入项数或记录数。

5.人机交互式输入时,要详细说明可用的选择范围和边界值。

6.当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入

语句的要求一致。

7.输出报表的设计要符合用户要求,输出数据尽量表格化,图形化。

8.给所有的输出数据加标志,并加以必要的注解。

6.3.5 效率

1.代码效率

2.存储效率

3.输入/输出的效率

效率问题应该记住的原则:

(1)效率是属于性能的要求,因此应该再软件需求分析阶段确定效率方面的要求;

(2)良好的设计可以提高效率;

(3)提高程序的效率和好的编码风格要保持一致,不应该一味追求程序的效率而牺牲程序的清晰性和可读性。

第七章软件测试(重点)

7.1

·测试目的及定义:

①软件测试是为了发现错误而执行程序的过程

②一个好的测试用例能够发现至今尚未发现的错误

③一个成功的测试时发现了至今尚未发现的错误的测试.

·注意事项:测试只能证明程序中存在错误,但不能证明程序中不存在错误·测试原则(7条)

1)测试用例既要有输入数据,又要有对应的输出结果。

2)测试用例不仅要选用合理的输入数据,还应选择不合理的输入数据。

3)除了检查程序是否做了它应该做的工作,还应该检查程序是否做了它不应该

做的工作。

4)应该远在测试开始之前就制定测试计划。

5)测试计划、测试用例、测试报告必须作为文档长期保存。

6)可以把Pare to原理应用到软件测试中。但关键问题是如何找出这些可疑的

有错模块并进行彻底测试。

7)程序应该避免测试自己的程序。

7.3

·软件测试方法分为动态测试和静态测试。

静态测试(静态分析):人工测试和计算机辅助静态分析

动态测试有根据测试用例的设计方法不同,分为黑盒测试和白盒测试。

a.黑盒测试:黑盒技术着重测试软件功能。设计测试用例时,需要研究需求

说明和总体设计说明中的有关程序功能或输入、输出之间的关系等信息,从而与测试后的结果进行分析比较。

b.白盒测试:是以程序的内部逻辑结构为基础设计测试用例。

注意事项:无论使用哪一种测试方法,对于一个大的软件系统,完全彻底测试在实际中都是不可能的。

7.4 白盒测试和黑盒测试:

·白盒技术逻辑覆盖

⑴语句覆盖:

⑵判定覆盖:

⑶条件覆盖:

⑷判定条件覆盖:

⑸条件组合覆盖

⑹路径覆盖

※知道每种覆盖标准的强弱程度P89 P90 P91

·循环覆盖分为单循环和嵌套循环

·基本路径测试步骤5步(P92 P93)

理解记忆(白盒总8分大题考点重点考试题目应该是写出测试用例)

·黑盒技术方法(不考大题考概念了解一下P93要求自己理解)

⑴等价类划分法

⑵边界值分析法

⑶错误推测法

⑷因果图法

7.5

A、测试过程:(3类信息)

⑴件配置⑵测试配置⑶测试工具

B、单元测试:

任务:模块接口测试、模块局部数据结构测试、模块出错处理通路测试、模块中重要的执行路径测试和模块边界条件测试。

方法:再单元测试时,为被测试模块设计驱动模块和桩模块。

C、集成测试:

⑴由模块组装程序时的方法:渐增式测试和非渐增式测试

渐增式测试基本思想:把下一个要测试的模块同已经测试好的模块结合起来进行测试。在组装过程中变组装边测试。

非渐增式测试基本思想:先分别测试各个模块,再把所有的模块按设计要求组装在一起进行测试。

⑵集成测试方法:(P100 p102)

自顶向下集成方法的过程及优点

自底向上集成方法的过程及优点

集成方法的选择决定于软件的特点。有时也决定任务的进度。一般将两种方法结合起来使用。

D、确认测试:从质量的角度,再功能、性能、可靠性、易用性等方面对软件做全面的质量检测。

·评价结果两种:合格软件和不合格软件

·确认测试后软件配置报告用户所需的 (1)操作手册;(2)设计资料如设计说明书等;(3)源程序清单;(4)测试计划;(5)测试报告;(6)设计的测试用例;(7)用户手册等

·审查目的:保证软件开发的所有文件资料齐全、正确,文档与程序完全一致,为软件投入运行后的软件维护工作做好充分的准备。

E、系统测试

定义:系统测试是将经过单元测试、集成测试、确认测试以后的软件,作为计算机系统中的一个组成部分,需要与系统中的硬件、外部设备、支持软件、数据及操作人员结合起来,在实际运行环境下对计算机系统进行一系列的严格有效的测试来发现软件的潜在问题,以保证组成部分不仅单独的正常运行,而且在系统各部分统一协调下也能正常运行。

F、α测试(内部版本)和β测试(试用版本)的定义P103

7.6

调试的目的任务:对错误定位,分析并找出原因改正错误。

常用调试技术:

⑴简单的调试技术:a.输出存储器中的全部内容;b.特定部位插入输出语句;c.

使用自动调试工具。

⑵消去原因法:归纳法和演绎法(P104图7.7和7.8 理解就好)

7.7

测试的终止条件:

1)根据程序的可靠性制定测试的终止条件

2)测试的覆盖率要达到一定的目标

3)规定至少要查出的错误数量

第八章软件维护

8.1

○1维护的定义:软件维护是指软件系统交付使用以后,为了改正软件运行错误,或者因满足新的需求而加入新功能的修改软件的过程

○24种维护的定义加以区分(重点 p108)

1、改正性维护

2、适应性维护

3、完善性维护

4、预防性维护

○3特点

1、软件维护是软件生存周期中延续时间最长、工作量最大的一个阶段。

2、软件维护不仅工作量大、任务重,而且维护不当的话,还会产生一些意想不到的副作用,甚至引起新的错误。软件维护活动直接影响软件产品的质量和使用寿命。

3、软件维护活动实际上是一个修改和简化了的软件开发活动。

4、尽管软件维护需要的工作量很大,但是长期以来,软件维护工作却一直未收到软件设计者们的足够重视。与软件设计和开发阶段相比,有关软件维护方面的文献资料很少,相应的技术手段和方法也很缺乏

8.2(看图理解概念)

○1结构化维护与非结构化维护(p110图)

○2维护组织各部分组成(p111图)

○3维护工作流程(p112图)

○4维护工作的组织管理(p113图)

8.3

○1软件的可维护性定义:软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度

○2衡量可维护性7个标准

1、可理解性

2、可测试性

3、可修改性

4、可靠性

5、可移植性

6、可使用性

7、效率

○3提高可维护性的方法

1、建立明确的软件质量目标和优先级

2、使用提高软件质量的技术和工具

3、选择便于维护的程序设计语言

4、采取明确的、有效的质量保证审查措施

5、完善程序的文档

8.4

○1维护困难的表现:

1、读懂别人的程序是很困难的,而文档的不足更是增加了这种难度。

2、文档的不一致性是软件维护困难的又一个因素,主要表现在各个文档之间的不一致性及文档与程序之间的不一致性,从而导致维护人员不知所措,不知怎样进行修稿。这种不一致性是由于开发过程中文档管理不严造成的,开发中经常会出现修改程序而忘了修改相关的文档,或者某一个文档修改了,却没有修改与之相关的其他文档等现象。解决文档不一致性的方法就是要加强开发工作中文档的版本管理

3、软件开发和软件维护在人员和时间上存在差异。

4、软件维护不是一件吸引人的工作。

○2维护的副作用(重点):

1、修改代码的副作用

2、修改数据的副作用

3、修改文档的副作用

○3维护代价:

1、系统的大小

2、程序设计语言

3、系统年龄

4、数据库技术的应用

5、先进的软件开发技术

6、其他一些因素

○4维护成本

1、有形(花了多少钱)

2、无形

(1)一些看起来是合理的修复和修改请求不能及时安排,是的客户不满意

(2)变更的结果把一些潜在的错误引入正在维护的软件,是的软件整体质量下降

(3)当必须把软件人员抽调到维护工作中去时,就使得软件开发工作受到干扰8.5

○1再工程和逆向工程定义

1、软件再工程是变更系统(或程序)的内部机制或是系统(或程序)的数据结构,而不变成其功能性的活动

2、检查改进对象系统,按新的系统对系统进行重构,进而实现其新模式

3、软件逆向工程就是分析程序,力图在比源代码更好的抽象层次上建立程序表示的过程,逆向工程是一个设计恢复的过程

○2再工程好处

1、再工程可帮助软件机构降低软件演化的风险

2、再工程可帮助软件机构补偿软件的投资

3、再工程可使得软件易于进一步变更

4、再工程有着广阔的市场

○3软件再工程技术(p121-p122)

1、改进软件

2、理解软件

3、获取、保护及扩充软件的已有知识

第九章面向对象方法

1.UML的构成 P139-140

2.UML的特点和用途 P141

特点:

(1)统一的标准

(2)面向对象

(3)可视化,表示能力强大

(4)独立于过程

(5)易于掌握应用

3.面向对象方法学的优点和不足

面向对象方法学的主要优点:

(1)与人类习惯的思维方式一致;

(2)软件稳定性好;

(3)可重用性好;

(4)较易

(5)可维护性好,易于测试开发大型软件产品;

面向对象方法学的不足之处:

(1)相对面向过程而言比较麻烦,需要写更多的代码。

(2)占用空间比较多,程序效率比较低,如多态等特性会降低性能。

(3)创建对象实例的过程往往是非常耗时的工作,因此一些认为“万事皆对象”的语言对于一些简单类型的操作性能比较低。

(4)对系统动态特征表述不充分(主要是整体动态特征),且反映系统整体功能特征的能力较差。如需要一定的软件支持环境,只能在现有业务基础上进行分类整理,不能从科学管理角度进行理顺和优化,初学者不易接受、难学。

(5)面向对象方法学4 大特性(抽象、封装、继承和多态)在一定程度上避免了不合理的操作,并能有效地阻止错误的扩散,减轻了维护工作量,但是也加大了测试的难度,给软件测试带来不便。

4.P143UML定义语言规则:命名、范围、可见性、完整性、执行;4种类型通用机制:规范说明、修饰、通用划分、扩展机制。

5.视图 P144 用例、逻辑、进程、实现、部署。

6.面向对象基本概念:(1)对象{包括两大要素:属性(用来描述对象的静态特征)和操作(用来描述对象的动态特征)}

(2)类{UML 中类图的描述通常表示为长方形,其中,长方形又分3 个部分,分别用来表示类的名字、属性(静态)和操作(动态)}

(3)消息{通常一个消息的关键要素包括消息的发送者、消息的接收者、消息所要求的具体服务及其参数、消息的应答等}

(4)封装{作用有3 个方面:一是使对象形成接口和实现两个部分;

二是封装的信息隐藏将所声明的功能(行为)与内部实现(细节)分离;三是封装可以保护对象,避免用户误用}

7.对象、类及类之间关系的分析

(1)类与对象的关系 {对象又称为是类的一个“实例”,类又称为是对象的“模板”类是静态的,类的语义和类之间的关系在程序执行之前已经定义,但对象是动态的,在程序执行过程中可以动态地创建和删除对象}

(2)类与类之间的关系

<1>继承{继承是子类自动地共享父类中定义的数据和方法的机制,从子类抽取共同通用的特征形成父类的过程也叫做泛化;继承可以表示类与类、接口与接口之间的继承关系,或类与接口之间的实现关系;继承具有传递性}

<2>多态性{多态性的实现有两种形式:编译时的多态性;运行时的多态性}

<3>关联{关联可以是单向的、双向的}

<4>依赖关系{关于关联关系和依赖关系有一个简单的判断原则:某个类以成员变量的形式出现在另一个类中,二者是关联关系;某个类以局部变量的形式出现在另一个类中,二者是依赖关系}

<5>实现{实现是类和接口之间最常见的一种关系,一个类实现接口(可以是多个)的功能}

<6>聚集与组合{整体拥有各部分,部分与整体不是相同的生存期,如整体不存在了,部分还存在,称为聚集;部分与整体具有同样的生存期,如整体不存在了,部分也会随之消失,称为组合}

(3)类与类之间的关系{继承与实现体现的是一种类与类或类与接口之间的纵向关系;组合、聚集、关联、依赖四者之间的强弱关系依次为:组合>聚集>关联>依赖}

8.典型的面向对象开发方法

(1)Booch 方法

(2)Coad/Yourdon方法(简称Coad 方法或OOAD 方法)

(3)OMT/Rumbaugh 方法

(4)OOSE 方法/Jacobson 方法

(5)Wirfs-Brock 方法

OOAD 适用于小型系统的开发;OOSE适用于商务处理方面的应用开发;Wirfs―Brock 方法不明确区分分析和设计任务,从评估客户规格说明到设计完成,是一个连续的过程。

9.UML中提供了静态图和动态图,共计13种,以及5种视图

静态图:类图、对象图、用例图、构件图、部署图、包图、组合结构图;动态图:状态图、顺序图、通信图、活动图、计时图、交互概览图;视图:用例视图、逻辑视图、进程视图、实现视图、部署视图。

第10章面向对象的分析

1.建立对象类图原则:简化原则、分层理解原则、关注关键点得原则。知道类图怎么画。

2.建立顺序图主要的两个标记:活动对象、活动对象之间的通信消息,知道顺序图怎么画。

3.建立通信图主要包括:对象、链接、消息。知道通信图怎么画。

4.建立状态图状态机及状态图的定义、状态、时间、转换、触发事件、监护条件、动作、状态图的建模步骤、建立状态图。

5.建立活动图活动图与流程图、活动图与状态图、活动图的组成及UML图形的表示、活动的分解、活动图建模技术。对象流中对象的特点P174

6.建立构件图构件、接口、对构件和构件关系建模的用途、构件图。

7.建立部署图部署图的要素、如何开发部署模型、几种部署图建模方法。

8.系统用例模型 P182

9.系统动态行为模型P183 顺序通信、状态活动。系统物理实现模型构件图、部署图。

第十一章面向对象的设计与实现

1.P205面向对象程序设计语言的选择语言特点和技术特点。

2.P213 StarUML的用例图、类图、包图,构件图和部署图,交互图和状态图。

3.P230 静态结构模型的建立 {关联、泛化、集聚、依赖}。

4.P232 动态行为模型的建立。

5.P236 系统物理模型的建立。

第十二章开发工具StarUML

1.StarUML的用例图、类图、包图

(1)用例图: 在软件开发的生存周期中,用例图主要用在系统需求分析阶段和系统设计阶段。包含三个方面:一个(一组)用例、参与者、参与者与系统中的用例之间的交互及用例之间的关系。

(2)类图:类图在系统的整个生存周期内都有效。在系统分析阶段,用于显示角色和提供系统行为的实体的职责;在系统设计阶段,用于捕捉组成系统体系的类结构;在编码阶段,提供系统功能实现的依据。

(3)包图:包是一种组合机制,把各种各样的模型元素通过内在的语义连在一起,成为一个整体就叫做包,构成包得模型元素成为包的内容。

2.顺序图和通信图

顺序图强调消息发送的时间顺序,通信图强调接受和发送信息的对象的组织结构。

3.状态图和活动图

构件图和部署图都是物理方面的建模。

状态图和活动图都是描述一个类的对象所有可能的生命历程的模型,通过对类对象的生存周期建立模型来描述对象岁时间变化的动态行为,也可以用于描述用例、通信和方法的动态行为,是展示状态与状态转换的图。

4.构件图与部署图

(1)构件图对系统的静态现实图进行建模,显示一个系统的构件在屋里设计过程中所映射的类和对象的配置,一个构件图可以表示一个系统全部或者部分的组建体系。

(2)部署图表示系统的实际布局情况,与系统的逻辑结构不同,它描述系统在网络上的物理部署。

5.用例之间的联系最常见的有《Uses》《Include》《Extend》。绘制交绘图的目的是验证领域分析的结果和用例视图的正确性。

软件工程导论期末考试试题和答案

1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 3.A、软件开发工作的基础B、软件生存周期的开始 4.C、由系统分析员单独完成的D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 6.A、明确的需求定义B、完整的生命周期 7.C、较长的开发时间D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 9.A、改正性维护B、适应性维护 10.C、完善性维护D、预防性维护 11.一般说来,投入运行的软件系统中有错误(A )。

软件工程导论复习资料全

名词解释: 1.软件生命周期模型 软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。 软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等 2. 模块独立性 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且 接口简单。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 3. 软件的可维护性 软件可维护性指软件能够被理解、校正、适应及增强功能的容易程度。 4. 软件工程 软件工程指用科学知识和技术原理来定义、开发、维护软件的一门学科。或者说,软件工程就是运用工程学的基本原理和方法来组织管理软件的生产、研究、开发、管理、维护的过程、方法和技术。 5.数据字典 字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的\无二义性的说明方式为系统的分析\设计及维护提供了有关元素的一致的定义和详细 的描述。 6、静态测试 静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。 7、面向对象:面向对象OO=类+对象+继承+通信 8、需求分析 需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。 9、软件危机 软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。 10、软件生存周期 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等。 简答: 1.软件生存周期有哪几个阶段? ①可行性研究②需求分析③总体设计④详细设计⑤编码⑥测试⑦维护 2.白盒测试法有哪些逻辑覆盖标准? ① 语句覆盖②判定覆盖③条件覆盖④判定/条件覆盖⑤条件组合覆盖⑥点覆盖、边覆盖、路径覆盖 3.软件的维护有哪4种类型?①校正性维护②适应性维护③完善性维护④ 预防性维护。4.软件成分的重用有哪3个级别?:①代码重用②设计结果重用③分析结果重用 5.设计任务管理子系统有哪7个任务?

软件工程导论复习笔记

简答题: 1.什么是软件? 答:软件是: (1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。 (2)数据结构,使得程序可以合理利用信息。 (3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用。 2.How do software characteristics differ from hardware characteristics? 软件的特性是如何不同硬件的特性? 答:(1)软件是设计开发的,而不是传统意义上生产制造的(2)软件不会磨损,但会退化 (3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的 3.What do people mean by the expression "software crisis"? 人们是怎样理解“软件危机”这个短语的?

答:软件危机主要表现在两个方面: (1)无法满足日益增长的对软件的需求。 (2)难以满足对已有的软件系统的维护需求。 软件危机出现的原因: (1)由于软件生产本身存在着复杂性 (2)与软件开发所使用的方法和技术有关 “软件工程”的概念用工程化的思想来克服软件危机。 4.What myths about software still exist ? 软件仍然存在着什么神话? 答:管理者的神话;用户的神话;开发者的神话。 简答题: 1.What are the three generic phases of software engineering? 软件工程的三个一般的阶段是? 答:定义阶段、开发阶段、维护阶段 (软件生存周期的三个阶段:软件定义、软件开发、软件维护) 2.What are the names of the five levels of the SEI Capability Maturity Model?

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 1、具有抽象性 2、没有明显的制造过程 3、软件的维护比硬件的维护要复杂得多 4、对计算机系统有着不同程度的依赖性 5、尚未完全摆脱手工艺的开发方式 6、软件本身是复杂的 7、软件成本相当昂贵 8、相当多的软件工作涉及到社会因素软件的发展: 程序设计、程序系统、软件工程 软件危机: 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机的问题: 如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机表现: 1.开发成本难以控制,进度不可预计; 2.软件系统的质量和可靠性很差,难以满意; 3.软件文档相当缺乏,软件系统不可维护; 4.软件开发生产率很低,软件产品供不应求。 5.软件产品成本十分昂贵。

软件危机产生原因: 1、软件本身的特点 2、对软件开发与维护存在许多错误认识和做法 3、软件开发与维护的方法不正确 解决软件危机途径: 1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。 2、研究和推广成功的软件开发技术和方法。 3、开发和使用好的软件工具。 软件生命周期: 软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境: 源程序编辑,编译或解释,链接,调试和运行工具的集合 软件工程环境: 软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合 二、软件工程: 软件工程定义: 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。 软件工程性质: 涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管

2019最新软件工程导论期末考试题库及答案

2019最新软件工程导论期末考试题库及答案 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符 号表达了系统中各种元素之间的_____信息流动_____情况。4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集 成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合” 的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。

软件工程导论期末复习

第一章软件工程学概述 1.什么是软件危机(概念) 在计算机软件的开发和维护过程中所遇到的一系列严重问题 2.软件工程学科出现的主要原因:软件危机的出现 3.什么是软件工程?(概念) ①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。 4.简述结构化范型和面向对象范型的要点,并分析他们的优缺点 目前使用得最广泛的软件工程方法学(2种): ⑴传统方法学:也称为生命周期方法学或结构化范型。 优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。 缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 ⑵面向对象方法学 优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作; 促进了软件重用。 5.软件生命周期每个阶段的基本任务 问题定义:准确地回答“要解决的问题是什么” 可行性研究:确定问题是否值得去解决 需求分析:准确地回答“系统必须做什么” 总体设计:①设计出实现目标系统的几种可能的方案 ②确定程序由哪些模块组成以及模块间的关系 详细设计:把解法具体化(设计出程序的详细规格说明) 编码和单元测试:写出正确的容易理解、容易维护的程序模块 综合测试:通过各种类型测试(及相应的调试)使软件达到预期的要求 软件维护:通过各种必要的维护活动使系统持久地满足用户的需要 软件生命周期由软件定义、软件开发和运行维护(也成为软件维护)3个时期组成 ①软件定义时期:问题定义、可行性研究和需求分析 ②软件开发时期:总体设计、详细设计、编码和单元测试、综合测试 ③软件维护时期

软件工程导论期末考试题

一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

软件工程导论复习资料解答

软件工程导论复习题汇总 一、选择题 1.软件重用的单位是A。 A.软件模块B.功能 C.系统D.语句 2.软件生存周期借用了 D 中产品生存周期的概念。 A.计算机科学B.需求 C.数学D.工程 3.项目开发计划是 D 文档。 A.技术性B.管理性 C.设计D.需求分析 4.在结构化分析(SA)中, C 与数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。 A.模块图B.E-R图 C.数据字典D.程序流程图 5.为了提高模块的独立性,模块之间最好是A 。 A.数据耦合B.控制耦合 C.公共耦合D.内容耦合 6.对一个开始是模糊的模块进行处理过程分解时,下面说法错误的是 D 。 A.用顺序方式对过程分解,确定各部分的执行顺序 B.用选择方式对过程分解,确定某个部分的执行条件 C.用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件 D.对处理过程仍然模糊的部分反复使用循环方式对过程进行分解 7.软件测试的关键问题是A 。 A.如何选择测试用例B.如何采用综合策略 C.如何验证程序的正确性D.如何组织软件评审 8.软件生存期的 D 工作与软件的可维护性有密切的关系。 A.详细设计阶段B.编码阶段 C.测试阶段D.每个阶段 9.增量模型属于一种 B 模型。 A.整体开发B.非整体开发 C.较早产生工作软件D.灵活性差 10.下列说法正确的是 D 。 A.动态模型指出发生了什么 B.对象模型确定什么时候发生 C.功能模型确定发生的客体 D.动态模型描述的系统属性是触发事件、事件序列、状态、事件与状态的组织11.用类库这种机制和结构来实现 D 中的信息共享。 A.同一应用B.不同应用 C.同一个类D.不同类

大连理工大学城市学院软件工程导论期末考试复习重点

软件工程导论重点 第一章重点: 软件的概念:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 软件危机概念:软件危机暴发于上个世纪六十年代末。 主要表现为:软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求。软件开发周期长、成本高、质量差、维护困难。 软件工程概念: 概括地说,软件工程是指导计算机软件开发和维护的工程学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程的目标: 软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。 基本目标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用 软件生存期概念和包含内容: 软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个过程为软件生命周期或软件生存期。 软件生存期分为三个时期 软件定义 软件开发 运行维护

软件工程的方法: 软件工程包含技术和管理两方面的内容,是技术和管理紧密结合所形成的工程学科。 通常将软件开发全过程中使用的一整套技术方法的集合称为方法学(methedology),也称为范型(paradigm)。 目前使用最广泛的软件工程方法学:传统方法学(结构化方法学),面向对象方法学。 软件工程三要素: 三要素:方法、工具和过程。 第二章重点: 生存期模型有哪些: ?瀑布模型 ?快速原型模型 ?增量模型 ?螺旋模型 ?喷泉模型 ?统一过程 ?基于构件的开发模型 ?敏捷过程 前四种面向过程后四种面向对象 给一个模型,判断出是哪一模型的 第三章重点: 结构化分析方法的概念: 传统的分析建模方法称为结构化分析(structured analysis,SA)方法。 三大建模:(未完待续!!!) 功能建模: 功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。功能模型

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

软件工程导论(第6版)知识点总结、复习课_图文.

复习课 --------酷爱YC 第一章 1、什么是软件危机,什么是软件工程 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:(1如何开发软件,以满足对软件日益增长的需求;(2如何维护数量不断膨胀的已有软件。 软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件,并有效地维护它。 2、完整的软件配置由哪些内容组成 软件配置主要包括程序,文档和数据等成分。 3、软件生命周期分为哪3个时期和8个阶段,每个阶段的任务(工作分别是什么,重要性如何

概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成 1、软件定义(系统分析。 软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。 (1 问题定义,确定系统要解决的问题是什么。成果:关于问题性质、工程目标和工程规模的报告。 (2 可行性研究,确定问题是否有可用的、能行得通的解(包括:技术、经济、操作、社会等方面的可行性。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。成果:可行性研究报告。 (3 需求分析,确定软件系统的必须实现的功能、必须达到的性能、必须满足的运行环境要求。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。成果:软件需求规格说明书(SRS,内容包括:系统的逻辑模型;系统(子系统的名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。 2、软件开发。 开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。 (1 总体设计(概要设计,回答“怎样实现目标系统”。

软件工程导论最全复习总结

1、软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的 严重问题。 2、软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行的 程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。 3、软件工程学包含3个要素:方法、工具、过程。 4、目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。 5、软件工程方法学的软件过程基本上可以用瀑布模型来描述。 6、瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。 7、Rup把软件生命周期划为:初始、精化、构建、移交阶段。 8、可行性研究的三方面:技术可行性、经济可行性、操作可行性。 9、数据流图(DFD是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中 所经受的变化。 10、数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定义 的集合。 11、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格, 没有流程图,数据字典也难以发挥作用。

12、需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准 确的描述软件需求。 13、9、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 14、ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角矩 形表示属性,用直线把实体和其属性连接。 15、验证软件需求的正确性:一致性、完整性、现实性、有效性。 总体设计又称 16、总体设计的基本目的是回答“概括地说,系统应该如何实现?”, 为 概要设或初步设计。 17、模块的独立程度可以有两个定性标量度量:内聚和耦合。 18、软件测试的目标:(1测试是为了发现程序中的错误而执行程序的过程;(2好的 测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3成功的测试是发现可至今为止尚未发现的错误的测试。 19、软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运 行。 20、软件可靠性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。

软件工程导论期末试题

软件工程导论期末考试试题 一.选择(20分) 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法

8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 二.填空(20分) 21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素 表达了系统中各种元素之间的(信息流动)情况。 22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。 23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先 策略和(宽度优先策略) 。 24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图 来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。 25.汇编语言是面向(机器) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。 26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。 27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。 28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题)报告。 29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向 维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。 30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选 择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。三.判断(10分)

软件工程导论复习试题库完整

a(1)在软件工程中,白盒测试法可用于测试程序的内部结构。此方法将程序看作是 A) 路径的集合B)循环的集合C)目标的集合D)地址的集合 c(2)在下述哪一种测试中,测试程序的设计者必须接触到源程序 I.功能测试Ⅱ. 结构测试 A)均不须B)只有ⅠC)只有ⅡD)Ⅰ和Ⅱ a(3)检查软件产品是否符合需求定义的过程称为 A)确认测试B)集成测试C)验证测试D)验收测试 c(4)下述陈述中,哪一个不是软件健壮性的度量指标? A)失败后重新启动所需的时间B)引起失败的时间所占的百分比 D)失败前的平均工作时间D)在一次失败中数据恶化的概率 b(5)对软件是否能达到用户所期望的要求的测试称为 A) 集成测试B) 有效性测试C) 系统测试D) 验收测试 a(6)在面向数据流的软件设计方法中,一般将信息流分为 A)变换流和事务流B)变换流和控制流 C)事务流和控制流D)数据流和控制流 d(7)软件需求说明书是软件需求分析阶段的重要文件,下述哪个(些)是其应包含的内容 I.数据描述Ⅲ. 模块描述 II.功能描述Ⅳ. 性能描述 A)ⅡB)Ⅲ和ⅣC)Ⅰ、Ⅱ和ⅢD)Ⅰ、Ⅱ和Ⅳ (8)软件测试一般分为三类,即 I.静态测试Ⅱ. 动态测试Ⅲ. 正确性测试

设计测试用例对程序进行测试,应属于 A)ⅠB)ⅡC)Ⅰ和ⅡD)Ⅲ (9)模块独立性是由内聚性和耦合性来度量的,其中内聚性是度量____,耦合性是度量____。 A)模块间联系程度B)模块的功能强度 C)信息隐蔽程度D)模块的复杂程度 (10)软件设计中一般将用到图形工具,下述哪种(些)工具可用作设计的图形工具 I.结构图Ⅱ. 实体关系图Ⅲ. IPO图 II.Ⅳ. 流程图Ⅴ. N-S图 A)Ⅰ和ⅡB)Ⅲ和ⅣC)Ⅰ、Ⅲ、Ⅳ和ⅤD)全部 A (2)C (3)A (4)C (5) B (6)A (7)D (8)B (10) C (11)试判断下列论述中哪个(些)是正确的 I.软件系统中所有的信息流都可以认为是变换流 II.软件系统中所有的信息流都可以认为是事务流 III.事务分析和变换分析的设计步骤基本类似 A)ⅠB)ⅡC)ⅢD)Ⅰ和Ⅲ (12)软件的有效性测试是验证软件的运行是否达到用户的期望,用户的期望应体现于A)详细设计报告B)软件需求说明书 C)总体设计报告D)有效性测试要求 (13)软件设计中的软件过程其主要描述的是 A)模块间关系B)模块操作细节 C)模块控制方法D)模块类型

软件工程导论第五版复习重点(必考题)

(最后部分为每年必考题) 第一章 1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的. 2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。 3. 产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件 2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。4.对象彼此间仅能通过发送消息互相联系。 5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要) 6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。 7. 微软过程把软件生命周期划分为成5个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。 第二章 1.可行性包括:技术可行性,经济可行性,操作可行性。 2. 系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。4. 书库流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示。 5. 用系统流程图描绘一个系统时,系统的功能和实现每个功能的具体方案是混在一起的。有数据元素组成的数据的方式只有下述3种基本类型:顺序(即以确定次序连接两个或多个分量)。选择即从两个或多个可能的元素中选取一个重复即把指定的分量重复零次或多次

软件工程导论复习重点总结很全(第六版)(精)

第1章软件工程学概述 1.1 软件危机 1.1.1 软件危机的介绍 软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两方面的问题: 如何开发软件,满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机的典型表现: (1对软件开发成本和进度的估计常常很不准确; (2用户对“已完成的”软件系统不满意的现象经常发生; (3软件产品的质量往往靠不住; (4软件常常是不可维护的; (5软件通常没有适当的文档资料; (6软件成本在计算机系统总成本中所占的比例逐年上升; (7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 1.1.2 产生软件危机的原因 (1与软件本身的特点有关 (2与软件开发与维护的方法不正确有关

1.1.3 消除软件危机的途径 对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。 1.2 1.2.1 软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考 软件工程的本质特性: 软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效地支持它的用户

《软件工程导论》期末考试试题和答案2

得分评卷人 一、填空题(每空1分,共20分) 1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 得分评卷人 二、单项选择题(每小题2分,共10分) 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 A、软件开发工作的基础 B、软件生存周期的开始 C、由系统分析员单独完成的 D、由用户自己单独完成的 3.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 A、明确的需求定义 B、完整的生命周期 C、较长的开发时间 D、熟练的开发人员

软件工程导论知识点概要

1.1软件危机 软件危机的表现 软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。 1)成本难以估计、成本高。 2)软件开发进度估计不准确,项目延期比比皆是。 3)软件质量得不到保证(功能和性能)。 4)用户对“已完成的”软件系统不满意的现象经常发生。 5)维护非常困难(多样性、复杂性、副作用)。 6)软件通常没有适当的文档。 7)软件产品供不应求,跟不上计算机普及速度。 产生软件危机的原因 (1)及软件本身的特点有关(逻辑复杂,成本高,风险大,难于维护)。 (2)及软件开发及维护的方法不正确有关: 软件≠程序(软件是程序、数据及相关文档的完整集合)急于求成=拔苗助长(软件从定义、开发、使用和维护、废弃要经历一个漫长的生命周期) 各自为阵无方法学(应要组织良好、管理严密、各类人员协作共同完成的工程项目) 1.2软件工程定义 软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。 软件工程包括技术和管理两方面的内容,是技术及管理紧密结合所形成的工程学科。 软件工程的特性: 1. 软件工程关注于大型程序的构造 (传统的程序设计技术和工具是支持小型程序设计的)

2. 软件工程的中心课题是控制复杂性(问题分解) 3. 软件经常变化(考虑将来要发生的变化) 4. 开发软件的效率非常重要(寻求更好、更有效的工具) 5. 和谐地合作是开发软件的关键(运用标准和规程) 6. 软件必须有效地支持它的用户(软件要服务于用户) 7. 在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品 软件工程的7条基本原理 1.用分阶段的生命周期计划严格管理 2.坚持进行阶段评审 3.实行严格的产品控制 4.采用现代程序设计技术 5.结果应能清楚地审查 6.开发小组的人员应该少而精 7.承认不断改进软件工程实践的必要性 软件工程方法学 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。 软件工程方法学包含3个要素:方法、工具和过程。 1.3软件生命周期 每阶段的基本任务: 1. 问题定义 2. 可行性研究 3. 需求分析 4. 总体设计 5. 详细设计 6. 编码和单元测试 7. 综合测试 8. 软件维护

最新软件工程导论期末考试试题

软件工程导论期末考试试题 一.选择 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法 8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B )

中国石油大学(华东)软件工程导论复习资料

软件工程的定义 : ◆传统定义 为了经济地获得可靠的和能在实际机器上有效运行的软件,确立并应用健全的工程原理 ◆ IEEE 定义 软件工程是 . 将系统的、规范的和可计量的方法应用于软件的开发、操作和维护,即将工程化应用于软件 软件的构成要素 : 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。 程序:是按事先设计的功能和性能要求执行的指令序列; 数据:是使程序能正常操纵信息的数据结构; 文档:是与程序开发、维护和使用有关的图文材料。 软件的特点: 1. 软件是一种逻辑实体,具有抽象性; 2. 是开发的,而不是制造的 3. 具有柔性 4. 不磨损 软件工程的范围: 每个软件项目都是为某种商业需要而设计的 已经成为基于计算机的系统和产品演变过程中的关键因素 已经从专门问题的解决方案和分析信息的工具,转变为完整的结构良好的行业 涉及广泛的技术和应用领域,然而所有软件的演变都遵循着 30 多年来一成不变的规律 软件工程为构建高质量的软件提供基础框架 软件工程的三个要素是方法、工具、过程。

瀑布模型的特点: 1. 阶段间具有顺序性和依赖性 2. 推迟实现的观点 3. 质量保证的观点 快速原型模型的特点: ◆快速原型模型先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。 ◆快速实现和提交一个有限的版本,可以应付市场竞争的压力。 螺旋模型的特点: ◆对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标; ◆减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险; ◆更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。 ◆螺旋模型的主要优势在于它是风险驱动的,但这也是其一个弱点,要求开发人员具有丰富的风险评估经验和这方面的专门知识。 螺旋模型主要适用于内部开发的大规模软件项目 增量模型的特点: ◆采用瀑布模型和快速原形模型等开发软件时,目标都是一次就把一个满足所有需求的产品提交给用户。而增量模型则是一个构件接一个构件地提交,因此能在较短的时间内向用户提交可完成部分工作的产品; ◆逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品; ◆开发人员既要把软件看作一个整体,又要把它分解成合适的构件序列,每个构件本质上都独立于另一个构件,这一点较难做到 喷泉模型特征: ◆喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程 ◆软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。

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