当前位置:文档之家› 软件工程期末复习重点

软件工程期末复习重点

软件工程期末复习重点
软件工程期末复习重点

在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。

2、软件生存周期分哪几个阶段?分别简述各个阶段的任务。

答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。

A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机

系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。

B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界

面等要求,生成软件需求规约。

C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细

设计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。

D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。

E测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。

F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。

3、简述各类软件过程模型的特点。

答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。

A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是:

接受上一阶段活动的结果作为本阶段活动的输入;

依据上一阶段活动的结果实施本阶段应完成的活动;

对本阶段的活动进行评审;

将本阶段活动的结果作为输出。

B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件

的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。

C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然

后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一

轮原型的迭代开发。

D 螺旋模型将原型模型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅

体现了这两种模型的优点而且还增加了风险分析。

E 喷泉模型是一种支持面向对象开发的过程模型。类及对象是面向对象方法中的基本成分。

在分析阶段,标识类及对象,定义类之间的关系,建立对象-关系模型和对象-行为模型。

在设计阶段,从实现的角度对分析模型进行调整和扩充。在编码阶段,用面向对象语言实现类及对象,通过消息机制实现对象之间的通信,完成软件的功能。在面向对象方法中,分析模型和设计模型采用相同的符号表示体系,开发的各个活动没有明显的边界,各个活动经常重复,迭代地交替进行。

F 基于构件的开发模型,基于构件的开发是指利用预先包装的构建来构造应用系统。构件可

以是组织内部开发的构建,也可以是商业化的、现存的软件构件。

G 形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需

求分析、规约、设计、编程、系统集成、测试、文档生成,直至维护等各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。形式化方法用严格的数学语言和语义描述功能和设计规约,通过数学的分析和推导,易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。通过数学的演算,使得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码转换成为可能。

CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型)

CASE:计算机辅助软件工程。用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

CASE工具主要包括:画图工具,报告生成工具,数据词典、数据库管理系统和规格说明检查工具,代码生成工具和文档资料生成工具等。

Case环境

可行性分析

经济可行性:主要进行成本效益分析,从经济角度,确定系统是否值得开发。

成本、效益、货币的时间价值、投资回收期、纯收入

技术可行性:风险分析、资源分析、技术分析

法律可行性:

需求工程六个阶段:

需求获取、需求分析与协商、系统建模、需求规约、需求验证、需求管理

简述模块、模块化及模块化设计的概念。

在软件工程中模块是数据说明、可执行语句等程序对象的集合,具有名字、参数、功能等外部特征以及完成模块功能的程序代码和模块内部数据等内部特征。

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

模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。逐步求精的结果是得到一系列以功能块为单位的算法描述。以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。

模块的独立性是模块化、信息隐藏和局部化等概念的直接结果。

用内聚度与耦合度来度量独立性。内聚度度量同一个模块内部各个元素彼此结合的紧密程度,耦合度度量不同模块彼此间相互以来的紧密程度。

软件设计的任务:

数据/类设计、体系结构设计、接口设计、部件级设计

软件设计原则:

1、抽象与逐步求精

2、模块化

3、信息隐藏

4、功能独立

模块耦合度和模块内聚度

如何判读数据流图的一致性和完整性?

一致性:检查(1)父图与子图平衡(2)数据守恒(3)局部文件(4)一个加工的输出数据流不能与该加工的输入数据流同名

完整性:检查(1)每个加工至少有一个输入数据流和一个输出数据流(2)在整套分层数据流图中,每个文件应至少有一个加工读该文件,有另一个加工写该文件(3)分层数据流图中的每个数据流和文件都必须命名(除了流入或流出文件的数据流),并保持与数据字典一致(4)分层DFD的每个基本加工都应有一个加工公约

为了实现有效的模块化,给出以下启发式设计策略:

1、改造程序结构图、降低耦合度、提高内聚度

2、避免高扇出,并随着深度的加入,力求高扇入

3、模块的影响范围应限制在该模块的控制范围内

4、降低模块接口的复杂程度和冗余程度,提高一致性

5、模块的功能应该是可预测的,避免对模块施加过多的限制

6、尽可能设计单入口和单出口的模块

DFD图、数据字典、判定数、判定表的应用

面向对象的基本概念、用况图、类图、状态机图的应用

软件测试的目的是什么?

答:软件测试的目的是发现软件中的错误和缺陷,并加以纠正。

什么是白盒测试?什么是黑盒测试?

答:白盒测试又称结构测试,这种方法把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。白盒测试主要用于对程序模块的测试。包括:

程序模块中的所有独立路径至少执行一次。

对所有逻辑判定的取值(真与假)都至少测试一次。

在上下边界及可操作范围内运行所有循环。

测试内部数据结构的有效性等。

黑盒测试又称行为测试,这种方法把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符号它的功能需求。黑盒测试可用于各种测试,它试图发现以下类型的错误:

不正确或遗漏的功能

接口错误,如输入输出参数的个数、类型等。

数据结构错误或外部信息(如外部数据库)访问错误。

性能错误。

初始化和终止错误。

分别简述单元测试、集成测试、确认测试和系统测试的任务。

单元测试:

又称模块测试,着重对软件设计的最小单元——软件构件或模块进行验证。

单元测试根据设计描述,对重要的控制路径进行测试,已发现构建或模块内部的错误,通常采用白盒测试,并且多个构件或模块可以并行测试。

单元测试的主要内容:接口、局部数据结构、边界条件、独立路径和错误处理路径。

集成测试:

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

目的:是确保各单元组合在一起后能够按既定意图协作运行,并确保增量的行为正确。它所测试的内容包括单元间的接口以及集成后的功能。使用黑盒测试方法测试集成的功能。并且对以前的集成进行回归测试。

确认测试:

确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。系统测试:

将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测

试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。

什么是α测试?什么是β测试?

α测试:

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

β测试:

β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见,然后软件开发公司再对β版本进行改错和完善。β测试也是黑盒测试。黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。

什么是回归测试?

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归

压力测试:又称强度测试,是在一种需要非正常数量、频率或容量的方式下执行系统,其目的是检查系统对非正常情况的承受程度。

性能测试用来测试软件在集成的系统中的运行性能。对实时系统和嵌入式系统尤为重要。

设计软件测试样例

可维护性是指,理解、改正、调整和改进软件的难易程度。

逆向工程是指,在软件生存周期中,将软件的某种形式描述转换成更抽象形式的活动。

再工程是指在逆向工程所获的信息的基础上修改或重构已有的系统,产生系统的一个新版本。

再工程过程:

1、库存目录分析

2、文档重构

3、逆向工程

4、代码重构

5、数据重构

6、正向工程

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发

敏捷开发方法的共同特征:

1、短迭代的生命周期模型

2、开发中可运行的软件

3、短线沟通和快速反馈

4、变化的需

求和架构

价值观:沟通、简单、反馈、勇气、尊重/人和交互重于过程和工具。可以工作的软件重于求全责备的文档。客户协作重于合同谈判。随时应对变化重于循规蹈矩。其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。

原则:

软件工程期末考试重点

软件工程期末考试重点 《软件工程》期末复习重点 第一章软件工程 1. 什么是软件工程。 A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。2. 软件工程的三要素:方法、工具和过程。 第二章软件过程 1. 软件生命周期分为哪几个阶段?每个阶段的基本任务是什么? a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么 可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么 b.软件开发:具体设计和实现在前一个时期定义的软件。概要设计:怎样宏观地解决问题 详细设计:应如何具体地实现这个系统 编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。 c.运行维护:修正错误,使软件持久地满足用户需要。改正性维护:诊断和改正使用中的错误适应性维护:修改

以适应环境变化 完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备 2. 常用的过程模型有哪些?各自的特点及不足。如:瀑布模型的不足是不能适应需求的动 态变更。 A.瀑布模型 特点: 可强迫开发人员采用规范化的方法。严格地规定了每个阶段必须提交的文档。要求每个阶段交出的所有产品都必须是经过验证的。 缺点:太理想化,于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格与用户需求之间有差异,就会发生这种情况。只适用于项目开始时需求已确定的情况。 B.快速原型模型 特点:快速 软件产品开发基本上是线性顺序进行。降低了规格说明文档变化的可能性。减少了后续阶段错误的可能性。 c.增量模型 1 优点: 人员分配灵活,刚开始不用投入大量人力资源。

软件工程重点整理

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

软件工程知识点总结

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

软件工程知识点汇总

软件工程知识点汇总 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.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。 4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。 5.什么是软件工程?(课后题) 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来 开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合 起来,以经济地开发出高质量的软件并有效地维护它。 6.可以用功能性、可靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。 功能性是指软件所实现的功能达到它的设计规范和满足用户需求的程度。 可移植性是指软件从某一环境转移到另一环境时所作努力得程度。 7.软件生存期由软件定义、软件开发和运行维护三个时期组成。 开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。 开发过程中的典型文档包括:项目计划、软件测试计划、软件设计说明书、用户手册。 8.需求分析的基本任务? (1)建立分析模型,了解系统的各种需求细节。 (2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试计划和初步的系统 用户手册,并提交管理机构进行分析评审。 2 软件工程方法及工具 1.面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和 过程尽可能接近人类认识问题和解决问题的方法及过程,从而使描述问题的问题空间及其解 空间在结构上尽可能一致。 2.形式化方法的主要特点是:(课后题)

山东大学-软件工程复习重点整理

第一章 1.1软件工程(SE)的定义、向、作用: SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如有计划、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。 SE的向:面向对象模式,结构化模式,基于过程的模式等 SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。 1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。 1.3说明错误、故障和失效的含义及联系(并举例): 错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误) 故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的) 失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的) 联系:当一个开发者编写程序时,会在代码中出现错误。当这个程序被编译或集成到一个系统中时,系统就存在故障。当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。1.4软件质量应从哪几个面衡量,论述之: (1产品的质量)(2过程的质量)(3商业环境背景下的质量) (1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。 (2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。 (3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。 1.5软件系统的系统组成(系统的要素有哪些):对象(实体)+ 活动+ 关系+ 系统边界活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改变属性把一个事物变成另一个事物。 对象:活动中涉及的元素称为对象。 关系:是指活动与对象之间的关系。 系统边界:即系统包含的功能与系统不包含的功能之间的界限。 1.6现代软件工程大致包含几个阶段及各个阶段的文档: (1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》

软件工程基础知识点总结

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

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

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

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

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

软件工程期末复习要点归纳总结精编WORD版

软件工程期末复习要点归纳总结精编W O R D 版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

第一章软件工程学概论 1、软件危机产生的原因 软件本身的特点:难于维护、逻辑复杂 软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护 课本表述: 1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件 2、软件不同于一般程序,它的一个显着特点是规模庞大,而且程序的复杂性将规模 的增加而呈现指数上升。 3、软件本身特有的特点确实给开发和维护带了一些客观困难 4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维 护) 5、对用户要求没有完整准确的认识就匆忙开始着手编写程序 6、在软件不同阶段进行修改需要付出的代价是很不相同的 2、软件危机的表现(什么是软件危机) (1)、成本高: (2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多 (3)、进度难以控制:

●项目延期比比皆是 ●由于进度问题而取消的软件项目较常见 ●只有一小部分的项目能够按期完成 (4)、维护十分困难: ▼软件维护的多样性 ▼软件维护的复杂性 ▼软件维护的副作用 3、克服软件危机 (1)、管理的角度: 软件开发过程的研究、文档的标准化以及人员的交流方式等 (2)、软件开发方法的研究 结构化软件开发方法, 面向对象的开发 4、软件工程的定义 概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

软件工程复习知识点

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黑盒测试)

软件工程知识点

第一章软件工程概述 一、软件的定义和特性(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)

软件工程复习知识点

软件工程:选择题(25题,每题1分),填空题(20分,每空2分),简答题(5题,每题5分),综合题(3题,共30分) 知识点: 1.软件设计对模块间的耦合与模块的内聚有何原则。(p97-p99) 答:耦合原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合;内聚原则:设计时应力求做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改提高模块的内聚程度降低低模块间的耦合程度。 2.耦合有哪些类型,各有何特点?(p97-p99) 答:(1)数据耦合:两个模块之间彼此通过参数交换信息,而且交换的信息仅仅是数据。 (2)控制耦合:如果传递的信息中有控制信息,则这种耦合为控制耦合。 3.常用软件过程有哪几种,各有何特点?(p15-p22) 答:(1)瀑布模型:阶段之间具有顺序性和依赖性,推迟实现的观点,质量保证的观点。 (2)增量模型:整个产品被分解成许多个增量构件,开发人员逐步的向用户提交产品。(3)螺旋模型:适用于内部开发的大规模软件项目。 (4)喷泉模型:提高了开发效率,缩短了开发周期但是难于打理。喷泉模型使开发过程具有迭代性和无缝性。适宜面向对象的方法。 (5)Rational统一过程(迭代式开发,采用用例分析来捕获需求并由他们驱动和实现,使用基于构件的体系结构,可视化建模,每个修改都是可接受而且能被跟踪的)(6)快速原型模型:快速原型模型是不带反馈环的,软件产品的开发基本上是线性顺序进行的,是一个循环的模型; 4.瀑布模型分为哪几个阶段。 答:需求分析验证、规格说明验证、设计验证、编码测试、综合测试、维护、变化的需求验证 5.结构化程序设计方法的发展过程。 答:p117-p118 6.流程图与N_S图如何使用。 答:p38-p39 7.可行性研究应该从哪几个方面进行。(p35) 答:技术可行性,经济可行性,操作可行性。 8.数据流图的基本符号有哪几种?(p40) 答:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。 9.面向数据流的设计方法如何进行?(P104) 答:将软件设计为多个结构合理,功能单一的模块,建立系统的模块结构图。 10.Jackson方法有何特点?(p130) 答:在设计比较简单的数据处理系统时特别方便,当设计比较复杂的程序时常常遇到输入数据可能有错、条件不能预先测试、数据结构冲突等问题。 11.白盒测试与黑盒测试各有何特点?(p162,p171) 白盒测试:全面了解程序内部逻辑结构、对所有逻辑路径进行测试。

软件工程期末复习要点归纳总结

第一章软件工程学概论 1、软件危机产生的原因 软件本身的特点:难于维护、逻辑复杂 软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护 课本表述: 1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件 2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的 增加而呈现指数上升。 3、软件本身特有的特点确实给开发和维护带了一些客观困难 4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护) 5、对用户要求没有完整准确的认识就匆忙开始着手编写程序 6、在软件不同阶段进行修改需要付出的代价是很不相同的 2、软件危机的表现(什么是软件危机) (1)、成本高: (2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多 (3)、进度难以控制: ●项目延期比比皆是 ●由于进度问题而取消的软件项目较常见 ●只有一小部分的项目能够按期完成 (4)、维护十分困难: ▼软件维护的多样性 ▼软件维护的复杂性 ▼软件维护的副作用 3、克服软件危机 (1)、管理的角度: 软件开发过程的研究、文档的标准化以及人员的交流方式等 (2)、软件开发方法的研究 结构化软件开发方法, 面向对象的开发 4、软件工程的定义 概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得

到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 (1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。 (2)、①把系统的、规的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径 总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。他借鉴传统工程的原理、方法,以提高质量,降低成本为目的。 5、软件工程的本质特性 1、关注与大型程序的构造 2、中心课题是控制复杂度 3、软件经常变化 4、开发软件的效率非常重要 5、和谐的合作是开发软件的关键 6、软件必须有效地支持它的用户 7、在软件工程领域常由具有一个文化背景的人替另外一种文化背景的人创造产品 6、软件工程的基本原理 1、用分阶段的生命周期计划严格管理 2、坚持进行阶段评审 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚地审查 6、开发小组应该少而精 7、承认不断改进软件工程实践的必要性 软件工程学包含3个要素:方法、工具和过程 7、软件生命周期 (1)、概念: 软件生命周期由软件定义、软件开发和运行维护(也成软件维护)3个时期组成。 (2)、容:

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

软件与硬件的区别:本质逻辑与物理;软件是设计开发的;软件不会磨损;大部分软件是按需定制的。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由一个主持人控制会议

相关主题
文本预览
相关文档 最新文档