赞
踩
判定表特点:1.能够简洁而又无歧义地描述处理规则
2.不适应于作为一种通用的设计工具
3.有四部分组成:左上:列出所有条件,左下:所有可能的动作,右上:各种 条件组合的矩阵,右下:每种条件组合相应的动作
适应于:能清楚地表示复杂的条件组合和应做的动作之间的对应关系
判定树特点:
不仅能清楚地表示复杂的条件组合和应做的动作之间的对应关系而且形式简单,简单到不需要任何说明,一眼就可以看出其含义,初学者更易于掌握和使用
适应于:数据元素多的时候,和初次接触的人群
2.逻辑覆盖测试包含哪些类型的测试?
语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 点覆盖 边覆盖 路径覆盖
技术可行性、经济可行性、操作可行性,必要时还有法律、社会效益的可行性(注意无政治的可能性)
- 改正性维护 :在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。
- 适应性维护(为了适应外部环境的变化而进行的适应性维护如(新软硬件的配置问题))
- 完善性维护(为了改进原有的软件而进行的完善性维护(如用户提供新的功能))
- 预防性维护(改进将来的可维护性和可靠性而进行的预防性维护)
见p127例子,已经理解了
耦合:模块间互相依赖的紧密程度
内聚:模块内部各个元素彼此结合的紧密程度
耦合:数据耦合,特征耦合,控制耦合,公共耦合,内容耦合。(越来越高)
偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚
(内聚程度按照递增顺序)
原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合
原则:设计时,尽量使用内聚高的模块(顺序内聚,功能内聚),中内聚也可以(过程内聚,通信内聚),但低内聚很坏,不要采用
顺序,选择,循环
为了寻找消除软件危机的途径,不断总结计算机软件失败的历史教训,形成了软件工程学科
软件测试:为了发现程序中的错误而执行程序的过程
目的:就是暴露程序中的错误
已知产品内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有成分都要经过检查,白盒测试的方法:逻辑覆盖法(语句覆盖,判断覆盖,条件覆盖,判断条件覆盖,条件组合覆盖),基本路径测试法
已知产品的功能设计规格,可以进行测试证明每个实现的功能是否符合要求
黑盒测试方法:边界值法和等价划分和因果图和错误推测
测试用例:每种内部操作是否符合设计规格要求,要求所有成分都要经过检查
软件的可靠性的定义:程序在给定的时间间隔内,按照规格说明书的规则成功运行的概率
可用性的定义:程序在给定的时间点,按照规格说明书的规定,成功运行的概率
瀑布模型,快速原型模型,增量模型,螺旋模型,(喷泉模型,RUP模型,极限模型,微软过程)适合面向对象软件开发过程
优点:是规范的,文件驱动的方法
缺点:最终开发出来的软件产品可能并不是用户真正需要的
适用的领域:用户的需求非常的清楚和全面,且在开发的过程中没有或者很少的变化,开发工作需要用户参与的程度比较低。
选取的测试数据刚好是等于小于大于边界值。
自顶向下,逐层分解;数据流必须有加工的过程,数据存储环节一般作为两个加工环节的界面来安排;适当地为数据流、加工、数据存储、外部实体命名;编号;保持父图与子图的平衡,保持数据永恒
非结构化的维护:软件配置的唯一成分就是程序代码,那么维护活动就是从评价代码开始
结构化的维护:有一个完整的软件配置存在,那么维护工作从评价设计文档开始,确定软件的特点、性能特点。
克服了瀑布模型的缺点,通过快速构建一个可以在计算机上运行的原型系统,让用户使用原型收集用户反馈意见的方法,获取用户真实需求
从经济的角度评价开发一个软件是否可行,属于软件定义阶段工作
系统响应时间; 用户帮助设施; 出错信息处理; 命令交互
确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的蓝图
调试是在测试发现错误之后排除错误的过程,目的:修改错误,使程序正常运行
实体,关系,属性
数据设计,系统结构设计,过程设计
维护人员理解、改正、改动、或改进这个软件的难易程度
详细设计
深度:表示软件结构中控制的层数
宽度:是软件结构内同一个层次上模块总数的最大值
扇出:是一个模块直接控制(调用)的模块数目
扇入:表明有多少个上级模块直接调用它
货币的时间价值;投资回收期;纯收入;投资回报率
可塑性大,多变,灵活
是在一个可能存在可行状态的全集中遍历所有元素
估算出软件中错误的数量,以及软件开发需要用的工作量
用一种编程语言在一个系统上编写程序,经过很少的改动或不用改动就可以在其他平台上运行
系统功能简介,系统结构设计,系统接口,模块设计和接口设计
在很大程度上靠直觉和经验进行,基本思想是列举出程序中可能有点错误和容易发生错误的特殊情况
用途:作为分析阶段的工具,关系:数据字典是数据流图中包含所有元素定义的集合,数据流图和数据字典共同构成了系统的逻辑模型。
方法、工具和过程
- 功能域明确(一眼就能看出来)
- 盒图没有箭头,不允许随意转移控制
- 很容易确定局部和全局的作业域
- 很容易表现嵌套关系,也可以表示模块的层次结构
软件的用户
可行性研究最根本的任务是对以后的行动方针提出建议
结构化程序中任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系
优点:可在软件开发的早期阶段使投资者获得明显的回报和较易维护的优点
缺点:必须要求软件具有开放的结构
交换流:(输入不止一个,具有明显的输入、变换和输出界面的数据流图)
事务流:(输入只有一个,数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行)
软件定义:确定软件开发工程必须完成的总目标;
确定工作的可行;导出实现工程总目标应该采用的策略及系统必须完成的功能;估计需要的成本和资源;制作工作进程表(又称为系统分析又可以细化为问题定义、可行性研究和需求分析)
软件开发:四个阶段:总体设计,详细设计,编码和单元测试(系统设计和系统实现)
与计算机系统操作有关的计算机程序,规则、以及可能有的文件、文档及数据
命令式语言(模拟数据存储、数据操作的)图灵机,函数式语言(基于数学函数概念的值),逻辑语言(语义基础是基于一组已知规则的形式逻辑系统),面向对象语言(语言的语法形式的语义就是基本对象操作)
驱动模块:相当于所测模块的主程序,它接受测试数据,把这些数据传送给所测模块,最后输出结果
桩模块:用以代替所测模块调用的字模块
自底向上集成和自顶向下集成测试和混合法和回归测试
软件的生命周期的阶段划分由软件定义、软件开发和运行维护,直到最终被废弃所经历的时期。
- 将系统划分成物理元素,即程序、文件、数据库和文档等。
- 设计软件结构,即将需求规格转换为体系结构,划分出程序的模块组成、模块间的相互关系。确定系统的数据结构、文件结构、数据库模式确定测试方法与策略。
- 编写总体设计说明书、用户手册、测试计划,用结构图来描述软件结构,选择分解功能与划分模块的设计原则
环形复杂度定量度量程序的逻辑复杂度
V(G) = E - N - 2 (E是流图的条数,N是节点数)
V(G) = P + 1 (其中P是判断节点的数目)
用户文档:主要描述系统功能和使用方法,并不关心这些功能怎么实现的
系统文档:描述系统设计、实现、和测试等方面的内容
见P41
N-S图描述算法,PAD图描述算法,PDL(伪代码)
层次图和HIPO图和结构图
蛮干法,回溯法,原因排除法
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组的人员应该少而精
- 承认不断改进软件工程实践的必要性
- 对软件开发成本和进度估算不清楚
- 用户对已完成的软件系统不满意的现象
- 软件产品的质量往往靠不住
- 软件长长不可维护
- 软件通常没有适当的文档资料,软件成本在计算机系统中成本所占比例上述
- 软件更新的速度比不上计算机应用的普及速度
定义:是进行以模块功能和处理过程设计为主的详细设计的基本原则
调试:对错误进行修改,测试,测试出错误,先有测试再有调试
交换流:(输入不止一个,具有明显的输入、变换和输出界面的数据流图)
事务流:(输入只有一个,数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选一个来执行)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。