天津专接本2013软件工程导论

2018-11-23 22:25

软件工程

第一章 软件工程学概述

1)软件的定义:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合(IEEE定义(1983年):计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据)软件=程序+数据+文档 ? 程序是按事先设计的功能和性能要求执行的指令序列 ? 数据是使程序能正常操纵信息的数据结构

? 文档是与程序开发,维护和使用有关的图文材料

2)软件危机的主要特征:软件开发周期大大超过规定日期;软件开发成本严重超标;软件质量难于保证

3)软件危机的表现:⑴ 对软件开发成本和进度的估计常常很不准确;(2) 用户对“已完成的”软件系统不满意的现象经常发生;(3) 软件产品的质量往往靠不住;(4) 软件常常是不可维护的;(5) 软件通常没有适当的文档资料;(6) 软件成本在计算机系统总成本中所占的比例逐年上升;(7) 软件开发生产率提高的速度,远远跟不上计算机应用速度普及深入的趋势;(8) 未能充分做好检测工作

4)软件危机产生的原因:(1) 软件自身的特点;(2) 在开发和维护过程中,采用了错误的方法和技术

5)软件工程的定义:IEEE(1993)(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,即把工程应用于软件;(2)研究1)中的途径。软件工程是开发、运行、维护和修复软件的系统方法 6)软件工程的本质特性:(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品 7)软件工程方法学三要素:方法、工具和过程

8)使用得最广泛的软件工程方法学:传统和面向对象的方法学

9)OOM的四要素:对象(object):世界由对象组成;类 (class) :对具有相同数据和相同操作的一组相似对象的定义,对象可划分为类;单个对象可视为某一类的实例 (instance);继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承;消息(message):对象间只能通过发送消息进行联系;外界不能处理对象的内部数据,只能通过消息请求它进行处理

10)软件工程项目的基本目标: ? 付出较低的开发成本 ? 达到要求的软件功能 ? 取得较好的软件性能 ? 开发的软件易于移植 ? 需要较低的维护费用

? 能按时完成开发工作,及时交付使用

11)软件生命周期的组成:由软件定义、软件开发和软件维护三个时期组成 ? 软件定义时期:问题定义、可行性研究和需求分析。

? 软件开发时期:总体设计、详细设计、编码和单元测试,综合测试。 ? 软件维护时期:运行维护

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

13)传统的瀑布模型特点: 优点:

? 面向阶段的、线性的或传统的开发策略,阶段间具有顺序性、依赖性 ? 推迟实现

? 质量保证— 阶段文档与评审的要求, 有利于尽早发现错误。 缺点:

? 不能适应需求的变化

? 单一流程,不能很好反馈、防范风险 ? 缺少足够的描述能力 ? 缺少计算机化的适应性 14)螺旋模型四个象限表达:

? 制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件 ? 风险分析──分析所选方案,考虑如何识别和消除风险 ? 实施工程──实施软件开发

? 客户评估──评价开发工作,提出修正建议 15)软件工程过程的特性:易理解性(可读性);可见性(进展和结果可见);可支持性(易于使用CASE工具支持);可接受性(为软件工程师接受);可靠性(无故障);健壮性(抵御外部意外错误的能力);可维护性(好维护);速度(开发效率)

第二章 可行性研究

1)可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。不是解决问题,而是确定问题是否值得去解决。

2)可行性研究的内容:(1) 技术可行性;(2) 经济可行性;(3) 操作可行性;(4) 社会可行性(法律可行性)

3)可行性研究过程:(1) 确定、复查系统规模和目标;(2) 研究目前正在使用的系统;(3)导出新系统的高层逻辑模型;(4) 进一步定义问题【可行性研究的前4个步骤实质上构成一个循环】(5) 导出和评价供选择的解法;(6) 推荐行动方针;(7) 草拟开发计划;(8) 书写可行性研究报告提交审查

4)系统流程图的定义:概括地描绘物理系统的传统工具

5)系统流程图的基本思想:用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)

6)数据流图的定义:系统逻辑功能的图形表示,它描绘信息流和数据从输入移动到输出的过程所经受的变换。数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示

7)数据处理的定义:对数据进行的操作,它把流入的数据流转换为流出的数据流 8)数据存储的定义:存储数据的工具,数据存储名应与它的内容一致 9)数据流的定义:用带有名字的具有箭头的线段表示,表示流经的数据,箭头表示流向【数据存储和数据流都是数据,仅仅是所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动状态的数据】

10)数据字典的定义:对数据流图中包含的所有元素的定义的集合【数据流图和数据字典共同构成系统的逻辑模型】

11)数据字典的内容:数据流;数据流分量(即数据元素);数据存储;处理 12)由数据元素组成数据的方式:顺序;选择;重复;可选

13)数据字典的用途: ? 作为分析阶段的工具

? 有助于改进分析员和用户、不同开发人员或不同开发小组之间的通信 ? 数据字典中包括的每个数据元素的控制信息是很有价值的 ? 数据字典是开发数据库的第一步,而且是很有价值的一步

14)估算技术有哪些:1. 代码行技术2. 任务分解技术3. 自动估计成本技术 15)成本/效益分析的方法:

1.货币的时间价值【通常用利率的形式表示货币的时间价值。】

n

假设年利率为i,P元钱在n年后的价值F为:F=P(1+i)

n

n年后能收入F元钱,则这些钱现在的价值P为:P=F/(1+i) 16)投资回收率:

已知现在的投资额P,已估计出将来每年可以获得的经济效益Fi,那么,在给定软件的使用寿命n年后,可列方程式:P=F1/(1+j)+F2/(1+j) +?+Fn/(1+j)

P是现在的投资额,Fi是第I年年底的效益,n是系统的使用寿命,j是投资回收率。

第三章 需求分析

1)确定对系统的综合要求:功能需求,性能需求,可靠性和可用性需求,出错处理需求,接口需求,约束,逆向需求,将来可能提出的要求 2)需求分析过程应该建立3种模型: ? 数据模型 ---- 实体-联系图 ? 功能模型---- 数据流图 ? 行为模型----状态转换图

3)事件的定义:某个特定时刻发生的事情,它是对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象

4)活动表的语法格式为:事件名(参数表)/动作表达式 ? Entry事件指定进入该状态的动作 ? Exit事件指定退出该状态的动作

? Do事件指定在该状态下的动作(最常用)

5)事件表达式的语法为:事件说明[守卫条件]/动作表达式 【守卫条件是一个布尔表达式,动作表达式是一个过程表达式】

6)事件说明的语法为:事件名(参数表)

7)验证软件需求的正确性:一致性,完整性,现实性,有效性

8)PSL/PSA系统的功能:(1) 描述任何应用领域的信息系统;(2) 创建一个数据库保存对该信息系统的描述符;(3) 对描述符施加增加、删除和更改等操作;(4) 产生格式化的文档和关于规格说明书的各种分析报告

9)PSL/PSA系统的优点:它改进了文档质量,能保证文档具有完整性、一致性和无二义性,从而可以减少管理和维护的费用。数据存放在数据库中,便于增加、删除和更改

第五章 总体设计 1)软件生存周期:

n

n

???软件定义?????软件生命周期?软件开发????运行维护?????问题定义 ??可行性研究?需求分析 ???总体设计系统设计???详细设计? ??编码和单元测试?系统实现???综合测试 ?2)总体设计阶段的任务:

? 划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等 ? 设计软件的结构,划分出程序的模块组成,模块间的相互关系。 ? 编写总体/概要设计说明书

3)总体设计过程:1. 设想供选择的方案;2. 选取合理的方案;3. 推荐最佳方案;4. 功能分解;5. 设计软件结构;6. 设计数据库;7. 制定测试计划;8. 书写文档;9. 审查和复审 4)书写文档:(1) 系统说明;(2) 用户手册;(3) 测试计划;(4) 详细的实现计划;(5) 数据库设计结果

5)设计原理:1、模块化;2、抽象;3、逐步求精;4、信息隐蔽和局部化;5、模块独立 6)模块化的定义:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求 7)模块化公式:

设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。 对于问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2) 另一个有趣的规律是C(P1+P2)>C(P1)+C(P2)

综上所述,得到下面的不等式E(P1+P2)>E(P1)+E(P2)

8)抽象的定义:把这些相似的方面集中和概括起来,暂时忽略它们之间的差异。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节

9)模块独立重要性:第一,有效的模块化的软件比较容易开发出来。第二,独立的模块比较容易测试和维护

10)模块独立的两个定性标准度量:内聚和耦合,内聚是一个模块内部各个元素彼此结合的紧密程度的度量。耦合是模块之间相互连接的紧密程度的度量。 11)耦合的七种类型:

(1)非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用实现的,这就是非直接耦合。

(2)数据耦合:两个模块彼此间通过数据参数(不是控制参数、公共数据结构或外部变量)交换信息,这种耦合称为数据耦合。

(3)标记耦合:模块之间通过数据结构传递记录信息,就是标记耦合。 (4)控制耦合:模块传递的信息中有控制信息,就称作控制耦合。

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

(6)公共耦合:一组模块通过同一个公共数据环境相互作用,则它们之间的耦合称为公共耦合。

(7)内容耦合:如果发生下列情形之一,两个模块之间就发生了内容耦合。 ? 一个模块直接访问另一个模块的内部数据

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

? 两个模块有一部分程序代码重叠(只可能出现在汇编语言中) ? 一个模块有多个入口

12)七种耦合类型之间的关系:

13)内聚和耦合的关系:内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。实践表明内聚更重要,应该集中精力提高模块的内聚程度 14)内聚的七种类型:

(1)偶然内聚:如果一个模块各部分之间没有关系,或者即使有关系,这种关系也是很松散的,则称作偶然内聚。

(2)逻辑内聚:如果一个模块中包含多个逻辑上相关的功能,每次被调用时,根据传递给该模块的判定参数来确定模块应执行的功能,称作逻辑内聚。

(3)时间内聚:如果一个模块所包含的任务必须在同一时间内执行,称作时间内聚。

(4)过程内聚:如果一个模块内的处理是相关的,而且必须以特定次序执行,则称为过程内聚。

(5)通信内聚:如果一个模块中的所有元素都使用了相同的输入数据,或产生了相同的输出数据,则称为通信内聚。

(6)顺序内聚:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称为顺序内聚。 (7)功能内聚:如果一个模块内所有处理元素属于一个整体,完成一个单一的功能,则称作功能内聚。

15)七种内聚类型之间的关系:

16)启发规则:1. 改进软件结构提高模块独立性;2. 模块规模应该适中;3. 深度、宽度、扇出和扇入都应适当;4. 模块的作用域应该在控制域之内;5. 力争降低模块接口的复杂程度;6. 设计单入口单出口的模块;7. 模块功能应该可以预测 17)深度、宽度、扇出、扇入定义: ? 深度表示软件结构中控制的层数

? 宽度是软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复

杂。对宽度影响最大的因素是模块的扇出。 ? 扇出是一个模块直接控制(调用)的模块数目。


天津专接本2013软件工程导论.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:各省军区独立师历史沿革

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: