软件工程复习资料整理

软件工程复习资料整理
软件工程复习资料整理

第一章软件工程介绍

软件工程的概念

IEEE对软件工程的定义:

(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。

(2)在(1)中所述方法的研究。

过程、方法和工具

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

方法:各项任务的技术方法,回答“怎么做”的问题。

工具:为运用方法而提供的自动或半自动的软件工程支撑环境

软件工程层次图

软件危机与软件工程的关系、产生的原因及其表现

软件工程的提出:

软件工程主要是针对20世纪60年代的软件危机而提出的

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

产生软件危机的原因:

客观原因:

软件缺乏“可见性”,管理和控制其开发过程相对困难

软件大多规模庞大,而复杂性随规模以指数速度上升

主观原因:

错误的认识和做法

忽视软件需求分析的重要性—急于求成,仓促上阵

认为软件开发就是写程序—编程只占全部工作量的10%--20%,软件配置主要包括程序、文档和数据

轻视软件维护—维护费用占总费用的55%--70%

软件神话一些错误认识

管理神话:

我们已经有了一本写满软件开发标准和规程的宝典。它无所不包,囊括了我们可能问到的所有问题

如果我们未能按时完成计划,我们可以通过增加程序员人数而赶上进度

如果将一个软件外包给另一家公司,则我们可以完全放手不管。

用户神话:

有了对项目目标的大概了解,便足以开始编写程序,我们可以在之后的项目开发过程中逐步了解细节。

虽然项目需求不断变更,但是因为软件是弹性的,因此可以很容易地适应变化从业者神话:

当我们完成程序并将其交付使用之后,我们的任务就完成了。

直到程序开始运行,才能评估其质量

对于一个成功的软件项目,可执行程序是惟一可交付的成果。

软件工程将导致我们产生大量无用文档,并因此降低工作效率。

第二章过程模型

掌握五个最基本的框架活动:

将整个软件过程再进一步细分为各个相对独立的功能块,即过程框架。(以工作开展的时间为线索)。

五个最基本的框架活动:

沟通:与客户之间的交流与写作

策划:为后续的软件工程工作制定计划

建模:包括分析和设计

构建:编码和测试

部署:软件交付用户,用户对其进行评估并反馈意见。

了解典型的普适性活动

适用于任何一个框架活动:

软件项目跟踪和控制;风险管理;软件质量保证;正式技术评审;测量;软件配置管理;可复用管理;工作产品的准备和生产

了解什么是CMMI

能力成熟度模型集成(CMMI),用于预测软件开发组织所开发的系统和软件工程能力

(5个能力成熟等级)

CMMI定义了每一个过程域的“特定目标”,以及达到该目标所需的“特定实践”。

理解瀑布模型;增量模型;RAD模型;原型模型;螺旋模型;协同开发模型;基于构件模型;形式化方法模型;面向方面模型;统一过程

适用范围、特点、优缺点

瀑布模型:也称为线性模型或传统生存周期,V模型

适用范围:

通常发生在对一个已有系统进行明确定义的适应性调整和增强的时候

对于一个新的项目,需求必须是准确定义和相对稳定的

线性顺序模型特点:

阶段间的顺序性和依赖性;

文档驱动性;

严格阶段评估;

开发初期需要清楚全部需求;

开发周期长、风险大。

瀑布模型的缺点:

顺序太严格。实际工作经常是在多个环节之间来回反馈调整,而不是将一个环节完成后再继续前进。

产品在最后阶段才与客户见面,从心里学的角度讲有些考验客户。另外,如果此时才发现问题,需要改正,工作量将会很大。

效率可能不高。

瀑布模型的优点:

它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。

虽然有不少缺陷但比在软件开发中随意的状态要好得多。

增量模型:以迭代方式运用瀑布模型。

特点:

一般来讲,最重要的增量放在前面。

每次交付的增量产品都是可用的。

适合于功能可以划分,而且时间不紧迫的情况。

可以规避一定的风险。如有些技术还不稳定,将这部分放到后边。

RAD模型:快速应用程序开发(Rapid Application Development,RAD)是一种侧重于短暂的开发周期的增量软件模型。

瀑布模型的高速变体,通过基于构件的方法快速实现。

适于工期紧张,又可细分功能,还要有合适的构件。

缺点:

需要投入更多的人力。

各团队要紧密协作。

只适应于特殊的系统,必须可以合理模块化。

不适于高性能需求(若需调构件接口)

系统需求灵活,现有构件不容易轻易满足。

技术风险很高的情况下,不宜采用该模型。

演化过程模型:

软件,类似于其他复杂的系统,会随着时间的推移而演化

软件有技术能力的限制,时间的限制,认识理解的限制,其它客观因素的限制。演化模型也是一种迭代模型。包括:原型模型、螺旋模型、协同开发模型。

原型是一个循环的过程,所以也是迭代的过程。

原型模型:

对原型的基本要求:体现主要的功能、提供基本的界面风格、展示比较模糊的部分,以便于确定或进一步明确,防患于未然。

原型最好是可以运行的,最少要在各主要功能模块之间能够建立相互连接

原型的处理方法:抛弃型:在获取的明确需求的基础上,重新设计与开发,成本相对高,小公司一般慎用。

演化型:在原型的基础上继续开发。

原型模型的优点:

能让人(开发者或客户)很快见到产品,有成就感。

能渐进地启发客户提出新的要求或任务。

原型模型的缺点:

容易蒙骗客户,也可能由此给自己带来麻烦。

往往只为结果,而不考虑技术手段,为今后埋下隐患。

系统可能考虑不周全。

与增量模型相比:

增量模型在开发以前基本能确定系统的需求,虽然在以后的过程中也可能不断完善;原型开发适应于预先不太清楚系统的需求。

增量模型的反馈可能较少,而原型开发需要不断的大量反馈信息。

螺旋模型:结合了原形的迭代性质和瀑布模型的系统性和可控性特点;风险驱动,引入非常严格的风险识别、风险分析和风险控制;早期迭代中可能是一个理论模型或原形。

螺旋模型与原型相比:

螺旋模型虽不像增量模型中对功能有明确界定,但有比原型要清晰一些。

螺旋模型的反馈要求持续于产品的整个生命期。

适合于大型软件的开发。

协同开发模型又叫协同工程。

定义了一个活动的网络,网络上每个活动、动作和任务同时存在。

过程网络中某一点产生的事件可以触发状态的转换。

可适用于所有类型的软件开发。

基于构件模型:

什么是构件?没有统一的定义

Gartner Group定义:运行时软件构件是一个可动态绑定的、含一个或多个程序的软件包,它作为一个独立单位,通过运行时可辨别的文档化接口加以管理和存取

类似于螺旋模型,本质上是演化模型。

构件开发的步骤:对所需构件进行评估。考虑构件的集成。设计系统的软件框架。将构件放入框架。进行测试。

形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明。

特点:精密、准确。

缺点:难度大,成本高,可用人力资源少,用户不易理解,有时甚至无法完成。

方法:有穷状态机、Petri网、Z语言等。

面向方向的模型:将系统分成若干相对较独立的组成部分,这些部分称为方面。面向方面技术包括面向对象技术,比它大。

系统的方面包括用户接口、协调工作、发布、持续性、存储器管理、事务处理、安全、完整性等。还不成熟。具有螺旋型和协同型的共同特点。

统一过程:试图将传统软件模型(惯例软件模型)和敏捷过程模型的优点结合起来,即统一起来。

一些术语:面向对象(Object-Oriented, OO),面向对象分析(Object-Oriented Analysis, OOA),面向对象分析(Object-Oriented Design, OOD).

统一过程包括:起始,细化,构建,转换,生产等步骤。

起始:包括客户沟通和策划活动,此时的构架只是主要子系统及其功能、特性的试探性概括。

细化:包括用户沟通和通过过程模型的建模活动,扩展体系结构以包括软件的五种视图:用例模型、分析模型、设计模型、实现模型和部署模型。

构建:与通过软件过程的构建活动相同。采用体系结构模型作为输入,开发或获取软件构件,使得最终用户能够操作用例。

转换:软件被提交给最终用户进行Beta测试,用户反馈报告缺陷及必要的变更。另外,发布必须的支持信息:用户手册,用户指南及安装步骤等。结束时,软件增量成为可用的发布版本。

生产:与通过软件工程的部署一致。提供运行环境支持,提交并评估缺陷报告和变更请求。

第三章敏捷开发

基于敏捷原则进行的软件开发过程,视为敏捷过程。(所谓“基于”,是指充分考虑,而不是全部包含。)有自适应和增量提高的过程即是敏捷过程。

掌握敏捷开发宣言

普遍存在的变化是敏捷的基本动力

理解有哪些敏捷过程模型:

极限编程、自适应软件开发、动态系统开发、Scrum、Crystal、特征驱动开发

极限编程关键思想

极限编程(eXtreme Programming, XP)力求用最少的精力活动最大的成果,运用已有成果、方法。

Scrum 关键思想

Scrum原则与敏捷宣言一致:

组织小型团队以达到“沟通最大化、负担最小化、非语言描述、非形式化知识”过程对技术和业务变化必须具有适应性,以“保证制造具有最好可能的产品”

过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量了解一些过程模型。

开发工作和开发人员分为“清晰的、低耦合的部分或包”

坚持在产品构建过程中进行测试和文档化

Scrum过程提供“在任何需要的情况下都能完成产品的能力”。

自适应软件开发;

自适应软件开发(Adaptive Software Development, ASD)

ASD 的三个重点:思考---启动项目并完成自适应循环策划;协作---但同时鼓励个人主义;学习---三种方式,焦点组(学习用户反馈的信息),正式技术评审(自我审视),事后剖析(回望自己团队前面的工作)。

动态系统开发;

动态系统开发(Dynamic System Development Method, DSDM)---通过在可控项目环境中使用增量原型开发,模式完全满足对时间有约束的系统的构建和维护。

特点:在每个增量的环节,并不完全完成任务。留下20%在以后完成。

Crystal

目的是开发一种提倡“机动性的”的软件开发方法

特征驱动开发

特征驱动开发(Feature Driven Development, FDD)

特征:能在更短时间内完成的小功能。

可行性研究

了解可行性研究的目的和任务

掌握数据流图画法(DFD)

第四章理解需求

需求工程(Requirement Engineering, RE)

是指致力于不断理解需求的大量任务和技术。

需求工程在设计和构造之间建立起联系的桥梁。

为什么需求工程特别困难?

客户说不清楚需求;需求自身不断变动;分析人员或客户理解有误

需求分析的三个层次

业务需求、用户需求、功能需求—也包括非功能需求

业务需求:

反映了组织机构或客户对系统、产品高层次的目标要求。

用户需求:

文档描述了用户使用产品必须要完成的任务。

功能需求:

定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。

需求工程中的七个活动

起始;导出;精化;协商;规格说明;确认;管理

1. 起始:

软件工程是询问一些似乎与项目无直接关系的问题

泛谈起始,有各种各样的情况

目的是对问题、方案需求方、期望方案的本质、客户和开发人员之间初步的交流和合作的效果建立基本的谅解

2. 导出

询问客户、用户和其他人,系统或产品的目标是什么?想要实现什么?系统和产品

任何满足业务的要求,最终系统和产品如何用于日常工作?

非常困难:范围问题、理解问题、异变问题

3. 精化

将起始和导出阶段获得的信息进行扩展和提炼

是一个分析建模动作

精化的最终结果:一个分析模型,定义了问题的信息域、功能域和行为域

4. 协商

需求工程师必须通过协商的过程调节各种冲突

按优先级讨论冲突

识别和分析风险

粗略“估算”开发工作量,并评估每项需求对项目成本和交付时间的影响

使用迭代,删除、细化或修改需求,以便各方达到一定的满意度

5. 规格说明(specification)

把前面的成果用文字或其它方式明示出来。

可以是一份写好的文档,一套图形化的模型,一个形式化的数学模型,一组使用场景,一个原型或上述各项的任意组合

6. 确认:

要检查规格说明以保证:

所有的系统需求已被无歧义地说明;不一致性、疏漏和错误已被检测出并被纠正;工作产品符合为过程、项目和产品建立的标准。

由第三方(通常为评审组)完成

7. 需求管理

用于帮助项目组在项目进展中标识、控制和跟踪需求以及变更需求的一组活动。

解决方法:特征跟踪表、来源跟踪表、依赖跟踪表、子系统跟踪表、接口跟踪表等。导出需求有哪些方法

访谈;面向数据流自顶向下求精;协同需求获取;快速建立软件原型;质量功能部署;用户场景(用例)

质量功能部署(Quality Function Development, QFD)

QFD对需求的分类:

常规需求:

也称普通需求,包含客户对项目的最基本需求,是客户对整个项目最为关心的部分。期望需求:

客户可能没有表达明确或没有明确提出的需求,但是会让客户提升对项目的满意度。意外需求:

也称兴奋需求,如果实现会给客户带来惊喜,但是如果无法实现也不会受到客户责备。

第五章需求建模场景信息与类分析

需求分析产生软件操作特征的规格说明,指明软件和其他系统元素的接口,建立软件必须满足的约束。

分析时回答“做什么”,设计时回答“怎么做”。

掌握分析建模的方法都有哪些

结构化分析:

着重考虑数据和处理。

面向对象分析:

对各种对象加以研究,包括其对应的数据和处理。

关注于定义类和影响客户需求的类之间的协作方式

能够根据要求绘制:

实体-联系图(Entity-Relationship Approach, ERD);数据流图;概念类图;状态图;用例图;活动图

熟悉基本加工逻辑说明的三种方法:

结构化英语(PDL);判定表;判定树

第六章设计工程

理解设计和需求的目标有什么不同

软件需求:解决“做什么”

软件设计:解决“怎么做”

理解设计的软件设计的目标和任务

软件设计的任务:

问题结构(软件需求)---- 映射软件结构

从软件需求规格说明书出发,形成软件的具体设计方案。

根据用信息域表示的软件需求,以及功能和性能需求,进行:数据设计、系统结构设计、过程设计

数据设计侧重于数据结构的定义。系统结构设计定义软件系统各主要成份之间的关系。过程设计/构件设计则是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。

接口设计

软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。

从工程管理的角度来看,软件设计分两步完成:

概要设计(总体设计):将软件需求转化为数据结构和软件的系统结构。

详细设计(过程设计,模块设计):通过对结构表示进行细化,得到软件的详细的数据结构和算法。

了解设计概念

抽象数据抽象:具有明确和有限功能的指令序列,如“开”门

过程抽象:描述数据对象的冠名数据集合,如“门”

体系结构软件的整体结构和这种结构为系统提供概念上的完整性的方式

程序各功能模块的编排顺序、作用方式、具体的数据结构。可以用多种模型来完成一个体系结构设计。

模式设计模式描述了在某个特定场景与可能影响模式应用和使用方式的“影响力”中解决某个特定的设计问题的设计结构。

关注点分离任何复杂问题如果被分解为可以独立解决和(或)优化的若干块,该复杂问题能够更容易被处理。一个关注点是一个特征或行为,被指定为软件需求模型的一部分。

模块化软件被划分为可以独立命名的、可寻址的构件,有时被称为模块

两个问题综合时的理解复杂度通常要大于每个问题各自的理解复杂度之和

“分而治之”,将一个策略问题分解成可以管理的若干块,这样更容易解决问题。

信息隐蔽每个模块对其他所有模块都隐蔽自己的设计策略

隐蔽意味着通过定义一系列独立的模块可以得到有效的模块化,模块间只交流必须信息,为修改提供很大的益处

功能独立模块化、抽象概念和信息隐蔽的直接结果

通过开发具有“专一”功能和“避免”与其他模块过多交互的模块

具有独立模块的功能更易开发

了解内聚和耦合的不同种类

模块的独立程度可以由两个定性标准来度量:

内聚——模块之间的互相连接的紧密程度的度量

耦合——模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量

非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。独立性最强。

数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。

标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。

控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。

外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的。

内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合:

一个模块直接访问另一个模块的内部数据;

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

两个模块有一部分程序代码重迭(只可能出现在汇编语言中);

一个模块有多个入口。

原则

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

第七章进行体系结构设计

理解什么阶段要做体系结构设计

体系结构设计需要做的事情:为你提供整体的视图并保证得到正确的理解。

软件体系结构定义一:

描述一个计算机软件的各个功能模块内部关系以及不同模块之间的关系的构造图

(可以是文字的描述,也可以是图表的描述),类似于硬件设计中的原理框图,它是软件流程图的上层抽象。

软件体系结构定义二:

一个程序和计算机系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件,构件的外部可见属性以及他们之间的关系。

是一定程度上的抽象,非可运行的软件。

凭借体系结构图,软件开发人员可以:

分析设计能否完全满足需求

为设计中某些方面的变更提供指导

降低由于软件构造不合理带来的风险

掌握体系结构风格的分类及各类的主要特点

体系结构风格:对完成同一种或同一类工作,不同的设计人员在体系结构设计的方式各不一样,这种方式的一定程度上的抽象。

体系结构模式:就是风格的具体体现,或者体系结构设计的一个框架。定义了处理系统某些行为特征的方法。

1、以数据为中心的体系结构

数据存储驻留在这种体系结构的中心,其他构件经常访问(增删改查)数据存储提高了可集成性,便于现有构件修改和新构件加入

2、数据流体系结构

数据服从输入—变换---输出的简单流程。管道和过滤器结构拥有一组被称为过滤器的构件,每个构件独立于上游和下游而工作。

两种典型的数据流风格:

管道-过滤器(Pipe-And-Filter)

批处理(Batch Sequential)

3、调用和返回体系结构

主程序/子程序体系结构:主程序调用一组程序构件,这组程序构件又去调用其程序构件

远程过程调用体系结构:主程序/子程序的构件分布在多个计算机上。

4、面向对象体系结构

封装了数据和必须应用到该数据上的操作,构件间通过信息传递进行通信和合作。

5、层次体系结构

各模块实现功能的层次不一样

掌握映射数据流到“调用和返回”体系结构的方法

第八章构件级设计建模

理解什么是构件

通俗地讲,构件是一段程序,该程序能完成一个相对独立的功能,并有一定的通用性。正式定义:系统中某一定型化的、可配置的和可替换的部件,该部件封装并暴露一系列接口。针对不同的系统设计体系,构件所指的对象不一样。

了解构件设计的基本原则

开关原则(The Open-Closed Principle ,OCP)

模块应该对外延有开放性,对修改具有封闭性。

即设计者应该采用一种无需对构件自身内部(代码或者内部逻辑)做修改就可以进行扩展(在构件所确定的功能域内)的方式来说明构件。

Liskov替换原则(Liskov Subsitution Principle, LSP)

子类可以替换它们的基类

源自基类的任何子类必须遵守基类与使用该基类的构件之间的隐含约定(前置条件、后置条件)。

依赖倒置原则(Dependency inversion principle, DIP)

依赖于抽象,而非具体实现

构件依赖的其它构件(不是依赖抽象类,如接口)愈多,扩展起来就愈困难

抽象可以比较容易地对设计进行扩展

接口分离原则(Interface Segregation principle, ISP)

多个用户专用接口比一个通用接口要好

设计者应该为每一个主要的客户类型都设计一个特定的接口。

如SafeHome中FloorPlan类用于安全和监督功能,两处操作有些不同,监督功能多关于摄像头的操作,定义两个接口。

将多个构件组织起来的原则:

发布复用等价性原则---对类打包管理,同时升级。

共同封装原则----一同变更的类应该和在一起。

共同复用原则----可能一起被复用的类才能打包到一块。

理解构件设计中要完成的任务

1-7步

一个典型的构件级设计步骤:

1. 标识出所有与问题域相对应的类

2. 确定所有与基础设施域相对应的类

GUI构件、操作系统构件、对象和数据管理构件

3. 细化所有不能作为复用构件的类

(1)说明消息的细节流

(2)为每个构件确定适当的接口

(3)细化属性并定义数据类型和结构

(4)描述每个操作中的处理

4. 说明持久数据源(数据库或文件)等相关类

5. 开发并细化类的行为表示

6. 细化部署图

表示主要构件包的位置

某些情况下,部署图在这个时候被细化为实例形式

7. 反省和检查现有的设计

掌握传统构件设计的方法:

会画程序流程图、盒图(N-S图)、PAD图

第九章完成用户界面设计

掌握人机界面设计的黄金规则

Mandel[MAN97]定义了三条“黄金规则”:

置于用户的控制之下

减少用户的记忆负担

保持界面一致

理解人机界面设计中要理解哪些元素?

了解通过界面和系统交互的人

了解最终用户为完成工作要做的任务

作为界面的一部分而显示的内容

任务处理的环境

了解一些界面设计模式

完整用户界面。为高层结构和导航提供设计指导

模式:高层导航简要描述:提供高层菜单,通常带有一个图像,能够直接掉转到任一个系统主要功能。

页面布局。负责页面概括组织(用于站点)或者清楚的屏幕显示(用于需要进行交互的应用系统)

模式:层叠简要描述:呈现层叠状的标签卡,伴随着鼠标每一下点击的选择,显示指定的子功能或者分类内容。

表格和输入。考虑了完成表格级输入的各种设计方法。

模式:填充空格简要描述:允许在“文本框”中填写文字与数字数据。

表。为创建和操作各种列表数据提供设计指导。

模式:有序表简要描述:用来显示长记录列表,可以在任何一列上选择排序机制进行排序。

直接数据操作。解决数据编辑、数据修改和数据转换问题。

模式:现场编辑简要描述:为显示位置上的特定类型内容提供简单的文本编辑能力。导航。辅助用户在层级菜单、Web页面和交互显示屏幕上航行。

模式:面包屑简要描述:当用户工作于复杂层次结构的页面或者屏幕显示时,提供完全的导航路径。

搜索。对于网站上的信息或保存在可以通过交互应用访问的持久存储中的数据,能够进行特定内容的搜索。

模式:简单搜索简要描述:提供在网站或者持久数据源中搜索由字符串描述的简单数据项的能力。

页面元素。实现Web页面或者显示屏的特定元素

模式:向导简要描述:通过一系列的简单窗口显示来指导完成任务,使得用户能够一次一步地完成某个复杂的任务。

电子商务。主要针对于站点,这些模式实现了电子商务应用中的重现元素。

模式:购物车简要描述:提供一个要购买的项目清单。

其它。模式不能简单地归类到前面所述的任一类中,在某些情况下,这些模式具有领域的依赖性或者只对特定类别的用户适用。

模式:进展指示器简要描述:为某一正在进行的操作提供进展指示。

第十章质量概念

什么是软件质量

软件质量是对明确陈述的功能和性能需求、明确记录的开发标准以及对所有专业化软件开发应具备的隐含特征的符合度。

第十一章软件测试策略

理解软件测试的步骤

软件测试策略

测试策略应具备的特征:

在测试前应经过认真的技术评审,将明显的错误消于无形。

测试开始于构件

不同的测试技术适用于不同的时间点

测试由软件开发人员和独立的测试组执行

测试不同于调试,它包括调试

单元测试:目标;侧重点

内容:根据详细设计说明书、程序清单,采用白盒、黑盒测试的测试用例,对模块进行检查,主要包括以下五部分:

(1)模块接口测试

(2)局部数据结构测试

(3)路径测试

(4)错误处理测试

(5)边界测试

所测试单元不是独立的程序,它可能和其它部分交互信息,在测试时,应模拟这些数据或信息(驱动软件和桩软件)

集成测试:目标;各种集成方法及优缺点

又称组装测试,联合测试

将所有模块按设计要求组装成系统

1. 一次到位:

又称为非增式组装,一次性组装或大爆炸集成,这种集成将所有单元在一起编译并进行一次性测试。

缺点:一次成功的可能性不大;当发现缺陷时,没有多少线索能够用来帮助确定缺陷位置。

2. 增式组装:

逐步组装成较大的系统,边组装边测试

自顶向下的增殖方式;自底向上的增殖方式;混合增殖方式

确认测试:目标;α测试和β测试

在传统软件和面向对象软件间没有明显差别。

始于集成测试的结束

验证软件的功能和性能及其它特性是否与用户要求一致

系统测试:目标

面向对象的测试策略的不同点

步骤:进行有效性测试(黑盒测试)

1、制定测试计划、测试步骤,设计测试用例

2、确定所有的功能、性能均满足要求

3、软件配置复查

4、α测试和β测试

5、验收测试:由用户用实际数据进行测试。考虑软件的功能、性能、可移植性、兼容性、可维护性

α测试:

由一个用户在受控环境下进行的测试。

最终用户在开发者的场所进行。

目的是评价软件产品的FLURPS(功能、局域化、可使用性、可靠性、性能、支持),产品的界面和特色

β测试:

由多个用户在实际使用环境下的测试。

用户定期向开发者报告软件运行的问题。

主要衡量产品的FLURPS

第十二章测试战术

测试技术分类

黑盒测试/白盒测试

从要不要看代码部分来区分

动态测试/静态测试

从要不要运行软件来区分

掌握白盒测试的主要方法,并能根据要求设计测试用例

主要:条件组合测试、基本路径测试

区域数=边-点+2

掌握黑盒测试的主要方法,并能根据要求设计测试用例:

主要:等价类划分、边界值、错误推测法

理解面向对象的继承相关的测试、随机测试和类间测试

第十三章评审技术

什么是软件评审

软件评审是指在软件开发过程中,由参与评审的人员对软件开发文档或代码进行评审或检查,帮助查找缺陷和改进。

软件评审的目标和优点

目标:在软件过程中发现错误,以使他们不会在软件交付之后变成缺陷。

优点:可以早些发现错误,以防止将错误传递到软件过程的后续阶段。

软件评审与测试的区别

1)表现形式

测试的表现形式有:单元测试、集成测试、系统测试、用户验收测试

评审的表现形式有:审查、小组评审、走查、结对编程、同级桌查、轮查、临时评审

2)工作对象

测试的工作对象为:可执行系统(指编译后可运行的程序)

评审的工作对象为:需求规格说明书、架构(概要)设计文档、详细设计文档、项目计划、项目过程文档、源代码、系统界面、测试计划、测试用例和数据、用户手册

3)识别缺陷的阶段

测试识别缺陷的阶段:测试阶段(编码完成后)

评审识别缺陷的阶段:需求阶段、设计阶段、编码阶段、测试阶段

4)识别缺陷的成效

测试的成效:最多识别软件所有缺陷中30-35%的缺陷

评审的成效:最多识别软件所有缺陷中70-75%的缺陷

5)识别缺陷的成本

测试的成本:识别一个重要缺陷平均花费15-25小时

评审的成本:需求阶段识别一个重要缺陷平均花费2-3小时;设计阶段识别一个重要缺陷平均花费3-4小时;代码评审阶段识别一个重要缺陷3-5小时;测试计划评审识别一个重要缺陷3-5小时

6)解决缺陷的成本

测试的成本:消除一个重要缺陷平均花费30-80小时(包括识别缺陷时间)在开发后期才能识别缺陷,成本较高

评审的成本:需求及设计阶段消除一个重要缺陷5-10小时;代码评审阶段消除一个重要缺陷5-15小时更倾向于在开发前期识别缺陷,成本较低

7)投入回报比较

某研究表明,客户使用过程中发现、纠正与需求相关的缺陷的费用是比需求开发阶段发现和纠正同样缺陷的费用的68~110倍(Boehm 1981;Grady 1999)。即68~110 : 1

第十四章项目管理

理解项目管理涉及的范围

人员、产品、过程、项目

了解W5HH原则

检查点(Check Point):

指在规定的时间间隔内对项目进行的检查与复审工作,通过比较实际进展与计划进度的差距,并根据差距进行调整。

里程碑(Mile Stone):

完成阶段性工作的标志,往往是一些重要活动的完工,或重要文档的交付,或阶段评审的通过。

基线(Base Line):

指一个(或一组)配置项在项目生命期的不同时间点上通过正式评审而进入正式受控的一种状态。基线其实是一些重要的里程碑。基线一旦建立后,以后的任何更改都需要受到控制。

第十五章过程和项目度量

理解项目度量的概念和项目度量的步骤

项目度量使软件项目管理者能够:评估正在进行的项目的状态;跟踪潜在的风险;在问题造成不良影响之前发现他们;调整工作流程或任务;评估项目团队控制软件工作产品质量的能力。

项目度量的目的是双重的:

首先,这些度量能够指导进行一些必要的调整以避免延迟,并减少潜在问题及风险,从而使得开发时间减到最少;其次,项目度量可在项目进行的基础上评估产品质量,并且可在必要时修改技术方法以改进质量。

项目度量的步骤:

建立历史数据基线;

对工作量等的估算;

将实际工作量等的测量与估算值比较,以控制项目的进度;

收集技术度量、评价设计质量、测试等的方法。

记录和跟踪所发现的错误;

补充历史数据基线。

掌握项目度量方法有哪些;掌握面向功能的度量和面向规模的度量

面向功能度量用一种称为“功能点”(Function Point, FP)的测量。使用软件所提供的功能的测量作为规范化值。因为“功能”不能直接测量,所以必须通过其他直接的测量来导出。功能点是基于软件信息领域的可计算的(直接的)测量及软件复杂性的评估而导出的。掌握功能点的计算方法

Lorenz和Kidd提出了下列用于OO项目的场景:

场景脚本的数量。场景脚本是一个详细的步骤序列,用来描述用户和应用系统之间的交互。

关键类的数量。关键类是“高度独立的构件”。

支持类的数量。支持类是实现系统所必需的但又不与问题域直接相关的类,如;UI 类,数据库访问记操作类,计算类

每个关键类的平均支持类数量。关键类早期可确定,在采用GUI的应用中,支持类是关键类的2-3倍,在不采用GUI的应用中,支持类是关键类的1-2倍。可用于估算支持类数量。子系统的数量,子系统是实现某个功能的类的集合。一旦确定了子系统,人们就更容易制定出合理的进度计划,并将子系统的工作在项目人员之间进行分配。

将上述度量随项目测量(例如花费的工作量、发现的错误和缺陷、建立的模型或文档资料)一起收集。随着数据库规模的增长,面向对象的测量数据和项目测量数据之间的关系将提供有助于项目估算的度量。

第十六章估算

掌握软件规模估算的方法:

1.把估算推迟到项目的后期进行–不现实

2.根据已经完成的类似项目进行估算—不总能

3.使用比较简单的分解技术,生成项目的成本和工作量估算

4.使用一个或多个经验模型来进行软件成本和工作量估算

多采用3,4 交叉检查的形式

掌握基于问题的估算;了解基于过程的估算;了解基于用例的估算

LOC估算

FP估算

估算过程:首先利用历史数据或凭直觉为每个功能或信息域估算出一个乐观的、可能的和悲观的数据

接着计算三点期望值

应用历史生产率数据

了解估算模型的总体结构,了解COCOMO Ⅱ

典型的估算模型是通过回归分析从以往软件项目中收集到的数据而得到的。

这种模型的总体结构:

E = A + B×(ev) C

其中,A、B、C为经验常数,E是工作量(人.月)、ev是估算变量(LOC或FP)

COCOMO Ⅱ

一种层次结构的软件估算模型

主要应用于以下领域:

应用组装模型:软件工程早期使用

早期设计阶段模型:需求已稳定,体系结构已基本建立时使用

体系结构后阶段模型:在软件的构造过程中使用

第十七章项目进度安排

理解人员和工作量之间的关系

会画任务网络和甘特图

网络图和时序图(甘特图)是项目时间管理中常用的两种图示。

利用网络图和甘特图,可以清楚地表示出项目中所有活动的先后顺序、依赖关系以及每个活动的持续时间。

了解获得值分析

第十八章风险管理

了解面对风险的两种策略

被动风险策略和主动风险策略

了解识别风险、预测风险、风险缓解、监控的策略

建立风险条目检查表。

第十九章变更管理

了解软件配置项内容

软件配置项是在软件过程中创建的信息,也可将软件工具列入配置管理的范畴,在现实中,是将SCI组织成配置对象,存在项目数据库中。

软件配置项分为基本对象和复合对象:

基本对象:分析\设计\编码\测试时所建立的”文档单元”,如,需求规格说明中的一节、一个模块的源代码、一组测试用例。

复合对象:基本对象或其他复合对象的一个集合。如,“设计规格说明书”是一个复合对象、一些基本对象,如“数据模型”、“模块N”的集合。

每个配置项可用一组信息来唯一地标识它。

理解基线的定义

由正式技术评审而得到的软件配置项(SCI)的正式文本构成了基线。

基线定义:

已经通过正式评审和批准的规格说明或产品,它可以作为进一步开发的基础,并且只有通过正式的变更控制规程才能够修改它。

基线中的配置项被“冻结”了,不能随意修改

理解变更控制流程

变更控制的目的是防止配置项被随意修改而导致混乱。

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲 线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型 软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件 质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具 软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自 动地支持软件的开发和管理三要素的关系:相互关联与支持 软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认 测试-使用与维护-退役 软件开发和测试活动之间的关系软件 开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物 质量的重要手段。测试是贯穿于整个开发流程了,而不是在编码完成才开始。 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工 作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率 演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。属于 迭代开发方法。该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析 螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持 需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。特别适合于大型复杂的系统 喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发 方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的 自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。在面向对象方法中,把一切都看成是对象。OO 方法用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联) 自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小 到易于掌握为止 抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。 过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类 封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部 细节。只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。 模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模 块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。②尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

软件工程期中考试以及答案

1、瀑布模型下,采用结构化的方法,在它的生命周期各个阶段中,那个阶段出错对软件的 影响最大() A、概要设计阶段 B、维护阶段 C、测试排错阶段 D、需求分析阶段 2、UML是软件开发过程中的重要工具之一,它主要用于那种开发方法() A、基于数据流的结构化开发方法 B、基于需求动态定义的原型方法 C、基于对象的面向对象的方法 D、基于实体的信息建模方法 3、面向对象方法的主要特征除了封装,继承外还有() A、完整性 B、多态性 C、可移植性 D、可维护性 4、结构化设计方法在软件开发中用于() A、概要设计 B、详细设计 C、可行性分析 D、测试 5、软件质量保证应该在()阶段开始。 A、编码 B、需求分析 C、测试 D、设计 6、数据字典是对数据定义的集合,它所定义的数据包含在() A、数据流图 B、流程图 C、软件结构图 D、顺序图 7、结构化程序的三种基本控制结构是() A、过程、函数、模块 B、调用、返回、转移 C、顺序、选择、循环 D、命令、语句、函数 8、软件详细设计的任务是确定每个模块的() A、软件体系结构 B、功能 C、外部接口 D、算法和数据结构 9、在结构化设计中能够衔接概要设计和详细设计的工具是() A、类图 B、流程图 C、DFD图 D、SC图 10、顺序图反映对象之间发送信息的时间顺序,它与()是同构的。 A、类图 B、状态图 C、协助图 D、活动图 11、下面说法错误的是() A、该图是对象图 B、borrowbook()是方法 C、name是属 D、该图是类图

12、下图中描述“聚合关系”的是() A 、 B 、 C 、 D 、 13、下面的顺序图问号所代表的是() 级专业: 题 ) … … 封 … … … … … … … … … … … … … … … 线 … … … … … … … … … … … … … …

软件工程问题整理版

1、软件危机定义、发生原因、常见表现,如避免软件危机? (1)软件危机定义:课本Page 8(开发和维护过程) (2)发生原因、常见表现:课本Page 8-9,练习册Page 1 (3)如避免:Page 10 (采用软件工程的法) 答案(由于大部分答案参考ppt,故仅供参考,下同) 软件危机定义:是指在计算机软件的开发和维护过程中所遇到的一系列重问题。 表现在: (1)对于软件开发的成本和进度的估计很不准确。 (2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。 (3)开发的软件可靠性差。 (4)软件通常没有适当的文档。 (5)软件的可维护性差。 (6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 原因: (1)软件的规模愈发庞大; (2)软件开发的管理困难。 (3)成功的软件开发经验没被很好地应用。 (4)软件开发和维护中千金错误认识和法的形成可以归结与计算机发展早期软件开发的个体化特点。 (5)软件开发技术落后。 (6)生产式落后。 (7)开发工具落后,生产率提高缓慢。 如避免(参考,可以自己总结): 从软件开发的工程化法入手,即用现代工程的概念原理、技术和法去指导软件的开发、管理和维护,这就是软件工程思想和法。具体措施: (1)使用好的软件开发技术和法; (2)要有良好的组织、密的管理,各类人员协同配合,共同完成任务; (3)使用好的软件开发工具,提高软件生产率; (4)建立格的文档资料,重视软件开发过程的阶段评审。 2、软件生命期模型(软件生命期?)的组成,每个阶段的容? (1)组成:Page 21 (2)容:Page 22—25) 答案: 软件生存期定义: 一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存期。 软件生存期一般可分为以下阶段: (1)问题定义(2)可行性研究(3)需求分析(4)概要设计(总体设计) (5)详细设计(6)编码(7)测试(8)维护 也可以分为四个大的阶段:软件分析、软件设计、编码与测试、运行与维护

软件工程复习资料2012秋(1)

软件工程复习题一 一、选择题,请从四个可选项中选择正确答案。 1.以下哪一项不是软件危机的表现形式() A.成本高 B.生产率低 C.技术发展快 D.质量得不到保证 2.哪种模型分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。() A.演化模型 B.喷泉模型 C.原型模型 D.螺旋模型 3.可行性研究的目的不包括() A.分析开发系统的必要性 B.确定系统建模的方案 C.分析系统风险 D.确定是否值得开发系统 4.可行性分析研究的费用大约是项目总经费的()。 A.2% B.8% C.20% D.50% 5.在E-R 模型中,包含以下基本成分()。 A.数据、对象、实体 B.控制、联系、对象 C.实体、联系、属性 D.实体、属性、联系 6.软件需求分析产生一个重要文档是()。 A.软件维护说明书 B.需求规格说明书 C.可行性报告 D.初步用户手册 7.内聚程度较低的是()。 A.通信内聚 B.过程内聚 C.顺序内聚 D.时间内聚 8.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是() A.把软件划分成模块 B确定模块之间的调用关系 C.确定各个模块的功能 D.设计每个模块的伪代码 9.UML 语言支持的建模方式不包括有()。 A.静态建模 B.动态建模 C.模块化建模 D.功能建模 10.以下哪一项不是面向对象的特征。() A.多态性 B.继承性 C.封装性 D.过程调用 11.在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了() A.软件危机 B.软件工程 C.程序设计革命 D.结构化程序设计

12.瀑布模型的关键不足在于() A.过于简单 B.不能适应需求的动态变更 C.过于灵活 D.各个阶段需要进行评审 13.可行性研究的四大要素是()。 A.经济、技术、法律和社会环境 B.经济、技术、开发组织能力和领导者水平 C.经济、技术、计算机硬件环境和网络带宽 D.经济、技术、软件开发工具和人员的稳定性 14.经济可行性研究的主要内容包括() A.开发过程 B.开发工具 C.风险分析 D. 效益分析 15.在需求分析过程中,分析员要从用户那里解决的最重要的问题是()。 A.要求软件做什么 B.要给软件提供哪些信息 C.要求软件工作效率如何 D.要求软件具有什么样的结构 16.DFD中的每个加工至少需要() A.一个输入流 B.一个输出流 C.一个输入或输出流 D.一个输入流和一个输出流 17.PDL是描述处理过程()。 A.做什么 B.为什么做 C.怎么做 D.对谁做 18.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为()A.数据耦合 B.公共耦合 C.标记耦合 D.内容耦合 19.按照模块独立性,耦合程度由弱至强正确的顺序是()。 A.数据耦合、控制耦合、外部耦合、内容耦合 B.控制耦合、数据耦合、内容耦合、外部耦合 C.内容耦合、外部耦合、控制耦合、数据耦合 D.外部耦合、内容耦合、数据耦合、控制耦合 20.UML 中,包图是一种()。 A.集合 B.数据结构 C.分组机制 D.对系统的动态描述

南京信息工程大学滨江学院李振宏《软件工程》期末复习 个考点完整版

选择20题,每题1分;填空10题,每题1分;简答5题,每题8分;设计题3题,每题10分(流程图的设计、流图设计和环形复杂度的计算、语句覆盖和判定覆盖测试用例的设计)。 1.详细设计中,过程设计的工具,N-S图,PAD图及判定表和判定树各有何特点和适用情况?(第六章) (1)盒图(N-S图): 一种不允许违背结构程序设计精神的图形工具,又称为N-S图。它有下述特点: ①功能域(作用域)明确,可以从盒图上一眼就看出来。 ②盒图没有箭头,因此不允许随意转移控制。 ③很容易确定局部和全程数据的作用域。 ④很容易表现嵌套关系,也可以表示模块的层次结构。 适用:对大部分设计均有适用性,常用于软件工程详细设计中,提供一种结构化的方式,便于思考和解决问题。 (2)PAD图: PAD是问题分析图(problem analysis diagram) ,它用二维树形结构的图来表示程序的控制流。PAD图的主要优点如下: ①使用PAD符号设计的程序必然是结构化程序。 ② PAD图所描绘的程序结构十分清晰。最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸。每增加一个层次,图形向右扩展一条竖线。图中竖线的总条数就是程序的层次数。 ③PAD图表现的程序逻辑,易读、易懂、易记。程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。 ④容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。 ⑤既可表示程序逻辑,也可描绘数据结构。 ⑥支持自顶向下、逐步求精方法的使用。 适用:为FORTTAN,COBOL,PASCAL等每种常用的高级程序设计语言提供了一套相应的图形符号。 开始时可以定义一个抽象的程序,随着设计的深入,使用def符号逐步增加细节,直至完成详细设计,如图6.6所示。 (3)判定表(P127有例子): 适于表示复杂的条件组合与应做的动作之间的对应关系。特点是: ①能够间接而又无歧义的描述处理故意则。 ②并不适用于作为一种通用的设计工具。 ③一张判定表由以下四部分组成:左上部列出所有条件,左下部是所有可能的动作,右

软件工程期末考试题含答案

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

软件工程试题与答案整理版

软件工程试题 一、简述题(4 * 10 = 40) 1 简述生命周期方法学及其特点。 2 什么是软件过程?简述RUP及其特点。 3 简述面向对象的基本思想。 4 简述控制软件复杂性的基本方法。 二、判断题(判断命题正确与否,如错误,请改正)(10 * 2 = 20) 1 ()在建立了设计模型之后,就可以开始制定测试计划。 2 ()耦合是指一个模块内各个元素彼此结合的紧密程度。 3 ()数据流程图是描绘物理系统的传统工具。 4 ()软件工程标准有5个不同的级别层次:国际标准、国家标准、行业标准、企业规范、项目规范。 5 ()软件重用是指在软件开发过程中重复使用相同或相似软件元素的过程。 6 ()模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。 7 ()如果测试数据满足条件覆盖,则必然满足判定覆盖。 8 ()软件开发模型是跨越整个软件生命周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。 9 ()能力成熟度模型是评价程序员程序设计能力的一种全面而客观的评审依据。 10()好的测试具有较高的发现错误的可能性。 三、选择题(将正确的答案代号填入括号中,每小题2分,共20分) 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.()分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。 A.增量模型 B.喷泉模型 C.变换模型 D.螺旋模型 7.软件测试方法中的()属于静态测试方法。 A.人工检测 B.路径覆盖 C.黑盒法 D.边界值法 8.在数据流程图中,符号“□”用来表示()。 A.处理 B.外部实体 C.数据存储 D.数据源点 9.()是基于形式化规格说明语言及程序变换的软件开发模型。 A.增量模型 B.喷泉模型 C.变换模型 D.螺旋模型 10.对象类之间的归纳关系就是()关系。 A.一般-特殊 B.整体-部分 C.相互依赖 D.层次关系 四、填空题(每小题10分,共20分) 1. 信息系统是一个复杂的人机系统,系统内外环境以及各种人为的、机器的因素都在不断地变化。为了使系统能够适应这种变化,充分发挥软件的作用,产生良好的社会效益和经济效益,就要进行系统的维护工作。系统的维护对于延长系统的生命周期具有决定意义,请列出系统开发中能够提高系统可维护性的要求。 ① ② ③ ④ ⑤ 2. 软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。请列出软件开发过程中软件质量保证的主要措施。 ① ② ③

软件工程方法与实践 期末考试复习资料(江理)

软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思想和方法去进行软件开发、维护和管理的学科。软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。 软件工程有哪些基本的思想:a.推迟实现的观点b.逐步求精的观点c.分解与抽象的观点d.信息隐蔽的观点e.质量保证的观点 CMM(Capability Maturity Model)能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 极限编程(Extreme Programming , XP)是一种软件工程方法学是敏捷软件开发中最富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气 软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。 软件需求分类:功能需求、非功能需求和领域需求 结构化分析(Structured Analysis, SA) 结构图(Structure Chart ,SC) 面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式 数据流类型:变换型数据流、事务型数据流、混合型数据流 Jackson图:Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。

软件工程复习考试题库带答案完整版

一、选择题 1、白盒测试法是通过分析程序的(C)来设计测试用例的。 A.应用范围B.功能 C.内部逻辑 D.输入数据 2、风险预测从两个方面评估风险,即风险发生的可能性以及(D)。 A.风险产生的原因 B.风险监控技术 C.风险能否消除D.风险发生所产生的后果 3、极限编程(XP)由价值观、原则、实践和行为四部分组成,其中价值观包括沟通、简单性和(C)。 A.好的计划 B.不断的发布 C.反馈和勇气 D.持续集成 4、等价分类法的关键是(C)。 A.确定等价类的边界条件 B.按照用例来确定等价类 C.划分等价类 D.确定系统中相同和不同的部分 5、下列不属于黑盒测试的技术是(A)。 A.程序段或语句的功能 B.模块的接口 C.数据的名称和用途D.模块的功能 6、为了提高模块的独立性,模块之间最好是(D)耦合。 A.控制耦合 B.公共耦合 C.内容耦合D.数据耦合 7、一个软件开发过程描述了“谁做”,“做什么”,“怎么做”和“什么时候做”,RUP用(A)来表述“谁做”。 A.角色 B.活动 C.制品D.工作流 8、功能性注释嵌入在源程序内部,它是用来说明(A)。 A.程序段或语句的功能B.模块的接口 C.数据的名称和用途 D.模块的功能 9、在结构化分析方法中,数据字典是重要的文档。对加工的描述是数据字典的组成内容之一,常用的加工描述方法有( C )。 A.只有结构化语言B.有结构化语言和判定树 C.有结构化语言、判定树和判定表 D.有判定树和判定表 10、某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行(B)维护。 A.正确性 B.适应性 C.完善性 D.预防性 11、软件危机的主要原因是(A)。 A软件本身特点与开发方法?B对软件的认识不够 C软件生产能力不足D软件工具落后 12、DFD是常用的进行软件需求分析的图形工具,其基本符号是(C)。 A.输入、输出、外部实体和加工

《软件工程》期中考试试题

可行性研究的目的是( ) 《软件工程》期中考试试题 选择题(每小题 1 分,共 40 分) 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。 A. 软件工程 B.软件周期 C.软件危机 D.软件产生 ( )是将系统化的、 规范的、 可定量的方法应用于软件的开发、 运行和维护的过程。 A 软件过程 B 软件测试 C 软件生存周期 D 软件工程 从结构化的瀑布模型看, 在它的生命周期中的八个阶段中, 下面的几个选项中哪个环节 出错,对软件的影响最大 ( )。 A 、详细设计阶段 B 、概要设计阶段 一个软件项目是否进行开发的结论是在( A. 软件开发计划 B ? 可行性报告 )文档中做出的。 C ?需求规格说明书 D.测试报告 需求分析的产品是( ) A ?数据流程图案 B .数据字典 C ?判定表 D ?需求规格说明书 需求分析中开发人员要从用户那里了解( ) A ?软件做什么 B ?用户使用界面 C .输入的信息 D ?软件的规模 瀑布模型本质上是一种( )模型。 A. 线性顺序 B.顺序迭代 C.线性迭代 D.早期产品 瀑布模型存在的问题是( )。 A ?用户容易参与开发 B ?缺乏灵活性 C ?用户与开发者易沟通 D ?适用可变需求 螺旋模型是一种将瀑布模型和( )结合起来的软件开发模型。 A ?增量模型 B .专家系统 C ?喷泉模型 D ?变换模型 原型化方法是用户和设计者之间执行的一种交互构成,适用于( )系统。 A ?需求不确定性高的 B ?需求确定的 C .管理信息 D ?实时 软件可行性研究实质上是要进行一次 ( )需求分析、设计过程。 A 、简化、压缩的 B 、详细的 C 、彻底的 D 、深入的 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. C 、 需求分析阶段 D 、 测试和运行阶段

软件工程习题及详细答案

个人收集整理勿做商业用途 软件工程习题及答案 一、选择题: 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. 注释是提高程序可读性的有效手段,好的程序注释占到程序总量的。 A、1/6 B、1/5 C、1/4 D、1/3 7. 变换型和事务型是程序结构的标准形式。从某处获得数据,再对这些数据作处理,然后将结果送出是属于。 A、变换型 B、事务型 8. PAD(Problem Analysis Diagram)图是一种工具。 A、系统描述 B、详细设计 C、测试 D、编程辅助 9. 分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的。 A、总貌 B、细节 C、抽象 D、软件的作者 10. 数据流图中,当数据流向或流自文件时,。 A、数据流要命名,文件不必命名 B、数据流不必命名,有文件名就足够了 C、数据流和文件均要命名,因为流出和流进数据流是不同的 D、数据流和文件均不要命名,通过加工可自然反映出

软件工程复习提纲(20160615)

软件工程复习提纲 Chapter1 1.开发文档都有哪些?用图来表示它们之间的关系。 2.说明软件工程研究的内容。 3.软件工程的7条基本原理有何现实意义。 4.怎样理解ISO9000的文档体系?质量手册、程序文件、质量记录三者有何联系和区别? 5.怎样理解CMMI,如何用CMMI去管理软件企业? 6.是否存在这一种现象:搞系统软件的公司不需要采用CMMI和ISO9000模式?CMMI和ISO9000 模式只适用于搞应用软件的企业?如果是,为什么,如果不是,又为什么? 7.软件工程与信息系统工程有何异同? 8.怎样理解元数据? Chapter2 1.为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系? 2.简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。 3.软件公司的ISO9000或CMM管理体系与软件开发模型有关吗,为什么? 4.你对“生存周期模型裁剪指南”有什么看法? 5.“图书馆信息系统”的开发选用什么开发模型合适? Chapter3 1.立项的具体表现形式是什么? 2.立项建议书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员? 3.什么叫风险分析,技能风险与技术风险有何区别? 3.合同、任务书、立项建议书三者有何异同?有何关系? 4.对软件项目和产品的“功能、性能、接口”三项指标如何理解? Chapter4 1.需求分析的目的是什么,需求分析的难点在哪里? 2.需求分析的理论基础有哪几条? 3.为什么说需求分析是面向流程的? 4.解释术语:元数据、实体、中间数据。 5.用户需求报告与需求规格书有何差异? 6.需求描述有哪几种工具?你喜欢哪一种,为什么?

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

《软件工程》期末考试题及答案

《软件工程》期末考试样题 一、填空题 1.软件开发模型有瀑布模型、螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型。 2.可行性研究一般可以从经济可行性、技术可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n年后从银行得到F元,现在应该存入的钱数为F/(1+i)n。 4.数据流图基本符号包括数据输入的源点和数据输出的汇点、加工、数据流、数据存储文件。 5.Jackson图除了可以表达程序结构外,还可以表达数据结构,它首先要分析数据结构,并用适当的工具来描述。 6.详细设计的工具有图形工具、表格工具和语言工具。 7.IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待软件系统和现实世界的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用对象、类、继承、封装、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列()属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX

2.下列哪个图是N-S图的构件()。 A. B. C. D. 3.对于螺旋模型,下列()不是利用笛卡尔坐标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABCD )。 A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(ABCD)。 A.表头 B.表体 C.表名 D.字段名 3.关于内容耦合的描述正确的是(AD )。 A、内容耦合是最高程度的耦合 B、应该尽量使用内容耦合 C、高级语言一般设计成允许内容耦合的形式 D、如果一个模块有多个入口,可能发生内容耦合 4.下列属于不标准的书写格式(BCD)。 A、书写时适当使用空格分隔 B、一行写入多条语句 C、嵌套结构不使用分层缩进的写法 D、程序中不加注释

软件工程复习资料

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.软件会逐渐退化而不会磨损,其原因在于 A.软件备件很难订购 B.不断的变更使组件接口之间引起错误 C.软件错误在经常使用之后会逐渐增加 D.软件通常暴露在恶劣的环境下 7.下面说法正确的是 A.大多数软件系统是不容易修改的,除非它们在设计时考虑了变化 B.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产 C.一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功 D.购买大多数计算机系统所需的硬件比软件更昂贵 8.Ariane 5火箭发射失败的事例告诉我们 A.(2)软件后备系统可以通过复制生成 B.(3)软件重用必须重新进行系统论证和系统测试 C. 选项(1)和(3) D.(1)系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制

9.软件危机的主要原因是 A.软件本身的特点及开发方法。 B.软件工具落后。 C.软件生产能力不足。 D.对软件的认识不够。 10.下面的描述正确的是 A.软件质量是在开发过程中逐渐构建起来的。 B.软件质量是由产品的功能、性能、易用性等外在特性决定的。 C.运行正确的软件就是高质量的软件。 D.软件产品质量越高越好,最理想的情况是达到“零缺陷”。 11、可行性研究主要包括哪几项? A.技术可行性、经济可行性和操作可行性 B.技术可行性、经济可行性和道德可行性 C.技术可行性、法律可行性和操作可行性 D.技术可行性、操作可行性和法律可行性 12、成本/效益分析的目的是帮助()正确地作出是否投资于这项开发工程的决定。 A.系统分析员 B.客户组织的负责人 C.项目经理 D.软件开发人员 13、在进行成本/效益分析的时候,需要考虑() A.开发成本 B.运行费用 C.系统带来的经济效益 D.系统使用寿命 14、数据流图和数据字典共同定义了新系统的逻辑模型。 A.错 B.正确 15、可行性研究可行性研究需要的时间长短和所研究系统的规模关系不大。 A. 正确 B.错误 16、把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。 A.正确 B.错误 17、结构化分析方法遵守的准则之一——定义软件需要完成的功能,需要建立的模型是 A.功能模型 B.数据模型 C.行为模型 D.动态模型 18、下列叙述中,()不属于数据字典的作用。 A.为用户与开发人员之间统一认识 B.为需求分析阶段定义各类条目

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程期中考试以及答案

文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持. 1文档来源为:从网络收集整理.word 版本可编辑. 东莞理工学院(本科)试卷 2014--2015学年第2学期 考试时间90分钟 《软件工程》(期中考试) 把答案写到答题卡上否则不给分 一、 单项选择题请把答案写在下面表格中(每题2分共50分) 1、 瀑布模型下,采用结构化的方法,在它的生命周期各个阶段中,那个阶段出错对软件的影响最大( ) A 、概要设计阶段 B 、维护阶段 C 、测试排错阶段 D 、需求分析阶段 2、UML 是软件开发过程中的重要工具之一,它主要用于那种开发方法() A 、基于数据流的结构化开发方法 B 、基于需求动态定义的原型方法 C 、基于对象的面向对象的方法D 、基于实体的信息建模方法 3、面向对象方法的主要特征除了封装,继承外还有() A 、完整性 B 、多态性 C 、可移植性 D 、可维护性 4、结构化设计方法在软件开发中用于() A 、概要设计B 、详细设计C 、可行性分析 D 、测试 5、软件质量保证应该在()阶段开始。 A 、编码B 、需求分析 C 、测试D 、设计 6、数据字典是对数据定义的集合,它所定义的数据包含在( ) A 、数据流图 B 、流程图 C 、软件结构图 D 、顺序图 7、结构化程序的三种基本控制结构是() A 、过程、函数、模块 B 、调用、返回、转移 C 、顺序、选择、循环 D 、命令、语句、函数 8、软件详细设计的任务是确定每个模块的() A 、软件体系结构B 、功能 C 、外部接口D 、算法和数据结构 9、在结构化设计中能够衔接概要设计和详细设计的工具是() A 、类图B 、流程图C 、DFD 图D 、SC 图 10、顺序图反映对象之间发送信息的时间顺序,它与()是同构的。 A 、类图 B 、状态图 C 、协助图D 、活动图 11、下面说法错误的是() A 、该图是对象图B 、borrowbook ()是方法C 、name 是属 D 、该图是类图 姓名:学号: 系别: 年级专业: ( 密封线内不答题 ) ……………………………………………密………………………… …… ……… ………封… ……………………………………线……………………………………

相关文档
最新文档