ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:94.25KB ,
资源ID:11921680      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11921680.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件工程导论复习重点总结 很全 第六版.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件工程导论复习重点总结 很全 第六版.docx

1、软件工程导论复习重点总结 很全 第六版第1章 软件工程学概述 软件危机 软件危机的介绍软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅

2、速普及深入的趋势 。 产生软件危机的原因 (1)与软件本身的特点有关(2)与软件开发与维护的方法不正确有关 消除软件危机的途径对计算机软件有正确的认识。认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。应该开发和使用更好的软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合

3、起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考)软件工程的本质特性:软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品 软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性 软件工程方法学 软件工程包括技术和管理两方面的内容。软件工程方法学3要素:方法、工具、过程1. 传统方法学(生

4、命周期方法学或结构化范型)强调自顶向下2. 面向对象方法学强调主动地多次反复迭代面向对象方法学4个要点:对象、类、继承、消息 软件生命周期 (必考)三个时期八个阶段:软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期组成,每个时期又进一步划分成若干个阶段。 软件过程 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 第2章 可行性研究2.1可行性研究的任务可行性研究的目的:不是解决问题,而是确定问题是否值得去解决。可行性研究的实质:进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的内容:首先进一步分析和澄

5、清问题定义,导出系统的逻辑模型;然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案);对每种解法都研究它的可行性,至少应该从三方面研究每种解法的可行性 。主要方面:技术可行性,经济可行性,操作可行性,其他方面:运行可行性, 法律可行性, 可行性研究过程1.复查系统规模和目标2. 研究目前正在使用的系统3. 导出新系统的高层逻辑模型4. 进一步定义问题5. 导出和评价供选择的解法6. 推荐行动方针7. 草拟开发计划8. 书写文档提交审查 系统流程图系统流程图:是概括地描绘物理系统的传统工具。表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。2.4数据流

6、图2.4.1符号基本符号:数据存储:数据存储是处于静止状态的数据; 数据流:数据流是处于运动中的数据。附加符号:星号(*):表示“与”关系加号(+):表示“或”关系异或():表示互斥关系2.5数据字典数据流图和数据字典共同构成系统的逻辑模型。 数据字典的内容数据字典的组成:数据流 数据流分量(即数据元素) 数据存储 处理2.5.2定义数据的方法方法:对数据自顶向下分解。 数据组成方式(三种基本类型):顺序 选择 重复 附加类型:可选 符号:=意思是等价于(或定义为);+意思是和(即,连接两个分量); 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量; 意思是

7、重复(即,重复花括弧内的分量);常常使用上限和下限进一步注释表示重复的花括弧。( )意思是可选(即,圆括弧里的分量可有可无)。2.5.3数据字典的实现 计算机实现 人工实现2.6成本/效益分析 成本估计:1. 代码行技术 2. 任务分解技术 3. 自动估计成本技术 成本/效益分析的方法成本/效益分析涉及的4个概念: 1. 货币的时间价值2. 投资回收期3. 纯收入4. 投资回收率:P = F1/( 1 + j ) + F2/( 1 + j )2 + + Fn( 1 + j )n第3章需求分析需求分析的任务:需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题

8、。确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求3.1需求分析的任务确定对系统的综合要求 分析系统的数据要求 导出系统的逻辑模型 修正系统开发计划3.1.1确定对系统的综合要求1.功能需求2. 性能需求3. 可靠性和可用性需求4. 出错处理需求5. 接口需求6. 约束7. 逆向需求8. 将来可能提出的要求 分析系统的数据要求建立数据模型ER图 描绘数据结构层次方框图和Warnier图 数据结构规范化 与用户沟通获取需求的方法访谈:1. 正式访谈 2. 非正式访谈 3. 调查表 4. 情景分析技术面向

9、数据流自顶向下求精简易的应用规格说明技术 快速建立软件原型:(1) 第四代技术(4GL)(2) 可重用的软件构件 (3) 形式化规格说明和原型环境分析建模与规格说明 分析建模需求分析过程应该建立3种模型:数据模型 功能模型 行为模型数据字典是分析模型的核心实体-联系图用于建立数据模型的图形数据流图是建立功能模型的基础状态转换图是行为建模的基础 3.4实体-联系图数据模型中包含3种相互关联的信息:数据对象、数据对象的属性、数据对象彼此间相互连接的关系3.4状态转换图3.6.1状态状态图分类:表示系统循环运行过程,通常不关心循环是怎样启动的。表示系统单程生命期,需要标明初始状态和最终状态。3.6.

10、2事件事件就是引起系统做动作或(和)转换状态的控制信息。3.6.3符号 3.7其他图形工具 层次方框图3.7.2Warnier图3.7.3IPO图3.8验证软件需求(重点) 从哪些方面验证软件需求的正确性一致性 完整性 现实性 有效性 第五章 总体设计5.1设计过程由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案:设想供选择的方案 选取合理的方案 推荐最佳方案结构设计阶段,确定软件结构:功能分解 设计软件结构 设计数据库 制定测试文档 书写文档 审查和复查5.2设计原理 模块化模块化的作用:采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模块化使软件容易测试和调试,因而

11、有助于提高软件的可靠性。模块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理。5.2.2抽象5.2.3逐步求精5.2.4信息隐藏和局部化 模块独立尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。七种内聚的优劣评分结果:高内聚:功能内聚 顺序内聚 中内聚:通信内聚 过程内聚 低内聚:时间内聚 逻辑内聚 偶然内聚 5.3启发规则1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4. 5.模块的作用域应该在控制域之内6. 7.力争降低模块接口的复杂程度6. 设计单入口单出口的模块7. 模块功能应该可以预测 描绘软件结

12、构的图形工具 层次图和HIPO图1. 层次图(H图)层次图用来描绘软件的层次结构。很适于在自顶向下设计软件的过程中使用。2.HIPO图7.4.2结构图7.5面向数据流的设计方法结构化设计方法(简称SD方法),也就是基于数据流的设计方法。5.5.1概念面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流有两种类型:变换流 事务流第6章 详细设计 结构程序设计经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构;扩展的结构程序设计:如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNT

13、IL型循环结构;修正的结构程序设计:再加上允许使用LEAVE(或BREAK)结构。6.2人机界面设计6.2.1设计问题设计人机界面过程中会遇到的4个问题:系统响应时间:长度 易变性 用户帮助设施:集成的帮助设施附加的帮助设施出错信息处理命令交互 人机界面设计指南一般交互指南信息显示指南数据输入指南过程设计的工具 程序流程图(程序框图)程序流程图的主要缺点:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。程序流程图不易表示数据结构。6.3.2盒

14、图(N-S图)盒图具有下述特点:功能域明确。不可能任意转移控制。很容易确定局部和全程数据的作用域。很容易表现嵌套关系,也可以表示模块的层次结构。 PAD图它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。 PAD图的主要优点如下:使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。PAD图所描绘的程序结构十分清晰。PAD图表现程序逻辑易读、易懂、易记。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。即可表示程序逻辑,也可描绘数据结构。PAD图的符号支持自顶向下、逐步求精方法的使用。 判定表判定表却能够清晰地表示复杂的条件组合与应做的动作之间

15、的对应关系。 所有条件条件组合矩阵所有动作条件组合对应的动作判定表的缺点: 判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。当数据元素的值多于两个时,判定表的简洁程度也将下降。 判定树判定树的优点:它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。判定树的缺点:简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多。画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。 过程设计语言(伪码)伪代码的基本控制结构:简单陈述句结构:避免复合语句。判定结构:IF_THEN_ELSE或CASE_OF结构。选择结构:WH

16、ILE_DO或REPEAT_UNTIL结构。PDL的优点:可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。已经有自动处理程序存在,而且可以自动由PDL生成程序代码。PDL的缺点:不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。 面向数据结构的设计方法面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。A由B、C、D 3个元素顺序组成 根据条件A是B或C或D中的某一个 A由B出现N次(N0)组成 改进的Jackson图 Jackson方法 程序复

17、杂程度的定量度量 McCabe方法1. 流图(程序图)2. 计算环形复杂度的方法V(G)=流图中的区域数V(G)=E-N+2 其中E是流图中的边数,N是结点数V(G)=P+1其中P是流图中判定结点的数目 Halstead方法令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N=N1+N2程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。预测程序长度的公式如下:H = n1 log2n1 + n2 log2n2预测程序中包含错误的个数的公式如下:E = N log2 (n1+n2)/3000第7章 实现编码和测试统称为实现。编码

18、选择程序设计语言主要的实用标准:系统用户的要求可以使用的编译程序可以得到的软件工具工程规模程序员的知识软件可移植性要求软件的应用领域 编码风格1. 程序内部的文档:恰当的标识符 适当的注解 程序的视觉组织2. 数据说明3. 语句构造4. 输入输出5. 效率:程序运行时间 存储器效率 输入输出的效率软件测试基础 软件测试的目标测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。 测试方法黑盒测试(功能测试):把程序看作一个黑盒子;完全不考虑程序的内部结构和处理过程;是在程序接口进行的测试。白盒测试(

19、结构测试):把程序看成装在一个透明的盒子里;测试者完全知道程序的结构和处理算法;按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。 测试步骤1. 模块测试(单元测试)保证每个模块作为一个单元能正确运行;发现的往往是编码和详细设计的错误。2. 子系统测试把经过单元测试的模块放在一起形成一个子系统来测试;着重测试模块的接口。3. 系统测试把经过测试的子系统装配成一个完整的系统来测试;发现的往往是软件设计中的错误,也可能发现需求说明中的错误;不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。4. 验收测试(确认测试)把软件系统作为单一的实体进行测

20、试;它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试;发现的往往是系统需求说明书中的错误。5. 平行运行 测试阶段的信息流输入信息有两类: 软件配置,包括需求说明书、设计说明书和源程序清单等; 测试配置,包括测试计划和测试方案。 单元测试单元测试集中检测模块;单元测试和编码属于软件过程的同一个阶段;可以应用人工测试和计算机测试这样两种不同类型的测试方法;单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行。 测试重点模块接口局部数据结构重要的执行通路出错处理通路边界条件 代码审查由审查小组正式进行测试称为代码审查;一次审查会上可以发现许多错误,可以减

21、少系统验证的总工作量。 计算机测试驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并且印出有关的结果。存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。 集成测试集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。由模块组装成程序时有两种方法: 不同集成测试策略的比较混合策略:改进的自顶向下测试方法混合法 回归测试 确认测试确认测试也称为验收测试,它的目标是验证软件的有效性。 Alpha和Beta测试Alpha测试是在受控的环境中进行的。Beta测试是软件在开发者不

22、能控制的环境中的“真实”应用。1. 接口测试2. 路径测试3. 功能测试4. 健壮性测试5. 性能测试6. 用户界面测试7. 信息安全测试8. 压力测试9. 可靠性测试10. 安装/反安装测试确认测试也称为验收测试,它的目标是验证软件的有效性。Alpha测试是在受控的环境中进行的。Beta测试是软件在开发者不能控制的环境中的“真实”应用。4. 接口测试5. 路径测试6. 功能测试4. 健壮性测试5. 性能测试6. 用户界面测试7. 信息安全测试8. 压力测试9. 可靠性测试10. 安装/反安装测试 白盒测试技术 逻辑覆盖语句覆盖判定覆盖 :比语句覆盖强,但对程序逻辑的覆盖程度仍不高。 条件覆盖

23、 :判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。判定/条件覆盖 :有时判定/条件覆盖也并不比条件覆盖更强。条件组合覆盖 :条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。6. 点覆盖(语句覆盖标准相同)7. 边覆盖(判定覆盖一致)8. 路径覆盖 控制结构测试覆盖1. 基本路径测试基本路径测试是Tom McCabe提出的一种白盒测试技术。首先计算程序的环形复杂度;以该复杂度为指南定义执行路径的基本集合;2.条件测试从该基本集合导出的测试用例可保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。3. 循环测试循环测试是一种白盒测试技术,它专注

24、于测试循环结构的有效性。在结构化的程序中通常只有3种循环,即简单循环、串接循环和嵌套循环。 黑盒测试技术 等价划分 边界值分析 错误推测 软降可靠性 基本概念软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件的可用性:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。 第8章 维护软件工程的目的是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 软件维护的定义软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。可分为4项活动: 改正性维护适应性维护完善性维护预防性维护软件维护的特点 结构化维护与非结构化维护

25、差别巨大 维护的代价高昂 维护的问题很多软件维护过程1.维护组织 2.维护报告 3.维护的事件流 4.保存维护记录 5.评价维护活动 软件的可维护性决定软件可维护性的因素主要有7个:可理解性可测试性可修改性 可靠性可移植性可使用性 效率第9章 面向对象方法学引论面向对象方法学概述 (1)认为客观世界是由各种对象组成的,任何事物都是对象(2)把所有对象都划分成各种类对象,每个对象类都定义了一组数据和一组方法(3)按照子类和父类的关系,把若干个对象类组成一个层次结构的系统(4)对象彼此之间仅能通过传递消息相互联系 面向对象开发方法面向对象=对象+类 +继承+通信 面向对象方法组成面向对象的分析面向

26、对象的设计面向对象的程序设计 面向对象方法的优点1.与人类习惯的思维方式一致2.稳定性好3.可重用性好4.可维护性好5.较易开发大型软件产品 面向对象的概念 对象是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象,对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。对象的特点(1) 以数据为中心。 (2) 对象是主动的。(3) 实现了数据封装。(4) 本质上具有并行性。(5) 模块独立性好。 类是一组具有相同属性和相同操作的对象的集合。 实例由某个特定的类所描述的一个具体的对象。 消息向对象发出的服务请求(互相联系、协同工作等)。一个消息包

27、含3个部分:接收消息的对象,消息名,消息变元 方法方法就是对象所能执行的操作,也就是类中所定义的服务。 属性属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。 封装对象封装了对象的数据以及对这些数据的操作。 继承(I)继承是子类自动地共享基类中定义的数据和方法的机制。单重继承:子类仅从一个父类继承属性和方法多重继承:子类可从多个父类继承属性和方法 多态性 面向对象建模(II)面向对象开发软件,需要建立3种形式的模型。对象模型。描述系统数据结构数据结构。动态模型。描述系统控制结构执行操作。功能模型。描述系统功能数值变化。 对象模型1. 定义类2. 定义属性可见性 属性名 :类型 =

28、 缺省值 性质串可见性(visibility)表示该属性对类外的元素是否可见。分为: public(+) 公有的,即模型中的任何类都可以访问该属性。 private(-) 私有的,表示不能被别的类访问。 protected(#) 受保护的,表示该属性只能被该类及其子类访问。 如果可见性未申明,表示其可见性不确定。3. 定义操作可见性 操作名(参数表):返回类型性质串 表示关系的符号(I)关联表示两个类的对象之间存在某种语义上的联系。(1) 普通关联递归关联:一个类与本身有关联关系(3) 限定关联(4) 关联类(1) 共享聚集如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则

29、该聚集称为共享聚集。(2) 组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。(1)普通泛化(2)受限泛化预定义的约束有4种: 多重、不相交、完全和不完全。动态模型功能模型模型元素:系统、行为者、用例及用例之间的关系(扩展关系、使用关系)用例的实例是脚本第10章 面向对象分析 面向对象分析的基本过程面向对象分析:抽取和整理用户需求并建立问题域精确模型的过程. 理解-用户、分析员和领域专家 表达-需求规格说明书(对象模型、动态模型、功能模型) 验证-二义性,完善性 对象模型最基本、最重要、最核心。 静态结构(对象模型) 3个子模型 交互次序(动态模型) 数据变换(功能模型)复杂问题的对象模型的5个层次面向对象分析的过程寻找类与对象识别结构识别主题定义属性建立动态模型建立功能模型定义服务 需求陈述需求陈述是阐明“做什么”,而不是“怎样做”问题范围功能需求性能需求应

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1