《软件工程复习笔记总结.docx》由会员分享,可在线阅读,更多相关《软件工程复习笔记总结.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结Unit1软件危机 包含两方面的问题:一是如何开发 软件,怎样满意人们对软件日益增长的需求?二是如何 保护 软件,使它们长久的满意人们的要求。软件工程学 定义:把软件当作一种工业产品,采纳工程学 的原理来治理和组织 软件的开发和保护 ,称为软件工程。软件是指程序、数据和文档三者共同构成的配置。包含与 数据处理系统操作有关的 程序、规程、规章以及 相关文档 的智力创作称为软件。文档 是描述程序 开发过程 的,是智力创作的真实记录,是创作活动的历史档案和结晶。软件的描述性定义: 软件 由运算机 程序 ,数据结构 和文档 组成。软件质量 定义为“与软件产品 满意规定 的和 隐含的需求
2、才能 有关的特点和特性的全体” 具体来说:1)软件产品中能满意给定需求的性质和特性的总体。2)软件具有所期望的各种属性的组合程度。将软件质量 属性划分为六个特性 功能性、牢靠性、易用性、效率、保护性和可移植性, 这六个属性是面对用户的观点面对治理的观点,且是定性描述的。软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。软件工程项目的基本目标:( 1 )低成本。( 2)满意功能要求。 ( 3)高性能。( 4)易移植。( 5)易保护。软件工程方法学 就是要从技术和治理上供应如何去设计和保护软件。软件开发方法: 面对数据流(约旦)方法
3、、面对数据结构方法、面对对象方法。结构程序设计 是进行以模块功能和处理过程设计为主的具体设计的基本原就。它的主要观点是采纳 自顶向下、逐步求精 的程序设计方法。使用三种基本掌握结构构造程序,任何程序都可由次序、挑选、循环三种基本掌握结构构造。用来帮助软件开发、 运行、保护、治理、支持等过程中活动的软件称为软件工具( CASE )。软件生存周期定义:软件产品从形成概念 开头, 经过开发、使用和保护 ,直到最终 不再使用 的整个过程。各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。软件的开发就是“按软件顺时间进展的过程分阶段进行”的。软件生存周期模型:瀑布模型 (阶段间具
4、有次序型和依靠性,清晰的区分规律设计与物理设计、尽可能推迟程序的物理实现,是文档驱动 模型,遵循结构化设计) 。原型模型 (软件产品的开发是线性次序进行的,本质是快速 ,用途是 获知用户的真正需求 ,一旦需求确定,原型将被抛弃)。其核心都是将软件开发划分为:分析、设计、编码、测试和保护。软件生存周期 划分为以下几个阶段:可行性讨论与方案、需求分析、总体设计、具体设计、实现、组装测试、确认测试、使用和保护。软件过程: 是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型软件工程过
5、程 是软件生存周期中各个可能的过程,这些过程可进一步划分成为了供应或获得软件产品或服务,或是为了完成软件工程项目需要完成的有关软件工程活动,每一项活动又可分解为一些软件工程任务。标准定义了 21 个过程 分属三类 :基本过程(include猎取、供应、开发、运作、保护过程)、支持过程 和组织过程 。软件工程三要素:方法、工具和过程。可编辑资料 - - - 欢迎下载精品名师归纳总结软件工程治理目的:为了依据进度及预算完成软件方案,实现预期的经济和社会效益。内容:成本估算、进度支配、人员组织、质量保证、配置治理等等。怎么强调软件工程治理的极其重要性都不会过分Unit2可行性讨论任务和目的: 用最小
6、的代价在尽可能短的时间内确定问题是否能够在肯定规模之内解决。(确定这一问题是否存在值得去做的解) 过程和步骤:实质:进行 一次大大压缩简化了的系统分析和设计过程,也就是在较高层次上以抽象方式进行的系统分析和设计过程。技术和工具: DFD+DD主要内容( 1 )澄清问题定义规模、约束和限制( 2 )导出新系统的规律模型( 3 )导出如干个供挑选的物懂得法(物理模型),并分别讨论它们的可能行: 数据流图符号可编辑资料 - - - 欢迎下载精品名师归纳总结Example:数据流图的基本目的是利用它作为沟通信息的工具,另一个主要目的是作为分析和设计的工具。数据字典 是关于数据信息的集合,也就是对数据流
7、图中包含的全部元素的定义的集合,它是通过对数据元素和数据结构的定义,来描述数据流和数据储备的规律内容的。数据流和数据字典共同构成系统的规律模型 。数据字典的内容:数据流、数据元素、数据储备、处理数据字典 最重要的用途是作为 分析阶段的工具 。Unit3需求分析 :目的:精确的定义系统必需做什么,也就是对目标系统提出完整、精确、清晰、具体的要求。 为目标系统提出精确的规律模型 。任务:确定对系统的综合要求,包括功能需求、性能需求、牢靠性和可用性需求、运行要求、将来可能提出的要求。过程:处理规律的分解:自顶向下逐步分解 直到每个处理规律已是不行再分的“功能单元”为止。书写文档: 软件需求规格说明工
8、具: 状态图、 IPO 图、层次方框图、Warnier图结构化分析设计技术 是 70 岁月中期由 E.Yourdon 等人提出来的一种 面对数据流 的方法。要求系统的开发工作在结构化和模块化的基础上进行,它系统的运用了 描述模型 的概念,依据软件内部 数据传递和变换的关系 ,自顶向下逐层分解,直到找出满意要求的可实现的软件。在这个方法里, “ 抽象”,“分解”,“模块化” ,“结构化” 是它的主要手段。面对数据传递、变换所形成的 数据流( Dataflow )和数据流程图( DFD )是它的主要依据。这个方法的 关键工作 是: 画分层的 DFD 和确定数据定义与加工策略 。Yourdon 方法
9、对应的 瀑布模型 的缺陷 :可编辑资料 - - - 欢迎下载精品名师归纳总结其实 Yourdon方法是建立在三个假设之上的: 假设 1 :全部的需求都是可以预先定义的。假设 2 :需求在较长一段时间内是不变的(相对稳固的)。假设 3 :运用所供应的工具可以做到项目参与者之间清晰、精确、有效的沟通。这三个假设往往是很难成立的:“规律模型”的精确描述依靠于“自顶向下的求精过程”,而“自顶向下的求精过程”的顺当进行又依靠于精确的“规律模型” ,这二个问题相互缠绕依靠而构成方法学上的“死锁”。原型法(原型模型) :原型就是模型的意思(原型=模型),它指的是模拟某种产品的原始模型。运用原型的策略:抛弃策
10、略& 附加策略对原型的逐步求精过程是一个迭代过程相对于 Yourdon方法来说原型法是一个非线性 的系统开发方法。不再强调高质量的阶段性文档。螺旋模型:沿螺线自内向外每旋转一圈便开发出一个更为完善的软件版本Yourdon方法适合于“预先指定的系统” 。 原型法适合于“用户驱动的系统”。通常用“范式”定义排除数据冗余程度。第一范式 数据 冗余程度 最大,第五范式数据冗余程度最小。状态转换图:状态是可以被观看到的系统行为模式 ,一个状态代表系统的一种行为模式,它规定了系统对大事的响应方式。一张状态图有一个初态和0 至多个终态 。大事:在某个特定时刻引起系统做动作和(或)状态转换的掌握信息。验证软件
11、需求的正确性:一样性、完整性、现实性、有效性Unit4总体设计 :目的: 确定系统的具体物理实现方案(系统结构设计) ,确定组成每一个程序的模块,以及模块间的关系( 软件结构设计 )。任务:软件结构设计 过程设计是具体设计阶段的任务过程:设想供挑选的方案选取合理方案(每份方案有系统流程图、组成系统的物理元素清单、成本/ 效益分析、实现这个系统的进度方案4 份资料)等 9 步( P92 )在软件开发早期阶段考虑测试问题,能促使软件设计人员在设计时留意提高软件的可测试性。总体设计阶段书写的文档:系统说明、用户手册、测试方案、具体的实现方案、数据库设计结果。总体设计过程中, 举荐正确方案后进入“软件
12、结构” 设计: 设计出组成这个系统的全部程序、文件和数据库,以及它们之间的联系。软件结构 :由模块组成的 层次系统 。模块:数据说明、可执行语句等程序。C/S (Client/Server)结构是软件系统体系结构“ 结构化设计 ”概括的说就是:用一组标准的工具和准就来确定 系统应当由哪些模块、用什么方式联结在一起,才能构成一个最好的软件结构。可编辑资料 - - - 欢迎下载精品名师归纳总结模块化 就是把程序划分成如干个模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满意用户的需求。模块 : 具有四种属性的一组程序语句称为一个模块,这四种属性分别是:输入和输出、规
13、律功能、运行程序、内部数据。前两个是模块外部属性,后两个是内部属性,总体设计完成外部属性设计、具体设计完成内部属性设计软件结构图中,模块用一矩形表示。模块间调用:用连接开发具有独立功能而且和其它模块之间没有过多相互作用的模块,可以做到模块独立。影响模块独立的因素:耦合( 不同模块间 互联程度)内聚( 同一模块内 各元素紧密程度) 力争高内聚、低耦合 。5 种耦合形式:数据耦合 、掌握耦合、特点耦合、公共耦合、内容耦合 (从左到右耦合程度递增) 最弱的耦合是非直接耦合7 种内聚形式:功能内聚 、次序内聚、通信内聚、过程内聚、时间内聚、规律内聚、偶然内聚 (从左到右程度依次递减)模块的扇出与扇入
14、:模块的 扇出 是指一个模块拥有的 直接 下级模块 的个数。模块的 扇入 是指一个模块的 直接上级 模块的个数。模块的扇出系数应掌握在7 以内, 尽可能的加大模块的扇入系数。作用域应当是掌握域的子集。模块的掌握域和作用域:模块的 掌握域 (掌握范畴) :是指这个模块本身以及全部直接或间接从属于它 的模块的集合。模块的 作用域 (判定作用范畴) :是指 受该模块内一个判定影响的全部模块的集合。 (也就是该模块内存在着判定调用语句,而全部受到该判定规律影响的模块,就是该模块的作用域。)作用域应当是掌握域的子集。 抱负的是作用域都是直接下属模块。数据流类型数据在DFD 中流径特点变换流 :进入系统中
15、的数据所流经的路径几乎 是一样的。事务流 :进入系统中的数据所流经的路径不完全 是一样 的。可编辑资料 - - - 欢迎下载精品名师归纳总结精化分析 DFD 中数据流的全局特点DF 类型?事务分析变换分析事务中心往往包含多个处理规律。确定变换中心及 I/O建立第一张 SC分解和优化“事务”是指一组输入数据。Unit5具体设计 :目的:完成模块的 过程设计 为 SC 中每个模块确定采纳的算法和块内数据结构,用某种选定的表达工具给出具体清晰的描述。 模块的规律设计(模块的过程描述) 主要内容 : 1)为每个模块确定采纳的算法2) 确定每个模块使用的内部数据结构3) 确定模块的接口细节4) 制定模块
16、的测试方案可编辑资料 - - - 欢迎下载精品名师归纳总结完成模块的 “内部属性” 设计,即给出系统中各个模块的“运行程序”和“内部数据”。 由此可见 具体设计的结果基本上打算了最终软件的质量。具体设计的目标更重要的是便于保护。工具:1. 程序流程图 流程图 2.N-S 图(盒图)3. PAD 图(问题分析图)4. 伪代码和 PDL 语言规律设计应遵循的理念:1. 从效率第一到清晰第一2. 结构化的掌握结构: 结构化程序设计 =仅使用单入口单出口的三种基本掌握结构3. 逐步细化的实现方法例在一组数中找出其中的最大数分别用程序流程图、 N-S 图和 PAD 图描述用“ 结构化 ”保证程序的 清晰
17、易读 ,用“ 逐步细化 ”实现程序的 正确牢靠 ,它们导致了一条自然的结论: 模块的规律设计必需用结构化程序设计的原理来指导。(结构化设计在具体设计阶段)Yourdon方法的技术途径 : DFD DFD+DD SC PDLYourdon方法在分析阶段,我们用DFD 来表示软件的规律模型。在设计阶段, 又依据数据流类型 ,分别用 变换分析 或事务分析 将它们转换成相应的软件结构。面对数据结构设计方法的依据和基本思想:可编辑资料 - - - 欢迎下载精品名师归纳总结算法和数据结构是程序设计中不行分割的侧面,算法的结构依靠于它要处理的数据结构。 只要事先知道一个问题的数据结构,就可以由此导出它的程序
18、结构。基于数据流仍是基于数据结构的动身点不同,最终目标也不同。 SADT(结构化分析设计工具)方法的 目标是得出软件的最终SC 图,它把留意力集中在模块的合理划分上。面对数据结构的设计 就要求得 出程序的过程性描述 ,并不明确也提出软件应当先分成模块等概念。SADT 方法: DFD -SC (软件结构图) - 模块的过程性描述PDL 等| |Jackson方法 面对数据结构 :数据结构- 程序结构 - 程序的过程性描述 伪代码等 | | |程序复杂程度的定量度量:1. 程序图(流图) 用任何方法表示的具体设计结果都可以变换成程序图流程图中的各种处理框均简化成一个结点2. 环域复杂度程序的结构复
19、杂度可用强连通的有向图中线性无关环的个数来度量V ( G ) = 判定结点数 + 1Unit6编码(也称实现)任务: 把模块的过程性描述翻译为用该语言书写的源程序(或源代码) 。编码的风格1. 程序要清晰直观,不要过于奇妙2. 用肯定的原就指导掌握结构的使用(防止使用简洁引起混淆的结构和语句)3. 有规律的使用 GOTO语句不得不把效率的考虑放在首位的时候,而结构化程序又不能满意时间要求时,就可用GOTO语句来削减重复的代码段。4. 实现源程序的文档化 软件= 程序 +文档 Unit7 : 软件测试:定义:程序测试是为了发觉错误 而执行程序 的过程。纠错(调试) 是为了 确定错误的性质,并且加
20、以订正。软件测试包括 机器测试 动态测试 (黑盒测试 & 白盒测试)和 人工测试 代码复审 (代码走查+ 会审+ 办公桌检查)程序编译通过后, 应当 先人工测试 (发觉规律错误) 后机器测试 在设定的测试数据上执行被测程序 .动态测试是一个包括:设计“测试用例”执行被测程序分析测试结果并发觉错误的过程。 设计“测试用例”是最关键测试用例 输入数据 + 期望结果 依据在设计“测试用例”时,是否涉及程序的内部结构,把动态测试分为: 白盒测试 :从程序的内部规律入手,依据肯定原就设计测试用例。黑盒测试 :仅以程序外部功能为依据来设计测试用例。检查程序是否完成应做的 和是否做了不该做的 。(按规格说明
21、书的规定 )软件测试的的步骤: 见笔记本上图 可编辑资料 - - - 欢迎下载精品名师归纳总结单元测试 :在编码阶段完成。以模块为单位,(主要白盒)发觉的往往是编码和具体设计的错误综合测试 :(模块组装测试、集成测试)以软件的设计信息为依据,主要用黑盒,发觉设计错误,也可能发觉 需求说明 错误。确认测试(验收测试) : 以软件的需求信息为依据,用黑盒,发觉 需求说明书中的错误,验证软件的 有效性系统测试: 指整个运算机系统(包括软件与硬件)的测试。代码复审1. 代码会审:开会逐句朗读和讲解程序,精力集中于发觉错误,会后改正错误2. 走查:与会者扮演“运算机”的角色3. 办公桌检查:一个人参与的
22、代码会审黑盒测试方法:等价分类法:按测试结果 “等价” 把被测程序的 输入域 划分为如干个 等价类 ,每一个等价类 都挑选一例“测试用例”, 与“应做的事情”相对应的是“ 有效等价类 ”,而与“不应当做的事情”相对应的称之为“ 无效等价类 ”。设计等价类的测试用例分为两步:1. 划分等价类并给出定义。2. 挑选测试用例的原就:有效等价类的测试用例尽量公用。 无效 等价类必需 每类一例 。 例某城市的电话号码看笔记 边界值分析法(边值法) 错误推测法(猜错法) 因果图法白盒测试方法: 见笔记 合理的白盒测试,就是要选取足够的测试用例,以实现对源程序比较充分的掩盖。规律掩盖法 :(依据由低到高对程
23、序规律掩盖程度的次序)语句掩盖 :每条语句至少执行一次。判定掩盖 :不仅每条语句至少执行一次,而且每一分支至少执行一次。条件掩盖 :不仅语句掩盖,而且每个条件均按“真”、“假”两种结果至少执行一次。 条件组合掩盖 :不仅语句掩盖,而且每个条件的全部可能组合都至少执行一次。路径掩盖法 :(依据由低到高对程序规律掩盖程度)结点掩盖:每个结点走一次。相当于语句掩盖边掩盖:每条边走一次。相当于判定掩盖路径掩盖:每条路径走一次。 (不需要考虑程序的循环)Unit8面对对象基本原理: 使描述问题的 问题空间和 在运算机上解决问题的解空间在结构上尽可能一样。基本概念:( 1)对象:由 数据 以及可以施加在这
24、些数据上的操作 (或服务、方法、处理)所构成的统一体,它是面对对象软件的基本模块 。( 2)类:对具有相同数据和相同操作的一组相像对象的定义(抽象)。可编辑资料 - - - 欢迎下载精品名师归纳总结( 3)不同的对象彼此之间只能通过消息相互作用、相互联系( 4)继承 :处于下一层次上的派生类自动继承了位于上一层次基类的属性(数据) 和行为(操作)面对对象就是既使用对象又使用类和继承等机制,而对象之间仅能通过传递消息实现彼此间的通信。UML 用视图来表示被建模系统的各个方面,它把软件模型分成5 个视图, 每一个视图代表完整系统的一个特定方面。每一个视图又由一种或多种模型图 构成。1. 用例视图:
25、 用来支持 需求分析 ,也就是说系统将供应的功能是在用例视图中描述的。2. 规律视图 :定义系统的 实现规律 ,重点关注的是系统的 静态结构 (类、对象及它们之间的关系) ,也描述系统内部的动态协作关系。它的模型图包括类图、对象图、状态图 、次序图、协作图及活动图等。3. 组件视图 :描述系统的 实现模块 及它们之间的 依靠关系 。组件是不同类型的 代码模块 , 通过代码模块的结构和依靠关系来表示。4. 部署视图 :描述软件系统 在运算机硬件系统和网络上的安装、分发和分布情形。5. 实现视图 :描述组成软件系统的各个物理部件。UML 由三部分组成: 基本构造块、规章和公用机制UML定义了二类模
26、型元素的图形表示:一类模型元素用于表示模型中的某个概念,一类模型元素用于表示模型元素之间的关系面对对象建模:对象模型“谁做?” (类图)动态模型“什么时候做?” (状态图) 功能模型“做什么?” (用例图)这三种模型都是必不行少的,对象模型是最核心的 。在面对对象 分析 中,构造出完全独立于实现的应用域模型 。在面对对象 设计 中,把 求解域的结构逐步 加入到模型中 。在实现阶段,把应用域和求解域的结构进行编码和验证。OO方法: OOA OOD OOP OOT是一个逐步扩充模型的过程,其间无需转换概念和表示,开发活动之间基本做到了平滑无缝过渡。对象模型:类与类之间一般有四种关系:关联、集合、泛
27、化(继承)、依靠和细化。1. 关联:表示两个类的“对象”之间存在某种语义上的联系。2. 集合:集合是关联的特例,它表示类与类之间的关系是整体与部分的关系。3. 泛化(继承):泛化关系指的是类与类之间是“一般-特别”的关系。4. 依靠和细化:依靠关系是指一个模型元素依靠于另一个独立的模型元素,细化关系是指一个模型元素细化成了另一个模型元素。动态模型 :描述 了对象模型中对象的 生命周期过程 ,即对象的 状态 ,我们把一个触发行为称为一个大事 。动态模型 就是通过描述对象的 状态 、触发状态转换的 大事 、以及对象的 行为 来描述软件系统的动态行为 (行为模型) 。功能模型:UML 供应用例图来表
28、示功能模型,并称之为用例模型。功能模型也可用SADT 中的一组 DFD 来表示。(也是需求分析阶段)一幅用例图包含的模型元素有:系统、行为者、用例和用例之间的关系。一个用例是系统的一个完整的功能 ,通过关联与行为者连接,关联指出一个用例与哪些行为者交互,这种交互是双向的。可编辑资料 - - - 欢迎下载精品名师归纳总结用例是一个类, 用例的实例 是系统的一种实际使用方法,我们称之为脚本 。用例之间的关系主要有二种:扩展关系 和使用关系 。创建用例模型的工作包括:定义系统、 查找行为者和用例、描述用例、 定义用例之间的关系,并确认用例模型。Unit9 :面对对象分析( Object-Orient
29、ed Analysis,简称 OOA )的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。图: 参照当前系统建立目标系统通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。软件保护 就是在软件已经交付使用之后,为了改正错误或满意新的需要而修改软件的过程。保护过程本质上是修改和压缩了的软件定义和开发过程,而且事实上远在提出一项保护要求之前,与软件保护有关的工作已经开头了。进行保护的缘由:改正程序中的错误和缺陷。改进设计以适应新的软、硬件环境;增加新的应用范畴。为了将来的保护工作。保护分为以下几类:改正性保护。适应性保护。完善性保护。预防性保护可编
30、辑资料 - - - 欢迎下载精品名师归纳总结未涵盖进来的内容:需求分析目的:确定目标系统必需具备哪些功能总体设计的主要任务:一.制定几种可能的实现方案。二.设计程序的体系结构具体设计(模块设计)任务:设计出程序的具体规格说明集成测试 和验收测试 :集成测试(组装测试) :依据设计的软件结构验收测试:依据规格说明书的规定,由用户参与下对目标系统进行验收的测试通过 对软件测试结果 的分析可以推测软件的 牢靠性 。传统软件工程方法学的软件过程,可以用瀑布模型来描述瀑布模型的特点:阶段间具有次序性和依靠性、推迟实现的观点 清晰的区分规律设计与物理设计,尽可能推迟程序的物理实现。瀑布模型带反馈环,发觉前
31、面阶段的错误时,沿反馈线回头修改快速原型模型不带反馈环,软件产品开发是线性次序进行的,用途是获知用户的需求增量模型 (渐增模型) :把软件产品分解成增量构件。原就:当把新构件集成到原有构件时, 所形成的产品必需是 可测试的 。它能在较短时间内向用户提交可完成部分工作的产品。要求开头实现各个构件前就全部完成的需求分析、规格说明、总体设计。螺旋模型的基本思想:使用原形及其他方法来尽量降低风险。可以看作每个阶段前都加了风险分析的快速原型模型。螺旋模型是风险驱动型的。喷泉模型表达了面对对象开发过程迭代和无缝的特性。采纳先行次序的开发方法不行能开发出当今客户需要的大型复杂系统。构件:功能清晰的模块或子系
32、统。模型:对事物的无歧义的书面描述。RUP 强调采纳迭代和渐增的方式来开发软件,重复一系列组成软件生命周期的循环。面对对象方法 =对象 +类+ 继承+ 用消息通信可行性分析中导出供挑选的解法的最简洁途径,是从技术角度动身考虑解决问题的不同方案。系统流程图是概括的描画物理系统的工具,表达数据在系统各部件之间的流淌情形,而非对数据加工处理。数据流图 ( DFD )描画信息流和数据从输入移动到输出的过程中所经受的变换。(描画数据在软件中流淌和被处理的规律过程),设计时只考虑系统必需完成的基本规律功能 。画数据流图 的基本目的:利用它作为沟通信息的工具 ;作为 分析和设计的工具。符号:数据源点/ 终点
33、,变换数据的处理,数据储备,数据流 数据储备是处于静止状态的数据流,数据流是处于运动中的数据。数据字典是关于数据的信息的集合,即对数据流图中包含的全部元素的定义的集合。数据字典包含内容:数据流,数据流重量,数据储备,处理数据字典 用途: 分析阶段 的工具。逆向需求说明软件系统不应当做什么分析系统常用图形工具:层次方框图、Warnier图需求分析时要把数据结构规范化。结构化分析方法就是面对数据流自顶向下逐步求精进行需求分析的方法。把分析过程中 得到的有关 数据 元素记录在数据字典中,对算法 的简明描述 记录在 IPO 图中。快速建立软件原型是最好的需求分析技术。为快速构建和修改原型, 使用三种工
34、具和方法:第四代技术可重用的软件构件可编辑资料 - - - 欢迎下载精品名师归纳总结形式化规格说明和原型环境概念性数据模型是一种 面对问题 的数据模型,是依据 用户的观点 对数据建立的模型。数据对象 是软件必需懂得的复合信息的抽象。用“ 范式”定义排除数据冗余的程度,第一范式冗余最大。状态 是任何可被观看到的系统行为模式 ,一个状态代表系统的一种行为模式。状态图的活动表中常常使用entry,exit,do三种标准大事。IPO 图是输入、处理、输出图,处理框中列出处理的次序示意了执行的次序。验证软件需求的正确性:一样性、完整性、现实性、有效性结构设计是总体设计阶段的任务,过程设计是具体设计阶段的
35、任务 软件结构(即由模块组成的层次系统)可以用层次图或结构图描画。随着模块数增加,设计模块间接口所需工作量也增加。逐步求精是规格说明技术、设计和实现技术的基础。逐步求精定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。模块独立 的概念是模块化、抽象、信息隐匿和局部化概念的直接结果。耦合强弱取决于 模块接口的复杂程度,进入或拜访一个模块的点,以及通过接口的数据。模块间的 耦合程度 影响系统的 可懂得性、可测试性、牢靠性和可保护性内聚比耦合更重要。深度表示软件结构中掌握的层数,能粗略标识系统大小。宽度是软件结构内同一层次上的模块总数的最大值。扇出过大意味着模块过分复杂,扇入越大就共享该模
36、块的上级模块越多(好)。好的软件结构通常顶层扇出高,中层扇出较少,底层模块有高扇入。面对数据流的设计方法把信息流映射成软件结构,信息流的类型(变换流、事务流)打算映射方法。经典程序设计:只答应使用次序、IF_THEN_ELSE、DO_WHILE扩展的结构程序设计 :外加 DO_CASE 、DO_UNTIL修改的结构程序设计:外加BREAK 系统响应时间的两个属性:长度、易变性用户界面设计是一个迭代过程。过程涉及工具:程序流程图、盒图、PAD 图、判定表、判定树、过程设计语言PDL程序复杂度定量度量:1. McCabe方法 流图,也叫程序图:流图中的区域数=环形复杂度 =判定节点数 +1程序的环
37、形复杂度取决于程序掌握流的复杂程度,即取决于程序结构的复杂程度。所以它是对测试难度的定量度量,也能对软件牢靠性推测 。2. Halstead方法(依据程序中运算符和操作数总数来度量) 编码和测试统称为实现。程序的质量主要取决于软件设计的质量。测试 的目的:发觉软件中的错误,根本任务:保证软件质量调试 的目的:诊断并改正测试中发觉的错误效率主要指处理机时间和储备器容量两方面。用户角度:最严峻的错误是导致程序不能满意用户需求的错误。一旦完成了需求模型就可以着手制定测试方案,建立了设计模型之后就可以立刻开头设计具体的测试方案。正确测试成效:有最大可能性发觉错误的测试可编辑资料 - - - 欢迎下载精
38、品名师归纳总结模块组装测试 两种方法: 非渐增式测试 (分别测试每个模块)& 渐增式测试 (把下一个要测试的同已经测好的结合起来测试)渐增方式分自顶向下集成和自底向上集成为了保证加入模块没有引进新的错误,可能需要进行回来测试自顶向下 测试方法主要优点: 不需要测试驱动程序 ,能够在测试阶段的早期发觉接口错误。回来测试 :重新执行已经做过的测试的某个子集。它用于保证由于调试或其他缘由引起的变化,不会导致非预期的软件行为或额外错误。确认测试的目的:验证软件的有效性。假如软件的功能和性能犹如用户期望的,就是有效的确认测试以用户为主,重要内容是复查软件配置。条件测试的目的不仅是检测程序条件中的错误,而
39、且是检测程序中的其他错误。在一段程序中已经发觉的错误数往往和尚未发觉的错误数成正比。等价划分法和边界值分析法都只孤立的考虑各个输入数据的测试功效,而未考虑多个输入数据的组合效应。软件牢靠性 :程序在给定的时间间隔内,依据规格说明书的规定胜利运行的概率错误 :由开发人员造成的bug 。 故障 :由错误引起的软件的不正确行为软件可用性 :程序在给定的时间点,依据规格说明书上的规定,胜利的运行的概率。预防性保护:为了改进将来的可保护性或牢靠性软件保护分为非结构化保护和结构化保护保护大事流的最终一个大事是复审,它再次检验软件配置的有效性,并保证事实上满意了保护要求表中的要求。软件的可保护性 :保护人员
40、懂得、改正、改动或改进这个软件的难易程度。提高软件保护性是支配软件工程方法学全部步骤的关键目标。打算软件可保护性因素:可懂得性、可测试性、可修改性、可移植性、可重用性用户文档包括:功能描述、安装文档、使用手册、参考手册、操作员指南面对对象方法用 对象分解取代 了传统方法的 功能分解 。对象彼此之间仅通过 消息传递 相互联系。面对对象 = 对象+ 类+继承 +消息传递通信假如仅用对象和消息,就称为基于对象 的方法,而非 面对对象 的方法。假如进一步要求把 全部对象都划分成类 ,就称为基于类的方法,仍非面对对象的方法。只有同时使用以上4 点,才是面对对象的。OOD不同于面对过程设计,其思想是:使用
41、现实世界的概念抽象的摸索问题而自然的解决问题。(重要的是应用模型)人在熟悉和解决复杂问题时最有力的思维工具是抽象 。传统 的软件开发方法以算法为核心 ,开发过程基于 功能分析和分解 。面对对象方法 基于构造问题领域的 对象模型 ,以对象为中心 构造软件系统。对象 =描述属性的 数据 +对数据施加的 操作对象是具有相同状态的一组操作的集合。(从 OOD看对象)对象是对问题域中某个东西的抽象,这种抽象反映了系统储存有关这个东西的才能与他交互的才能。(从信息模拟看对象)对象: 以数据为中心的、主动的、实现了数据封装、本质上具有并行性、模块独立性好一个对象类型也可以看成是一种抽象数据类型类:对具有相同
42、数据和相同操作的一组相像对象的定义。消息具有:接受消息的对象、消息挑选符(消息名)、变元。可编辑资料 - - - 欢迎下载精品名师归纳总结属性是对客观世界实体所具有的性质的抽象继承分但继承和多重继承(多个父类) ,使用多重继承是要留意防止二义性。继承中, 底层的性质将屏蔽高层的同名性质。多态性通过虚函数实现。虚函数 -实现 动态联编函数重载通过 静态联编 实现。OO 3models:描述 系统数据结构对象模型描述 系统掌握结构动态模型描述 系统功能运算功能模型典型的软件系统使用数据结构(对象模型) ,执行操作(动态模型) 并且完成数据值的变化 (功能模型)集合表示类与类之间的关系是整体与部分的
43、关系。泛化即继承。动态模型表示 瞬时的、行为化 的系统的 “掌握”性质 ,它规定了对象模型中的对象的合法变化序列 。全部对象都具有自己的生命周期,状态是对对象属性值的一种抽象。一个触发行为称作一个大事 。用状态图描画 对象的状态、触发状态转换的大事以及对象的行为(对大事的响应) 。每个类的动态行为用一张状态图来描画,各个类的状态图通过共享大事合并,从而构成系统的动态模型。 动态模型 是基于 大事共享 而相互关联的一组状态图的集合 。用例模型描述的是外部行为者所懂得的系统功能。用例是一个类,他代表一类功能而不是使用该功能的某个具体实例。用例的实例称脚本。 一个用例模型的创建包括:定义系统、 查找
44、行为者和用例、描述用力、 定义用力之间的关系、确认模型。针对每个类建立的 动态模型 , 描述了 类实例的 生命周期或运行周期 。状态转换趋势行为发生,这些行为在数据流图中- 处理,在用例图中- 用例,同时与类图中的服务对应数据流图的对应:数据储备,原点 / 终点:对象数据流:对象的属性值或对象对象模型描述了数据流图中的数据流、数据储备以及数据原点/ 终点的结构。分析过程总是提取系统需求的过程。需求陈述的内容:问题范畴、功能需求、性能需求、应用环境、假设条件面对对象分析首要的工作:建立问题域的对象模型。对象模型的建立:确定对象类和关联给类增加属性用适当的继承关系合并组织类建立了动态模型和功能模型后,再定义类中的操作应当 按问题领域而不是功能分解方法来确定主题。脚本描述大事序列从 OOA到 OOD ,是一个逐步扩充模型的过程,OOD即是用 OO的