导图社区 813软件工程-实现
用于813软件工程和期末复习串知识点,编码就是把软件设计结果翻译成某种程序设计语言书写的程序。
编辑于2023-06-14 16:17:46 辽宁用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
社区模板帮助中心,点此进入>>
用于813软件工程和期末复习串知识点,可行性研究是进行了一次大大简化了的系统分析和设计的过程,也是在较高层次上以较为抽象的方式进行的系统分析和设计的过程。
用于813软件工程和期末复习串知识点,对象是封装了数据结构以及可以被施加在这些数据结构上的操作的封装体,这个封装体有可以唯一地标识它的名字,而且向外界提供一组服务。
用于813软件工程和期末复习串知识点,软件工程是一门指导软件开发和维护的工程型学科,它采用了工科的概念、技术、原理、方法,把经历时间考验的的管理技术和当前能用到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。
实现
概述
编码
编码就是把软件设计结果翻译成某种程序设计语言书写的程序。
测试(调试)
分类
单元测试
模块的编写者和测试者是同一个人,编码和单元测试属于生命周期的同一个阶段
综合测试
在生命周期中独立的阶段,由专门的测试人员承担这项工作
测试之后还要经过调试
根本目标:是开发出高质量的完全符合用户需要的软件
编码
选择程序设计语言
汇编语言设计困难还容易出错,而高级语言更符合人的习惯,高级语言编写的程序更容易阅读,容易测试,容易调试,容易维护
实用标准
1、系统用户的要求
2、可以使用的编写程序
3、可以得到的软件工具
4、工程规模
5、程序员的知识
6、软件可移植性要求
7、软件的应用领域
编码风格
编码风格是指一个人编写程序时表现出来的特点 、习惯和逻辑思路,要养成良好的程序设计风格,有五个方面
1、程序内部的文档
程序文档内部包括恰当的标识符,适当的注解和程序的视觉组织等,选取含义鲜明的文字,使他能正确地提示程序对象所代表的实体,这对于帮助阅读者理解是很有帮助的。程序清单的布局对于程序的可读性也有很大的影响,应该利用适当的阶梯形式使程序的层次结构更加明显。
2、数据说明
数据说明的次序应该标准化
多个变量名在一个语句中说明时,应该按字母顺序排列这些变量
如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。
3、语句构造
每个语句都应该简单直接,不能为了提高效率而使程序变得过分复杂
4、输入输出
5、效率
定义
效率主要是指处理时间和存储器容量两个方面
三条原则
效率是性能要求
效率是靠好设计来提高的
程序的效率和程序的简单程度是一致的
测试
根本目标
尽可能多的发现并排除软件中隐藏的错误,最终把一个高质量的软件系统交给用户使用。
软件测试的目标
1、测试是为了发现程序中的错误而执行程序的过程
2、好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
3、成功的测试是发现了至今为止尚未发现的错误的测试
软件测试准则
1、所有的测试都应该能追溯到用户需求
2、应该远在测试开始之前就指定测试计划
3、把Pareto原理应用到软件测试中。测试中80%的错误都可能是由20%的模块造成的。
4、应该从“小规模”测试开始,并逐步进行“大规模”测试
5、穷举测试是不可能的
6、为了达到最佳的测试效果,应该由独立的第三方从事测试工作
测试方法
黑盒测试(功能测试)
黑盒测试就是把程序看作是一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。
白盒测试(结构测试)
把程序看作是一个装在透明的白色的盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按照预定的要求正确工作。白盒测试又称为结构测试。
测试步骤
1、模块测试(单元测试)
保证每个模块作为一个单元能正确的运行,发现编码和详细设计的错误
2、子系统测试(集成测试)
把经过单元测试的模块放在一起形成一个子系统来测试。模块间的协调和通信时这个过程中的主要问题。
着重测试模块的接口
3、系统测试(集成测试)
把经过子系统测试的模块放到一起称为一个完整的系统来测试。主要发现设计和编码的错误。还要验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定的要求。
4、验收测试(确认测试)
验证系统确实能满足用户的需要。检查的《系统需求说明书》中的错误。
5、平行运行
同时运行新开发的系统和将被他取代的旧系统,比较新旧系统的处理结果。
可以在准生产环境中运行新系统而不是冒风险
用户能有一段熟悉新系统的时间
可以验证用户指南和使用手册之类的文档
能够以准确生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。
测试阶段的信息流
软件配置
需求说明书
设计说明书
源程序清单
测试配置
测试计划
测试方案
单元测试
单元测试主要使用白盒测试技术
测试重点
1、模块接口
2、局部数据结构
3、重要的执行通路
不可能进行穷举测试,因此单元测试期间选择具有代表性、最可能发现错误的执行通路进行测试就是十分关键的。
4、出错处理通路
5、边界条件
代码审查
可以由程序的编写者本人非正式的进行,也可以由审查小组正式进行(代码审查)
可以查出30%~70%的逻辑设计错误和编码错误
审查小组的组成
1、组长
2、程序的设计者
3、程序的编写者
4、程序的测试者
代码审查比计算机测试的优越之处
一次审查会上可以发现许多的错误,用计算机测试的方法发现错误之后,通常需要改正这个错误才能继续测试,因此错误是一个一个地发现并改正的。采用代码审查的方法可以减少系统验证的总工作量。
计算机测试
模块不是一个独立的程序,所以要开发驱动软件和存根软件。
驱动程序
一个“主程序”,它接收测试数据,把这些数据传送给被测试的模块,并且印出有关的结果。
存根程序
代替被测试的模块所调用的模块。也成为“虚拟子程序“。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。
存根程序和驱动程序代表着开销,也就是说,为了进行单元测试必须编写测试软件,但是通常并不把它们作为软件产品的一部分交给用户。
回归测试
回归测试是指重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来非预期的副作用。
回归测试用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。
集成测试
概述
集成测试是测试和组装软件的系统化技术
由模块组装成程序的两种方法
非渐增式测试方法
先分别测试每个模块,再把所有模块按照设计要求放在一起结合成所要的程序
特点
非渐增式测试一下子把所有模块放在一起,把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂。
渐增式测试
把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
特点
把程序划分成小段来构造和测试,比较容易定位和改正错误
自顶向下集成
从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。
四个步骤
1、对主模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块
2、根据(深度优先或宽度优先),每次用一个实际模块代换一个存根程序
3、在结合进一个模块的同时进行测试
4、为了保证加入模块没有引进新的错误,可能需要进行回归测试(全部或部分地重复以前做过的测试)
自底向上集成
自底向上测试从”原子“模块(即软件结构最低层的模块)开始组装和测试。因为这是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要存根程序。
四个步骤
1、把底层模块组合成实现某个特定的软件子功能的族
2、写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出
3、对由模块组成的子功能族进行测试
4、去掉驱动程序,沿软件结构自下向上移动,把子功能族结合起来形成更大的子功能族。
不同集成测试策略的比较
自顶向下的优缺点
自顶向下的优点
不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。
自顶向下的缺点
可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种办法在早期不能充分展开人力。
自底向上的优缺点
与自顶向下正好相反。
确认测试
确认测试也叫验收测试,目标是验证软件的有效性。
软件有效性的一个简单定义是:如果软件的功能和性能如同用户所期待的那样,软件就是有效的。
确认测试的范围
确认测试必须有用户积极参与,或者以用户为主进行。
确认测试通常用黑盒测试法
确认测试通常的结果
1、功能和性能与用户要求一致,软件是可以接收的
2、功能和性能与用户要求有差距
软件配置复查
复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编好了目录。
Alpha和Beta测试
Alpha测试
用户在开发者的场所进行的,并且在开发者对用户的”指导“下进行测试。开发者负责记录发现的错误和使用中遇到的问题。总之,”Alpha测试“是在受控的环境中进行的。
Beta测试
软件最终的用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此Beta测试是软件开发者不能控制的环境中的”真实“应用。
白盒测试技术
逻辑覆盖
有选择的执行程序中某些最有代表性的通路是对穷举测试的唯一可行的替代办法。所谓逻辑覆盖是对一系列测试过程的统称。
标准
1、语句覆盖
语句覆盖的含义是,选择足够多的测试数据,使被测程序中每个语句至少执行一次。
2、判定覆盖
判定覆盖又叫做分支覆盖,它 的含义是,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定分支都至少执行一次。
3、条件覆盖
不仅每个语句都至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
4、判定/条件覆盖
选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
5、条件组合覆盖
条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
常用的控制结构测试
基本路径测试
定义
是Tom McCabe提出的一种给白盒测试技术
步骤
1、根据过程设计结果画出相应的流图
2、计算流图的环形复杂度
3、确定线性独立路径的集合
黑盒测试技术
黑盒测试着重测试软件功能。黑盒测试并不能取代白盒测试,它是与白盒测试互补的测试方法,他很可能发现白盒测试不易发现的错误类型
黑盒测试发现的错误类型
功能不正确或遗漏了功能
界面错误
数据结构错误或外部数据库访问错误
性能错误
初始化和终止错误
白盒测试在测试过程的早期阶段进行,黑盒测试主要用于测试过程的后期。
等价划分
等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。
使用等价划分法设计测试方案首先需要划分输入数据的等价类,为此需要研究程序的功能说明,从而确定输入数据的有效等价类和无效等价类。
规则
如果规定了输入值的范围,则可以划分出一个有效的等价类(输入值在此范围内),两个无效等价类(输入值小于或大于最大值)
如果规定了输入数据的个数,则类似地也可以划分出一个有效的等价类和两个无效的等价类。
如果规定了 输入数据为整型,则可以划分出正整数、零和负整数3各有效类。
根据等价类设计测试方案
1、设计一个新的测试方案以尽可能多地覆盖尚未被覆盖的有效等价类,重复这个步骤一直到所有有效的等价类都被覆盖为止。
2、设计一个新的测试方案,使他覆盖一个而且只覆盖一个尚未覆盖的无效等价类,重复这个步骤一直到所有无效的等价类都被覆盖为止。
边界值划分
选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。也就是说要选择刚好等于、稍稍小于和稍稍大于等价类边界值的数据作为测试数据,而不是选取每个等价类内的典型值或任意值作为测试数据。
错误推测法
错误推测法在很大程度上靠直觉和经验进行。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据他们选择测试方案
调试
调试(纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。
两种结果
1、找到了问题的原因并把问题改正和排除掉
2、没有找出问题的原因
调试困难的原因
1、心理方面的原因
2、技术方面的原因
3、软件错误本身的特征
症状和产生症状的原因可能在程序中相距甚远
当改正了一个错误后,症状可能是暂时消失了
症状可能实际上并不是由错误引起的
症状可能由不易跟踪的人为错误引起
症状可能由定时问题而不是由处理问题引起的
可能很难重新产生完全一样的输入条件
症状可能时有时无,这种情况在硬件和软件紧密耦合在一起的嵌入式系统中很常见
症状可能是由于分布在许多任务中的原因引起的,这些任务运行在不同的处理机上
调试途径
1、蛮干法
蛮干法是最低效的方法,走投无路的情况下使用。
2、回溯法
调试小程序的时候用,从发现症状的地方开始,人工的沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。
3、原因排除法
对分查找法
如果知道每个变量在程序内若干个关键点的正确值,则可以用复制语句或输入语句在程序中点附近“注入”这些变量的正确值,然后运行程序并检查所得到的输出。
归纳法
是从个别现象推断出一般性结论的思维方法。使用这种方法调试程序时,首先把和错误有关的数据组织起来进行分析,一便发现可能的错误原因。
演绎法
从一般原理或前提出发,经过排除和精化的过程推导出结论。采用这种方法调试程序时,首先设想出所有可能的粗错原因,然后试图用测试来排除每一个假设的原因。
软件可靠性
软件可靠性
可靠性是程序在给定的时间间隔内(一段时间),按照规格说明书的规定成功地运行的概率。
软件可用性
可用性是程序在给定的时间点(当前时刻),按照规格说明书的规定,成功地运行的概率。
估算平均无故障时间的方法
软件的平均无故障时间MTTF是一个重要的质量指标,往往作为对软件的一项要求,由用户提出来。