软件
包括程序 数据 文档
分类
- 系统软件
计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件
如操作系统(windos,dos,unix,linux),编译程序,汇编程序,数据库管理系统 - 支撑软件(工具软件)
如编译工具软件,测试工具软件,维护工具软件,microsoft visual studio - 应用软件
为解决特定领域的应用而开发的软件
如图书管理系统,各种手机app
软件危机
需求增长 开发难控 质量难保 难以维护 成本提高 生产率低
软件工程
应用于计算机软件的定义、开发和维护的一整套方法,、工具、文档、实践标准和工序。其核心思想是把软件当作一个工程产品来处理
- 三要素 :
方法 完成软件工程项目的技术手段
过程 支持软件开发的各环节的控制和管理
工具 支持软件的开发、管理和文档生成
软件生命周期
定义
可行性研究 初步项目计划
写出可行性分析报告
需求分析
包括的工作: 需求获取 需求分析 编写需求规格说明书 需求评审
- 需求规格说明书(SRS)
需求分析阶段产生的主要文档是“软件需求规格说明书”,其特点是
作用:便于用户、开发人员进行理解和交流,反映出用户问题的结构 可以作为软件开发工作的基础和依据,作为确认测试和验收的依据
方法:
- 结构化需求分析方法:使用数据流图(DFD)数据字典(DD)判定表和判定树等工具,来建立系统的逻辑模型
数字字典是结构化分析的核心
数据流图的图形元素
- 面向对象的分析方法
开发
- 软件设计
从技术观点来看,软件设计包括
结构设计:定义软件系统各主要部件之间的关系
数据设计:将分析时创建的模型转化为数据结构的定义
接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信
过程设计:把系统结构部件转换成软件的过程描述 - 先进行高层次的结构设计,后进行低层次的过程设计,穿插进行数据设计和接口设计
- 基本原理
- 软件模块独立性
内聚性:指一个模块内部各个元素间彼此结合的紧密程度 高
耦合性:指模块间互相连接的紧密程度 低
概要设计
任务:设计软件系统结构 分解软件的功能或称划分模块,数据结构及数据库设计,编写概要设计文档,概要设计文档评审
工具:程序结构图(SC)
- 系统结构图
扇入 某一个功能模块上面有几个功能模块
扇出 后续的子功能有几个
深度 整个系统有几层
宽度 整个系统横向有几个节点(3
详细设计
- 任务 确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节
- 常用工具 图形工具:程序流程图、n-s图、pad、hipo
程序流程图(pfd)
n-s图(方框图)
实现
写出用户操作手册
测试
目的是发现程序中的错误(只找错误不修改
写出测试分析报告
动态测试
不实际运行软件,通过人发挥思维优势发现程序的错误。包括代码检查,静态结构分析,代码质量度量
静态测试
基于计算机的测试,是为了发现错误而执行程序的过程
白盒测试
内部逻辑性 打开的盒子(手电筒研究线路
逻辑覆盖测试 基本路径测试
黑盒测试
功能性测试 关闭的盒子(手电筒试试亮不亮
等价类划分法 边界值分析法 错误推测法
步骤
调试
任务是诊断和改正程序的错误
基本步骤:错误定位,修改设计和代码 以排除错误,进行回归测试 防止引进新的错误
方法:强行排错法 回溯法 原因排除法