《软件工程知识点总结9554.pdf》由会员分享,可在线阅读,更多相关《软件工程知识点总结9554.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-软件工程简要知识点 一、.软件过程五个模型比照瀑布模型、快速原型、增量、螺旋、喷泉模型 二、可行性研究:1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点 2、处理 3、数据存储 4、数据流 三、需求分析:1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。2、构造化方法就是面向数据流自顶向下逐步求精进展需求分析的方法。3、实体联系图:1、数据对象 2、属性 3、联系1:1、1:N、M:N 四、总体设计:1.任务:答复“概括的说,系统应该如何实现,用比拟抽象概括的方式确定系统如何
2、完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序构造。2.系统设计阶段确定系统具体实施方案、构造设计阶段确定软件构造 3.模块独立:内聚和耦合 4.耦合表示一个软件构造内各个模块之间的互连程度,应尽量选用松散耦合的系统 5.内聚(Cohesion):一个模块内各元素结合的严密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计:问题定义确定题目 可行性研究 需求分析 概要设计 详细设计 编码和单元测试 综合测试 系统设计 系统实现 软件定义 软件开发 运行维护:主要任务是使软件持久地满足用户的需要 软件生命周期:-1.任务:确定应该怎样具体的实现所要求
3、的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的准确描述,从而在编码阶段可以把这个描述直接翻译成用*种程序设计语言书写的程序。2.过程设计的工具程序流程图、盒图、PAD 图、判定表、判定树 七、测试:1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进展单独的测试。由于每个模块都有清晰定义的功能,所以通常比拟容易设计相应的测试方案,以检验每个模块的正确性。2、集成测试:在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试完毕之后还要进展集成测试。这个步骤着重测试模块间的接口,子功能的组合是否到达
4、了预期要求的功能,全程数据构造是否有问题等。3、白盒测试技术逻辑覆盖、根本路经测试 白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部构造和处理过程。所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。白盒测试又称为构造测试。4、语句覆盖就是设计足够的调试用例,使得程序中的每个语句至少执行一次。5、判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真分支和取“假分支至少都执行一次,判定覆盖又称分支覆盖 6、条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。7、判定条件覆盖就是设计足够的测试用例,使得判定
5、中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。8、条件组合覆盖就是设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。9、黑盒测试技术等价划分-黑盒测试时完全不考虑程序内部的构造和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。黑盒测试是在程序接口进展的测试,又称为功能测试。1、黑盒测试检查的主要方面有:程序的功能是否正确或完善;数据的输入能否正确接收,输出是否正确;是否能保证外部信息如数据文件的完整性等。用黑盒法设计测试用例时,必须用所有可能的输入数据来检查程序是否都能产生正确的输出 2、等价类划分 等价类的划分在很大程度上依靠的
6、是测试人员的经历,下面给出几条根本原则:1 如果输入条件规定了取值*围,则可划分出一个有效的等价类输入值在此*围内和两个无效的等价类输入值小于最小值、输入值大于最大值。2如果输入条件规定了输入数据的个数,则可相应地划分出一个有效的等价类输入数据的个数等于给定的个数要求和两个无效的等价类输入数据的个数少于给定的个数要求、输入数据的个数多于给定的个数要求。3如果输入条件规定了输入数据的一组可能的值,而且程序对这组可能的值做一样的处理,则可将这组可能的值划分为一个有效的等价类,而这些值以外的值划分成无效的等价类。4如果输入条件规定了输入数据的一组可能的值,但是程序对不同的输入值做不同的处理,则每个输
7、入值是一个有效的等价类,此外还有一个无效的等价类所有不允许值的集合。5如果输入条件规定了输入数据必须遵循的规则,则可以划分一个有效的等价类符合规则和假设干个无效的等价类从各种角度违反规则。八、维护改正性维护、适应性维护、完善性维护、预防性维护 九、决定软件可维护性因素 可理解性、可测试性、可修改性、可移植性、可重用性 十、对象模型 1、关联 2、聚集 3、泛化 4、依赖和细化-软件工程详细复习内容 第一章 绪论 1.1 软件危机 1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。熟记 2、了解软件危机主要的一些典型表现。3、出现软件危机的原因:4、消除软件危机的途径:首先,
8、我们要对计算机软件有一个正确的认识;更重要的是,必须充分认识到软件开发不是*种个体劳动的神秘技巧,而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程工程;最后,应该开发和使用更好的软件工具。总之,为了解决软件危机,既要有技术措施 方法和工具,又要有必要的组织管理措施。1.2 软件工程 1、软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。熟记 2、了解软件工程的本质特征:1、软件工程关注于大型程序的构造 2、软件工程的中心课题是控制复杂性 3、软件经常变化
9、 4、开发软件的效率非常重要 5、和谐的合作是开发软件的关键 6、软件必须有效地支持它的用户 7、在软件工程的领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品 3、缺乏应用领域地相关知识,是软件开发工程出现问题的常见原因。-4、软件工程的根本原理:1、用分阶段的生命周期方案严格管理 2、坚持进展阶段审评 3、实行严格的产品控制 4、采用现代程序设计技术 5、结果应能清楚地审查 6、开发小组的人员应该少而精 7、成认不断改良软件工程实践的必要性 5、方法学*型:在软件生命周期全过程中使用的一整套技术方法的集合。6、软件工程方法学 3 要素:方法、工具和过程。7、目前使用得最广泛的
10、软件工程方法学,分别是传统方法学和面向对象方法学 8、传统方法学也成为生命周期方法学或构造化*型。9、面向对象方法学具有的 4 个要点。1.3 软件生命周期 1、概括地说,软件生命周期由软件定义、软件开发和运行维护也称为软件维护3 个时期组成,每个时期又进一步划分成假设干个阶段。2、软件定义时期的任务 3、软件定义时期通常进一步划分成3 个阶段:问题定义、可行性研究、需求分析 4、维护时期的主要任务是使软件持久地满足用户的需要。5、软件开发时期通常分成4 个阶段:总体设计、详细设计、编码和单元测试、综合测试。前两个阶段又称为系统设计,后两个阶段又称为系统实现。6、软件生命周期每个阶段的根本任务
11、:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试。1.4 软件工程 生命周期模型 过程模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。对各种模型要了解-第 2 章 可行性分析 可行性分析的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。2.1 可行性研究的任务 1.研究解法的可行性的四个方面:技术可行性、经济可行性、操作可行性、法律可行性。2.可行性研究最根本的任务:对以后的行动方针提出建议。3.可行性研究需要的时间长短取决于工程的规模。2.2 可行性研究过程 1.复查系统规模和目标 2.研究目前正在试用的系统 3.导出新系统的高层逻辑模型
12、4.进一步定义问题 5.导出和评价供选择的解法 6.推荐行动方针 7.草拟开发方案 8.书写文档提交审查 2.3 系统流程图 1、系统流程图:概括地描绘物理系统的工具。2、系统流程图的根本思想:用图形符号以黑盒子形式描绘组系统的每个部件程序、文档、数据库、人工过程等。3、P39 符号 4、系统流程图的习惯画法:使信息在图中从顶向下或从左向右流动。5、面对复杂的系统时,一个比拟好的方法时分层次地描绘这个系统。-2.4 数据流图 1.数据流图DFD:一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。2.数据流图的四种根本符号 3.数据存储静止状态和数据流运动都是数据。4.数据
13、流图的根本要点是描绘“做什么,而不是考虑“怎么做。5.星号*是数据流之间的“与关系;加号+表示“或关系;号表示只能从中选一个互斥关系。6.画数据流图的根本目的是利用它作为交流信息的工具。2.5 数据字典 1.数据字典应由对以下4 类元素的定义组成:数据流、数据流分量 即数据元素、数据存储、处理。2.由数据元素组成数据的方式的三种根本类型:顺序、选择、重复。+可选 3.用以下符号描述由数据元素组成数据的关系:=意思是等价于 或定义为、+意思是和即连接两个分量、意思是或通常用“|号隔开供选择的分量、意思是重复、意思是可选。4.数据字典最重要的用途是作为分析阶段的工具。2.6 本钱/效益分析 1.本
14、钱/效益分析的目的:从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。2.软件开发本钱:主要表现为人力消耗。第 3 章 需求分析 1、需求分析是软件定义时期的最后一个阶段。2、根本任务:准确地答复“系统必须做什么?这个问题。3、用于需求分析的构造化分析方法必须遵守下述准则:-1、必须理解并描述问题的信息域,根据这条准则应该应该建立数据模型。E-R 图 2、必须定义软件应完成的功能,这条准则要求建立功能模型。数据流图 3、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。状态图 4、必须对描述信息、功能和行为的模型进展分解,用
15、层次的方式展开细节。3.1 需求分析的任务 4、对软件系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。5、需求分析的任务:确定对系统的综合要求 分析系统的数据要求 导出系统的逻辑模型 修正系统开发方案 3.2 与用户沟通获取需求的方法 1、访谈、面向数据流自顶向下求精、简易地应用规格说明技术,快速建立软件原型。2、构造化分析方法就是面向数据流自顶向下求精进展需求分析的方法。3、快速建立软件原型是最准确、最有效、最强大的需求分析技术。3.3 分析建模与规格说明 1、需求分析过程应建立3 种模型:数据模型、功能模型、行为模型。2、
16、数据流图是建立功能模型的根底。3、状态转换图是行为建模的根底。3.4 实体-联系图E-R E-R 图中包含着实体即数据对象、关系和属性3 种根本成分。-第 5 章 总体设计 5.1 设计过程 总体设计过程通常有两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;构造设计阶段,确定软件的构造。典型的总体设计过程包括下述9 个步骤:1、设想选择的方案 需求分析阶段得出的数据流程图是总体设计的极好的出发点。2、选择合理的方案 对每个合理的方案,分析员都应准备以下四份材料:A.系统流程图 B.组成系统的物理元素清单 C.本钱/效益分析 D.实现各个系统的进度方案 3、推荐最正确方案 4、功能分解
17、5、设计软件构造 软件构造可以用层次图或构造图来描绘。6、设计数据库 7、制定测试方案 8、书写文档 这个阶段完成的文档有:系统说明、用户手册、测试方案、详细的实现方案、数据库设计结果。9、审查和复查 5.2 设计原理 1.模块化、抽象、逐步求精、信息隐藏和局部化、模块独立 2.模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。-3.模块是构成程序的根本构件。4.模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。5.抽象:把相似的方面集中和概括起来,暂时忽略它们之间的差异,或者说,抽出事
18、物的本质特性而暂时不考虑它们之间的细节。6.逐步求精是人类解决复杂问题时采用的根本方法,也是许多软件工程技术的根底。定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。7.信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息过程和数据对于不需要这些信息的模块来说,是不能访问的。8.局部化:把一些关系密切的软件元素物理地放得彼此靠近。9.模块独立的概念是模块化,抽象,信息隐藏和局部化概念的直接结果。10.模块独立化重要性的原因:第一,有效地模块化的软件比拟容易开发出来;第二,独立的模块化比拟容易测试和维护。11.模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和
19、耦合。12.耦合是对一个软件构造内不同模块之间互连程度的度量。13.耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。14.如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,则这种耦合称为数据耦合。15.如果传递的信息中有控制信息尽管有时这种控制信息以数据的形式出现,则这种耦合称为控制耦合。16.数据耦合是低耦合。17.最高程度的耦合式内容耦合。18.内聚标志着一个模块内各个元素彼此结合的严密程度,它是信息隐藏和局部化概念的自然扩展。-19.偶然内聚、逻辑内聚、时间内聚 5.3 启发规则 1.软件构造提高模块独立性 2.模块规模应该适中 3.深度、宽
20、度、扇出和扇入都应适当 4.模块的应用域应该在控制域之内 5.力争降低模块接口的复杂程度 6.设计单入口单出口的模块 7.模块功能应该可以预测 5.4 描绘软件构造的图形工具 1、层次图和 HIPO 图 2、构造图 5.5 面向数据流的设计方法 1.面向数据流的设计方法把信息流映射成软件构造,信息流的类型决定了映射的方法。2.信息流分成两种类型:变化流、事物流概念 3.变换分析是一系列设计步骤的总称,经过这些步骤吧具有变换流特点的数据流图按预先确定的模式映射成软件构造。4.变换分析的设计步骤。第 6 章 详细设计 目标:1.确定应该怎样具体的实现所要求的系统 2.设计出程序的“蓝图 3.详细设
21、计的结果根本决定了最终的程序代码的质量-6.1 构造程序设计 1.概念:结果程序设计是一种设计程序的技术,它采用自顶向下逐步求精的的设计方法和单入口但出口的控制构造。2.三种根本控制构造:1顺序构造:相当于“A、B 2选择构造:相当于“If e*p then A else B endif;3)循环构造:相当于“While e*p do A 3.扩大的两种控制构造:1多分支构造:相当于“Case I of I=1:C1;I=n:;2)UNTIL 循环构造:相当于“Repeat A until e*p;6.3 过程设计的工具 程序流程图 程序流程图:是一种描述程序的控制构造流程和指令执行情况的有向
22、图。程序流程图的主要缺点:1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局构造。2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾构造程序设计的精神,随意转移控制。3)程序流程图不易表示数据构造。盒图 盒图特点:1)功能域明确,可以从盒图上一眼就看出来。2)不可能任意转移控制。3)很容易确定局部和全程数据的作用域。4)很容易表现嵌套关系,也可以表示模块的层次构造。PAD 图是一种问题分析图。PAD 图优点:1)使用表示构造化控制构造的PAD 符号所设计出来的程序必然是构造化程序-2)PAD 图所描绘的程序构造十分清晰。图中
23、最左面的竖线是程序的主线,即第一层构造。随着德程序层次的增加,PAD 图逐渐向右延伸,每次增加一个层次,图形向右扩展竖线。PAD 图中竖线的总条数就是程序的层次数。3)用 PAD 图表现程序逻辑,易懂、易读、易记。PAD 图是二维树形构造的图形,程序从图中最左竖线上端的结点开场执行,自上而下,从左向右顺序执行,遍历所有结点。4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。5)即可用于表示程序逻辑,也可用于描绘数据构造。6)PAD 图的符号支持自顶向下、逐步求精方法的使用。开场时设计者可以定义一个抽象的程序,随着设
24、计工作的深入而使用def符号逐步增加细节,直至完成详细设计。判定表 判定表由四局部组成:左上部列出所有条件;左下部是所有可能做的动作;右上部是表示各种条件组合的一个矩阵;右下部是和每种条件组合相对应的动作 判定树 判定树是判定表的变种。过程设计语言 过程设计语言PDL也称为伪码。PDL 的优点:1)可以作为注释的直接插在源程序中间 2)可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDl的书写和编辑工作 3)已经有自动处理 PDL 的程序存在,而且可以自动由 PDL 生成程序代码。PDL 缺点:不如图形工具形象直观。第 7 章 测试 概念:编码和测试统称为实现。编码:把软件设计结果翻译
25、成程序。测试:检测程序并改正错误的过程。-7.2 软件测试根底 1.有关测试的一些规则:1)测试是为了发现程序中的错误而执行程序的过程 2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试 3)成功的测试是发现了至今为止尚未发现的错误的测试 2.测试方法 1黑盒测试 2白盒测试 3.测试步骤 单元测试、集成测试、确认测试、系统测试 4、单元测试重点:模块接口、局部数据构造、重要的执行通路、出错处理通路、边界条件 5、集成测试 自顶向下集成 自顶向下集成是一种递增的装配软件构造的方法,这种应用方法非常广泛。它需要存根程序,不需要驱动程序。自底向上集成 自底向上集成是从软件构造最底层模块开场进
26、展组装和测试,它与自顶向下结合方法相反,需要驱动程序,但是不需要存根程序。6、确认测试 确认测试的两种可能的结果:功能和性能与用户要求一致,软件是可以承受的 功能和性能与用户要求有差距 7、Alpha 和 Beta 测试 Alpha 测试由用户在开发者的场所进展,并且在开发者对用户的“指导下进展测试。Beta 测试由软件的最终用户在一个或多个客户场所进展 8、白盒测试 逻辑覆盖、语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖-点覆盖、边覆盖、路径覆盖 9、黑盒测试技术 等价划分、边界值分析、错误推断 10、调试 调试过程 调试途径:蛮干法、回溯法、原因排除法 第 8 章 维护 8.
27、1 软件维护定义 1.软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。2.维护的种类:改正性维护、适应性维护、完善性维护、预防性维护 8.2 软件的可维护性 决定软件可维护性的因素 可理解性、可测试性、可修改性、可移植性、可重用性 文档是影响软件可维护性的决定因素。包括:1用户文档 2系统文档 第 9 章 面向对象方法学引论 9.1 面向对象方法学概述 9.1.1 面向对象方法学的要点 1.认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比拟简单的对象以*种方式组合而成 2.把所有对象都划分成各种对象类,每个类定义了一组数据和一组方法-3.按照
28、子类与父类的关系,把假设干个对象类组成一个层次构造的系统。4.对象彼此之间仅能通过传递消息互相联系。5.面向对象方法学的优点 与人类习惯的思维方法一致、稳定性好、可重用性好、轻易开发大型软件产品 可维护性好 9.2 面向对象的概念 1.对象是封装了数据构造及可以施加在这些数据上的操作的封装体,这个封装体有可以唯一的表示它的名字,而且向外界提供一组效劳。2.类:是具有一样属性和行为的一个或多个对象的描述 3.封装 4.继承 9.4 对象模型 9.4.1 类图的根本符号 1.定义类 2.定义属性 3.定义效劳 9.4.2 表示关系的符号 1.关联 普通关联、关联角色、限定关联、关联类 2.聚集 1共享聚集 2组合聚集 3泛化 1普通泛化 2受限泛化 4.依赖和细化 依赖关系、细化关系-9.5 动态模型 表示瞬时的、行为化的系统的“控制性质,它规定了对象型中的对象的合法变化序列。9.6 功能模型 表示变化的系统的“功能性质,它指明了系统应该“做什么,因此更直接地反映了用户对目标系统的需求。用例图 1.系统 2.用例 特征:1用例代表*些用户可见的功能,实现一个具体的用户目标 2用例总是被行为者启动,并向行为者提供可识别的值 3用例必须是完整的 3.行为者 4.用例之间的关系 用例建模