软件开发流程基础常识

软件开发过程的阶段划分

  • 需求分析阶段:规定结构和软件组成,明确外部接口和内部接口,给出软件功能要求、性能要求、适应性要求、容量和时间要求、安全要求、保密要求、设计约束、合格性因素等,最终形成软件需求文档,并通过评审

  • 软件设计阶段:根据软件需求文档对嵌入式软件进行设计,主要包括软件的总体设计、软件的概要设计和软件的详细设计等

  • 编码阶段

  • 集成阶段


各阶段主要工作

  • 需求分析确定软件要完成的功能及非功能性要求
  • 概要设计将需求转化为软件的模块划分,确定模块间的调用关系
  • 详细设计将模块进行细化,得到详细的数据结构算法
  • 编码根据详细设计进行代码的编写,并进行单元测试


软件测试的基础知识

  • 软件测试在软件生存周期中横跨两个阶段,通常,编码与单元测试属于软件生存周期中的统一阶段。对软件系统进行各种综合测试则是测试阶段的主要工作

  • 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是以相反的顺序安排的自底向上逐步集成的过程

  • 单元测试需要依据详细设计说明书和源程序清单了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例

  • 集成测试是对由各模块组装而成的系统进行测试,检查各模块间的接口和通信。该测试主要发现设计中的问题,通常采用黑盒测试。它包括渐增式集成和非增式集成

  • 确认测试是检查软件的功能、性能及其他特征是否与用户的要求一致,它以软件的需求规格说明书为依据,通常采用黑盒测试


软件需求分析的基础知识

  • 任务是确定软件系统的功能、性能、接口等要求,分析软件系统的数据要求,导出系统的逻辑模型,修正项目开发计划。

  • 基本原则是:

    • 能够表达和理解问题的信息域和功能域
    • 以层次化方式对功能进行分解和不断细化
    • 清楚定义信息接口
    • 给出系统的逻辑视图和物理视图
    • 定义系统的抽象模型
  • 软件需求分析阶段的输入是软件研制任务书和软件开发计划,工作成果是软件需求规格说明

  • 软件需求分析工作是一个不断认识、逐步细化的过程


结构化分析方法的基础知识

  • 分层的数据流图是结构化分析方法的重要组成部分

  • 对数据流图中的每个基本加工,需要有个加工规格说明,描述把输入数据流变换为输出数据流的加工规则,但不需要描述实现加工的具体流程

  • 可以用结构化语言、判定表和判定树来表达基本加工

软件测试的基础知识

  • 软件测试在软件生存周期中横跨两个阶段,通常,编码与单元测试属于软件生存周期中的统一阶段。对软件系统进行各种综合测试则是测试阶段的主要工作

  • 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是以相反的顺序安排的自底向上逐步集成的过程

  • 单元测试需要依据详细设计说明书和源程序清单了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例

  • 集成测试是对由各模块组装而成的系统进行测试,检查各模块间的接口和通信。该测试主要发现设计中的问题,通常采用黑盒测试。它包括渐增式集成和非增式集成

  • 确认测试是检查软件的功能、性能及其他特征是否与用户的要求一致,它以软件的需求规格说明书为依据,通常采用黑盒测试



软件测试的基础知识

  • 软件测试在软件生存周期中横跨两个阶段,通常,编码与单元测试属于软件生存周期中的统一阶段。对软件系统进行各种综合测试则是测试阶段的主要工作

  • 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是以相反的顺序安排的自底向上逐步集成的过程

  • 单元测试需要依据详细设计说明书和源程序清单了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例

  • 集成测试是对由各模块组装而成的系统进行测试,检查各模块间的接口和通信。该测试主要发现设计中的问题,通常采用黑盒测试。它包括渐增式集成和非增式集成

  • 确认测试是检查软件的功能、性能及其他特征是否与用户的要求一致,它以软件的需求规格说明书为依据,通常采用黑盒测试


软件测试的基础知识

  • 软件测试在软件生存周期中横跨两个阶段,通常,编码与单元测试属于软件生存周期中的统一阶段。对软件系统进行各种综合测试则是测试阶段的主要工作

  • 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是以相反的顺序安排的自底向上逐步集成的过程

  • 单元测试需要依据详细设计说明书和源程序清单了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例

  • 集成测试是对由各模块组装而成的系统进行测试,检查各模块间的接口和通信。该测试主要发现设计中的问题,通常采用黑盒测试。它包括渐增式集成和非增式集成

  • 确认测试是检查软件的功能、性能及其他特征是否与用户的要求一致,它以软件的需求规格说明书为依据,通常采用黑盒测试


软件测试的基础知识

  • 软件测试在软件生存周期中横跨两个阶段,通常,编码与单元测试属于软件生存周期中的统一阶段。对软件系统进行各种综合测试则是测试阶段的主要工作

  • 软件开发过程是一个自顶向下,逐步细化的过程,而软件测试过程则是以相反的顺序安排的自底向上逐步集成的过程

  • 单元测试需要依据详细设计说明书和源程序清单了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例

  • 集成测试是对由各模块组装而成的系统进行测试,检查各模块间的接口和通信。该测试主要发现设计中的问题,通常采用黑盒测试。它包括渐增式集成和非增式集成

  • 确认测试是检查软件的功能、性能及其他特征否与用户的要求一致,

软件质量属性的划分
  • 功能性、可靠性、易用性、效率、维护性、可移植性

软件项目的基线

  • 功能基线:在系统分析与软件定义阶段结束时,经过正式批准、签字的系统规格说明书、项目任务书、合同书或协议书中所规定的对待开发软件系统的规格说明

  • 分配基线:是指在需求分析阶段结束时,经过正式评审和批准的需求规格说明。分配基线是最初批准的分配配置标识

  • 产品基线:是指在综合测试阶段结束时,经过正式评审和批准的有关所开发的软件产品的全部配置项的规格说明。产品基线是最终批准产品配置标识


软件测试分类方法

  • 静态测试:主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行

  • 动态测试:主要特征是计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况进行分析,判断期望结果和实际结果是否一致。动态测试包括功能确认和接口测试、覆盖率分析、性能分析、内存分析等。


数据流图

  • 数据流图是结构化分析方法的重要模型,用于描述系统的功能、输入、输出和数据存储
  • 在绘制数据流图中,每条数据流的起点或者终点必须是加工
  • 在分层数据流图中,必须要保持父图与子图平衡
  • 每个加工必须既有输入数据流又有输出数据流

软件质量管理活动包括:

  • 软件质量保证
  • 验证与确认
  • 评审与审计

软件过程改进(SPI)的组成部分:

  • 启动阶段
  • 诊断阶段
  • 建立阶段
  • 运行阶段
  • 学习阶段

软件开发生命周期模型的基本知识

  • 瀑布型。适合软件需求明确的项目

  • V模型。将测试和分析与设计关联进行,加强分析与设计的验证

  • 原型模型。通过快速构建可运行的原型系统,然后根据运行过程获取的反馈改进。适合软件需求缺乏准确认识的情况。

  • 螺旋模型。将瀑布模型和演化模型结合起来,加入了风险分析


敏捷开发方法的内容:

  • 计划游戏:快速制定计划、随着细节的不断变化而完善
  • 小型发布:系统的设计要能够尽可能早地交付
  • 隐喻:找到合适的比喻传达信息
  • 简单设计:只处理当前的需求使设计保持简单
  • 测试先行:先写测试代码再编写程序
  • 重构:重新审视需求和设计,重新明确地描述它们,以符合新的和现有的需求
  • 结队编程
  • 集体代码所有制
  • 持续集成:可以按日甚至按小时为客户提供可运行的版本
  • 每周工作40小时
  • 现场客户
  • 编码标注

软件开发风险分析的基本知识:

  • 风险识别:试图系统化地确定对项目计划的威胁
  • 风险预测:估算风险发生的可能性或概率,以及风险发生时的后果
  • 风险评估:根据风险及其发生的概率和影响预测是否影响参考水平值
  • 风险控制:辅助项目组建立处理风险的策略

软件产品的质量

  • 内部质量和外部质量模型:功能性、可靠性、易用性、效率、可维护性、可移植性

  • 使用质量模型:有效性、生产性、安全性、满意度


软件质量保证的度量可分为:

  • 产品评估度量
  • 产品质量度量
  • 过程质量度量

软件单元测试的技术要求:

  • 对软件设计文档规定的软件单元的功能、性能、接口等应逐项测试
  • 每个软件特性应至少被一个正常测试用例和一个异常测试用例覆盖
  • 语句覆盖率达到100%

软件开发的成熟度模型等级及关键过程域

  • 初始级
  • 可重复级 
    • 软件配置管理
    • 软件质量保证
    • 软件子合同管理
    • 软件项目跟踪与监督
    • 软件项目策划
    • 软件需求管理
  • 已定义级 
    • 同行评审
    • 组间协调
    • 软件产品工程
    • 集成软件管理
    • 培训大纲
    • 组织过程定义
    • 组织过程焦点
  • 已管理级 
    • 软件质量管理
    • 定量过程管理
  • 优化级 
    • 过程更改管理
    • 技术改革管理
    • 缺陷预防

软件需求规格说明书:

  • 包括对重要功能的描述、软件确认准则、软件的性能
  • 作用为软件设计的依据、软件验证的依据、用户和开发者的共同理解 
    软件测试
  • 判定/条件覆盖使每个分支至少被执行一次,且判定中的每个条件都获得所有可能的逻辑值
  • 需求文档为测试开始之前必须具备的条件之一
  • 压力测试的同时不可以进行单元测试
  • 测试实例主要由输入数据和预期输出结果两部分组成

结构化分析设计方法

  • 根据加工规格说明和控制规格说明进行过程设计
  • 根据数据字典和实体关系图进行数据设计
  • 根据数据流图进行接口设计
  • 根据数据流图进行体系结构设计

覆盖用例

  • 条件覆盖是指设计足够的测试用例,使得被测试程序每一个判定中的每一个条件的所有可能结果至少出现一次

  • 判定覆盖的含义是设计足够的测试用例,运行被测程序,使得程序中每个判定的取真分支和取假分支至少执行一次

  • 路径覆盖是指设计足够的测试用例,使得被测程序中每条路径至少执行一次

  • 语句覆盖的含义是设计足够的测试用例,使得被测程序每一条语句至少被执行一次

  • 路径覆盖是最强的覆盖准则


杂项:

  • 关键路径是项目中最长的一条路径
  • 定义风险参照水准是风险评估的一类技术,对于大多数软件项目来说成本、速度和性能是三种典型的风险参照水准。
  • 软件商标权的权利人是指软件注册商标所有人
  • 确认测试主要用于发现需求分析阶段的错误
  • 总线带宽=总线位宽*工作频率

你可能感兴趣的:(经验技巧)