文档库 最新最全的文档下载
当前位置:文档库 › 软件工程知识点整理

软件工程知识点整理

软件工程知识点整理
软件工程知识点整理

1、计算机软件概念

软件指计算机系统中的程序及其文档。

程序是计算任务的处理对象和处理规则的描述

文档是为了便于了解程序所需的阐明性资料,文档一般是给人看的

2、软件发展的3个阶段(了解)

程序设计阶段——50至60年代

程序系统阶段——60至70年代

软件工程阶段——70年代以后

3、软件工程概念

(1)把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程,也就

是把工程化应用于软件中;

(2)研究(1)中提到的途径

3、软件生存周期概念及其6个阶段

软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。为计算机软件的生命周期。

软件生命周期的六个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。

4、瀑布模型的思想、特点及其局限性

思想:(1)软件开发过程与软件生命周期是一致的

(2)相邻二阶段之间存在因果关系

(3)需对阶段性产品进行评审

特点:(1)接受上一阶段活动的结果作为本阶段活动的输入

(2)依据上一阶段活动的结果哦实施本阶段应完成的活动

(3)对本阶段的活动进行评审

(4)将本阶段活动的结果作为输出,传递给下一阶段

局限性:(1)缺乏灵活性,如用户需求一开始很难确定

(2)到最后阶段才能得到可运行的软件版本

5、增量模型思想、特点和局限性

(1)增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。

(2)增量模型融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征

(3)增量模型强调每一个增量都发布一个可运行的产品(第一个增量是核心产品)·特点:增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。

·增量模型特别适用于:

1、需求经常变化的软件开发

2、市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的

软件开发

·增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术。

原型模型:

原型应该包括目标系统的关键问题和反映目标系统的大致面貌,展示目标系统的全部或部分功能、性能

原型模型两个阶段

(1)原型开发阶段

(2)目标软件开发阶段

原型的使用策略:废弃策略----主要用于探索型和实验型原型的开发。

追加策略----主要用于演化型原型的开发。

使用原型法需注意:

(1)用户对系统模糊不清,无法准确回答目标系统的需求

(2)要有一定的开发环境和工具支持

(3)经过对原型的若干次修改,应收敛到目标范围内,否则可能失败

(4)对大型软件而言,原型可能非常复杂而难以快速形成,若没有现成的,不应考虑采用该方法

优点

有助于获取用户需求,加强对需求的理解

尽早发现软件中的错误

支持需求的动态变化

适合于需求动态变化、事先难以确定的系统

局限性

不能支持风险分析

螺旋模型:

·基本思想:螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析。

·螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动

制定计划──确定软件目标,选定实施方案,弄清项目开发的限制

风险分析──分析所选方案,考虑如何识别和消除风险

实施工程──实施软件开发

客户评估──评价开发工作,提出修正建议

·优点

有助于获取用户需求,加强对需求的理解

尽早发现软件中的错误

支持需求的动态变化

支持风险分析,可降低或者消除软件开发风险

适合于需求动态变化,事先难以确定并且开发风险较大的系统

风险概念

(1)风险涉及的是未来将要发生的事情

(2)风险涉及改变

(3)风险涉及选择,具有不确定性

7、喷泉模型:

喷泉模型是一种支持面向对象开发的模型

体现迭代和无间隙特征

1、该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像

水喷上去又可以落下来,类似一个喷泉。

2、各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中

随时补充其他任何开发阶段中的遗漏。

形式化方法概念:

形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文档生成,直至维护等各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。

软件过程模型总结:

1、瀑布模型建议线型流程的框架活动,这在软件世界里通常与当代软件开发的现实情况不符(例如,持续的变更、演化的系统、紧迫的开发时间)。但瀑布模型确实适用于需求定义清楚且稳定的软件开发。

2、增量软件过程模型通过一系列的增量发布产生软件。

3、演化过程模型认识到大多数软件工程项目的迭代特性,其设计目的是为了适应变更。演化模型,例如原型开发及螺旋模型,快速地产生增量的工作产品(或是软件的工作版本)。这些模型可以应用于所有的软件工程活动——从概念开发到长期的软件维护。

8、基于计算机的系统概念以及6个组成元素

基于计算机的系统是指:通过处理信息来完成某些预定义目标而组织在一起的元素的组合。

六个元素:

·软件—指计算机程序、数据结构和相关的工作产品,以实现所需要的逻辑方法、规程或控制

·硬件—指提供计算能力的电子设备、支持数据流的互连设备(如网络交换器、电信设备)和提供外部世界功能的电子机械设备(如传感器、马达等)

·人员—指硬件和软件的用户和操作者

·数据库—指通过软件访问并持久存储的大型的有组织的信息集合

·文档—指描绘系统的使用和/或操作的描述性信息(如模型、规格说明、硬复制手册、联机帮助文件、Web站点)

·规程—指定义每个系统元素的特定使用或系统所处的过程性语境的步骤

9、可行性分析的任务

开发一个基于计算机的系统通常都受到资源(人力、财力、设备等)和时间上的限制,可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。

回答“是否可以做?”的问题

软件工程要以经济为本,用户为先!

10、需求工程的6个阶段及任务

I. 需求获取

通过与用户的交流,了解业务现状以及对待开发系统的期望

需求获取收集的“原始材料”为进行需求分析提供了基础

II. 需求分析与协商

对需求进行分类组织,分析需求之间的关系

检查需求的一致性、重叠和遗漏的情况

根据用户的需要对需求进行排序。

在需求获取阶段,经常出现以下问题:

提出的要求超出软件系统可以实现的范围或实现能力

不同的用户提出了相互冲突的需求

III. 系统建模

借助建模技术对获取的需求信息进行分析和表达,排除错误和弥补不足,确保需求文档正确反映用户真实意图

常用的分析和建模方法

IV. 需求规约(Specification) (编写文档)

通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求

软件需求规约是分析任务的最终产物

需求规约作为用户和开发者之间的一个协议,在之后的软件工程各个阶段发挥重要作用V. 需求验证(评审)

需求开发阶段工作的复查手段

对功能的正确性、完整性和清晰性,以及其它需求给予评价

为保证软件需求定义的质量,评审应以专门指定的人员负责(应该是需求分析人员之外的其他人员),并按规程严格进行

VI. 需求管理(维护一致性)

一种获取、组织并记录系统需求的系统化方案:对所有需求工程相关活动的规划和总体控制

需求变更管理:一个使用户与项目团队对不断变更的系统需求达成并保持一致的过程(变更的记录、分析、变更过程管理、追踪等)

11、软件需求的概念

用户对目标系统在功能、行为、性能等方面的要求

12、软件需求规约主要包括的内容

通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求

软件需求规约是分析任务的最终产物

需求规约作为用户和开发者之间的一个协议,在之后的软件工程各个阶段发挥重要作用

13、软件设计阶段的任务

数据/类设计:将分析-类模型变成类的实现和软件实现所需要的数据结构

体系结构设计:体系结构设计定义了软件的整体结构

接口设计:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何通信

构件级设计:构件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述界面设计:

14、软件设计过程

1、制定规范

2、体系结构和接口设计

3、数据/类设计

4、构件级(过程)设计

5、编写设计文档

6、设计评审

15、模块化概念

模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程

16、信息隐藏的概念

信息隐藏指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。

17、功能内聚概念和数据耦合概念

功能内聚:指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割。√

数据耦合:两个模块之间仅通过参数表传递简单数据,则称为数据耦合。

18、结构化分析与设计中,判断结构好坏的标准——高内聚低耦合。(了解)

·模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱

·一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高

·模块独立性比较强的模块应是高内聚低耦合的模块

19、部件级设计(详细设计)的描述工具(描述方式)(了解)

在构件级设计阶段,主要完成如下工作:

(1)为每个构件确定采用的算法,选择某种适当的工具表达算法的过程,编写构件的详

细过程性描述

(2)确定每一构件内部使用的数据结构

(3)在构件级设计结束时,应该把上述结果写入构件级设计说明书,并且通过复审形成

正式文档,作为一下阶段(编码阶段)的工作依据。

20、结构化分析模型包含哪些模型

数据流图

数据字典

结构化语言

判定表、判定树

21、系统响应时间的概念

从发出指令到系统接收并且处理、反馈给指令者的时间过程。

22、界面设计的黄金原则

·让用户拥有控制权

1)交互模式的定义不能强迫用户进入不必要的或不希望的动作的方式

2)提供灵活的交互

3)允许用户交互可以被中断和撤销

4)当技能级别增长时可以使交互流水化并允许定制交互

5)使用户隔离内部技术细节

·减少用户的记忆负担

1) 减少对短期记忆的要求

2) 建立有意义的缺省

3) 定义直觉性的捷径

4) 界面的视觉布局应该基于真实世界的隐喻

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

·保持界面一致

1) 允许用户将当前任务放在有意义的语境中

2) 在应用系列内保持一致性

3) 不要改变用户已经熟悉的用户交互模型

23、编程实现时需要注意的问题

a)细节包括标识符命名的注意问题

b)程序注释的注意问题

c)代码的视觉组织

d)数据说明的注意问题

e)语句结构的注意问题

24、软件测试的目的、测试用例的概念(了解)

软件测试的目的:

测试是一个为了发现错误而执行程序的过程

一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例

一个成功的测试是指揭示了迄今为至尚未发现的错误的测试测试用例的概念

测试用例是为了某个特殊目标而编制的一组测试输入、执行调节以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

25、各种逻辑覆盖准则之间的关系(了解)

逻辑覆盖主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。主要的覆盖标准有:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖

26、单元测试、集成测试、确认测试和系统测试的对象、依据和任务

·单元测试:

对象:软件构件或模块

依据:设计描述

任务:发现构件和模块内部错误

·集成测试:

对象:集成后的软件系统

依据:每个模块都能独立的工作

任务:揭露设计阶段产生的错误

·确认测试:

对象:经集成测试后的软件

依据:软件需求规约

任务:发现软件是否实现了规约的全部功能,文档资料是否齐全·系统测试:

对象:经确认测试后的软件

依据:软件是计算机系统的一部分,会受到系统其他元素的制约

任务:测试是否符合软件工程中对软件的要求,是否有好的兼容性

27、α测试和β测试的概念、回归测试概念

·α测试是由一个用户在开发者的场所进行的,软件在开发者对用户的“指导下”进行测试。经α测试后的软件称为β版软件。

·β测试是由软件的最终用户在一个或多个用户场所进行的,与α测试不同,开发者通常不在测试现场,因此,β测试是软件在一个开发者不能控制的环境中的“活的”应用,用户记录所有在β测试中遇到的(真正的或想象的)问题,并定期把这些问题报告给开发者,在接到β测试的问题报告后,开发者对软件进行最后的修改,然后着手准备向所有的用户发布最终的软件产品。

·回归测试就是对已经进行过的测试的子集的重新执行,以确保对程序的改变和修改,没有传播非故意的副作用。

28、测试完成标准(了解)

Musa和Ackerman提出了一个基于统计标准的答复:“如果一个在按照概率的方法定义的环境中,1000个CPU小时内不出错运行的概率大于0.995的话,那么我们就有95%的信心说,我们已经进行了足够的测试”。

使用指定的测试用例设计方法产生测试用例,运行这些测试用例均未发现错误(包括发现错误后已被纠正的情况),则测试可终止。

观察测试阶段中单位时间内发现错误数目的曲线:

29、软件维护及4种类型的维护概念

软件维护:指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程。

纠错性维护:为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护

适应性维护:为了使软件适应内部或外部环境变化,而去修改软件的过程

改善性维护:满足使用过程中用户提出增加新功能或修改已有功能的建议维护

预防性维护:为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的活动

30、改善性维护在维护中所占的比例最大。

31、提高可维护性的方法

确定质量管理目标和优先级

规范化程序设计风格

选择可维护性高的程序设计语言

改进程序文档

保证软件质量审查方法

32、软件质量的定义

(1)软件产品中能满足给定需求的性质和特性的综合。

(2)软件具有所期望的各种属性的组合程度

(3)客户或用户觉得软件满足其综合期望的程度

(4)软件的综合特性。

软件质量模型:

McCall模型√

Boehm模型

ISO/IEC9126质量模型

33、软件可靠性的概念及其度量标准

软件可靠性是指在规定的条件下和规定的时间内软件按规格说明要求不引起系统失效的概率

软件可靠性通常用下列公式进行计算:

MTBF=MTTF+MTTR

(其中:MTBF(mean time between failures)是平均失效间隔时间,MTTF(mean time to failure)是平均失效等待时间,MTTR(mean time to repair)是平均失效修复时间)

软件可用性(availability)【稳定性】是指软件在投入使用时能实现其指定的系统功能的概率。可用下式计算:

34、软件配置项、软件配置、基线的概念

软件配置项(Software Configura tion item,SCI):为配置管理设计的软件的集合,它在配置管理过程中作为单个实体对待

软件配置(Software configuration):软件产品在不同时期的组合。该组合随着开发工作的进展而不断变化

基线(baseline):业已经过正式审核与同意,可用作下一步开发的基础,并且只有通过正式的修改管理过程方能加以修改的规格说明或产品

\

By 我系庆贤

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程问题整理版

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)维护 也可以分为四个大的阶段:软件分析、软件设计、编码与测试、运行与维护

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程知识点汇总

软件工程知识点汇总 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、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

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

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

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

软件工程整理

第一章 软件工程研究的主要内容:为了在有限的资金、资源和时间条件下开发满足客户要求的高质量软件,需要研究与软件开发和管理相关的模型、方法、技术等。 在《计算机科学技术百科全书》中,对计算机软件作出如下定义:计算机软件指计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。处理对象是数据或信息。处理规则一般指处理的动作和步骤。文档是为了便于了解程序所需的阐述性资料。 软件工程的定义:⑴IEEE在软件工程术语汇编中的定义:①软件工程是将系统化的的方法用于软件的开发、运行和维护,即将工程化应用于软件;②在①中所述方法的研究⑵软件工程是应用计算机科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源等管理。 软件工程的框架:目标,过程和原则 软件工程目标是指生产具有正确性、可用性、和开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜指软件开发、运行的整个开销满足用户要求的程度。 软件工程原则包括围绕工程设计、工程支付和工程管理所提出的以下4条基本原则 (1)选取适宜的开发模型(2)采用合适的设计方法(3)提供高质量的工程支撑 (4)重视软件工程的管理 软件生存周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。 软件生存周期分为6个阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护 软件过程是生产一个最终满足需求且达到工程目标的软件产品所需的步骤。 软件过程是软件生存周期中的一系列相关的过程。过程是活动的集合,活动是任务的集合。软件过程有3层含义:一是个体含义,即指软件产品或系统在生存周期中的某一类活动的集合;二是整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体;三是工程含义,即指解决软件过程的工程,应用软件工程的原则、方法来构造软件过程模型、并结合软件产品的具体要求进行实例化,以及在用户环境,并结合软件产品的具体要求进行实例化,以及在用户环境下运作,以此进一步提高软件生产率,降低成本。 软件过程模型也称软件开发模型,是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有:瀑布模型、演化模型(如增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。 瀑布模型是1970年由W.Royce提出的,它给出了软件生存周期活动的固定顺序,上一阶段的活动完成后向下一阶段的活动过渡,最终得到所开发的软件产品。其特征是:接受上一阶段活动的结果作为本阶段活动的输入 依据上一阶段活动的结果实施本阶段应完成的活动 对本阶段的活动进行评审 将本阶段活动的结果作为输出,传递给下一阶段 瀑布模型也逐渐暴露出它的不足(1)不少软件的需求存在着不确定性,(2)如果发现不满足客户需求的问题,那么修改软件的代价是巨大的 演化模型,是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。演化模型适用于对软件需求缺乏准确认识的情况。典型的演化模型有:增量模型、原型模型、螺旋模型 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 增量模型融合了瀑布模型的基本成分和演化模型的迭代特征,强调每一次增量都发布一个可运行的产品。特征:(1)适用于需求经常发生变化的软件开发(2)在市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品,此时也适宜用增量模型进行开发(3)能有计划的管理技术风险

软件工程知识点

第一章软件工程概述 一、软件的定义和特性(P2—P3) 定义:软件=程序+数据+文档 程序:按照事先设计的功能和性能要求执行的指令或语句序列 数据:程序能正常操纵信息的数据结构 文档:描述程序操作和使用的文档 特性: (1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体; (2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理; (3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件; (4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题; (5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。 * 掌握P4图1-2(b)软件失效率曲线 二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2) 共经历了四个阶段 特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术 第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机 第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件 第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。 三、什么是软件危机?其产生的原因是什么? 定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。(P4) 原因:(P5) (1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求; (2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致; (3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验; (4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误; (5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化 (6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。 四、什么是软件工程?它的目标和内容是什么? 定义:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中,并对方法的研究。(P6) 目标:在给定的成本和进度前提下,开发出具有可修改性、可理解性、可维护性、有效性、可靠性、可适用性、可重用性、可移植性、可跟踪性和互操作性并且满足用户需求的软件产品。(P7) 内容:主要内容包括软件开发技术和软件工程管理两方面。(P6) 要素:方法,工具,过程 五、什么是软件生存周期?它有哪几个活动? 定义:(software life cycle)把软件产品从形成概念开始,经过定义、开发、使用和维护直到最后退役的全过程。 活动:软件定义、软件开发、软件使用维护和退役(P9)

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念: 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。概括地说,软件危机包含两方面问题: 如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机产生的原因: 软件本身的复杂性、难衡量的特点; 2. 软件开发与维护的方法不正确。消除软件危机的途径: (1)对计算机软件应当有一个正确的认识; (2)应当有组织、有计划、通过严格的管理手段进行软件的开发; (3)及时总结软件开发的成功技术和方法并加以推广; (4)开发和使用更好的软件工具; 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。 2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。基本原理:软件工程的7 条基本原理: (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 6)开发小组的人员应该少而精 7) 承认不断改进软件工程实践的必要性 3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一

整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。软件工程方法学包含3 个要素:方法、工具和过程。 内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。传统方法学也称为生命周期方法学或结构化范型。 4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做 软件项目主要分那几个个阶段。 ①问题定义:确定要求解决的问题是什么 ②可行性研究:决定该问题是否存在一个可行的解决办法 ③需求分析:深入了解用户的要求,在要幵发的目标系统必须做什么问题和用户取得完全一致的看法。 ④概要设计:概括回答怎样实现目标系统。概要设计又叫逻辑设计、总体设计、高层设计。 ⑤详细设计:把解法具体化,设计出程序的详细规格说明。详细设计也叫模块设计、底层设计。 ⑥编码和单元测试:编写程序的工作量只占软件幵发全部工作量的10沧20%。 ⑦综合测试:软件测试的工作量通常占软件幵发全部工作量的40沧50%。 ⑧软件维护:软件维护的费用通常占软件总费用的55 %-70% ①②③为软件定义时期,④⑤⑥⑦为软件幵发阶段。④⑤为系统设计,⑥⑦为系统实现。 5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、 螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的。优点:(1)可强迫开发人员采用的规范的方法(结构化技术)。 (2)严格地规定了每个阶段必须提交的文档。

软件工程复习题复习重点及答案

软件工程复习重点 一、选择题 1、软件工程三要素是指( B )P8 A、技术、方法和工具 B、方法、工具和过程 C、方法、对象和类 D、过程、模型、方法 2、瀑布模型本质上是一种( A )。P23 A、线性顺序模型 B、顺序迭代模型 C、线性迭代模型 D、及早见产品模型 3、结构化设计是一种应用最广泛的系统设计方法,是以( B )为基础,自顶向下,求精和模块化的过 程。P79 A、数据流 B、数据流图 C、数据库 D、数据结构 4、概要设计的任务是设计系统的( B物理模型)P70 A、逻辑模型 B、物理模型 C、概念模型 D、程序流程图 5、描述软件结构的工具有( A模块结构图) A、模块结构图 B、PAD图 C、数据流程图 D、程序 6、进行需求分析可以使用多种工具,但( C )是不适用的。 A、数据流程图 B、判定表 C、PAD图(详细设计) D、数据字典 7、可行性研究要进行的需求分析和设计应该是( C )。 A、详细的 B、全面的 C、简化的、压缩的 D、彻底的 8、软件生命周期由( C )三个时期组成。 A、概要设计、详细设计和系统实现 B、可行性分析、系统设计和编码 C、定义、开发和运行维护 D、分析、设计和测试 9、以下( D )不是模块。对象是一个实体 A、过程 B、程序 C、函数 D、对象 10、程序流程图、N-S图和PAD图是( B )使用的算法表达工具。 A、设计阶段的概要设计 B、设计阶段的详细设计 C、编码阶段 D、测试阶段 11、一个模块直接控制(调用)的下层模块的数目称为模块的( B扇出)P78 A、扇入数 B、扇出数 C、宽度 D、作用域 12、下列工具哪一个是需求分析阶段常用工具?( D ) A、PAD B、PFD C、N-S D、DFD数据流程图 需求分析常用的是数据流程图和数据字典 13、为了提高测试的效率,应该( D) A、随机地选取测试数据 B、取一切可能的输入数据作为测试数据库 C、在完成编码后制定软件的测试计划 D、选择发现错误可能性大的数据作为测试数据 14、成功的测试是指( B发现程序的错误) A、运行测试实例后未发现错误项 B、发现程序的错误 C、证明程序正确 D、改正程序的错误 15、软件工程中只根据程序的功能说明而不关心程序内部的逻辑结构的测试方法,称为( C黑盒测试)

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

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

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

软件工程概论知识点汇总

软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门。 软件工程方法学包含3个要素:方法、工具和过程 目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学 软件生命周期由软件定义、软件开发和运行维护3个时期组成。 软件生存周期是指一个软件从提出开发要求开始直到软件报废为止的整个时期。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。 软件定义分3个阶段,即问题定义、可行性研究和需求分析。 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 可行性研究的主要内容包括技术可行性、经济可行性和操作可行性3个方面。 开发时期由4个阶段组成:总体设计、详细设计、编码和单元测试,综合测试。其中前两个阶段称为系统设计,后两个阶段称为系统实现。 系统流程图是概括地描绘物理系统的传统工具;而数据流图是系统逻辑功能的图形表示工具。 模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 分析建模的用处是为了更好地理解复杂事物。 软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。 需求分析过程应该建立3种模型,分别是数据模型、功能模型和行为模型。 数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。 结构程序设计的定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制接口进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。 衡量模块独立程序的两个定性标准是内聚和耦合。 确认测试也称为验收测试,它的目标是验收软件的有效性。 等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。一个理想的测试用例能独立发现一类错误。 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。 软件的可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。 软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。 Jackson方法是一种面向数据结构的设计方法。 完整的软件测试一般要经过单元测试、集成测试、确认测试和系统测试等4个阶段。 模块化是指把程序划分成独立命名切可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 软件复杂性度量的参数包括: ①规模②难度③结构④智能度 数据字典应该有下列4类元素的定义组成: 1、数据流; 2、数据流分量(即数据元素) 3、数据存储 4、处理 产生软件危机的原因?

软件工程实践者的研究方法知识要点

软件与硬件的区别:本质逻辑与物理;软件是设计开发的;软件不会磨损;大部分软件是按需定制的。IEEE定义:(1)将系统化、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)在(1)中所述方法的研究。 框架活动:沟通、策划、建模、构建、部署 成熟级别:第0级:不完全级、1已执行级、2已管理级、3已定义级、4已定量管理级、5优化级软件生命周期:软件计划与可行性研究、需求分析、软件设计、编码、软件测试、运行与维护 瀑布模型:特点—文档驱动优点:消除非结构化软件;降低软件的复杂度,促进软件开发工程化缺点:实际项目开发中很少遵守瀑布模型提出的顺序;客户难以清楚的描述真正的需求;客户要等到开发周期的晚期才能看到程序运行的测试版本;在线性过程的开始和结束,容易发生“阻塞状态”RAD缺点:1、对于大型项目,需要大量人力资源来创建相对独立的RAD团队 2、如果开发者和客户没有做好短时间急速完成系统的准备,则可能导致失败 3、因为是构件式开发,如果一个系统不能合理的模块化,会带来很多问题 4、如果系统需求是高性能的,并且需要通过调整构件接口的方式来提高性能,则不能采用RAD模型 5、技术风险高的情况下,不宜采用RAD模型,如项目开发使用大量的新技术 敏捷团队成员特点:基本能力、共同目标、精诚合作、决策能力、模糊问题解决能力、 相互信任和尊重、自我组织 4个框架活动:策划、设计、编码和测试设计原则:KIS 结对编程:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计 优点:结对的两人完成其工作,所开发代码和其他工作集成。有些情况下,这种集成工作由集成团队按日实施,还有一些情况下,结对者自己负责集成,这种“连续集成”策略有助于避免兼容性和借口问题,建立能及早发现错误的“冒烟测试”环境 Scrum原则:1组织小团队,以达到“沟通最大化,负担最小化,非语言描述、非形式化知识” 2过程对技术和业务变化具有适应性,以“保证制造具有最好可能的产品” 3过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量 4开发工作和开发人员划分为“清晰的、低耦合的部分或包” 5坚持在产品构建中进行测试和文档化 6提供在任何情况下都能完成产品的能力 宏要素:基于计算机的系统,它作为更大的基于计算机的系统的一部分 系统工程的层次结构:全局视图、领域视图、要素视图、详细视图 导出需求遇到的问题:范围问题、理解问题、易变问题 协同需求收集会议的基本原则:1软件工程师和客户共同举办和参与 2制定筹备与参与会议的规则3拟定一个会议议程:既涵盖重点,又鼓励自由交流4由一个主持人控制会议

软件工程_主要知识点

1.软件的定义?(P1) 计算机(程序)、(规程)以及运行计算机系统可能需要的相关(文档)和(数据)。 2.应用软件的分类?(P2) 通用软件和定制软件 3.软件的本质特性?(P3) 复杂性、一致性、可变性、不可见性 4.软件危机的表现?(P5-7) 1、软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜。 2、软件存在错误多,性能低,不可靠,不安全等质量问题。 3、软件成本在计算机系统的整个成本中所占的比例越来越大 4、软件维护及其困难,而且很难适应不断变化的用户需求和使用环境。 5.软件工程的定义?(P7) ①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。 6.软件工程包括哪些基本要素?简述它们的作用?(P7-8) 过程、方法、工具 方法:为软件开发提供了“如何做”的技术、通常包含某种语言或图形的模型表示方法,设计实践和质量保证标准。 工具:为软件工程的方法提供自动或半自动的软件支持环境辅助软件开发任务完成。 过程:是管理和控制产品质量的关键,将人员、技术、组织与管理有机的结合起来。 7.软件的质量可以从哪些方面评价?(P8-9) 可用性、有效性、可依赖性、可维护性 8.软件工程方法有哪些?(P9-10)(传统方法<面向过程的方法、面向数据的方法等>、面向对象方法) 传统方法:面向数据方法、面向过程方法 面向对象方法 9.CASE系统的三个层次?(P10-11) 工具:CASE工具支持单个过程的任务 工作台:CASE工作台支持某一过程阶段的活动 环境:CASE环境支持整个软件过程的所有活动或者大部分活动,通常是若干CASE工作台的集成 10.SWEBOK的10个知识域?英文名称?(P15-19) 1软件需求(Software requirements)→2软件设计(Software Design)→3软件构造(Software Construction)→4软件测试(Software Testing)→5软件维护(Software Maintenance)→6软件配置管理(Software Configuration Management)→7软件工程管理(Software Engineering Management)→8软件工程过程(Software Engineering Process)→9软件工程工具与方法(Software Engineering Tools and Methods)→10软件质量(Software Quality) 11.软件工程与其他相关学科的关系?(P19-20) 软件工程将计算机科学,数学,工程学和管理学等基本原理应用于软件开发的工程实践中,并借鉴传统工程的原则和方法,以系统的,课控的,有效的方式产生高质量的软件。 1.软件工程目标?(P23) 优质,高效 2.软件过程的定义?(P24) 软件工程人员为了获得(软件产品)而在(软件工具)的支持下实施的一系列(软件工程)活动。 3.软件过程的基本活动?(P25-26) 1、问题提出 2、软件需求规格说明 3、软件设计 4、软件实现 5、软件确认 6、软件演化 4.软件过程的制品有哪些?(P26-27) 1、软件需求制品 2、软件设计制品 3、软件实现制品 4、软件测试制品 5、软件实施制品

软件工程复习资料整理

《软件工程》试题参考答案(1)卷 一、单向选择题(四选一、每小题3分,共18分) 1、需求分析的任务不包括(B)。 A.问题分析 B.系统设计 C.需求描述 D.需求评审。 2、当模块中包含复杂的条件组合,只有(A)能够清晰地表达出各种动作之间的对应关系。0802 A.判定表和判定树 B.盒图 C.流程图 D关系图 3、以下不属于逻辑覆盖的是(D)。1402 A.语句覆盖 B.判定覆盖 C.条件覆盖 D.基本路径 4、为适应软件运行环境的变化而修改软件的活动称为(B)。1501 A.纠错性维护 B.适应性维护 C.改善性维护 D预防性维护 二、填空题(每空2分,共18分) 1.软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。0101 2.高级语言:独立于机器,面向过程或面向(对象)0101 3.软件项目管理的范围主要集中于3个P上,即:People人员、Problem问题和(过 程)。0201 4.由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的(副作用)。 1504 5.在公式V(G)= E – N + 2中:E为程序图G中边的总数; N 为程序图中结点的 总数。V(G)又称为图G的环形(复杂度)0204。 6.任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统 转换成一个信息变换模型。0303 7.为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要求用户(确 认),例如,提问“你确实要删除…”。1204 8.文档是一种数据媒体和其上所记录的(数据)。0101 三、判断题(每小题2分,共24分,错误打X、正确打√) 1.用户对软件需求的描述不准确,往往是产生软件危机的原因之一。(√)0102 2.一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际 关系,善于听取别人的意见。(√)0206 3.目前的绝大多数软件都不适合于快速原型技术。(X)0402 4.面向数据的设计方法适用场合是具有明显的层次信息结构的应用如:企事业的信息管理 系统;系统软件(如操作系统)等。(√)10001 5.数据输入的一般准则中包括保证信息显示方式与数据输入方式的协调一致;允许用户定 做输入格式等内容。(√)1204 6.软件也会磨损和老化。(X)0101 7.完善性维护是提高或完善软件的性能。(√)0101 8.McCabe建议模块规模应满足:V(G)≤20。(X)0204 四、简答题(每小题4分,共20分) 1、程序设计语言的三种类型和特点是什么0101

软件工程期末复习必备知识点

一、概念解释 1.软件:是程序,数据结构和文档的集合,用于实现系统所需要的逻辑方法、过程和控制。 2.软件危机:是软件开发和维护过程中所遇到的一系列严重的问题。 3.软件周期:是从软件从定义,开发,运行维护到废弃时经历的一个漫长的时期。 4.需求分析:是发现,求精,建模,规格说明和复审的过程。 5,概要设计:通过仔细分析需求规格说明,确定完成系统的模块以及各模块之间的关系,设计出完成预定功能的模块(软件结构),并建立借口。 详细设计:设计完成系统的模块内的算法和数据结构。 6.模块化:将软件划分成可以独立命名的且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能来满足用户的需求。 信息隐藏:一个模块内包含的信息对于一个不需要这些的模块来说是不可访问的。 7.耦合:是一个软件结构内的每个模块互连程度的度量。 内聚:一个模块间各个元素之间的紧密的程度。 8.类:是对有相同数据和相同操作的一组相似对象的抽象描述。 对象:是客观世界中事物的抽象表示,其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。 9.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。 消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。 10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。 子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。 子类复用父类的定义,而不修改父类。 继承具有传递性。 多态性:在一个类层次中,不同对象对相同消息做出不同的响应。 11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。 12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。 13.黑盒测试:在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如,数据库或文件)的完整性。 白盒测试:按照程序内部的逻辑测试程序,检查程序中的每条通路是否都能按预定要求正确工作。 14.单元测试:集中对源代码实现的每一程序模块进行测试。 继承测试:把模块装配在一起形成软件包,在装配的同时进行测试。 确认测试:对软件满足所用功能的,行为的和性能的需求的最终保证的测试,其标准是在需求分析阶段所确定下来的。

相关文档
相关文档 最新文档