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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

软件工程考试重点.docx

1、软件工程考试重点软件工程1.1软件危机1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。(熟记)2、了解软件危机主要的一些典型表现。(P2)3、出现软件危机的原因:4、消除软件危机的途径:首先,我们要对计算机软件有一个正确的认识;更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程项目;最后,应该开发和使用更好的软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。1.2软件工程1、软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确

2、的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。(熟记)2、了解软件工程的本质特征: 1)、软件工程关注于大型程序的构造 2)、软件工程的中心课题是控制复杂性 3)、软件经常变化 4)、开发软件的效率非常重要 5)、和谐的合作是开发软件的关键 6)、软件必须有效地支持它的用户 7)、在软件工程的领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品3、缺乏应用领域地相关知识,是软件开发项目出现问题的常见原因。4、软件工程的基本原理: 1)、用分阶段的生命周期计划严格管理 2)、坚持进行阶段审评 3)、实行严格的产品控制 4)、采用现代程序设

3、计技术 5)、结果应能清楚地审查 6)、开发小组的人员应该少而精 7)、承认不断改进软件工程实践的必要性5、方法学(范型):在软件生命周期全过程中使用的一整套技术方法的集合。6、软件工程方法学3要素:方法、工具和过程。7、目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学8、传统方法学也成为生命周期方法学或结构化范型。9、面向对象方法学具有的4个要点。(P10)1.3软件生命周期1、概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。2、软件定义时期的任务3、软件定义时期通常进一步划分成3个阶段:问题定义、可行性

4、研究、需求分析4、维护时期的主要任务是使软件持久地满足用户的需要。5、软件开发时期通常分成4个阶段:总体设计、详细设计、编码和单元测试、综合测试。前两个阶段又称为系统设计,后两个阶段又称为系统实现。6、软件生命周期每个阶段的基本任务:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试。1.4软件工程生命周期模型(过程模型):瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。(对各种模型要了解)1.5小结(熟读,对本章系统地了解)第2章 可行性分析可行性分析的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。2.1可行性研究的任务1、研究解法的可行性的三个方

5、面:技术可行性、经济可行性、操作可行性。2、可行性研究最根本的任务:对以后的行动方针提出建议。3、可行性研究需要的时间长短取决于工程的规模。2.2可行性研究过程1、复查系统规模和目标2、研究目前正在试用的系统3、导出新系统的高层逻辑模型4、进一步定义问题5、导出和评价供选择的解法6、推荐行动方针7、草拟开发计划8、书写文档提交审查 2.3系统流程图1、系统流程图:概括地描绘物理系统的工具。2、系统流程图的基本思想:用图形符号以黑盒子形式描绘组系统的每个部件(程序、文档、数据库、人工过程等)。3、P39符号4、系统流程图的习惯画法:使信息在图中从顶向下或从左向右流动。5、面对复杂的系统时,一个比

6、较好的方法时分层次地描绘这个系统。2.4数据流图1、数据流图(DFD):一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。2、数据流图的四种基本符号P413、数据存储(静止状态)和数据流(运动)都是数据。4、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”。5、星号(*)是数据流之间的“与”关系;加号(+)表示“或”关系;号表示只能从中选一个(互斥关系)。6、画数据流图的基本目的是利用它作为交流信息的工具。2.5数据字典1、数据字典应由对下列4类元素的定义组成:数据流、数据流分量(即数据元素)、数据存储、处理。2、由数据元素组成数据的方式的三种基本类型:顺序、选择

7、、重复。+可选3、用以下符号描述由数据元素组成数据的关系:=意思是等价于(或定义为)、+意思是和(即连接两个分量)、 意思是或(通常用“|”号隔开供选择的分量)、 意思是重复、( )意思是可选。4、数据字典最重要的用途是作为分析阶段的工具。2.6成本/效益分析1、成本/效益分析的目的:从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。2、软件开发成本:主要表现为人力消耗。3、成本估算技术:代码行技术、任务分解技术、自动估计成本技术。4、货币的时间价值:用利率的形式。 假设年利率为i,如果现在存入P元,则n年后的价值:F=P(1+i)n5

8、、衡量一项开发工程的价值:投资回收期。6、纯收入7、投资回收率2.7小结三 需求分析4、需求分析是软件定义时期的最后一个阶段。5、基本任务:准确地回答“系统必须做什么?”这个问题。6、用于需求分析的结构化分析方法必须遵守下述准则: (1)、必须理解并描述问题的信息域,根据这条准则应该应该建立数据模型。E-R图 (2)、必须定义软件应完成的功能,这条准则要求建立功能模型。数据流图 (3)、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。状态图 (4)、必须对描述信息、功能和行为的模型进行分解,用层次的方式展开细节。3.1需求分析的任务5、对软件系统的综合要求:功能需求、性能需求、可

9、靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。6、需求分析的任务:确定对系统的综合要求 分析系统的数据要求 导出系统的逻辑模型 修正系统开发计划3.2与用户沟通获取需求的方法8、访谈、面向数据流自顶向下求精、简易地应用规格说明技术,快速建立软件原型。9、结构化分析方法就是面向数据流自顶向下求精进行需求分析的方法。10、快速建立软件原型是最准确、最有效、最强大的需求分析技术。3.3分析建模与规格说明9、需求分析过程应建立3种模型:数据模型、功能模型、行为模型。10、数据流图是建立功能模型的基础。11、状态转换图是行为建模的基础。3.4实体-联系图(E-R)E-R图

10、中包含着实体(即数据对象)、关系和属性3种基本成分。3.5数据规范化第一范式:每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。第二范式:满足第一范式的条件,而且每个非关键字都由整个关键字决定(而不是由关键字的一部分来决定)。第三范式:符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。3.6状态转换图1、状态转换图(简称状态图):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。2、在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间

11、状态。在状态图中只能有一个初态,而终态则可以有0至多个。3、事件就是引起系统做动作或(和)转换状态的控制信息。4、在状态图中,初态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示。如图:5、活动表的语法格式:事件名(参数表)/动作表达式6、在活动表中通常使用的3种标准事件: Entry事件指定进入该状态的动作 Exit事件指定退出该状态的动作 Do事件制定在该状态下的动作7、状态转换:箭头指明的转换方向。8、事件表达式的语法:事件说明【守卫条件】/动作表达式 事件说明与守卫条件同时使用时,则当且仅当事件发生且布尔表达式为真时,状态转换才发生;如果只有守卫条件没有事件说明则只要守卫条件为

12、真,状态转换就发生。9、守卫条件是一个布尔表达式。10、动作表达式是一个过程表达式,当状态表达式开始时执行该表达式。3.7其他图形层次方框图、warnier图、IPO图(输入、处理、输出图的简称)3.8验证软件需求从四个方面进行验证:一致性、完整新、现实性、有效性3.9小结五 总体设计5.1设计过程第3章 总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件的结构。第4章 典型的总体设计过程包括下述9个步骤: 1)、设想宫选择的方案 需求分析阶段得出的数据流程图是总体设计的极好的出发点。 2)、选择合理的方案 对每个合理的方案,分析员都应准备下列四份

13、材料: A.系统流程图 B.组成系统的物理元素清单 C.成本/效益分析 D.实现各个系统的进度计划 3)、推荐最佳方案 4)、功能分解 5)、设计软件结构 软件结构可以用层次图或结构图来描绘。 6)、设计数据库 7)、制定测试计划 8)、书写文档 这个阶段完成的文档有:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。 9)、审查和复查5.2设计原理1、模块化、抽象、逐步求精、信息隐藏和局部化、模块独立2、模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。3、模块是构成程序的基本构件。4、模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把

14、这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。5、抽象:把相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说,抽出事物的本质特性而暂时不考虑它们之间的细节。6、逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。7、信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。8、局部化:把一些关系密切的软件元素物理地放得彼此靠近。9、模块独立的概念是模块化,抽象,信息隐藏和局部化概念的直接结果。10、模块独立化重要性的原因:第一

15、,有效地模块化的软件比较容易开发出来;第二,独立的模块化比较容易测试和维护。11、模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。12、耦合是对一个软件结构内不同模块之间互连程度的度量。13、耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。14、如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。15、如果传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。16、数据耦合是低耦合。17、公共环境耦合、18、最高程度的耦合式内容耦合。19、内聚标志着一个模块内各个元素彼此

16、结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。20、偶然内聚、逻辑内聚、时间内聚21、低内聚、中内聚、高内聚的分类。5.3启发规则11、/软件结构提高模块独立性12、模块规模应该适中13、深度、宽度、扇出和扇入都应适当14、模块的应用域应该在控制域之内15、力争降低模块接口的复杂程度16、设计单入口单出口的模块17、模块功能应该可以预测5.4描绘软件结构的图形工具7、层次图和HIPO图8、结构图5.5面向数据流的设计方法7、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。8、信息流分成两种类型:变化流、事物流(概念)9、变换分析是一系列设计步骤的总称,经过这些步

17、骤吧具有变换流特点的数据流图按预先确定的模式映射成软件结构。10、变换分析的设计步骤。5.6小结第6章 详细设计目标:1.确定应该怎样具体的实现所要求的系统 2.设计出程序的“蓝图” 3.详细设计的结果基本决定了最终的程序代码的质量6.1 结构程序设计 1.概念:结果程序设计是一种设计程序的技术,它采用自顶向下逐步求精的的设计方法和单入口但出口的控制结构。 2.三种基本控制结构: 1)顺序结构:相当于“A、B” 2)选择结构:相当于“If exp then A else B endif;” 3) 循环结构:相当于“While exp do A” 3.扩充的两种控制结构: 1)多分支结构:相当于

18、“Case I of I=1:C1;I=n:Cn;” 2)UNTIL循环结构:相当于“Repeat A until exp;” 4.结构程序设计的种类: 1)经典的结构程序设计:只允许使用顺序、IF_ELSE型分支和DO_WHILE型循环; 2)扩展的结构程序设计:除了三种基本控制结构,还使用DO_CASE型多分支结构和DO_WHILE型循环结构; 3)修正的结构程序设计:除了三种基本控制结构和两种扩充结构,还使用LEAVE(或BREAK)结构。6.2 人机界面设计6.2.1 设计问题1.系统响应时间2.用户帮助设施3.出错信息处理4.命令交互6.2.2 设计过程6.2.3 人机界面设计指南

19、1.一般交互指南 2.信息显示指南 3.数据输入指南6.3 过程设计的工具6.3.1 程序流程图 程序流程图:是一种描述程序的控制结构流程和指令执行情况的有向图。 程序流程图的主要缺点:1) 程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。2) 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。3) 程序流程图不易表示数据结构。6.3.2 盒图 盒图特点:1) 功能域明确,可以从盒图上一眼就看出来。2) 不可能任意转移控制。3) 很容易确定局部和全程数据的作用域。4) 很容易表现嵌套关系,也

20、可以表示模块的层次结构。6.3.3 PAD图是一种问题分析图。PAD图优点:1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序2) PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着德程序层次的增加,PAD图逐渐向右延伸,每次增加一个层次,图形向右扩展竖线。PAD图中竖线的总条数就是程序的层次数。3) 用PAD图表现程序逻辑,易懂、易读、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。4) 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码

21、的工作,有利于提高软件可靠性和软件生产率。5) 即可用于表示程序逻辑,也可用于描绘数据结构。6) PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。6.3.4 判定表判定表由四部分组成: 左上部列出所有条件 左下部是所有可能做的动作 右上部是表示各种条件组合的一个矩阵 右下部是和每种条件组合相对应的动作6.3.5 判定树 判定树是判定表的变种。6.3.5 过程设计语言过程设计语言(PDL)也称为伪码。PDL的优点:1) 可以作为注释的直接插在源程序中间2) 可以使用普通的正文编辑程序或文字处理系

22、统,很方便地完成PDl的书写和编辑工作3) 已经有自动处理PDL的程序存在,而且可以自动由PDL生成程序代码。PDL缺点:不如图形工具形象直观。6.4 面向数据结构的设计方法6.4.1 Jackson图1) 顺序结构2) 选择结构3) 重复结构6.4.2 改进的Jackson图6.4.3 Jackson方法Jackson结构程序设计方法基本上由5个步骤组成:1) 分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。3) 用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。第一,

23、为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。第二, 根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。第三, 根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。4) 列出所有操作和条件,并且把它们分配到程序结构图的适当位置。5) 用伪码表示程序。6.5 程序复杂程度的定量度量6.5.1 McCabe方法1.流图 “退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。2.计算环形复杂度的方法1) 环形复杂度

24、等于流图中的区域数。2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数的,N是结点数。3) 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。3.环形复杂度的用途 它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。 实践表明,模块规模以V(G)=10为宜。6.5.2 Halstead 根据程序中运算符和操作数的总数来度量程序的复杂程度。 N=N1+N2 程序总长度:N 运算符出现的总次数:N1 操作数出现的总次数:N2Halstead给出的预测程序长度的公式: H=n1log2n1+n2log2n2 预测程序中包含错误的个数的公式: E=N

25、log2(n1+n2)/3000第七章 实现概念:编码和测试统称为实现。编码:把软件设计结果翻译成程序。测试:检测程序并改正错误的过程。7.1 编码7.1.1 选择程序设计语言1.计算机程序设计语言基本上可以分为两大类: 1):汇编语言 2):高级语言2.选择语言时应考虑的实用标准:1) 系统用户要求2) 可以使用的编译程序3) 可以得到的软件工具4) 工程规模5) 程序员的知识6) 软件可移植性要求7) 软件的应用领域7.1.2 编码风格1. 程序内部的文档2. 数据说明3. 语句构造4. 输入输出5. 效率7.2 软件测试基础7.2.1 软件测试的目标 1.有关测试的一些规则:1) 测试是

26、为了发现程序中的错误而执行程序的过程2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试3) 成功的测试是发现多了至今为止尚未发现的错误的测试7.2.2 软件测试准则1) 所有测试都应该追溯到用户要求2) 应该远在测试开始之前就制定出侧是计划3) 把Pareto原理应用到软件测试中4) 应该从“小规模”测试开始,并逐步进行“大规模”测试5) 穷举测试是不可能的6) 为了达到最佳的测试效果,应该由独立的第三方从事测试工作7.2.3 测试方法1. 黑盒测试2. 白盒测试7.2.4 测试步骤1. 模块测试2. 子系统测试3. 系统测试4. 验收测试5. 平行运行7.2.5 测试阶段的信息流7.

27、3 单元测试7.3.1 测试重点:1. 模块接口2. 局部数据结构3. 重要的执行通路4. 出错处理通路5. 边界条件7.3.2 代码审查7.3.3 计算机测试7.4 集成测试7.4.1 自顶向下集成自顶向下集成是一种递增的装配软件结构的方法,这种应用方法非常广泛。它需要存根程序,不需要驱动程序。7.4.2 自底向上集成自底向上集成是从软件结构最底层模块开始进行组装和测试,它与自顶向下结合方法相反,需要驱动程序,但是不需要存根程序。7.4.3 不同集成测试策略的比较7.4.4 回归测试包括3类不同的测试用例1) 检测软件全部功能的代表性测试用例2) 专门针对可能受修改影响的软件功能的附加测试3

28、) 针对被修改过的软件成分的测试7.5 确认测试7.5.1 确认测试的范围 确认测试的两种可能的结果:1) 功能和性能与用户要求一致,软件是可以接受的2) 功能和性能与用户要求有差距7.5.2 软件配置复查7.5.3 Alpha和Beta测试Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。Beta测试由软件的最终用户在一个或多个客户场所进行7.6 白盒测试7.6.1 逻辑覆盖1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 点覆盖7. 边覆盖8. 路径覆盖7.6.2 控制结构测试1. 基本路径测试:步骤:1)根据过程设计结果画

29、出相应的流图2)计算流图的环形复杂度3)确定线性独立路径的基本集合4)设计可强制执行基本集合中每条路径的测试用例2. 条件测试3. 循环测试方法:1)简单循环 2)嵌套循环 3)串接循环7.7 黑盒测试技术7.7.1 等价划分7.7.2 边界值分析7.7.3 错误推断7.8 调试7.8.1 调试过程7.8.2 调试途径1. 蛮干法2. 回溯法3. 原因排除法7.9 软件可靠性7.9.1 基本概念1. 软件可靠性的定义2. 软件的可用性7.9.2 估算平均无效故障时间的方法1. 方法2. 基本假定3. 估算平均无故障时间4. 估算错误总数的方法第8章 维护8.1 软件维护定义软件维护就是在软件已

30、经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。维护的种类:1) 改正性维护2) 适应性维护3) 完善性维护4) 预防性维护8.2 软件维护的特点8.2.1 结构化维护与非结构会维护差别巨大8.2.2 维护的代价高昂8.2.3 维护的问题很多8.3 软件维护过程1. 维护组织2. 维护报告3. 维护的事件流4. 保存维护记录5. 评价维护活动8.4 软件的可维护性8.4.1 决定软件可维护性的因素1. 可理解性2. 可测试性3. 可修改性4. 可移植性5. 可重用性8.4.2 文档是影响软件可维护性的决定因素。包括:1)用户文档 2)系统文档8.4.3 可维护性复审8.5 预防性维护8.6 软件再工程过程1. 库存目录分析2. 文档重构3. 逆向工程4. 代

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

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