软件工程导论第六版期末复习总结要点

软件工程导论第六版期末复习总结要点
软件工程导论第六版期末复习总结要点

软件工程

一、名词解释与问答

1、SA——结构化分析方法

2、画数据流图应注意什么事项?

(1)数据流名称只能是名词或是名词短语;

(2)每个加工至少有一个输入数据和一个输出数据流,反映出此加工数据的来源与加工的结果;

(3)编号:某个加工分解成一张数据流图时,上层图为父类,下层图为子类;父图与子图的平衡:子图的输入输出数据流同父类相应的输入输出数据流必须一致;

(4)注意数据流图的易理解性;

3、什么是软件生存周期?它有那几个活动?

一个软件从提出开发要求开始直到该软件报废为止的整个时期。

包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

4、什么是数据流图?作用是什么?其中的基本符号表示什么含义?

以图的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。

箭头,表示数据流数据流是数据在系统内传播的路径,由一组成分固定的数据项组成;

圆或椭圆,表示加工对数据进行某些操作或变换,每个加工要有名字,通常是动词短语,描述完成的加工;

双杆,表示数据存储指暂时保存的数据;方框,数据源点或终点软件系统外部环境的实体,为帮助理解系统接口界面引入,只出现在顶层图中;

什么是数据字典简述数据字典与数据流图的关系.答案:数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具.(2分)数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用. 数据流

图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明.(3分) 简述编码风格的重要性. 答案:阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供人阅读的文章.应当在编写程序时讲求程序的风格,这将大量地减少人们读程序的时间.良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量.

简述软件测试的任务、目的与类型。

答:软件测试是一个为了寻找软件错误而运行程序的过程。

目的就是为了发现软件中的错误。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。软件测试主要分为白盒测试和黑盒测试两大类。

可行性分析的目的和主要任务是什么?

答:可行性分析的目的不是解决问题,而是确定问题是否值得去解决。

主要任务是从下面几方面研究每种解法的可行性:技术可行性,经济可行性,操作可行性,社会可行性,抉择可行性。

需求分析的目的和主要任务是什么?

答:进行需求分析是为了准确地回答“系统必须做什么”这个问题,决定可以做什么不做什么。需求分析的主要任务是描述系统的功能需求、性能需求、数据需求、可靠性/可用性需求、出错处理需求、接口需求、约束条件、其他需求。

软件维护的目的和主要任务是什么?维护的类型有哪些?

答:软件维护是软件生命周期中最后一个、持续时间最长的阶段。

主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件,目的是提高软件的可靠性、可用性,延长软件的寿命。维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)

什么是耦合?模块的耦合包括哪些类型?

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

模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合,标记耦合,无耦合/非直接耦合

什么是内聚?模块的内聚包括哪些类型?

答:内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念

的自然扩展模块的内聚包括以下几种类型:低内聚—偶然内聚,逻辑内聚,时间内聚中内聚—过程内聚,通信内聚;高内聚—顺序内聚,功能内聚

什么是编码风格?为什么要强调编码风格?

答:编码风格包括以下内容:程序内部良好的文档(注释)、数据说明、语句构造、输入输出和效率保障等。因为编码风格对软件的可读性、可维护性、可靠性、可用性很重要,所以要强调编码风格。

二、综合应用题

1、用PAD图描述下面问题的控制结构。

有一个表A(1)、A(2)、....A(n),按递增顺序排列。给定一个Key值,在表中用折半法查找。若找到,将表位置i送入X,否则将零送到x,同时将key值插入表中。算法:

置初值H=1(表头),T=N(表尾)。置i=[(H+T)/2](取整)

若Key=A(i),则找到,i送到x;若Key>A(i),则Key在表的后半部分,i+1送入H;若KeyT为止。

查不到时,将A(i),......A(N)移到A(i+1)......A(N+1),Key值送入A(i)中。

四、填空题

1:结构化方法是一种面向数据流的开发方法。又结构化分析、_结构化程序设计 ___、构成

2:为了减少软件开发费用,缩短软件开发周期、减少软件内部潜在的错误,可以减少程序复杂性,以提高软件的简单性和___可理解性________。

3:结构化程序设计方法是使用_____三种基本控制结构___构造程序。

4:与编码风格有关的因素有数据说明、语句构造、输入输出、效率等,其中还有一个重要的因素是___源程序文档化_______.

5:结构化程序设计方法是提倡开发人员的组织形式是__主程序员组

6:增量模型在开发过程中以一系列增量方式开发系统,忽略某些阶段的细节,从而尽早产生__工作软件_____

7:数据流图仅反映系统必须完成的逻辑功能,所以它是一种_____功能____模型

判断题:

1.在进行总体设计时应加强模块间的联系。( N )

2.系统结构图是精确表达程序结构的图形表示法。因此,有时也可以将系统结构图当作系

统流程图使用。( N )

3.用黑盒法测试时,测试用例是根据程序内部逻辑设计的。( N )

4.在程序调试时,找出错误的位置和性质比改正该错误更难。( Y )

5.以对象、类、继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计

方法之一。( Y )

6.如果通过软件测试没有发现错误,则说明软件是正确的。( N )

7.快速原型模型可以有效地适应用户需求的动态变化。( Y )

8.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软

件产品。( Y )

9.集成测试主要由用户来完成。( N )

10.软件危机完全是由于硬件问题引起的。( N )

Warnier方法也是一种面向数据结构的设计方法,其逻辑更严格.(×) PAD图在设置了五种基本控制结构后,还允许递归调用. (×) 为了加快软件维护作业的进度,应尽可能增加维护人员的数目.(×)

当验收测试通过,软件开发就完成了.(×) 完成测试作业后,为了缩短源程序的长度应删除程序中的注解.(×)

第二章:可行性研究

1:可行性研究实质上是一次简化,压缩了的( 需求分析和设计 )

2:可行性研究的三个方面是技术可行性、操作可行性、社会可行性和(经济可行性)

1.__数据流图________和__数据字典___共同构成系统的逻辑模型。

1:技术可行性要研究的问题之一是( D )

A:存在侵权否 B:成本效益问题 C:运行方式可行否D:技术风险问题

2:研究硬件资源的有效性是进行( A )研究的一方面

A:技术可行性 B:经济可行性 C:社会可行性 D:操作可行性

三:名词解释

1.可行性研究:可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程;

2.技术可行性:对待开发的系统进行功能、性能和限制条件的分析,确定在现有的资源条件下,技术风险有多大,系统能否实现;

3.经济可行性:这个系统的经济效益能超过它的开发成本吗?

4.社会可行性:实用性怎样

四.问答题

1.可行性研究的任务是什么:可行性研究最根本的任务是对以后的行动方针提出建议。

2.可行性研究有那些步骤:(1)复查系统规模和目标;(2)研究目前正在使用的系统;(3)导出新系统的高层逻辑模型;(4)进一步定义问题;(5)导出和评价供选择的解法;(6)推荐行动方针;(7)草拟开发计划;(8)书写文档提交审查;

3.可行性研究的目的.:可行性研究的目的不是解决问题,而是确定问题是否值得

去解决;

五、数据流图的基本符号:(1)正方形(或立方体)表示数据的源点或终点;(2)圆角矩形(或圆形)代表变换数据的处理;(3)开口矩形(或两条平行横线)代表数据存储;(4)箭头表示数据流,即特定数据的流动方向。

数据流图的作用:

1、便于用户表达功能需求和数据需求及其联系;

2、便于两类人员共同理解现行系统和规划系统的框架;

3、清晰表达数据流的情况;

4、有利于系统建模。

什么是数据流图:数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。

六、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合;数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息;

七、成本/效益分析方法是可行性研究的一项重要内容,是客户组织负责人从经济角度判断是否继续投资于这项工程的主要依据;

应考虑:①货币的时间价值;②投资回收期;③纯收入;④投资回收率

成本估计有:①代码行技术;②任务分解技术;③自动估计成本技术

第三章:需求分析

一. 填空题

1.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是(功能)需求

3.数据字典中,一般不出现的条件是( D )

A数据流B数据存储C加工D源点与终点

8. 需求分析阶段不适用于描述加工逻辑的工具是( D )

A结构化语言B判定表C判定树D流程图

四. 简答题

1. 什么是需求分析?该阶段的基本任务是什么:需求分析是发现、求精、建

模、规格说明和复审的过程;准确定义未来系统目标,确定为了满足用户的需要系统必须做什么;

2.简述结构化分析的步骤:(1)系统分析员应该从不同的角度抽象出目标系统的特性;(2)使用精确的表示方法构造系统的模型;(3)验证模型是否满足用户对目标系统的需求;(3)在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型;

第四章:

第五章:总体设计

一. 填空题

1.在软件概要设计阶段, 建立软件结构后, 还应该为每个模块写一份处理说明和 (接口说明)

2. 两个模块都使用同一张表, 模块的这种耦合称为( 公共耦合 )

3.一个模块内部各程序段都在同一张表上操作, 这个模块的内聚性称为( 通信内聚 )

4.软件结构是以( 模块 )为基础而组成的一种控制层次结构

5.反映软件结构的基本形态特征是( 深度, 宽度, 扇入, 扇出 )

6.一个模块把数值作为参数传送给另一个模块, 这种耦合方式称为( 数据耦合 )

7.两个模块通过全程变量相互作用, 这种耦合方式称为( 公共耦合 )

8.一个模块的作用范围指( 受该模块内一个判定影响的所有模块 )的集合

9.一个模块的控制范围指( 模块本身以及其所有从属模块 )的集合

10.结构化设计以( 数据流图 )为基础映射成软件结构

11.为了防止软件概要设计的错误传播到开发后续阶段,在概要设计文档完成以后, 要进行( 软件评审 )

5. 耦合性:耦合是指一个模块与其它模块之间的联系,又称为块间联系,是模块之间相对独立性的度量;

6. 内聚性:内聚是指模块内部各个成分之间的关系,又称为块内联系,是模块功能相对强度的度量;

7. 模块的控制范围:一个模块的控制范围是指该模块本身及其所属的(直接或间接调用的)所有模块的集合;

8. 模块的作用范围:受该模块内一个判定影响的所有模块的集合; 9. 软件结构:软件结构图;

10.模块:在软件中,通常把用一个名字就可以调用的一段程序称为模块;

3.模块的耦合性, 内聚性包括那些内容? 其含义:(1)低耦合:非直接耦合,数据耦合,标记耦合;(2)中耦合:控制耦合,外部耦合;(3)高耦合:公共耦合,内容耦合;(4)低内聚:偶然内聚,逻辑内聚,时间内聚;(5)中内聚:过程内聚,通讯内聚;(6)高内聚:顺序内聚,功能内聚;

4.为了提高模块的独立性, 模块内部最好是( C )

A 逻辑内聚

B 时间内聚

C 功能内聚

D 通信内聚

5.为了提高模块的独立性, 模块之间最好是( D )

A 公共耦合

B 控制耦合

C 内容耦合

D 数据耦合

6. 结构化设计方法在软件开发中, 用于( B )

A 测试用例设计

B 软件概要设计

C 程序设计

D 软件详细设计

7. 划分模块时, 一个模块的( A )

A 作用范围应该在其控制范围之内

B 控制范围应该在其作用范围之内

C 作用范围与控制范围互相不包含

D 作用范围与控制范围不受任何限制

第六章:

一. 填空题

1. 结构化程序设计方法的要点是使用( 三种基本控制结构 ),自顶向下, 逐步求精地构造算法或程序

2.结构化分析的基本思想是采用(自顶向下逐步分解)方法,能有效的控制系统的复杂性

3.当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时, 其加工逻辑用(判定表或判定树)描述较好.

4.数据流图中有四种符号元素,它们是(数据流,加工,数据存储,数据源点和终

点)

3. 在详细设计阶段, 一种历史悠久, 使用最广泛的描述程序逻辑结构的工具是( 程序流程图 )

4. 结构化程序设计技术指导人们用良好的思想方法开发(容易理解, 容易验证)的程序

5. 详细描述处理过程常用的三种工具是图形, 语言和( 表格 )

6. 详细设计的目标不仅是逻辑上正确的实现每个模块的功能, 还应该使设计出的处理过程 ( 清晰易读 )

7. 在详细设计阶段,除了对模块内的算法进行设计, 还应该对模块内的(数据结构)进行设计

2. 结构化设计方法是一种面向( A )的设计方法

A 数据流

B 数据结构

C 数据库

D 程序

1. 结构化程序设计主要强调的是( C )

A 程序的效率

B 程序的执行速度

C 程序的易读性

D 程序的规模

2. 详细设计的任务是确定每个模块的( A )

A 算法

B 功能

C 调用关系

D 输入输出数据

3. 结构化程序设计的一种基本方法是( D )

A 筛选法

B 递归法

C 迭代法

D 逐步求精法

4. 程序的三种基本控制结构是( B )

A过程,子程序和分程序 B 顺序, 选择和重复

C 递归, 堆栈和队列

D 调用, 返回和转移

5. 程序的三种基本控制结构的共同特点是( D )

A 不能嵌套使用B只能用来写简单程序

C 已经用硬件实现D只有一个入口和一个出口

3. 详细设计主要使用那一个描述工具:程序流程图,盒图,PAD图,判定表,判定树。

4.结构化程序设计:如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序

时结构华的;

第七章:实现

1.为了提高程序的易读性, 同时减少错误, 提高软件开发效率, 编码时注意养成良好的 ( 程序设计风格 )

1. 软件测试程序不在机器上运行, 而是采用人工检测和计算机辅助分析检测的手段称( 静态 )测试.

2. 用等价类划分法设计一个测试用例时, 使其覆盖( 尽可能多的)尚未被覆盖的合理等价类

3. 用等价类划分法设计一个测试用例时, 使其覆盖( 一个 )不合理等价类

4. 在单元测试时, 需要为被测试模块设计( 驱动模块与桩模块 )

5. 在集成测试时有两种测试方法, 它们是( 渐增式和非渐增式 )

6. 软件测试是为了( 发现错误 )而执行程序的过程

7. 运行被测试程序的方法称为( 动态 )测试

8. 动态测试中, 主要测试软件功能的方法称为( 黑盒 )法

9. 运行测试用例, 使得被测试程序中每个判定分支至少执行一次, 这种逻辑覆盖标准称为( 判定覆盖 )

1.软件测试中, 白盒法是通过分析程序的( B )来设计测试用例的

A 应用范围

B 内部逻辑

C 功能

D 输入数据

2 . 黑盒法是根据程序的( C ) 来设计测试用例的

A 应用范围

B 内部逻辑

C 功能

D 输入数据

3. 为了提高软件测试的效率, 应该( D ).

A 随机地选取测试数据

B 取一切可能的输入数据作为测试数据

C 在完成编码以后制定软件的测试计划

D 选择发现错误可能性大的数据作为测试用例

7. 下列几种逻辑覆盖标准中, 查错能力最强的是( D )

8.A 语句覆盖 B 判定覆盖 C 条件覆盖 D 条件组合覆盖

8. 在黑盒测试中, 着重检查输入条件组合的方法是( D )

A 等价类划分法

B 边界值分析法

C 错误推测法

D 因果图法

9. 软件测试过程中的集成测试主要是为了发现( B )阶段的错误

A 需求分析

B 概要设计

C 详细设计

D 编码

10. 不属于白盒测试的技术是( D )

A 路径覆盖

B 判定覆盖

C 循环覆盖

D 边界值分析

11. 确认测试以( A )文挡作为测试的基础

A 需求规格说明书

B 设计说明书

C 源程序

D 开发计划

2. 与选择编程语言无关的因素是( C )

A 软件开发的方法

B 软件执行的环境

C 程序设计风格

D 软件开发人员的知识

3. 源程序文档化要求在每个模块之前加序言性注释, 该注释内容不应该有( B )

A 模块的功能

B 语句的功能

C 模块的接口

D 开发历史

1. 在结构化程序设计思想提出之前, 程序设计中曾强调程序的效率, 现在人们更重视程序的( D )

A 技巧性

B 保密性

C 一致性

D 可理解性

4. 提高程序效率的根本途径并非在于( D )

A 选择良好的设计方法

B 选择良好的数据结构

C 选择良好的算法

D 对程序语句作调整

5. 为了提高易读性, 源程序内部应该加功能性注释, 用于说明( B )

A 模块总的功能

B 程序段或语句的功能

C 模块参数的用途

D 数据的用途

1.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归测试过程称为A 。

A、改正性维护

B、适应性维护

C、完善性维护

D、预防性维护

三. 名词解释

1. 编码:所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序;

2. 程序设计风格:所谓程序设计风格是指书写源程序的习惯、程序代码的逻辑

结构与习惯的编程技术。从软件工程要求出发,程序设计风格应包括以下要素:①源程序文档化②数据说明③语句构造④输入输出

●白盒测试技术:逻辑覆盖和基本路径覆盖

●黑盒测试技术:等价类划分、边界测试、错误推测、因果图

●软件测试步骤:单元测试、集成测试和确认测试

四. 简答题

1. 在项目开发时, 选择程序设计语言通常考虑那些因素:人的思维和解题方式;人和计算机通信的方式和质量;其他人阅读和理解程序的难易程度;

2.什么是程序设计风格? 应该在那些方面注意培养良好的设计风格? (1)程序内部的文档;(2)数据说明;(3)语句构造;(4)输入输出;(5)效率;

第八章:维护

一. 填空题

1. 为了识别和纠正软件在运行中的错误而进行的维护称为( 校正性 )维护

2. 在软件维护中, 因修改软件而导致出现的错误或其它情况称为( 维护的副作用 )

3. 维护阶段是软件生存周期中时间最长的阶段, 也是花费精力和费用( 最多 )的阶段

4. 在软件交付使用后, 由于在软件开发过程中产生的错误没有完全彻底在开发阶段发现, 必然有一部分隐含错误带到( 维护 )阶段

5. 采用手工方法开发软件只有程序而无文挡, 这是一种( 非结构化 )维护

6. 所有的软件维护申请报告要按规定方式提出, 该报告也称( 软件问题 )报告

二. 选择题

1为了增加软件功能和性能而进行的软件修改维护过程是( C )

A 校正性维护

B 适应性维护

C 完善性维护

D 预防性维护

2. 维护中, 因修改全局或公共数据而引起的错误是( B )

A 文档副作用

B 数据副作用

C 编码副作用

D 设计副作用 3. 在软件生存周期中, 时间长, 困难大的阶段是( D )

A 需求分析

B 编码

C 测试

D 维护

4. 软件维护困难的主要原因是( C )

A 费用低

B 人员少

C 开发方法的缺陷

D 维护难

5. 产生软件维护的副作用, 是指( C )

A 开发时的错误

B 隐含的错误

C 因修改软件而造成的错误

D 运行时误操作

三.名词解释

1. 校正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的;

2.适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件的活动;

3. 完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;

4. 预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。

5. 软件可维护性:维护人员理解、改正、改动或改进这个软件的难易程度。

6. 软件维护的副作用:(1)编码副作用。在使用程序设计语言修改原代码时可能引入的错误;(2)数据副作用。在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。数据副作用是修改软件信息结构导致的错误。但它可以通过详细的设计文档加以控制;(3)文档副作用。如果对可执行软件的修改没有反映在文档中,就会产生文档副作用;

四. 问答题

1. 维护有那些类型? 其内容:(1)校正性维护;(2)适应性维护;(3)完善性维护;(4)预防性维护;

软件工程导论(第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 什么是软件过程?它与软件工程方法学有何关系?

软件工程导论课后习题大题

习题2-2 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统。如果是存款,系统记录存款人姓名、住址、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并打印出存款单给储户。如果是取款,并且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。 功能级数据流图: 对象模型:

习题2-3 为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。 数据流图: 习题2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请写出数据流图。 医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏,体温,血压,心电图等),定时记录病人情况以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息。此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。

习题3-6 复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。 状态转换图: 查询事务 患者日志 警告 信息 生理 信号 生理 信号 危急病人信息 病人 1 接收信号 2 分析信号 3 产生警告信息 护士 日期 时间 时钟 4 定时取样生理信号 定时的 生理信号 5 更新日志 6 产生病情报告 生理 信号 安全范围 患者日志 患者日志 病情报告 生理信号 日期时间 查询事务 接收信号 分析信号 产生警告信息 定时取样 更新日志 产生病情报告 生理信号 危急病人信息 警告信息 定时的生理信号 患者日志 病情报告

软件工程导论重点内容

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

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

软件工程导论总结报告

软件工程总结报告 序言 本期软件工程专业导论课程结束后,为圆满完结本期此课程的学习,特此总结个人学习所得以求些许回报先生无私教导。 主体 第一节课主要讲述了软件工程各领域之间的联系以及贯穿始终 的基础为何。其中较为基础并相当重要使的应该是算法。对于算法重要性与基础性的理解,我个人有比较切身的体验。比如前不久的 ACM 竞赛,在比赛中我所在的小组以及当场几乎所有小组都遇到这样一个 问题:超时—这无非就是个人设计的算法的效率不够高,这也证明我 们对算法理论知识的匮乏(不清楚优化个人算法的方法)。我对软件 工程这一专业有了一个较为全面的把握,对我个人未来进取方向而言 也起到了一定的指导作用。 第二节课老师带来了三位本专业的前辈向我们传授大学生活应 如何度过以及对我等一些问题作出解答。其中我个人印象深刻的是其 中一位学姐 PPt 中引用李开复的那部分内容。即试着记录下自己一整天做的所有事以及其所花费的时间,再仔细研究自己在哪些事上浪费 了时间,应该如何整改。我个人认为这方法可能有一定直观性,因为 直观的数据更能深刻的反映真实和刺激一个人整改,但此法实施起来又太古板,中觉得生活有些教条化、章程化,缺乏新意与自由。求上进,珍惜时间也无需以丧失人生情趣为代价。还有就是学长再提潘老师曾讲过的那些重要、紧急优先次序。他提到的个人的学习生活情况

倒没什么深刻感,但我认为他引用的一番话较有道理,大概意思是比 起个人兴趣更为优先的应该是谋生的本领,尤其是当自己感兴趣的正 好是冷门时。当掌握了一些实实在在有能保证自身良好发展前景后,再 去做一些自己感兴趣的事也来得及。于我而言,一个人尚不能独善其身,何求其兼济天下。成己方成人就是如此道理。 第三节课主要讲解了大学学习生活中应着重的基础课以传递重 基础的要旨。据个人体会,其中英语科目实是基础中的基础,主要是 为辨认单词(即代码变量以及注释)意义以达到理解他人算法并顺利 接手他人接下来的工作。企业和公司出于其本身利益主张雇方市场 -- 讲究项目的可接手性,而不希望对现有人员的过分依赖。离散数学则应该是为之后学习其他编程专业知识做理论知识的铺垫。概率统计更多应是对统计有关算法及理论的学习(个人认为现实生活中许多问题都可以运用概率统计的方法加以解决,因此应是很重要的基础知识)。C/C++(Java)语言是作为编程的工具使用,无疑是基础(现今水平下的 我们主要用 C 编代码)。数据结构则应是提供特定的解决问题的结构 思想以便进行数据处理方面工作。算法的重要性以及基础性的个人体 会已包含在第一节课中。计算机体系结构与汇编课程与操作系统原理 课程主要在于理解计算机系统运行原理能加深对代码运行原理的理 解,对于现今水平的我也能更深层次的理解 c 语言的指针操作等方面知识。汇编语言能够直接对硬件进行操作,生成的程序与其他的语言相 比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 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、

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

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

软件工程导论课后题

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

2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。 医院对患者8监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。 从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。 系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。 此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。

“软件工程导论”重点、难点

“软件工程导论”的授课内容重点、难点 --供期末考试(教考分离)命题参考 一、教材:软件工程—原理、方法与应用(第3版),史济民等编著,高等教育出版社 二、任课教师: 陈征、于海雯 三、授课内容及重点、难点 第1章绪论 重点:软件的基本概念,软件危机,软件工程学的范畴,传统软件工程和面向对象软件工程的比较。 第2章软件生存周期与软件过程 重点:软件生存周期的基本概念,传统软件开发模型(瀑布模型、快速原型模型、增量模型、螺旋模型)的特点,可行性研究的内容,风险分析的3项活动。 第3章结构化分析与设计 重点:结构化分析的任务和步骤,数据流图的组成符号,画分层的数据流图,数据字典的条目,加工逻辑的描述工具(判定表和判定树等),结构化设计的任务和步骤,面向数据流的设计方法(变换映射和事务映射),模块划分的原则,详细设计的目的与任务,常用的详细设计工具(程序流程图和N-S图等)。 难点:画分层的数据流图,画判定表和判定树,变换映射和事务映射。 第4章面向对象与UML 重点:面向对象的基本概念,UML中的9种图(4种静态图、5种动态图)的基本结构,类与类之间的4种关系(关联、聚集、泛化、依赖)的含义,类图的画法。 难点:类图的画法。 第7章7.1 软件设计概述 重点:软件设计的基本概念(模块化、抽象与细化、信息隐藏、模块独立性),内聚性(7种类型)和耦合性(7种类型)的含义。 第8章编码与测试 重点:编码的风格,编码语言的选择,测试的目的,黑盒测试和白盒测试的测试用例设计方法,多模块程序的测试策略(单元测试、集成测试、确认测试和系统测试)。 难点:黑盒测试和白盒测试的测试用例设计。

《软件工程导论》第六版期末复习总结要点

软件工程 一、名词解释与问答 1、S A——结构化分析方法 2、画数据流图应注意什么事项? (1)数据流名称只能是名词或是名词短语; (2)每个加工至少有一个输入数据和一个输出数据流,反映出此加工数据的来 源与加工的结果; (3)编号:某个加工分解成一张数据流图时,上层图为父类,下层图为子类; 父图与子图的平衡:子图的输入输出数据流同父类相应的输入输出数据流必须一致; (4)注意数据流图的易理解性; 3、什么是软件生存周期?它有那几个活动? 一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 4、什么是数据流图?作用是什么?其中的基本符号表示什么含义?以图的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。 箭头,表示数据流数据流是数据在系统内传播的路径,由一组成分固定的数据项组成; 圆或椭圆,表示加工对数据进行某些操作或变换,每个加工要有名字,通常是动词短语,描述完成的加工; 双杆,表示数据存储指暂时保存的数据;方框,数据源点或终点软件系统外部环境的实体,为帮助理解系统接口界面引入,只出现在顶层图中; 什么是数据字典简述数据字典与数据流图的关系答案:数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与 说明,是数据流程图的补充工具.(2分)数据流图和数据字典共同构成系统的逻辑模型没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用?数据流图和对数据

流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明.(3分)简述编码风格的重要性? 答案:阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供 人阅读的文章?应当在编写程序时讲求程序的风格,这将大量地减少人们读程序的时间? 良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定 着程序的质量. 简述软件测试的任务、目的与类型。 答:软件测试是一个为了寻找软件错误而运行程序的过程。 目的就是为了发现软件中的错误。一个好的测试用例是指很可能找到迄今为止尚未发 现 的错误的用例。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。软件测 试 主要分为白盒测试和黑盒测试两大类。 可行性分析的目的和主要任务是什么? 答:可行性分析的目的不是解决问题,而是确定问题是否值得去解决。 主要任务是从下面几方面研究每种解法的可行性:技术可行性,经济可行性,操作可行 性,社会可行性,抉择可行性。 需求分析的目的和主要任务是什么? 答:进行需求分析是为了准确地回答“系统必须做什么”这个问题,决定可以做什么不做什么。需求分析的主要任务是描述系统的功能需求、性能需求、数据需求、可靠性/可用性需求、出错处理需求、接口需求、约束条件、其他需求。 软件维护的目的和主要任务是什么?维护的类型有哪些? 答:软件维护是软件生命周期中最后一个、持续时间最长的阶段。 主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件,目的是提高软件的可靠性、可用性,延长软件的寿命。维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)什么是耦合?模块的耦合包括哪些类型?答:耦合是对一个软件结构内不同模块之间互连程度的度量。 模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合,标记耦合,无耦合/非直接耦合 什么是内聚?模块的内聚包括哪些类型?

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

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

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

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

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

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

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

软件工程导论(第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、软件工程学包含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小节讲诉的数据定义的方法,定义上述电话号码。 答:电话号码=[校内电话号码|校外电话号码]

相关文档
最新文档