软件工程导论知识点概要

软件工程导论知识点概要
软件工程导论知识点概要

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.4软件过程

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

通常包括四种基本的过程活动:(1)软件规格说明;(2)软件开发;(3)软件确认;(4)软件演进

软件过程模型:

软件开发程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

几种典型的模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、RUP等。

软件过程模型的选择基于项目和应用的性质、采用的方法工具以及需要的控制和交付的产品。

瀑布模型(Waterfall Model ):

传统瀑布模型:规定了各项软件工程活动,包括:制定开发计划、需求分析和说明、软件设计、程序编码、测试、运行维护。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

特点:

1、阶段间具有顺序性和依赖性。

2、推迟实现。

3、质量保证。

优点:

1、可强迫开发人员采用规范的方法(例如,结构化技术);

严格地规定了每个阶段必须提交的文档;要求每个阶段交出的

所有产品都必须经过质量保证小组的仔细验证。

2、瀑布模型的成功在很大程度上是由于它基本上是一种

文档驱动的模型。

3、瀑布模型适合于用户需求明确、完整、无重大变化的

软件项目开发!!

问题:

1、不适应需求经常发生变更的环境:在项目的开发过程

中,变更可能会引起混乱。所以,有人形象地把采用线性模型

进行商业软件工程称之为“在沙滩上盖楼房”。(适合于用户需

求明确、完整、无重大变化的软件项目开发)

2、线性顺序模型每一步的工作都必须以前一阶段的输出

为输入,这种特征会导致工作中发生“阻塞”状态。

3、由于瀑布模型几乎完全依赖于书面的规格说明,很可

能导致最终开发出的软件产品不能真正满足用户的需要。

4、是一种整体开发模型,程序的物理实现集中在开发阶

段的后期,用户在最后才能看到自己的产品。在可运行的软件

产品交付给用户之前,用户只能通过文档来了解产品是什么样

的。

快速原型模型(Rapid Prototype Model)

步骤:第一步进行试验开发,得出产品的“原型”,其目的在于弄清软件需求并探索可行性;第二步在原型的基础上开发出较为满意的软件产品。

该模型克服了瀑布模型的部分缺陷,减少了软件需求不明确给开发工作带来的风险。

前提:

(1)是用户必须积极参与原型的建造,建造原型仅仅是为了定

义需求,之后就必须被全部抛弃(至少是部分抛弃),实际的软件必须在充分考虑到软件质量和可维护性之后才被开发。从这个意义上说,原型模型又往往被称为“抛弃原型模型”。

(2)是必须有快速开发工具可供使用。

增量模型 (Incremental Model)

是一种渐进地开发逐步完善的软件版本的模型,该模型一般首先开发产品的基本部,然后再逐步开发产品的附加部分。

整个软件产品被分解成许多个增量构件。每个构件由多个相互作用的功能模块构成,并能够完成特定的功能。

该增量模型表明:必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计,因此风险较小。

优点:是十分有用的一种模型。在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确有显著的效果;缩短产品提交时间都能够起到良好的作用。

困难:

1、在把每个新的增量构件集成到现有软件体系结构中时,

必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。

2、开发人员既要把软件系统看作整体。又要看成可独立的

构件,因此相互矛盾。除非开发人员有足够的技术能力协调好。

3、多个构件并行开发,具有无法集成的风险

螺旋模型 (Spiral Model)

优点:对于高风险的大型软件,螺旋模型是一个理想的开发方法。

缺点:风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大。

适合场合:

主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好地识别和对待每一个演化级别上的风险。只有内部开发的项目,才能在风险过大时方便地中止项目。

如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。

喷泉模型 (Fountain Model)

特点:喷泉模型的各阶段均采用了“对象”这一统一范式,整个过程看起来像喷泉从喷出到落下再喷出的周而复始过程产生的光滑水柱,体现了软件创建所固有的迭代和无间隙的特征。

适合场合:喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。

Rational统一软件开发过程

RUP软件开发生命周期是一个二维的软件开发模型。横轴代表时间,体现生命周期特征;纵轴代表工作流,体现了开发过程的静态结构。

RUP中的软件生命周期在时间上被分解为四个顺序的阶段:初始、细化、构造和移交。每个阶段围绕着9个核心工作流分别

迭代。

适合场合:可开发或大或小、分布在各个领域的项目,表明了RUP的多功能性和广泛适应性。适合于需求不稳定、不全面的软件项目开发。

1.5小结

软件=程序+数据+文档

软件危机: 原因,现象,办法(软件工程学)

软件工程:指导计算机软件开发和维护的一门工程科学

软件工程3个要素:方法、工具和过程。

软件生命周期:定义,开发,运行维护

软件过程: 瀑布模型,快速原型模型、增量模型、螺旋模型、喷泉模型、RUP等

2.1 可行性研究目的:

用最小的代价在尽可能短的时间内确定问题是否能够解决。2.2 可行性研究的主要内容

(1) 技术可行性

(2) 经济可行性

(3) 操作可行性

(4) 法律可行性

(5) 社会可行性

2.3 数据流图

1、一种图形化技术,它描绘信息流和数据从输入移动到输

出的过程中所经受的变换。

2、它只是描绘数据在软件中流动和被处理的逻辑过程,是

系统逻辑功能的图形表示。

3、设计数据流图时只需考虑系统必须完成的基本逻辑功能,

完全不需要考虑怎样具体地实现这些功能。

画数据流图的方法:

1、自顶向下,逐步求精

2、先画顶层DFD,描绘系统的整体逻辑概貌;顶层流图仅

包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据。

3、其次画中间层流图:对上层父图的处理的细化,形成子

图。底层流图是指其加工不需要在做分解的数据流图,它处在最底层。

注意:数据流图应该分层,并且在把功能级数据流图细化后得到的处理超过9个时,应该采用画分图的办法。当把一个处理分解为一系列处理时,分解前和分解后的输入输出数据流必须相同!

数据流图用途:

1、画数据流图的基本目的是利用它作为交流信息的工具。

2、分析员把他对现有系统的认识或对目标系统的设想用数

据流图描绘出来,供有关人员审查确认。

3、由于在数据流图中通常仅仅使用4种基本符号,而且不

包含任何有关物理实现的细节,因此,绝大多数用户都可以理解和评价它。

4、数据流图着重描绘系统所完成的功能,其另一个主要用

途是作为辅助物理系统的分析和设计的工具。

2.4 小结

1、可行性研究的任务: 技术, 经济,社会

2、可行性研究过程: 8 步骤

3、数据流图: 源点或终点,处理,数据存储和数据流

4、数据字典: 是分析阶段的工具,包括流,元素,存储,处

理4类元素组成。

5、成本/效益分析:从经济角度判断是否继续投资于这项工程

的主要依据。

3.1 需求分析的具体任务

确定对系统的综合要求:

1、功能需求

2、性能需求

3、可靠性和可用性需求

4、出错处理需求

5、接口需求

6、约束

7、逆向需求

8、将来可能提出的要求

分析系统的数据要求:

建立数据模型,用图形化的工具描述数据结构(如层次方框图和warnier图)。

导出系统的逻辑模型

数据流图、实体-联系图、状态转换图、数据字典等。

修正系统开发计划:

由分析过程准确地估计系统的成本和进度,修正以前制定的开发计划。

3.2 与用户沟通获取需求的方法

1、访谈

2、面向数据流自顶向下逐步求精

3、简易的应用规格说明技术

4、快速建立软件原型(它应该实现用户看得见的功能,原型

要具有快速并容易修改的特点)

3.3 数据规范化

规范化的目的是:

1、消除数据冗余,即消除表格中数据的重复;

2、消除多义性,使关系中的属性含义清楚、单一;

3、使关系的“概念”单一化,让每个数据项只是一个简单的

数或字符串,而不是一个组项或重复组;

4、方便操作。使数据的插入、删除与修改操作可行并方便;

5、使关系模式更灵活,易于实现接近自然语言的查询方式。

3.4 状态转换图(状态图)

通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

状态

1、状态规定了系统对事件的响应方式。

2、系统对事件的响应,既可以是做一个(或一系列)动作,也

可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。

3、可分为:初态(初始状态);终态(最终状态);中间状态

4、一张状态图中只能有一个初态,而终态则可以有0至多个。事件事件就是引起系统做动作或(和)转换状态的控制信息。

符号

1、初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表

2、中间状态用圆角矩形表示,分成上、中、下3个部分。

3、活动表的语法格式:事件名(参数表)/动作表达式

(1)“事件名”可以是任何事件的名称。在活动表中经常

使用下述3种标准事件:entry,exit和do。

(2) entry事件指定进入该状态的动作,exit事件指定退

出该状态的动作,而do事件则指定在该状态下的动作。需要

时可以为事件指定参数表。

(3)动作表达式描述应做的具体动作。

4、事件表达式的语法:事件说明[守卫条件]/动作表达式

(1)事件说明:事件名(参数表)

(2) 动作表达式:当状态转换开始时执行该表达式。

(3) 守卫条件是一个布尔表达式,如果既有事件说明又有

守卫条件,则当事件发生且守卫条件为真是状态转换才发生,

如果只有守卫条件没有事件说明,则守卫条件为真时,发生状

态转换。

5.1 设计过程

1. 设想供选择的方案;

2. 选取合理的方案;

3. 推荐最佳方

案;4.功能分解;5. 设计软件结构;6. 设计数据库;7. 制定测试计划;8. 书写文档;9. 审查和复审

5.2 设计原理

模块化

1、把程序划分成独立命名且可独立访问的模块,每个模块完

成一个子功能,这些模块集成起来构成一个整体,可以完成指定的功能以满足用户的需求。

2、模块是由边界元素限定的相邻程序元素的序列,而且有一

个总体标识符代表它。模块是构成程序的基本构件。

3、过程、函数、子程序和宏等,都可作为模块。

4、面向对象方法学中的对象是模块,对象内的方法(或称为

服务)也是模块。

模块化的好处:

1、可以降低软件开发的难度;

2、可以使程序结构清晰,增加易读性和易修改性;

3、模块化还有利于提高代码的可重用性及团队合作开发

大型软件的可行性。

抽象

抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将现实世界中具有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的细节差异。结构化程序中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。

逐步求精

定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

好处:

1、降低了软件开发中每个阶段的工作难度;

2、简化了软件的设计和实现过程;

3、有助于提高软件的可读性、可测试性和可维护性;

4、在程序设计中运用抽象的方法还能够提高代码的可重用性。信息隐藏和局部化

1、信息隐藏:设计和确定模块,使得一个模块内包含的信

息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。

目的:主要是为了提高模块的独立性,减少将一个模块中的错误扩散到其他模块的机会。模块之间的信息传递只能通

过合法的调用接口来实现。信息隐蔽对提高软件的可读性和可

维护性都是非常重要的。

2、局部化:是指把一些关系密切的软件元素物理地放得彼

此靠近。如模块中的局部数据元素是局部化的一个例子。

3、局部化和信息隐藏概念是密切相关的,局部化有助

于信息隐藏

模块独立

模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。

1、耦合:不同模块之间互连程度的度量。

2、内聚:模块功能强度的度量。

3、模块独立是模块化、抽象、信息隐藏和局部化概念的直接

结果。

3、优点:比较容易开发出有效模块化(即具有独立的模块)的软件;独立的模块比较容易测试和维护。

4、耦合:

(1) 数据耦合:若两个模块之间仅通过模块参数交换信息,

且交换的信息全部为简单数据,则称这种耦合为数据耦合。耦

合性最低。

(2) 控制耦合:若模块之间交换的信息中包含有控制信息

(尽管有时控制信息是以数据的形式出现的),则称这种耦合为

控制耦合。控制耦合是中等程度的耦合,它会增加程序的复杂

性。

(3) 特征耦合:当把整个数据结构作为参数传递而被调用

的模块只需要使用其中一部分数据元素。

(4) 公共环境耦合:若两个或多个模块通过引用公共数据

相互联系。

(5) 内容耦合:一个模块访问另一个模块的内部数据;一

个模块不通过正常入口而转到另一个模块的内部;两个模块有

一部分程序代码重叠;一个模块有多个入口(这意味着一个模

块有几种功能)。

(6) 尽量使用数据耦合,少用控制耦合和特征耦合,限制

公共环境耦合的范围,完全不用内容耦合。

5、内聚:低内聚:偶然内聚,逻辑内聚,时间内聚

中内聚:过程内聚,通信内聚

高内聚:顺序内聚,功能内聚

6、高内聚,低耦合

6.1 结构程序设计

1、结构程序设计技术:是实现质量要求的基本保证,是详

细设计的逻辑基础。

2、结构程序设计定义:

①一个程序的代码块仅仅通过顺序、选择和循环这三种

基本的控制结构进行连接;

②并且每个代码块只有一个入口和一个出口。

-3、只用三种基本的控制结构(顺序,选择,循环)就能实现任何单入口单出口的程序。从而实现结构程序设计。

4、三种基本结构的共同特点:

(1) 只有一个入口;

(2) 只有一个出口;

(3) 结构内的每一部分都有机会被执行到;

(4) 结构内不存在“死循环”(无终止的循环)。

5、结构程序设计的特点:

(1) 由三种基本结构顺序组成的,可以解决任何复杂的问

题。

(2) 程序内不存在无规律的转向,只在基本结构内才允许

存在分支和向前或向后的跳转。

6.2 过程设计的工具

(1)过程设计是设计模块的详细步骤(算法),是详细设计阶段应完成的主要工作。

(2)过程设计的工具描述程序处理过程的工具。

程序流程图的优缺点:

主要优点:对控制流程的描绘很简明直观、易于理解,便于初

学者掌握。

主要缺点:

(1) 本质上不是逐步求精的好工具。

----改进:PAD图

(2) 用箭头代表控制流,描述程序时可以随意跳转。

----改进:N-S图

(3) 不易表示数据结构。

----改进:PAD图

(4) 嵌套的条件选择表示不清。

----改进:判定树、判定表

PAD图(问题分析图)

PAD图的特点:

(1) 能展现算法的层次结构;

(2) 表示形式直观易懂;

(3) 既可用于表示程序逻辑,又可用于描述数据结构;

(4) 支持自顶向下,逐步求精的过程。

判定表

当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图等都不易清楚地描述,然而,判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。

判定表的优缺点:

优点:判定表能够简洁而无歧义地描述处理规则。可以对判定表进行校验或化简。

缺点:并不适于作为一种通用的设计工具,直观性不够。判定树

判定树是用来表达加工逻辑的一种工具。比判定表更直观,是一种常用的系统分析和设计工具。

判定树的优缺点:

优点:比判定表更直观。

缺点:

(1) 不够简洁,数据元素重复多次地写。

(2) 画判定树时分枝的次序对简洁程序有影响。PDL程序设计语言

(1) 是一种非形式化、比较灵活的混杂语言。也称为伪码。

(2) 用于描述模块内部过程的具体算法,以便在开发人员之间

比较精确的进行交流。

PDL的优缺点:

优点:

(1)可以作为注释直接插入到源程序中。有利于PDL

和源程序保持一致性。

(2) PDL编写方便。

(3)可以由自动处理程序将PDL生成程序代码。

缺点:

(1) 不如图形工具形象直观。

(2) 描述复杂的条件组合与动作间的对应关系时,不

如判定表清晰简单。

6.5 程序复杂程度的定量度量

McCabe方法

基本原理:根据程序控制流的复杂程度定量度量程序的复杂程度(称为程序的环形复杂度)。

采用“流图”:仅描绘程序的控制流程,完全不表现对数据的具体操作及分支或循环的具体条件。

基本步骤:

(1) 将程序流程图或PDL等映射为流图。

(2) 基于流图计算环形复杂度,以定量度量程序的复杂程度。

流图

定义:

—仅仅描绘程序的控制流程

基本符号:

—圆:表示结点,代表一条或多条语句。

—箭头线:边

—区域:由边和圆围成的面积

基本原则:

—合并原则:顺序处理框和菱形判定框、顺序处理框序列分别合并映射成流图中的一个结点。

—分解原则:复合条件分解为若干个简单条件,每个简单条件映射成流图中一个结点。

—其他情况下的框映射成流图中的一个结点。

计算环形复杂度的方法:

(1) 流图中的环形复杂度V(G)=区域数。

(2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边

的条数,N是结点数。

(3) 流图G的环形复杂度V(G)=P+1,其中,P是流图中判

定结点的数目。

环形复杂度的用途:

(1) 可以用于比较两个算法的优劣。对测试难度的一种定

量度量。

(2) 作为模块规模的精确限度。环形复杂度高的程序往往

是最困难、最容易出问题的程序。实践表明,模块规模以V(G)

≤10为宜。

7.1 软件测试基础

根本目标

尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。

软件测试准则

(1) 所有测试都应该能追溯到用户需求。

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

(3) 把Pareto原理应用到软件测试中。(测试发现的错误中的

80%很可能是由程序中20%的模块造成的。)

(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试

(5) 穷举测试是不可能的。

(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试

工作。

测试方法

测试步骤

(1) 模块测试;(2) 子系统测试;(3) 系统测试;(4) 验收测试;

(5) 平行运行

7.2 白盒测试技术

逻辑覆盖以程序的逻辑结构为基础设计测试用例的技术。

(1)语句覆盖使程序中每个语句至少执行一次。

(2)判定覆盖使每个判定的真假分支都至少执行一次。

(3)条件覆盖使每个判定的每个条件的可能取值至少执行一

次。

(4)判定/条件覆盖每个条件的所有可能取值至少执行一次;

使每个判定的真假分支都至少执行一次。

(5)条件组合覆盖所有可能的条件取值组合至少执行一次。满

足条件组合覆盖的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。覆盖标准相对较强,但是也不意味着所有的路径都能被执行到。

(6)路径覆盖使程序中每条可能路径都至少执行一次。

控制结构测试

基本路径测试(常用)

第1步:画出程序流图

第2步:计算程序的环形复杂度P (表示程序基本路径

集中的独立路径数的上限)

第3步:确定独立路径的基本集合

第4步:从该基本集合导出测试用例

第5步:执行测试用例

第6步:写测试报告

条件测试条件成分的类型包括布尔算符、布尔变量、布尔括弧(括住简单条件或复合条件)、关系算符及算术表达式。

循环测试(1)简单循环;(2)嵌套循环;(3)串接循环

7.3 黑盒测试技术

黑盒测试着重测试软件功能。黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,它很可能发现白盒测试不易发现

软件工程导论(第5版)课后习题答案

1-5 根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算: (1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? (2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。 (3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。 ●(1)在1985年对计算机存储容量的需求,估计是 M=4080e0.28(1985-1960)=4474263(字) ●如果字长为16位,则这个存储器的价格是 ●P=0.048*0.72 1985-1974*4474263=$5789 ●(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 ●在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人 每月可开发出10×20条指令。 ●为了开发出4474263条指令以装满存储器,需要的工作量是: 4474263/200=22371(人月) ●程序员的月平均工资是4000美元,开发出4474263条指令的成本是 22371*4000=¥89484000 ●(3)在1995年对存储容量的需求估计为: M=4080E0。28(1995-1960)=73577679(字)=4080E9.8 ●如果字长为32位,则这个存储器的价格是: P=0.003*32*0.72(1995-1974)*73577679=$7127 ●如果一条指令为一个字长,则为使存储器装满程序共需73,577,679条指令。 ●在1995年一名程序员每天可开发出30条指令,每月可开发出600条指令,为了开 发出可装满整个存储器的程序,需要的工作量为 73577679/600=122629(人月) ●开发上述程序的成本为: 122629*6000=$735776790 1-6 什么是软件过程?它与软件工程方法学有何关系?

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

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 )。

《软件工程导论》教学大纲

软件工程教学大纲 课程名称:软件工程 开课学期:第5学期 学时/学分:48 / 3 课程类型:专业必修课 开课专业:游戏开发 选用教材: 《软件工程导论》(第四版),张海藩编著,清华大学出版社; 主要参考书: 《实用软件工程》(第二版),郑人杰、殷人昆、陶永雷编著,清华大学出版社; 《软件工程:实践者的研究方法》(原书第五版),Roger S. Pressman,机械工业出版社; 《软件工程》(原书第六版),Ian Sommerville,机械工业出版社; 《面向对象与传统软件工程》(原书第五版),Stephen R. Schach,机械工业出版社。 《面向对象的软件工程》,B.Bruegge,A.H.Dutoit著,清华大学出版社 一、课程性质、目的与任务 软件工程是研究软件开发维护和软件管理的一门工程科学,本课程是计算机科学与技术专业指导性教学计划规定的教学环节中的一部分,教学目的旨在介绍软件工程的基本原理和主要内容,为学生进一步深入学习与软件工程相关的其他课程如:软件需求过程、软件分析与设计和软件项目管理、软件过程管理等打下坚实的理论基础。同时启发学生把握软件开发过程的基本规律,掌握和运用软件分析、设计的常用方法、软件开发过程的管理方法以及质量保证方法等,来解决软件开发中的实际问题,达到学以致用的目的。 二、教学基本要求 本门课程是软件工程导论性质的课程,所以它比较全面而概括地介绍了与软件开发、管理和维护相关的各阶段的工作。学生通过这门课程的学习,能够掌握软件工程的基本含义、它的主要作用、软件开发的过

程、软件开发各个阶段的主要目的和可能采用的一些技术手段和方法,并理解软件项目管理的主要思想。课程完成后,学生能够应用软件工程的思想指导软件开发实践,并能够比较容易地进行软件工程其他相关后续课程的深入学习。 要求教师在教学中采用启发式教学和因材施教,并至少给出一些章节的启发式教学内容的设计。 制作电子教学课件,运用课件进行教学。 三、考核方式: 总成绩分为两个部分:平时成绩(占40% )和期末卷面成绩(占60%),期末考试采用开卷。

软件工程导论复习知识点

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

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

软件工程导论(第五版)课后习题测验答案

《软件工程导论》课后习题答案 第一章软件工程概论 1-1 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。 (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.软件危机有那些典型表现? (1)对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6) 软件成本在计算机系统总成本中所占的比例逐年上升。 (7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 3.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 1-3、

软件工程导论重点内容

第一章软件工程概述 重点掌握的容:软件和软件工程的基本概念 一.什么是软件? 1.满足功能要求和性能的指令或计算机程序集合; 2.处理信息的数据结构; 3.描述程序功能以及程序如操作和使用所要求的文档; 软件的特点: 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。 软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的 在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题 软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工的开发式 软件的开发费用越来越高,成本相当昂贵。 二.软件危机以及产生软件危机的原因? 1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。 2.软件成本在计算机系统总成本中所占的比例逐年上升。 3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。 4.软件产品的质量不容易保证。 5.软件产品常常是不可维护的。 6.软件产品的重用性差,同样的软件多次重复开发。

7.软件通常没有适当的文档资料。 产生软件危机的原因可归结为两个重要的面: 软件生产本身存在的复杂性; 软件开发所使用的法和技术。 三、软件危机 1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列重问题。 2、软件危机的两个主要问题:如开发软件,以满足对软件日益增长的需求; 如维护数量不断膨胀的已有软件。 3、软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成的”软件系统不满意的现象经常发生。 (3) 软件产品的质量往往靠不住。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。 (6) 软件成本在计算机系统总成本中所占的比例逐年上升。 (7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 软件工程 1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程准则可以概括为7条基本原则:

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

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

软件工程导论论文(精)

软件工程一.关于软件工程软件是计算机系统中程序.数据和相关文档的集合,一种逻辑产品。软件工程是一门研究工程化方法构建和维护有效的.实用的和高质量的软件的学科。软件工程是一门比较年轻的学科,追溯其出现的时期我们可以回到二十世纪中期。那个时候出现了软件危机。上个世纪五十年代计算机刚从军用转到民用,编写程序的工作被视为艺术家的创作。由于当时计算机受价格因素的限制未能普及,人们对这一新生的披着神秘面纱的产品并不了解。再加上编程人员追求的是如何在有限的处理器能力和储存空间约束下编写出执行速度快.体积小的程序,使程序中充满了各种各样让人迷惑的技巧,这时的软件的开发生产就非常依赖开发人员的聪明才智。但是得到了六十年代,由于计算机生产硬件的突破使计算机的应用范围得到较大的扩展对软件系统的需求和软件自身复杂性急剧上升,传统开发方法不能满足对软件的需要,出现了软件危机。为解决这个问题,1986年“软件工程”在NATO会议上被首次提出,就是把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。从此一门新的学科便诞生了。软件的发展又分为几个阶段:先是程序设计再到程序系统,再是软件工程,到现在是面向对象软件工程。因为一种软件往往比较庞大,需要一个或多个团体才能完成,所以以一种工程化的方法不仅能够提高软件的质量也能提高开发效率。软件工程是研究和应用如何以系统性的.规范化的.可定量的过程化方法去开发维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。其目标是在给定成本.给定进度的前提下开发软件。开发出的软件应具有可修改性.有效性.可靠性.可维护性.可适应性.可移植性.可追踪性.可重用性.可理解性.可互操作性。其中可修改性事实容许对系统进行修改而不增加原系统的复杂性。有效性是软件系统能最有效的利用计算机的时间资源和空间资源。软件工程包括技术和管理两方面。由方法.工具.和过程三部分。软件开发方法就是完成软件开发的各项任务的技术方法,软件开发工具是为了方法运用提供支撑。软件工程的过程包括定义.开发.运行维护。定义包括可行性研究.需求分析两个步骤。可行性研究就是根据已有的技术手段结合要开发软所可能运用的技术来判断开发的可行度。需求分析就是要通过客户了解软件所应具备的功能。这一阶段是软件开发前的准备阶段,是很重要的一个阶段。

《软件工程导论》第五版-张海藩-编著-总结

《软件工程导论》第五版张海藩编著总结 分类:Computer System2011-01-04 10:14 6417人阅读评论(10) 收藏举报 测试数据结构工具任务文档软件测试 总结重点: ?Unit1 ?软件危机包含两方面の问题:一是如何开发软件,怎样满足人们对软件日益增长の需求?二是如何维护软件,使它们持久地满足人们の要求。 ?软件工程学定义:把软件当作一种工业产品,采用工程学の原理来管理和组织软件の开发和维护,称为软件工程。 ?软件是指程序、数据和文档三者共同构成の配置。 ?包含与数据处理系统操作有关の程序、规程、规则以及相关文档の智力创作称为软件。文档是描述程序开发过程の,是智力创作の真实记录,是创作活动の历史档案和结晶。 ?软件の描述性定义:软件由计算机程序,数据结构和文档组成。 ?软件质量定义为“与软件产品满足规定の和隐含の需求能力有关の特征和特性の全体” 具体来说: 1)软件产品中能满足给定需求の性质和特性の总体; 2)软件具有所期望の各种属性の组合程度。 ?将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户の观点——面向管理の观点,且是定性描述の。 ?软件质量度量体系:内部度量可用于开发阶段の非执行软件产品,外部度量只能在生存周期过程中の测试阶段和任何运行阶段使用。 ?软件工程项目の基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。 ?软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。 ?软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。 ?结构程序设计是进行以模块功能和处理过程设计为主の详细设计の基本原则。它の主要观点是采用自顶向下、逐步求精の程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。 ?用来辅助软件开发、运行、维护、管理、支持等过程中活动の软件称为软件工具(CASE)。 ?软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用の整个过程。各阶段の任务彼此间尽可能の相对独立,同一阶段内各项任务の性质尽可能の相同。软件の开发就是“按软件顺时间发展の过程分阶段进行”の。 ?软件生存周期模型: 瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序の物理实现,是文档驱动模型,遵循结构化设计);

软件工程导论期末考试题

一、单项选择题 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. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

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

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

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

软件工程导论课程教学大纲

《软件工程导论》课程教学大纲 一、课程性质、地位和作用 《软件工程导论》是是软件工程专业的专业基础课程,属必修课。 本课程主要讲述建造软件系统的基本方法、技术、流程、工具及规范等。通过学习可以使学生了解软件工程的基本概念、基本原理、实用的开发方法和技术;了解软件工程各领域的基本内容和发展动向;学习用工程化的方法开发软件项目,初步掌握开发过程中应遵循的流程、准则、标准和规范。本门课程为将来从事软件开发学生的软件工程师之路奠定坚实的基础。 二、课程教学对象、目的和要求 本课程适用于软件工程、计算机应用等从事软件开发的本科专业。课程教学目的、要求: (一)从教学内容上,应使学生了解软件工程的基本概念,主要包括软件与软件开发的基本过程,软件危机与软件工程。掌握个人软件开发过程的基本内容和方法,了解软件开发模型及结构化软件设计方法,以及软件质量保证基本内容。(二)从能力方面,应使学生通过对软件工程基本概念和方法的学习和课后练习,培养学生养成规范化个人开发的良好习惯,培养学生按照软件工程的基本过程和方法来设计和开发软件。 (三)从教学方法上,在课堂理论教学中,采用学生可以理解的软件开发素材,通过一边实践一边讲解的方法,讲解软件过程的基本思想和方法,通过学生完成与实践结合的作业,调动学生的积极性,使软件工程的基本思想逐步植根于学生头脑中。 三、相关课程及关系 本课程的先修课程是“C语言程序设计”和“数据结构”等程序设计课程,学习应在学生具有一定的编程能力基础上进行。本课程为后续的“软件制造工程”和“软件设计工程”等课程打下了必要的理论基础。 四、课程内容及学时分配 总学时:32学时 (一)绪论1学时 1、软件工程及其重要性 2、软件开发需要软件工程 3、软件工程课程体系架构(需要什么软件工程) 、课堂的组织、学习方法、章节安排与考核4. 要求学生了解软件工程的起源,软件工程在软件开发中的作用,了解软件工程课程体系。 (二)软件与软件工程4学时 1、软件及软件分类 2、软件工程的由来及概念 3、软件生命周期 4、软件开发与软件开发方法 5、软件工程工具和环境 6、软件开发项目管理介绍

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

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

软件工程导论课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经 常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具 四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 五、1-5 根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。

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

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、软件可靠性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。

(完整版)软件工程导论(第5版)习题二答案

P53 习题二 4.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于 不能随时观察病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性。 医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏体温血压心电图等)定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围试向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 答: 问题定义:某医院打算开发一个以计算机为中心的患者监护系统是为了更好地让医生监护病人的生理信号(脉搏、血压、心电图等)的变化,定时记录病人情况以形成患者日志,防止没能及时发现危重病人的病情恶化而耽误抢救时机的现象出现;当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 可行性研究: (1)技术可行性:开发系统的计算机硬件已经非常普及,现在的计算机各方面的技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术方面是可行的;同时医院还必须有一定量的系统管理和维护的专业人员。医院的患者监护系统由三部分构成:监护中心、护士监听部分和 Internet医疗网站。监护中心通过Internet与护士监护部分、Internet连接、把监听到的患者声音、视频信息以及影像资料通过通讯网络实时传送到护士监听部分(便于护士随时掌握患者的生理状况)和Internet医疗中心(有利于实现生理数据的共享)。 因此技术上分析是可行的。 (2)经济可行性:随着经济越来越发达,人们可以支付的治疗疾病的花费也挺高了,因此其开发具有广阔的市场。目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察病人的病情变化,还可能会延误抢救时机。当前的社区医疗保健系统还不够完善,大多数据收集工作主要采取手工方式;并且信息不利于共享,采集的资料存在一台计算机里,社区中心与居民之间不能建立起随时访问和被采访的关系。 (3)操作可行性:计算机的普及使人们对以计算机为中心的患者监护系 统的使用做了铺垫,系统的操作人员需要经过专业的人员指导以及培训。 (4)法律可行性:医院想要使用患者监护系统需要购买正版的软件,机 器设置也需要通过正当途径购买。 5.北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成, 第1位数字不是零;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本地电话再接着拨8位数字(第一位不是0),若是外地电话则拨3位区码再拨8位电话号码(第一位不是0)。 用2.5.2小节讲诉的数据定义的方法,定义上述电话号码。 答:电话号码=[校内电话号码|校外电话号码]

相关文档
最新文档