南京大学软件工程期末复习汇总

南京大学软件工程期末复习汇总
南京大学软件工程期末复习汇总

一、软件过程

1(掌握软件生命周期的几个活动

a) 目标 b) 任务 c) 输出

例子:解释软件生命周期中的“设计”活动) 软件开发活动:

(1) 需求分析(需求工程)

目的:根据描述明确问题域特性E ,构建定义良好的系统行为S ,使得E 通过S ,达

到预期的需求R

需求工程的主要工作:

(a) 研究问题背景,描述问题域特性E (b) 需求开发,确定 R

(c) 构建解系统,描述解系统行为S ,使得 理解现实为第一目的,保证S 的质量为第二目的

结果: SRS (Software Requirements Specification) 用户需求规格说明

(2) 设计:

目的:以软件实体为基础建立软件结构即整个将要开发的系统的模型或设计表示

任务:(a)体系结构设计 (b)细节设计

(c)用户界面设计=(HCI)? 结果:模型:体系结构模型,系统模型

规格说明书:体系结构说明,系统构件说明,界面设计文档

设计决策会极大的影响系统质量,所以要有多种选择和折中

(3) 实现

目的:用编程语言实现系统中单独的组件 任务: 程序设计、编程、调试 结果 :可执行的程序 (4) 测试

目的:验证和确认软件质量

任务:测试设计、单元测试、集成测试、系统测试|、确认测试、回归测试 结果:发现的缺陷和错误

测试不一定要在实现结束后进行,可能并行进行,如果测试用例从需求确认中直接得出,可能影响需求分析 (5) 安装与维护

目的:在系统向用户发布后保持系统的运行,包括完善型(Perfective)、调整型

(Adaptive)、修正型(Corrective)、防止型维护(Preventive) 任务:安装,培训,维护 输出:正常运转的系统

软件过程模型:

2(要求 特征描述 优点 缺点 例子:

解释软件开发的瀑布模型,并说明其优缺点 比较瀑布模型和螺旋模型)

R

S E ,

(1) Build-fix

(2) 瀑布模型

又被称为“经典生命周期”,它提出了一个系统的、顺序的软件 开发方法,从用户需求规格说明开始,通过策划、建模、构建 和部署的过程,最终提供一个完整的软件并提供持续的技术支 持。

特征:沟通,策划,建模,实现,部署顺

序性的步骤或阶段

在开发的不同阶段之间有反馈回路 文档驱动

优点:文档化,明确定义的阶段

缺点:完全和固定的预先生成的文档在实践中并不可行 用户只在第一个阶段参与,

直到最后用户才能看到可执行的程序。 阶段的顺序和完全的执行往往不可取 产品只在过程的最后阶段产生

很少项目遵循瀑布模型提供的顺序 只在需求被明确定义时适用 (3) 增量模型

以迭代的方式运用瀑布模型,在每个阶段运用现线性序列,

并产生出一个软件的可交付增量,根据该增量的评价结果制定下一个增量计划,重复这一过程直至最终产品的产生。

特征:(1)增量发布,用户的需求被赋予优先级,优先级最高 的包含在早期发布的增量中。(第一个增量往往是核心产品) (2)每次的发布都会增加新的功能

(3)在每个阶段中,瀑布模型都被使用(迭代的运用瀑布模型) (4)需求驱动

优点:在短时间内就可以产生可运行的部分产品 较少的初始资金投入,投资上的迅速回报

前面产生的产品的规格可以作为后面的增量的合同。

缺点:如果一个问题域没有很好的被理解,很难产生全面的需求规格说明

(4)RAD模型(侧重于短暂的开发周期的增量软件过程模型)

特征:迭代方法、用户参与、原型、复合工具、小型开发团队、时间核:小里程碑四个阶段:联合需求规划(JRP)、联合应用设计(JAD)、构建

结束:测试,培训,为下一个阶段做准备

特征:运用迭代方法,用户参与,Prototyping

?Sophisticated tools

?Small development teams, and

?Time boxing: fixed time frame in which activities are carried out

优点:能够实现快速开发,在需求被很好理解时,能在短期内创造出“全功能系统”

缺点:1 对于大型的可伸缩的项目,RAD 需要大量的人力资源来创建多个相对独立的RAD 团队,2 如果开发者和客户没有为短时间内极速完成整个系统做好准备,RAD会失败 3 如果一个系统不能很好的模块化,RAD构件建立会有很多问题4 如果系统需求是高性能,并且需要调整构件接口的方法来提高性能,不能采用RAD模型 5 技术风险很高的情况下,不宜采用

(5)原型开发

特征:客户提出了软件的基本功能但没有详细定义输入,处理和输出需求,或者开发人员对算法的效率,操作系统的兼容性和人机交互的情况不确定,原型是为定义需求服务的,导出需求十分困难,根据已知需求快速设计一个原型,根据用户反馈细化需求,调整原型,满足客户需求,运用迭代技术,逐渐明确需求。为了构建可执行原型系统,开发者利用已有的程序片段或应用工具,快速产生可执行程序,需求驱动

优点:更好的适应用户需要

可以尽早的发现问题

缺点:1.为了尽早完成软件,开发者没有考虑软件的质量和可维护性

2.为了使原型快速运行起来,往往采用折中手段,导致原型风险

3.客户看到了软件的工作本版后,反感开发者要求系统重建,使软件开

发管理陷入失效

描述:开始于沟通,快速策划一个原型开发迭代并进行建模和快速设计。然后对产生的模型进行部署,然后由客户或者用户进行评价,不断迭代。

(6)螺旋模型

描述:每个框架活动代表螺旋上的一个片段,随着演化的开始,从圆心开始顺时针方向,执行螺旋上的一圈表示的活动。每次演化都要考虑风险。标记里程碑——沿着螺旋路径达到的工作产品和条件的结合体

特征:在每个阶段的演化中用瀑布模型+风险驱动+原型开发

内圈表示早期的系统分析和原型,外圈表示经典瀑布模型的其他方面优点:采用循环的方式逐步加深系统定义和实现的深度,降低风险

确保共利益者都支持可行的和令人满意的系统解决方案

在项目的所有的阶段考虑风险,适当利用该方法,能够在风险变为问题前化

解风险

缺点:依赖大量的风险评估专家来保证成功,如果所有的风险不能解决,项目就会

立即停止

只适用于大规模的项目

二、需求工程

*需求定义[IEEE]

a)用户为了解决问题或达到某些目标所需要的条件或能力;

b)系统或系统部件为了满足合同、标准、规范或其它正式文档所规定的要求

而需要具备的条件或能力;

c)对(a)或(b)中的一个条件或一种能力的一种文档化表述。

3(理解软件和现实世界的互动机制)

软件与现实世界的互动:

(1)当现实的状况与人们期望的状况产生差距时,就产生了问题。

(2)要解决问题,就需要改变现实当中某些实体的状态或改变实体状态变化的演进顺序,

使其达到期望的状态或演进顺序。

(3)这些实体和状态构成了问题解决的基本范围,称为该问题的问题域(Problem Domain)

(4)软件系统通过影响问题域,能够帮助人们解决问题,称为解系统

共享现象:

(1)软件系统能够与问题域进行交互和相互影响的原因在于,软件系统中的某

些部分对问题域中的某些部分的具有模拟特性。

(2)换句话说,软件系统当中含有问题域某些部分的模型(或模拟),常见的模

型包括数据模型、对象模型、处理模型等。

(3)问题域中的某些信息能够和模型中的信息建立映射关系

(4)这些通过映射建立的共同知识,就是问题域和解系统之间的共享现象

需求

是用户对问题域当中的实体状态或事件的期望描述

直接需求是可以通过更改共享现象被满足的需求;

间接需求是需要修改共享现象,同时连锁影响问题域才能满足的需求

需求关注的是现实世界中的部分,软件关注的是解系统,而规格说明关注的是共享现象 规格说明是解系统为满足用户需求而提供的解决方案,规定了解系统的行为特征 主要包括两个部分:(1)对共享现象(模型)的描述;

(2)系统对共享现象所施加的操作的描述。

4(1)功能需求(Functional Requirement ): 与系统主要工作相关的需求,即在不考虑物理约束的情况下,用户希望系统所能够执行

的活动,这些活动可以帮助用户完成任务。 功能需求主要表现为系统和环境之间的行为交互。 (2)性能需求(Performance Requirement ):

系统整体或系统组成部分应该拥有的性能特征,例如CPU 使用率、内存使用率等。 (3)质量属性(Quality Attribute ):

系统完成工作的质量,即系统需要在一个“好的程度”上实现功能需求,例如可靠性程度、可维护性程度等。 (4)对外接口(External Interface ):

系统和环境中其他系统之间需要建立的接口,包括硬件、软件接口、数据库接口等

(5)约束:进行系统构造时需要遵守的约束,例如编程语言、硬件设施等

功能需求的层次性: 业务需求:

系统建立的战略出发点,表现为高层次的目标它描述了组织为什么要开发系统

以建立一个共同的前景

用户需求:

执行实际工作的用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么,模糊、不清晰 、多特性混杂、 多逻辑混杂 系统需求:

用户对系统行为的期望,一系列的系统行为联系在一起可以帮助用户完成任务,满足业务需求 ;系统需求可以直接映射为系统行为,定义了系统中需要实现的功能,描述了开发人员需要实现什么。

将用户需求转化为系统需求的过程是一个复杂的过程:

首先需要分析问题领域及其特性,从中发现问题域和计算机系统的共享知识,建立系统的知识模型;

然后将用户需求部署到系统模型当中,即定义系列的系统行为,让它们联合起来实现用户需求,每一个系统行为即为一个系统需求。该过程就是需求工程当中最为重要的需求分析活动,又称建模与分析活动。

(没背)需求工程的主要活动: 问题域解系统共享现象

规格说明

5(能够描述需求工程的活动

每一个活动的主要工作

例:描述需求工程的活动)

(1)需求起始:解决业务需求

活动:建立项目范围和前景(涉众分析、确定涉众、识别多种观点、协商合作、首次提问)

(2)需求导出:

活动:协同需求收集、质量功能部署(QFD)、开发用户场景和用例,导出工作产品

QFD:将客户要求转化成软件技术需求的技术。强调“什么是对客户有价值的”;

确认了三种需求:正常需求、期望需求、令人兴奋的需求

产品:需要及可变性的陈述,对系统和产品的范围描述,客户及其他涉众人员名单系统技术环境的描述,一系列需求以及各需求实现的限制,不同操作环境下

的用例,能更好的确定需求的各种原型

(3)需求精化:开发一个精确的技术模型,用以说明软件的功能、特征和约束。是一个

分析建模的动作,最终结果是分析模型,定义问题的信息域、功能域、行为域,精化与导出交互进行

活动:分析模型的元素(基于场景的、基于类的元素、行为元素、面向信息流的元素) 建立一个能够识别出数据和行为特性的模型

利用分析模式建立需求分析模型

(4)需求协商:在一个开发者和用户都能接受的现实的能发布的产品上达成一致

活动:识别系统或子系统关键的共利益者

确定共利益者“赢”的条件

就共利益者“赢”的条件进行协商使其与所有涉及人的一系列双赢条件一致

(5)需求规格说明:需求工程师完成的最终工作产品,将作为软件工程师活动的基础,

描述了一个基于计算机系统的功能、性能以及影响系统开发的约束。可以用自然语言描述和图形化的模型来编写,也可以只是使用场景

(6)需求验证:对需求工程的工作产品进行质量评估。检查规格以保证:所有的系统需

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

(7)需求管理:用于帮助项目组在项目进展中标识、控制和跟踪需求以及变更需求的一

组活动。

活动:在需求发展后发布基线

保持跟踪表

变更控制

三、设计工程

6(理解设计理论的7个特征,并掌握它们在软件设计上的影响

设计理论有哪7个特征?

解释设计理论中的多样性和演化性特征

设计理论具有多样性和演化性,请说明这个特征对软件设计有什么响) 设计理论的七个特征:

(1)设计起始于需求的目的:设计前需要需求工程

(2)设计通常引起转化:软件改变世界,需求、共享现象、领域特征组成软件

设计的基础,也就是分析模型

(3)设计需要创造性:新思想的产生是设计理论的基础

无论何时,只要有一个从现实到未来可能的充满想象力的飞跃,设计就会发生;新思想

产生的精确方式是难以系统化表示的影响:设计理论的一般风格:抽象,精化

软件设计的具体风格:模块化和信息隐藏,新思想产生的影响:软件功能独立

创造性:抽象,精化,模块化,信息隐藏。抽象包括:行为抽象(只显现功能,隐藏具体实现)数据抽象(对数据对象进行抽象);精化(与抽象相反的过程,将抽象时没有

考虑的细节考虑进去;对抽象级上的功能加以具体实现,考虑层次结构设计)模

块化(把软件划分成相互独立的部分,通过部分的集成来满足需求,要符合高内

聚低耦合的特点)。信息隐藏:抽象的重要手段,模块化,抽象是信息隐藏的直接

结果。每个模块对其他模块隐藏它的具体设计决策。

(4)设计需要满足约束:原始的需求确定了部分约束,大部分约束在设计的过

程中逐渐被发现

影响:软件质量管理,尤其是非功能的需求的管理

(5)设计是一个问题求解和决策的过程:设计问题的解决空间很多,设计的特

征在于在一系列的选择中做决定。

软件需要看重基础原则的决定,(如体系结构的设计决定;)

软件需要通过不同方面来划分做决定的工作(,如分为界面设计,安全设计,分配设计,实时设计等)

(6)设计能产生用来实现最终产品的进度安排:产生软件设计模型

(7)设计具有多样性和演化性:任何细节设计都有多种实现,在不同的实现方

式之间的决策,使得设计具有多样性,由于不断的决策,设计也要不断演化使设计

与当前情况相符合。随着演化的进行,需求和约束也会逐渐明晰。

软件设计中的多样性,决定软件在设计时可以使用已有的问题解决模式,如:体系

结构模型,设计模型,代码模型等。同时,软件设计需要用重构等方法进行演化,软件的设计需要复用框架构件等比较成功的解决方案。

该特征使得不同的软件可以共同分享解决问题的方法以及软件演化的方法:软件再造

软件需要共享问题求解(模式)、体系结构风格、设计模型、编码模型等知识;

7(理解常见的体系结构风格

Data-centered architectures

Data flow architectures

Call and return architectures

Layered architectures

能够画出并描述体系结构风格的示意图)

(1)以数据为中心的体系结构:

数据存储(存储库或黑板) (2) 数据流体系结构

pipes :管道 filter :过滤器。

(3) 调用返回体系结构

调用返回:可以设计出相对易于修改和扩展的程序结构

主程序/子程序体系结构:将功能分为控制层次,主程序调用一组程序构件,这些构件又去调用其他构件。每个模块只暴露几个接口,层次严格的控制结

构,不允许跨层次调用。

远程过程调用体系结构:将主子程序的结构分布到网络的多个计算机上 构件

用户界面层

应用层 实用层

(4) 层次体系结构

当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以用这种结构。过滤器通过管道连接,管道将数据从一个构件传送到另一个构件。无控制流,各过滤器独立工作,可修改,但只能基于数据流动 如果退化成单线的交换,称为批序列

客户软件

层次结构:定义了一系列不同层次,每个层次各自完成操作。这些操作不断接近机器的指令集。最外层,构件完成用户界面的操作,最内层,构件完成

与操作系统的连接;中间层提供各种实用程序服务和应用软件的功能。

(5) 面向对象体系结构:构建封装数据和必要的操作,构件间通过信息传递进行通信

与合作.

软件构件级(细节)设计中基于类的构件设计的原则有哪些?:

8类设计原则:(例:请解释软件详细设计中的单一职责原则)

(0) 单一职责原则(SRP):一个类的改变只能出于一种原因

(1)开关原则:模块应该对外延具有开放性,对修改具有封闭性。设计者应该采用

一种无须对构件自身内部做修改就可以进行扩展的方式来说明构件。在扩展的

功能与设计类本身之间分离出一个缓冲区。

(2)Liskov替换原则:子类可以替换它们的基类。将子类传递给构件来代替基类时,

使用基类的构件仍能工作。任何子类必须遵守基类与使用该基类的构件之间的

隐含约定。

(3)依赖倒置原则:依赖于抽象而非具体实现。抽象可以比较容易的扩展,不会导

致大的混乱。构件依赖的具体构件越多,扩展越困难。

(4)接口分离原则:多个用户专用接口比一个通用接口好。否则会产生多目标类和

不必要的依赖。

9(能够列出至少5个界面设计的原则,并加以解释)

界面设计原则:

(1)置用户于控制之下:

以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式;

提供灵活的交互;

允许用户中断或撤销交互。

把用户与内部技术细节隔离开来

(2)减轻用户的记忆负担

减轻对短期记忆的要求

建立有意义的缺省

定义直观的快捷方式

界面的视觉布局应该基于真实世界的象征

以不断进展的方式揭示信息

(3)保持界面一致

允许用户将当前任务放入有意义的环境中

在应用系统家族内保持一致性

如果过去的交互模型已经建立起了用户期望,除非有不得已的理由,否则不要

改变它。

4 使用用户语言及友好的错误提示,好的错误提示需要告诉用户发生了什么,需要怎么改进

5 提供帮助和文档,并且应该放在用户易于访问的位置

4个模型:(原版无)

1.用户模型:绿色,普通,熟练

2.系统模型:全屏,局部屏幕,背景

3.任务模型:BusinessVSLogic分为事物和逻辑

4.内容模型:图像的表示应当适应内容

黄金原则 四、软件测试:

10(能够描述测试的5个层次

主要工作)

测试的五个层次:

(1) 单元测试:检测单个模块的行为,侧重以源代码形式实现的每个单元,它充分

利用测试技术,检查构件中每个控制结构的特定路径以确保完全覆盖。注意边界测试。

(2) 集成测试:测试模块之间相互协作时的工作情况。普遍使用关注输入和输出的测试用例设计技术。常用增量集成(自顶向下、自底向上集成),冒烟测试 (3) 验收测试:将软件的行为与用户的最终需求进行比较,常用于安装测试,α测试,β测试

(4) 系统测试:软件行为与需求规格说明书进行比较,将软件与系统的其他成分作

为一个整体来测试,包括安全测试,压力测试,性能测试,恢复测试 (5) 回归测试:查看新的版本中软件的行为。回归测试可能包括以上各个层次的重

新测试来保证改变没有引进新的错误。

11(能够描述白盒测试和黑盒测试,并进行优缺点比较) 黑盒测试与白盒测试:

?白盒测试:白盒测试是一种测试用例测试方法,基于过程细节的封闭检查。它利用作为构件层设计的一部分而描述的控制结构来生成测试用例,覆盖所有语句、路径和分支,并保证执行至少一次,测试早期

黑盒测试:行为测试,侧重软件功能需求。检查系统的基本方面,很少关心软件内部结构,测试后期。后期

12(白盒测试的方法:

五、软件项目管理:

13(掌握LOC 和FP

LOC(产生的代码行数)与FP(功能点):

LOC是一种面向规模的测量,基于开发者技术的角度,

优点:LOC是所有软件开发项目的产物,很容易进行计算;许多现有的软件估计模型都是使用LOC或KLOC作为关键输入;有大量的文献和数据涉及LOC。

缺点:LOC的测量依赖于编程语言和程序员的熟练程度;它们对设计的很好但较短的程序会产生不公平的评判;它们不适用于非过程语言;它们在估算时需要一些可能

难以得到的信息。

FP是一种面向功能的测量,基于用户功能的角度。计算方法:各个项与权重的乘积的和。可以用FP估计特定语言的LOC,LOC = AVC * 功能点数,AVC 是衡量某种语言的一个指标优点:FP与程序设计语言无关,对于使用传统语言和非过程语言的应用系统来说,它们都是比较理想的。它所依据的数据是在项目开发初期就可能得到的数据缺点:计算的依据是主观的而非客观的数据。信息域的计算可能难以在事后收集。FP没有直接的物理意义,它仅仅是一个数字而已。

14(理解几种图示工具的使用)

软件开发进度安排常用的图表:

(1)任务持续时间及依赖关系表任务网络:

(2)时序图:

所有的项目任务在左边的栏中列出,水平条表示各个任务的工期,同一时段中存在多

个水平条时,代表任务之间的并发性,菱形表示里程碑。

人员安排:

15(能够解释风险管理过程)

风险管理的主要活动:

(1)风险识别:指出对项目计划的威胁。识别已知的和可预测的风险。一种方法是建立

风险条目检查表。识别产品规模、商业影响、客户特性、过程定义、开发环境、开发技术、人员才干及经验等类型中的风险。

(2)风险分析:估计每个风险的可能性或概率;风险相关问题产生的后果。活动:

建立一个尺度,以反映风险发生的可能性。

描述风险产生的后果

估计风险对项目及产品的影响。

标明风险预测的整体精确度,以免产生误解。

(3)风险计划:考察每一个风险并且为风险的管理开发一个策略。包括:

风险回避,风险最小化,应急计划

(4)风险跟踪和控制:

评估每一个确定的风险,跟踪看它的可能性变大还是变小。评估风险的影响是否发生变化

六、软件过程管理:

16为什么进行软件项目度量?

可以提供能够引导长期的软件过程改进的一组过程指标,使得软件项目管理者能够:

(1)评估正在进行中的项目状态

(2)跟踪潜在的风险

(3)在问题造成不良影响之前发现他们

(4)调整工作流程或任务

(5)评估项目团队控制软件工作产品质量的能力

17(描述SQA Group的主要活动)

七、软件质量管理:(SQA小组的主要活动)

(1)为项目准备SQA计划。SQA计划是在制定项目计划时制定的,并且有所有的共利益者进

行评审,该计划规定了:

(a)需要进行的评估

(b)需要进行的审核和评审

(c)项目可采用的标准

(d)错误报告和跟踪规程

(e)SQA小组需要编写的文档

(f)需要为软件项目团队提供的反馈信息

(2)参与开发项目的软件过程描述:SQA小组评审软件过程的描述,以确保其与组织方针、

内部软件标准、外界强制推行的标准以及软件项目计划的其他部分相符。

(3)评审各项软件工程活动,以验证其是否符合定义的软件过程。(跟踪)

(4)审核指定的软件工作产品,以验证其是否符合定义的软件过程中的相应部分(验证)

(5)确保软件工作及工作产品中出现的偏差已文档化,并且按照文档化的规程进行了处理。

(6)记录所有不符合的部分,并报告给高层管理者

协调变更控制和变更管理,帮助收集和分析软件度量信息

软件配置(软件过程中产生的所有信息项总称)管理:

18(能够简要描述SCM process主要活动各个活动的目的,主要工作)

SCM的目标:

1)标识变更

2)控制变更

3)保证正确地实现变更

4)向那些利害相关的人员报告变更

软件配置管理过程中的一系列任务中的四个主要目标:

(1)统一标识软件配置项

(2)管理一个或多个软件配置项的变更

(3)便于构造应用的不同版本

(4)在配置随时间而演化时,确保能够保持软件质量

SCM的任务:

标识、版本控制、变更控制、配置审核、报告Array 1 标识

开发的系统需要确定对象基线:一个标识确定其本身,

另一个标识确定任何关于此基线的更新,对象的变更说

明了系统的演化,系统基线包括了一个聚合的系统组件

——SCI

The software baseline consists as an aggregate of system

components called SCI (Software Configuration Items)

2 变更控制

认识到需要变更——来自变更的请求——开发者评估

——形成变更报告——变更控制授权人做出决策——

若批准,变更请求进入活动序列,建立ECO——为配置

对象分配人员——“检出”配置对象(配置项)——实

施变更——评审变更——“检入”变更后的配置项——建立用于测试的基线——执行质量保证和测试活动——“提出”下一个版本(修订)所包含的变更——重建软件的适当版本——评审所有配置项变更——在新版本中包含变更——发布新版本

3 版本控制

结合了规程和工具,可以用来管理软件过程中所创建的配置对象的不同版本。其系统实现或者直接集成了四个主要功能:存储所有配置对象的项目数据库;存储配置对象所有版本;是软件工程师能够收集所有相关配置对象和构造软件特定版本的Make工具;问题跟踪功能(变更控制也有)

4 配置审核

保证变更的实现是正确的(还有正式评审技术,配置审核是其补充)

5 状态报告

解答了如下问题:发生了什么事;是谁做的;是什么时候发生的;会影响到别的什么

各个活动的目的,主要工作(见上)

1 统一标识软件配置项

2 管理一个或多个软件配置项的变更、

3 便于构造应用不同的版本

4 配置随时间而演化时,确保能够保持软件质量

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

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

南京大学软件工程专业本科生培养方案与教学计划

南京大学软件工程专业本科生培养方案与教学计划 (2005年6月1日修订) 软件产业作为信息产业的核心是国民经济信息化的基础,已经涉足工业、农业、商业、金融、科教文卫、国防和百姓生活等各个领域。采用先进的工程化方法进行软件开发和生产是实现软件产业化的关键技术手段。因此,为积极促进我国软件产业发展,增强其国际竞争力,加速我国信息化建设,急需培养大批软件工程领域的实用型、复合型软件工程技术人才和软件工程管理人才。 为促进南京大学软件工程专业本科生在入学、培养、毕业和学位授予等环节的规范化,确保培养质量,根据教育部有关要求,依据南京大学有关本科生培养的规定,特制定本方案。 本方案作为南京大学培养软件工程专业本科生的指导性文件,规定其培养目标、方向和要求,以及培养对象、方式及学习年限,并就其课程设置、课程修读和学位论文要求等给出指导性意见。 一、培养目标、方向和要求 1、培养目标 软件工程专业本科生的培养目标是针对国民经济信息化建设和发展的需要,面向软件产业界对软件工程技术人才的需求,培养具有国际竞争能力的多层次复合型软件实用人才。 作为一名合格的软件工程专业本科毕业生,应当符合国民经济信息化建设和发展需要,以及软件企业对软件工程技术人才需求,能够成为企业所需要的较高层次的软件工程技术和管理人才,其基本能力应当达到(具有国际水准的)程序员、高级程序员、软件工程师、以及项目质量管理人员的水平。 2、培养方向 软件工程专业本科生培养的基本思路是强化基础、注重实践。针对软件产业的人才需求,本科生阶段强调宽口径培养,不具体细分专业培养方向,但考虑专业课程模块设置,从而使得毕业生既具备扎实的基础和宽广的知识面,又较深入地认识某类软件系统和应用领域。 软件工程专业的基础课程应涵盖软件基础,软件工程基础,数学、工程与职业基础。软件工程专业的专业课程应覆盖软件设计开发、软件过程与管理、计算机网络、数字化技术、信息安全技术、嵌入式软件、信息系统、图形系统等。 3、培养要求 1、软件工程专业本科毕业生应较好地掌握马克思主义、毛泽东思想和邓小平理论;拥护党的基本路线和方针、政策;热爱祖国,遵纪守法,品行端正,身心健康,具有良好的职业道德和创业精神,积极为我国经济建设和社会发展服务。 2、软件工程专业本科毕业生应具备科学的世界观,掌握科学方法;掌握扎实的软件基础理论知识和较宽广的软件工程专业知识,具有技术创新能力;受到良好的软件工程训练,具有较强的工程实践能力和团队协作能力;熟悉软件应用和工具,具备运用先进的工程化方法、技术和工具从事某一应用领域软件分析、设计、开发、维护等工作的能力。 3、软件工程专业本科毕业生应达到基本的数学和语言要求;熟练掌握英语,具备良好的阅读、理解和撰写外语资料的能力和进行国际化交流的能力;拥有较好的沟通技巧和团队工作能力,通晓和遵守法律和职业道德。 人才还应具备以下的一般特征: ●对软件系统、计算机系统、信息系统乃至与计算机软件相关的社会系统具有系统级的认识能力; ●有扎实的理论基础,能够全面通晓计算机软件和软件工程的基础知识,较深入理解至少一个计算机软 件应用领域; ●有较强的动手能力,能够具有一定的系统分析和软件设计的能力,熟练使用两种以上主流的操作系 统、数据库管理系统和程序设计语言,做到理论与实践相结合;

《软件工程》期末复习题1

考试时间: 16周周一5,6节 考试地点: 二教419 406 408 考试题型: 选择题:20分 简答题:30分 应用题:50分 各章内容及题型总结: 第1,2章本章的主要题型是选择题和简答题。 1. 软件危机的主要表现是什么?答:“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。 2. 软件工程的定义?答:软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机。 IEEE的定义:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。 3. 软件工程研究的主要内容是什么?答:软件开发技术和软件开发管理两个方面。软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和环境。软件开发管理方面主要研究软件工程管理学、软件工程经济学、软件工程心理学。 4. 软件工程的7条基本原理是什么?答:①用分阶段的生命周期计划严格管理②坚持进行阶段评审③实行严格的产品控制④采用现代程序设计技术⑤结果应能清楚地审查⑥开发小组的人员应该少而精⑦承认不断改进软件工程实践的必要性。 5. 什么是软件生命周期?答:指一个软件从提出开发要求开始到该软件报废为止的整个时期。通常将软件的生命周期划分为可行性研究、需求分析、设计、编码、测试、集成、维护阶段。 6. 软件过程的定义?答:软件开发过程、活动和任务的结构框架。它能够清晰、直观地表达软件开发全过程,明确规定要完成的主要活动和任务。 7. 你能举出几个典型的软件过程模型吗?答:主要有瀑布模型、演化模型、喷泉模型、螺旋模型、智能模型。模型的选择是基于软件的特点和应用领域。 8. 目前,主流的软件开发方法有哪些?答:结构化方法和面向对象方法。 9. 软件工程师职业道德规范的8组关键词是什么?1999年由ACM/IEEE-CS软件工程师道德规范和职业实践(SEEPP)联合工作组制订了《软件工程师职业道德规范》,规范含有8组由关键词命名的准则:公众、客户和雇主、产品、判断、管理、专业、同行、自身。 10. 职业化软件工程师要注意的十大问题是什么?答:①高质量地完成任务②遵守行业标准,不能肆意按照自己的想象来发挥③积极帮助他人④版权意识敏感⑤严格遵守计划⑥公私分明⑦注意知识更新⑧善于沟通⑨遵守职业规则⑩诚实和正直。 第3章本章的题型主要是选择题。 1. 可行性研究的目的是什么?答:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2. 可行性研究的四大要素是:经济上可行,技术可行,法律允许、社会环境可行。 3. 可行性研究的实质:是要进行一次简化了的系统分析和设计过程。首先要分析和澄清问题定义,导出系统的逻辑模型,探索若可供选择的方案,对每种方案仔细研究它的可行性。推荐一个较好的解决方案和一个初步的计划。 第4,5章本章的题型有选择题。 2. 什么是需求工程?需求工程是指应用有效的技术和方法进行需求分析,确定客户需求,帮助分析人员理解问题,定义目标系统的外部特征的一门学科。需求工程中的主要活动有:需求获取、需求分析、需求规格说明、需求验证和需求变更管理。

软件工程 期末复习笔记

软件工程期末复习笔记 胡丹 一.基本概念 1.什么是软件工程? 答:见作业 2.什么是参与者,角色? 答:所有参与到软件项目中的人员称为参与者。把项目或系统的一组职责称为角色。一个角色与一组任务联系在一起,且被派给一个参与者。一个参与者能充当多个角色。 3.系统和模型。系统指内部关联部分的集合。模型指系统的任何抽象。 4.软件工程开发活动:开发活动通过构造和验证应用域模型或系统模型处理复杂性问题,开发活动包括:需求获取、分析、系统设计、对象设计、实现、测试。 二.基本概念(2) 1.系统开发的主要内容集中在系统的3个不同模型上: 功能模型,在MUL中,使用用例图表示功能模型,以从用户观点描述系统功能。 对象模型,在MUL中,使用类图表示对象模型,使用对象、属性、关联和操作来描述系统的结构。 动态模型,在UML中,使用交互图、状态图和活动图表示动态模型,以描述系统的内部行为。 2.用例模型(功能模型) 2.1用例模型=用例文档+用例图 2.2用例间的关系:用例之间的关系关联(association )、包含(include)、扩展(extend)和泛化(generalization)这几种关系。 关系关联(association ):通信1.表示参与者用例之间进行通信。 2.不同的参与者可以访问相同的用例。 包含(include):把它所包含的用例行为作为自身行为的一部分。 扩展(extend):扩展用例被定义为基础用例的增量扩展。 基础用例提供扩展点以添加新的行为。 扩展用例提供插入片段以插入到基础用例的扩展点上泛化(generalization):继承 2.3 用例文档包括的内容:1.用例名。2.范围。 3.级别。 4.主要参与者。 5.涉众及其关注点。 6.前臵条件 7.后臵条件 8.主事件流 9.备用事件流。 3.类图(对象模型) 3.1类是面向对象系统组织结构的核心。对一组具有相同属性、操作、关系和语义的对象的抽象。包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。

北方工业大学软件工程期末复习题(含答案)

北方工业大学 《软件工程》课程期末复习题(答案) A 卷 2014年春季学期 开课学院:信息工程学院 考试方式:闭卷 考试时间:120 分钟 班级 姓名 学号 一.简要回答下列各问题(共40分,每个小题5分) (1) 阐述软件工程的定义。 答: ● 是指导计算机软件开发和维护的一门工程学科; ● 采用工程的概念、原理、技术和方法来开发和维护软件; ● 把证明正确的管理技术和最好技术综合运用到软件开发中; ● 研究经济地开发出高质量的软件方法和技术; ● 研究有效维护软件的方法和技术。 (2) 简述软件危机的原因。 答: ● 缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 ● 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误 。 ● 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 ● 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作, 不仅涉及技术问题,更重要的是必须有科学严格的管理。 ● 缺少有效的软件评测手段,提交用户的软件质量不能完全保证。 订 线 装

(3) 画出软件生存周期的瀑布模型的示意图,并简单评述其优缺点。 (4) 画出软件生存周期的增量模型的示意图,并简述其优点。 优点: ●可强迫开发人员采用规范化的方法。 ●严格地规定了每个阶段必须提交的文档。 ●要求每个阶段交出的所有产品都必须是经过验证 的。 缺点 ●由于瀑布模型几乎完全依赖于书面的规格说明,很 可能导致最终开发出的软件产品不能真正满足用户 的需要。如果需求规格说明与用户需求之间有差异, 就会发生这种情况。 ●瀑布模型只适用于项目开始时需求已确定的情况。 1-2 瀑布模型示意图 ●能在较短时间内向用户提交可完成一些有用的工作产 品,即从第1个构件交付之日起,用户就能做一些有用 的工作。 ●逐步增加产品的功能可以使用户有较充裕的时间学习和 适应新产品,从而减少一个全新的软件可能给用户组织 带来的冲击。 ●项目失败的风险较低,虽然在某些增量构件中可能遇到 一些问题,但其他增量构件将能够成功地交付给客户。 ●优先级最高的服务首先交付,然后再将其他增量构件逐 次集成进来。因此,最重要的系统服务将接受最多的测 试。

软件工程期末复习填空题

软件工程填空题 1、软件危机是指在计算机软件的_开发和维护_过程中所遇到的一系列严重问题。 2、软件危机包含下述两个方面的问题:一是 _如何开发软件,以满足对软件日益增长的需求;二是_如何维护数量不断膨胀的已有软件_。 3、软件不同于硬件,它是计算机系统中的_逻辑部件_而不是物理部件。 4、一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把这个漫长的时期称为__生命周期__。 5、软件配置主要包括 __程序、文档_和_数据_ 等成分。 6、软件工程学的一个重要目标就是提高软件的 _可维护性、减少 _软件维护_ 的代价。 7、软件工程是指导计算机软件 __软件开发_ 和 __维护_ 的一门工程学科。 8、软件工程包括 _技术_ 和 __管理__ 两方面的内容,是技术与管理紧密结合所形成的工程学科。 9、通常把在软件生命周期全过程中使用的一整套技术方法的集合称为 _方法学_ ,也称为范型。 10、软件工程方法学包含_方法、工具和_过程_ 三个要素。 11、目前使用最广泛的软件工程方法学,分别是 _传统方法学和面向对象方法学 __ 。 12、概括地说,软件生命周期由 _软件定义_ 、 __软件开发_ 和 __运行维护(软件维护)__ 3个时期组成,每个时期又进一步划分为若干个阶段。 13、软件定义时期通常进一步划分为3个阶段,即 _问题定义__ 、 __可行性研究__ 和需求分析。、 14、螺旋模型将 _瀑布、_ 模型和 __快速原型_ 模型结合起来,加入了两种模型均忽略了的风险分析,弥补了这两种模型的不足。 15、瀑布模型 _不能_ 适应需求可变的软件开发,只有到 _开发结束_ 才能见到整个软件系统。 16、可行性研究阶段当从系统逻辑模型出发,探索若干种可供选择的主要解法,对每种解法都应该从 __技术可行性、经济可行性_和 _操作可行性__ 这三个方面研究每种解法的可行性。

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

复习整理 一、绪论 1.软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 ●是指导计算机软件开发和维护的一门工程学科; ●采用工程化的原理及方法对软件进行计划、开发和维护; ●把证明正确的管理技术和最好技术综合运用到软件开发中; ●研究经济地开发出高质量的软件方法和技术; ●研究有效维护软件的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。

⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1) 过程式编程范型:把程序理解为一组被动的数据和一组能 动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小 (2) 面向对象编程范型:数据及其操作被封装在对象中;程序 =对象+消息;着眼于程序中的对象,粒度比较大 (3) 基于构件技术的编程范型:构件是通用的、可复用的对象 类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大 二、软件生存周期及软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么, 有哪几个主要活动 ●定义:一个软件从开始立项起,到废弃不用止,统称为软件的 生存周期 ●目的:软件生存周期划分为计划、开发和运行3个时期;把整 个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的 任务,就能够化简每一步的工作内容,使因为软件规模而增长 而大大增加了软件复杂性变得较易控制和管理。 ●主要活动:需求分析、软件分析、软件设计、编码、软件测试、 运行维护(P19) 2、软件生命周期划分为哪几个阶段

辽师软件工程期末复习题

说明: 以下试题虽然经过多次整理,但由于时间有限,存在错误或不足之处在所难免。同学们在阅读和使用过程中如发现问题,请你在课程评价的“建议”中指出,具体方法是: 写明大小题号:问题所在;正确内容。 在此谢谢你提供的方便和指正。 一、概念题 1、软工程:是1)将系统性的、规范化的、可定量的方法应用于软件的开发、 运行和维护,即将工程化应用到软件上;2)对1)中所述方法的研究。 2、软件:是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。 3、软件危机:是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 4、软件过程:是软件工程人员为了获得软件产品而在软件工具的支持下实施的 一系列软件工程活动。 5、基线:是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开 发的基础,并且只有通过正式的变化控制过程才能改变。 6、软件配置项:是为配置管理而作为单独实体处理的一个工作产品或软件。 7、对象:是系统中用来描述客观事物的一个实体,它是构成系统给的一个基本 单位,有一组属性和对这组属性进行操作的一组服务组成。 8、软件过程模型:是描述软件过程的整体框架,它是软件过程的一种抽象表示。 9、类:是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提 供了统一的抽象描述,其内部包括属性和服务两个主要部分。 10、实体类:用于描述必须存储的信息及其相关行为,它是对系统核心信息的建 模,通常这些信息需要长久地保存。 11、版本:是确定在明确定义的时间点上某个配置项的状态。

12、耦合度:是表示两个子系统之间的关联程度。当一个子系统发生变化时对另 一个子系统的影响很小,则称它们是松散耦合的;反之,如果变化的影响很大时,则称它们是紧密耦合的。 13、软件需求:1)用户解决问题或达到目标所需要的条件或能力。2)系统或系 统部件要满足合同、标准、规范或其他正式规定文档所需要具有的条件或能力。3)一种反映上面1)或2)所描述的条件或能力的文档说明。 14、软件实现:是软件产品由概念到实体的一个关键过程,它将详细设计的结果 翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。 15、内聚性:是子系统内部的相关程度。当子系统中彼此相关的多个对象执行类 似的任务时,则认为该子系统是高内聚的;反之,当子系统内的多个对象彼此不相关时,则认为是低内聚的。 16、软件验证:是指试图证明在软件生存期各个阶段,软件产品或中间产品是否 能够满足客户需求,包括逻辑协调性、完备性和正确性。 17、软件测试:广义上讲,测试是指软件产品生存周期内所有的检查、评审和确 认活动。狭义上讲,测试是对软件产品质量的检查和评价,它一方面检查软件产品中存在的质量问题,同时对产品质量进行客观的评价。 18、软件再工程:是以系统理解为基础,结合逆向工程、重构和正向工程等方法, 将现有系统重新构造成为新的形式。 19、软件确认:是一系列的活动和过程,其目的是保证软件产品能够符合其描述 要求。 20、软件维护:是指在软件运行或维护阶段对软件产品所进行的修改,做这些修 改时可能改正软件中的错误,也可能是增加新的功能以适应新的需求,但是

软件工程期末考试总复习题与答案

)))))))) 精品文档考试教学资料施工组织设计方案 复习题 填空题 1.在信息处理和计算机领域内,一般认为软件是_程序____、_文档____ 和_数据____ 。 2.数据流图的基本组成部分有_数据的源点与终点____、数据 流_____、加工_____、数据文件_____。 3.数据流图和数据字典共同构成了系统的_逻辑____模型,是 需求规格说明书的主要组成部分。 4.划分模块时尽量做到__高内聚、低耦合______,保持模块的 独立性,尽量使用公共模块。 5.类的实例化是_对象_______。 6.人们常用硬件可靠性的定量度量方法来度量软件的可靠性和可用性,常用的度量软件可 7.靠性的两个指标是_成功地运行的概率_______和_平均故障 时间_______。

8.将待开发的软件细化,分别估算每一个子任务所需要的开发工作量,然后将它们加起来, 9.将得到软件的总开发量。这种成本估算方法称为_自底向上 _______。 10.如果一个模块被n 个模块调用,其中直接的上级模块的个数是m 个(m<=n )那么该模块的扇入数是____N_______ 个。 11.结构化设计以__数据流图_________ 为基础,按一定的步骤映射成软件结构。 12.软件的风险分析可包括风险识别、风险预测和风险驾驭(或风险管理)等3项活动。 )))))). )))))))) 13.软件著作权登记的3种主要类型:(1)著作权登记;(2)著 作权延续登记;(3)权利转移备案登记。 14.软件工程管理的主要内容有:项目经费管理,软件质量管理, 项目进度管理和人员管理。 15.面向对象分析的目的是对客观世界的系统进行___建模 _______________ 。 16.软件维护工作的生产性活动包括分析评价、修改设计和 ____编写程序代码_______ 等。

软件工程期末复习重点

1、什么是软件工程 在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 2、软件生存周期分哪几个阶段分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机 系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界 面等要求,生成软件需求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细 设计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 3、简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。 A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入; 依据上一阶段活动的结果实施本阶段应完成的活动; 对本阶段的活动进行评审; 将本阶段活动的结果作为输出。 B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件 的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然 后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下一

河北工业大学软件工程期末复习

软件工程期末复习总结 第一讲概述(选择U填空U简答) 1.1 软件工程的研究内容 软件工程要考虑专业软件开发所需要的理论、方法和工具----工程技术问题 软件工程要考虑如何有效的在软件开发中利用有限的成本资源----工程管理的问题 1.2 什么是软件? 软件包括:---软件的内涵 ①能够提供客户所需功能与性能的计算机程序; ②使程序能够适当的操作信息的数据结构; ③用以描述程序开发过程及使用的文档。 软件产品可以为一个特定的用户设计开发,也可以为某一类通用的市场设计开发。 软件产品可以分成: 一个新的软件并不一定是全新开发,可以由现有软件或可复用软件成分配置形成。 1.3 什么是软件工程? 软件工程是涉及软件生产各个方面的一门工程学科 软件工程涉及软件生命周期的各个方面,从软件需求的确定到软件退役。 软件工程:(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件;(2)研究(1)中的方法. ——IEEE[IEE93] 1.4 什么是成功的软件项目 一个成功软件项目的三个要素包括: 按时交付不超预算满足用户要求。 1.5 软件过程与软件生命周期的相关概念 软件过程是指开发或制作软件产品的一系列活动及其成果. 所有的软件过程中都包括四个基本活动:(填空) 1. 描述( Specification)- 系统应该提供的功能及其开发约束; 2. 开发( Development)- 软件产品的生产过程; 3. 有效性验证(Validation )- 检验软件产品是否满足了客户的需要; 4. 进化( Evolution )- 按照用户的变更要求不断的改进软件。 软件生命周期是软件过程的另一种形象描述,通常包括需求定义、分析与描述、软件设计、实现、测试、维护与退役等活动。 1.6什么是优良软件的属性? P8 (填空U选择) 优良的软件应能交付相应的功能与性能,而且应具有良好的可维护性、可依赖性、有效性和可用性:(选择题,考法内涵匹配) 可维护性(Maintainability) Software must evolve to meet changing needs; 可依赖性(Dependability) Software must be trustworthy;

软件工程期末考试复习题及答案

(4分) 变换型结构的数据流呈() A. 线性形状 B. 辐射状 C. 椭圆形 D. 阶梯形 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..2. (4分) 可行性研究阶段使用的图形工具是() A. DFD图 B. N-S图 C. PAD图 D. Warnier图 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..3. (4分) 软件的开发模式有() A. 面向过程模式、面向对象模式、混合模式 B. 变换模式、渐增模式、瀑布模式 C. 自顶向下模式、自底向上模式、关系模式 D. 分步模式、渐增模式、非渐增模式 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 B .解析..4. (4分) 模块的初始化工作和模块处理意外故障均属于() A. 时间内聚 B. 顺序内聚 C. 功能内聚 D. 逻辑内聚 得分: 0 知识点: 软件工程作业题,软件工程展开解析 .答案 A .解析..5. (4分) HIPO的含义是()

A. 层次、输入、处理、输出 B. 高速、信息、程序、目标 C. 顶层的IPO图 D. 关于输入、处理、输出的层次 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..6. (4分) 数据字典和数据流图共同构成系统的() A. 物理模型 B. 结构模型 C. 设计说明书 D. 逻辑模型 得分: 0 知识点: 软件工程作业题,软件工程展开解析 .答案D .解析..7. (4分) 好的软件结构它的外观形状一般呈() A. 线性 B. 扇形 C. 椭圆形 D. 层次型 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 C .解析..8. (4分) CMU/SEI推出的()将软件组织的过程能力分为五个成熟度级别,每一个级别定义了一组过程能力目标,并描述了要达到这些目标应该具备的实践活动。 A. CMM B. PSP C. ISO-9000 D. RUP 得分: 0 知识点: 软件工程,软件工程作业题展开解析 .答案 A .解析..9. (4分) 若要保证开发出来的软件局部优化,而且能尽早发现设计上的错误,应采用()

软件工程期末复习资料非常全

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.软件质量是在开发过程中逐渐构建起来的。

南京大学软件工程学科教程——附件2-1南京大学软件学院选课规则

南京大学软件工程学科教程——附件2-1 南京大学软件学院选课规则 一、 总则 1、目的。为规范化南京大学软件学院选修课开设和学生选课,特制定本规则。 2、适用范围。南京大学软件学院学生选修学院开设的各类选修课,学校及其 他院系提供的选修课和学院开设的公共指定选修课不适用此规则。 二、 选修课及其开设规则 3、适用本规则的选修课类别。南京大学软件学院开设的方向课程模块指定选 修课,方向课程模块指定实践课程,任选课程。 4、选修课开设班次规定。选修人数超过160人,开设两个教学班次;其他情 况,开设一个班次。 5、选修课班次最大人数。120人。 6、选修课取消。当次选修人数少于10人,取消开班;连续3年选修人数少于 20人,经学院批准后取消该选修课程。 三、 学生选修 7、方向课程模块选修的提出。二年级末,学生提出联系方向课程模块。每个 学生应提出3个方向课程模块选修志愿,放弃填写第二/三志愿者,意味默认其他任何方向课程模块为志愿。 8、任选课程选修的提出。每学期第二周,学生提出课程选修志愿。 9、修读课程数限制。每个小学期,每个学生修读的学院开设课程数(含必修 课、指选课、任选课)原则不少于3门,不多于5门;特殊情况应书面报教务办公室批准。 四、 选修优先权 10、方向课程模块选修优先权。 a)每个学生的初始方向课程模块选修优先权为该联系方向指定专业核心课 修读成绩; b)若学生在确定选修的方向课程模块之前获得过软件设计比赛优胜,可以 获得30个方向课程模块选修优先权加分。 11、选修绝对优先权。使用两个选修绝对优先权,可以保证选修一门任选实践 课程;使用一个选修绝对优先权,可以保证选修一门其他任选课程。 a)每个学生的初始选修绝对优先权为0; b)若学生按照第二志愿确定方向课程模块,可以获得3个选修绝对优先权; c)若学生按照第三志愿确定方向课程模块,可以获得5个选修绝对优先权;

软件工程期末考试题及答案++精华版!!

《软件工程》期末考试样题 一、填空题 1.软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型(原型模型)构件组装模型、混合模型。 2.可行性研究一般可以从(经济)可行性、(技术)可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n年后从银行得到F元,现在应该存入的钱数为(F/(1+i)n)。 4.数据流图的基本符号包括(数据输入的源点和数据输出的汇点)、(加工)、(数据流)、(数据存储文件)。 5.Jackson图除了可以表达程序结构外,还可以表达(数据结构),它首先要分析(数据结构),并用适当的工具来描述。 6.详细设计的工具有图形工具)、表格工具和(语言工具)。 7.IPO图由(输入)、处理和(输出)三个框组成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用(对象)、(类)、(继承)、(封装)、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列( A )属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX 2.下列哪个图是N-S图的构件( C )。 A. 3.对于螺旋模型,下列( D )不是利用笛卡尔坐标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABXD )。 A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(ABCD )。 A.表头 B.表体 C.表名 D.字段名 3.关于内容耦合的描述正确的是( AD )。 A、内容耦合是最高程度的耦合 B、应该尽量使用内容耦合 C、高级语言一般设计成允许内容耦合的形式 D、如果一个模块有多个入口,可能发生内容耦合 4.下列属于不标准的书写格式( BCD )。 A、书写时适当使用空格分隔 B、一行写入多条语句 C、嵌套结构不使用分层缩进的写法 D、程序中不加注释 四、判断题(正确的在括号内打上“√”,错误的打上“×”) 1.软件生存周期是从软件开始开发到开发结束的整个时 期。() 2.系统流程图是一个典型的描述逻辑系统的传统工具。() 3.数据流图和数据字典共同构成系统的逻辑模型。 ( 1) 4.扇出是一个模块直接调用的模块数目,一般推荐的扇 出为3或4。( 1 ) 5.耦合用于衡量一个模块内部的各个元素彼此结合的紧 密程度。()

软件工程_期末复习笔记

软件工程期末复习笔记 一.基本概念 1.什么是软件工程? 答:见作业 2.什么是参与者,角色? 答:所有参与到软件项目中的人员称为参与者。把项目或系统的一组职责称为角色。一个角色与一组任务联系在一起,且被派给一个参与者。一个参与者能充当多个角色。 3.系统和模型。系统指内部关联部分的集合。模型指系统的任何抽象。 4.软件工程开发活动:开发活动通过构造和验证应用域模型或系统模型处理复杂性问题,开发活动包括:需求获取、分析、系统设计、对象设计、实现、测试。 二.基本概念(2) 1.系统开发的主要内容集中在系统的3个不同模型上: 功能模型,在MUL中,使用用例图表示功能模型,以从用户观点描述系统功能。 对象模型,在MUL中,使用类图表示对象模型,使用对象、属性、关联和操作来描述系统的结构。 动态模型,在UML中,使用交互图、状态图和活动图表示动态模型,以描述系统的内部行为。 2.用例模型(功能模型) 2.1用例模型=用例文档+用例图 2.2用例间的关系:用例之间的关系关联(association )、包含(include)、扩展(extend)和泛化(generalization)这几种关系。 关系关联(association ):通信1.表示参与者用例之间进行通信。 2.不同的参与者可以访问相同的用例。 包含(include):把它所包含的用例行为作为自身行为的一部分。 扩展(extend):扩展用例被定义为基础用例的增量扩展。 基础用例提供扩展点以添加新的行为。 扩展用例提供插入片段以插入到基础用例的扩展点上泛化(generalization):继承 2.3 用例文档包括的内容:1.用例名。2.范围。 3.级别。 4.主要参与者。 5.涉众及其关注点。 6.前臵条件 7.后臵条件 8.主事件流 9.备用事件流。 3.类图(对象模型) 3.1类是面向对象系统组织结构的核心。对一组具有相同属性、操作、关系和语义的对象的抽象。包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。

软件工程期末复习资料

软件工程复习题1 一、选择题,请从四个可选项中选择正确答案。 1.以下哪一项不是软件危机的表现形式()? A.成本高 B.生产率低 C.技术发展快 D.质量得不到保证 2.哪种模型分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。()A.演化模型 B.喷泉模型 C.原型模型 D.螺旋模型 3.可行性研究的目的不包括() A.分析开发系统的必要性 B.确定系统建模的方案 C.分析系统风险 D.确定是否值得开发系统 , 4.可行性分析研究的费用大约是项目总经费的()。 % % % % 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. 效益分析

软件工程期末复习

复习资料 一、填空题 1.软件是计算机系统中与硬件相互依存的另一部分,它是包括(程序)、(数据)及其(相关文档) 完整集合。其中,(程序)是按事先设汁的功能和性能要求执行的指令序列,(数据)是使程序能够正确操纵信息的数据结构,(相关文档)是与程序开发、维护和使用有关的图文资料. 2.软件危机是指计算机软件的(开发)和(维护)过程中所遇到的一系列严重问题。 3.软件工程是指导计算机软件(开发)和(维护)的一门工程学科,采用工程的概念、原理、技术 和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地(维护)它,这就是软件工程。 4.常见的软件开发模型有(瀑布模型)、(快速原型模型)、(增量模型)和(螺旋模型)等; 5.软件工程学方法的三要素是:(方法)、(工具)和(过程)。 6.瀑布模型是一个(文档)驱动模型。 7.可行性研究一般可以从(经济)可行性、(技术)可行性、法律可行性和法律可行性等方面来研 究。 8.数据流图从数据传输和(数据加工)角度,以(图形)的方式描述数据流从输入到输出的传输变 换过程。 9.数据流图的四个基本符号分别表示(数据的源点或终点)、(数据的加工)、(数据存储)和数据流; 10.实体-联系图中,数据对象之间的关系有(一对一)、(一对多)和(多对多关系)。 11.需求分析阶段应该建立三种模,即:(数据模型)、(功能模型)和(行为模型)。 12.一般从(一致性)、(完整性)、(现实性)和(有效性)四个方面验证软件需求的正确性。 13.HIPO图是由一组(层次图)图加上一张(IPO)图组成。 14.模块独立性的两个度量标准为:(耦合)和(内聚)。 15.一般说来,模块之间的耦合程度(低),则单个模块的内聚程度(高)。 16.经验表明,设计好的软件结构,通常顶层模块的扇出(比较高),中层模块扇出(较少),底层模 块(高)扇入 17.三种基本的程序控制结果是(顺序结果)、(选择(分支)结构)和(循环结构)。 18.把程序从一个硬件或软件环境中转移到另一种配置环境称为软件的(可移植性)。 19.如果一个模块完成一组任务,这些任务彼此之间的关系是很松散的,这种內聚称为(偶然(或巧 合)类聚)。 20.白盒法的具体设计程序测试方法有语句覆盖、(判定覆盖)、(条件覆盖)和路径覆盖。 21.组成UML的三种基本建筑块是(事物)、关系和(图)。 22.面向对象的软件工程方法包括面向对象的分析、(面向对象的设计)、(面向对象的编程)、(面向 对象的测试)和面向对象的软件维护等主要内容。 23.保证软件质量的措施主要有(审查)、复查和管理复审、(测试)。 24.提高软件质量和可靠性的技术大致分为两类,即(避开错误技术)和(容错技术)。 25.常用的估算软件规模的方法有(代码行技术)和(功能点技术)。 26.功能点技术的信息域包含(输入项数)(输出项数)、(查询数)、(主文件数)、(外部接口数)等5 个方面的信息。 27.软件的工作量计算模型是(软件规模)的函数,软件工作量的单位通常是(人月),常用的计算 软件工作量的计算模型有(静态单变量模型)、(动态多变量模型)、(COCOMO2模型)等。 28.软件过程是软件(生存期)中的一系列相关软件工程(活动)的集合。每个软件过程又是由一组

相关文档
最新文档