软件工程期末 - 草稿

与软件本身特点有关
1 软件不同于硬件,管理和控制软件开发过程相当困难。
2 软件在运行过程中不会因为使用时间过程而被“用坏”,如果运行中发现错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的错误。
3 软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将伴随程序规模的增加而呈指数上升。
4 软件通常没有适当的文档资料。
5 软件成本在计算机系统总成本中所占的比例逐年上升。

6软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。

与软件开发与维护的方法不正确有关
1只重视程序而忽视软件配置其余成分的糊涂观念。
2软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现“已完成”的软件不完全符合用户的需要。
3严重的问题是在软件开发的不同阶段进行修改需要付出的代价是很不相同的。如图1.1P4


选择题

有形性与可控性不是软件的特点

软件危机的主要原因是软件本身的特点及开发方法

软件工程是将系统化的、规范的可定量的方法应用于软件的开发运行和维护的过程,它包括方法工具和过程三个要素。

软件生命周期模型不包括用例模型

(可能不考)包含风险分析的软件工程模型是螺旋模型

()软件过程是软件开发活动是集合

()软件工程中描述生命周期的瀑布模型一般包括计划、需求分析、设计、编码 测试 维护等几个阶段

()软件开发的瀑布模型,一般都将开发过程划分为:分析设计编码和测试等阶段,一般认为可能占用人员最多的阶段是 编码阶段

()增量模型本质上是一种 非整体开发模型

()螺旋模型综合了 瀑布模型和演化模型 的优点,并增加了风险分析。

()需求工程的主要目的是 解决系统是“做什么的问题”

E-R模型中,包含以下基本成分 实体 属性 关系

()哪一个不是软件需求分析的任务 确定逻辑模型

()需求规格说明书的作用不包括 软件可行性研究的依据

()软件需求规格说明书的内容不包括 对算法的详细过程描述

()软件需求分析阶段的工作,分为以下四个方面:对问题的识别、分析与综合 编写需求分析文档以及 需求分析评审

()不属于软件需求分析阶段的是 确定软件系统的运行平台

进行需求分析可使用多种工具, PAD图 是不适用的

()在需求分析之前有必要进行 可行性分析 工作

数据流图是进行软件需求分析的常用图形工具,其基本图形符号是 加工 数据流 数据存储和外部实体

在结构化分析方法中,用以表达系统内数据的运动情况的工具是 数据流图

为了提高模块的独立性,模块之间最好是数据耦合

()面向数据流的软件设计方法,一般将信息流分为变换流和事务流

模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准是模块的 内聚性和耦合性

模块的独立性是由内聚性和耦合性来度量,其中内聚性是 模块的功能强度

()当算法中需要用一个模块去计算多种条件的复杂组合,并根据这些条件完成适当的功能时,合适的描述工具是 判定表

面向数据流的软件设计方法可将 数据流 映射成软件结构。

程序语言的特性包括 算法特性

()软件实现是软件产品由概念到实体的一个关键过程,它将软件设计的结果翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。

成功的测试是指运行测试用例后 发现了程序错误

白盒测试法是指根据程序的内部逻辑 来设计测试用例的方法

()软件的集成测试工作最好由 不属于该软件的设计人员承担,以提高集成测试的效果。

黑盒测试是从 用户 观点的测试,白盒测试是从 开发人员 观点的测试。

软件测试可能发现软件中的 错误,但不能证明软件 没有错误。

软件测试的目的是 尽可能多的发现软件系统中的错误。

使用白盒测试方法时确定测试数据应根据 程序的内部逻辑 和指定的覆盖标准。

黑盒测试方法根据 软件要完成的功能 设计测试用例。

在软件测试中,逻辑覆盖标准主要用于 白盒测试方法。

()集成测试的主要方法有两个,一个是 渐增式测试方法,一个是非渐增式测试方法。

验收测试的任务是验证软件的 有效性

软件测试的目的是尽可能发现软件中的错误,通常单元测试是代码编写阶段可进行的测试,它是整个测试工作的基础。

()封装是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。

多态性意味着一个操作在不同的类中可以有不同的实现方式。

每个对象可用它自己的一组属性和它可以执行的一组操作来表征。

应用执行对象的操作可以改变该对象的属性

()面向对象的主要特征除了对象唯一性、封装性、继承性外,还有 多态性

()关联是建立 类 之间关系的一种手段

所有的对象可以成为各种对象类,每个对象类都定义了一组 方法

通过执行对象的操作改变对象的属性,但它必须通过 消息 的传递

下列不属于面向对象的要素有 分类性

面向对象分析的首要工作是建立问题的对象模型

面向对象的分析方法主要是建立三类模型,即 对象模型、动态模型和功能模型。

软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程是 面向对象分析。

面向对象分析阶段建立的3个模型中,核心的模型是对象 模型。

面向对象分析是对系统进行需求建模的一种方法。

应该在 建立动态模型和功能模型之后 ,确定对象类中应有的服务。

面向对象的动态模型中,每张状态图表示 某一个类 的动态行为

在考虑系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是状态图

动态模型的描述工具是状态图

对象模型的描述工具是对象图

功能模型中所有的数据流图往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图做进一步的说明。

()下列是面向对象设计方法中有关对象的叙述,其中 对象的属性集合是它的特征表示 是正确的。

盒图 PAD图(不考了?上课说没重要还布置了作业)P94
面向数据流

信息流映射成软件结构,信息流的类型决定了映射的方法

(上课说必考)模块的独立程度由两个定性标准度量,即内聚和耦合。

耦合衡量不同模块彼此间互相依赖(连接)的紧密程度

内聚衡量一个模块内部各个元素彼此结合的紧密程度

(了解 评分从高到低)功能 顺序 通信 过程 时间 逻辑 偶然内聚

尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。

状态图中,初态 实心圆,终态一对同心圆(内圆实心),中间状态圆角矩形
状态转换图,简称状态图,通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状态图还指出作为特定事件的结果系统将做哪些动作。
实体-关系图即E-R图
数据模型包含数据对象 描述数据对象的属性及数据对象彼此间相互连接的关系

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

问题定义 可行性研究 需求分析(重点) 概要分析 编码和单元测试 综合测试 软件维护

模型

瀑布模式(自顶向下) 快速原型模型 增量模型 螺旋模型 喷泉模型(自下向上)

软件工程

指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。


消除软件危机(好像不太重要)

应该对计算机软件有一个正确的认识。必须充分认识到软件开发不是某种个体劳动的神秘技巧。

软件危机

在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的。实际上,几乎所有软件都不同程度的存在这些问题。总的来说软件危机包含两类问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量膨胀的已有软件。

什么是模块、模块化?软件设计为什么要模块化?

模块 完成特定功能的程序实体,构成程序的基本构件。

模块化 解决一个复杂问题时自顶向下逐层分解成若干模块的过程。每个模块完成一个特定的子功能,所有模块按系统结构组合起来,完成整个系统所要求的功能。

模块化设计的原因

1.将问题简化,划分模块可使每一个模块完成单一的功能

2.可以独立地进行模块的编码测试,便于软件开发工作的组织。

3.把每一个模块要解决的问题局限在有限的范围

选择编程语言时,通常考虑以下因素

1.待开发系统的应用领域,即项目的应用范围

2用户的要求

3软件开发人员的喜欢和能力

4系统的可移植性要求

5算法和数据结构的复杂性

软件测试的目的

1.测试是一个为了发现程序中的错误为目的的程序执行过程

2.一个好的测试用例是能最大限度地找到迄今为止尚未发现的错误

成功的测试是能发现尚未发现的错误

黑盒测试 功能测试
白盒测试 结构测试(逻辑覆盖)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章