导图社区 需求分析软件测试软件工程软件设计自学思维导图
需求分析软件测试软件工程软件设计自学思维导图,整理了需求分析、软件设计、软件测试、软件维护、软件复用、软件开发环境的内容,希望这份脑图会对你有所帮助。
编辑于2023-02-23 22:55:01 广东需求分析软件测试软件工程软件设计自学思维导图
需求分析
需求分类
功能需求(软件做什么,系统必须完成的事及具备的品质)、性能需求(可靠性、容错性、性能、响应时间)、设计约束(约束说明限制条件,如指定数据库、操作系统、开发工具)
业务需求(总经理说我要开发一个......系统实现......业务)、用户需求(管理经理说需要......功能和性能)、系统需求(开发使用的)
基本需求(用户明确提出的要求)、期望需求(用户没有明说但认为不用说都应该有的)、兴奋需求(超出用户的期望,增加的功能是用户没有想到的是不需要做的)
需求工程
需求开发(确定功能、性能、数据和界面,包括需求捕获、分析、编写规格说明书、需求验证四个阶段)
需求管理
制定需求管理计划、定义需求基线、求得对需求的理解和承诺、管理需求变更、维护对需求的双向跟踪、识别项目工作与需求之间的不一致性
需求的双向跟踪:正向跟踪中原始需求在哪个用例实现,是不是原始需求都已实现,逆向跟踪中一个用例没有实现任何一个原始需要,就是一个兴奋需要
需求获取
要捕获的信息(what)
问题域相关信息、要求解决的问题相关信息、用户的期望和约束
信息的来源(where)
涉众、原有系统、竟争对手、领域专家
需求捕获的技术(how)
联合讨论需求会(多方讨论)、用户访谈(关键用户准备问题)、书面调查(人员多的时候)、现场观摩、阅读历史文档、参加业务实践
图形工具:层次方框图、用例图、IPO图、Warnier图
需求捕获的策略
需求开发是非瀑布,迭代式的演化过程,对问题自顶向下、逐层分解、给出系统逻辑视图和物理视图
需求分析
任务
绘制系统与外部实体关系范围图、创建用户接口原型、分析需求的可行性、确定需求的优先级、为需求建立分析模型(用例模型、ER图、数据流图)、创建数据字典、使用质量功能调配
方法
结构化分析方法
依赖数据流图的自顶向下逐步分解的建模方法,以图形表达系统中信息的变换和传递过程
业务流程分析
调查掌握基本情况、描述确认分析现有业务流程、发现问题,提出解决方案、提出优化的业务流程
画数据流图DFD
顶层图明确系统与外部哪些实体有关系,需要传输什么数据,顶层图采用自顶向下,逐层分解,细化部件
包括数据流(具有名字和流向的数据)、加工(对数据流的变换)、数据存储(可访问的存储信息)、外部实体(数据来源及数据去向)
数据字典
对数据流图中出现的所有数据元素给出逻辑定义
包括结构化语言、判定树、判定表
面向对像分析方法
面积问题域分析方法
编写软件需求说明书
方法(用好的结构化和自然语言编写文本型文档、建立图形化模型、编写形式化规格说明)
要求(完整性、一致性、可修改性、可跟踪性)
需求验证
需求评审:客户参与签字确认,是验收标准之一,评审需求是不是按流程来做,需求结果是不是客观公正合理的
需求测试
软件设计
基本原则
信息隐蔽性(模块间的数据和方法不允许不相关模块使用)、抽象化、自顶向下,逐层细化、模块独立性(高内聚低耦合)
步骤
架构设计
逻辑视图(满足功能需求)、过程视图(并发问题)、组件视图(实现问题)、部署视图(分布问题)
概要设计
将软件需求转化为数据结构和软件的系统结构,主要完成总体设计,包括功能划分模块,确定模块功能及模块间的调用关系和组成关系
详细设计
自顶向下,逐步求精,信息隐蔽(操作接口),模块独立(高内聚、低耦合)
对每个模块进行数据结构及算法的设计,性能、周转时间、响应时间、吞吐量、精度等
编写设计文件
设计评审
设计方法
系统结构图中的模块
传入模块、传出模块、变换模块、协调模块
常用系统结构图
变换型、事务型、混合型
用户界面
可使用性、灵活性、复杂性、可靠性
设计评审
设计负责人、高级管理人员、主审人员、评审组
软件测试
测试原则
尽早、不断的进行测试,程序员避免测试自己设计的程序,既要选择有效合理的数据,也要选择无效不合理的数据,修改后进行回归测试,尚未发现的错误数量与该程序已发现的错误成正比
设计测试用例包括输入、执行条件、预期输出
测试方法
黑盒测试
根据规格说明书功能设计测试用例,检查功能是否符合要求,不考虑程序的结构和处理过程
等价类划分
划分等价类,测试等价类的代表值就等价于对这类其它值的测试,每个等价类分有效和无效两种情况测试
边界值分析
在输入、输出边界上设计测试用例,边界值最容易出错(取正好等于、刚刚大于或刚刚小于边界的值)
错误推测法
经验和直觉推测可能的错误
因果图
分析需求规格找出各种输入和输出(原因和结果),找出输入条件的各种组合与输出的对应关系画出因果图,因果图转换成判定表,判定表的每一列是一个测试用例
白盒测试
测试内容
程序内部逻辑设计测试用例,检查逻辑通路是否按预定要求工作,比黑盒测试全面详细
对程序模块所有路径至少测试一次、对所有逻辑判断,真和假至少都测试一次、测试循环边界和运行界限内测试、内部数据结构的有效性测试
测试方法
语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
灰盒测试
黑盒与白盒测试结合起来测试
测试阶段
单元测试
编码阶段进行,一般白盒测试,如模块接口函数测试、局域数据结构测试、路径测试、错误处理测试、边界条件测试
集成测试
发现设计阶段的错误,模块组装后对模块之间的接口和通信测试,一般是黑盒测试
确认测试
检查软件的功能、性能是否与用户的需求一致,以需求规格说明书为依据,模拟环境下有效性测试、软件配置复查、验收测试(分析报告、用户手册、开发总结报告)
系统测试
生产环境测试,基于需求说明书的黑盒测试,覆盖所有联合的部件,评价软件产品的质量
包括软件、硬件、外设、数据、支持软件等,具体有恢复测试、安全性测试、强度测试、性能测试、可靠性测试、安装测试
测试
产品类的软件,@开发者在场由客户来实施测试,b开发者不在场
测试类型
功能测试
性能测试
目的(评估系统的能力,识别弱点,系统调优,验证稳定性和可靠性)、类型(负载测试、强度测试、容量测试)
验收测试
软件需求分析、编制验收测试计划和项目验收准则、测试设计和测试用例设计、测试环境搭建、测试实施、结果分析、测试报告
第三方测试
中介--北京软件评测中心
回归测试(验证以前出现过但修复好的缺陷不再重新出现)、恢复测试、可靠性测试、启动/停址测试、配置测试、安全性测试、可使用性测试、安装测试、过程测试、兼容性测试
面向对像测试
面向对像分析测试、面向对像设计测试、面向对像编程测试(面向对像单元测试、面向对像集成测试、面向对像系统测试)
测试工具
不需要定期确认、不需要校准、采用验证或保持其适用性的配置管理来确认
测试管理
对测试团队的管理很困难,因为测试人员的绩效指标不好统计,高手和新手写的程序BUG数差距很大,如何确定测试人员找BUG的工作能力
错误(缺陷)跟踪管理
软件维护
软件维护是生命周期的一个完整部分,为需要提供软件支持的全部活动,软件可理解、可测试、可修改,具有可维护性
软件的可维护性
软件工程提高可维护性
需求分析--可能的改进和修改加以说明
设计阶段--易于扩充、可移植、可重用的方案,面向对像
编码阶段--注释、质量、面向对像
测试阶段--测试好,维护就好;测试相关文档全
维护阶段--配置管理好,同步文档
系统文档(维护需求、源代码、设计文档、测试文档)
用户文档(使用手册、安装文档、参考手册、管理员指南)
可维护性度量
环路数(源代码复杂度)、软件规模、其它因素
软件维护分类
改正型(诊断和改正错误的过程)
适应型(适应外部环境新的软硬件、数据环境数据库,数据格式,存储介质发生变化去修改软件的过程,如升级操作系统而修改软件)
预防型(为提高软件可维护性可靠性为以后改进软件打下基础修改软件的过程,目前不是错误时间久了会成为错误,如99年解决千年虫问题)
完善型(满足新功能和性能修改软件或再开发软件的过程)
软件维护实施
建立维护组织、提出维护需求、实施维护作业、记录维护要素、评价维护活动
交付前的维护包括交付后运行的计划和维护计划,交付后的维护包括软件修改、培训、帮助资料等
软件复用
利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用,是提高软件生产力和质量的一种重要技术
代码复用、设计复用、分析复用、测试用例复用
构件是具有一定的功能,能够独立工作或能同其它构件装配协调工作的程序体,为了切合实际,更有效复用,构件应当具备可变性和灵活性以提高通用性
软件开发环境
一组相关软件工具的集合,集成开发环境(数据集成、控制集成、界面集成)