一、软件工程基础
软件:程序、数据、文档
软件分类
1.系统软件
操作系统、编译程序、汇编程序、网络软件、数据库管理系统
2.应用软件
事务处理软件、工程与科学计算软件、实时处理软件、人工智能软件
3.支撑软件(工具软件)
需求分析工具软件、编译工具软件、测试工具软件、维护工具软件
软件工程
软件工程:应用于计算机软件的定义、开发和维护的一-整套
方法、工具、文档、实践标准和工序。
其目的是提高软件生产率、提高软件质量、降低软件成本。
其核心思想是把软件当作一个工程产品来处理。
软件工程三要素
1.方法是完成软件工程项目的技术手段
2.工具支持软件的开发、管理和文档生成
3.过程支持软件开发的各环节的控制和管理
软件生命周期
将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
分为软件定义、软件开发及软件运行维护3个时期。维护是持续时间最长,花费代价最大的一个时期。
软件工程学的一个目的就是提高软件的可维护性,降低维护代价。
3个时期共有8个阶段
需求分析
口 需求分析:确定系统的逻辑模型。参加人员有用户、项目负责人和系统分析员。
口 其工作:需求获取需求分析编写需求规格说明书需求评审
口 产生文档:为需求规格说明书。
口 需求规格说明书的作用:
( 1 )便于用户、开发人员进行理解交流;
( 2 )反映用户问题的结构,可以作为软件开发工作的基础和依据;
( 3 )作为确认测试和验收的依据。
需求规格说明书(SRS)
需求分析阶段产生的主要文档是"软件需求规格说明书”,其特点是:
正确性:体现待开发系统的真实要求
无歧义性:对每个需求只有一-种解释
完整性:包括全部有意义的需求
可验证性:每个需求都是可验证的
致性:各个需求的描述不矛盾
可理解性:需求说明书必须简明易懂
可修改性:结构风格在改变时,是易于实现的
可追踪性:每个需求的来源和流向是清晰的
二、结构化分析方法
需求分析方法有:
①结构化需求分析方法
②面向对象的分析方法
结构化分析方法:
1.使用数据流图(DFD)、
2.数据字典(DD):数据字典是结构化分析的核心。
3.判定表和判定树等工具,来建立系统的逻辑模型。
三、结构化设计方法
从工程管理角度划分: 概要设计 详细设计
按技术观点划分:
结构设计
数据设计
接口设计
过程设计
软件设计基本原理
抽象:在软件设计中 ,可以定出多 个抽象级别,抽象层次从概要设计到详细设计逐步降低。
模块化:把一个待开发的软件分解成若干小的简单的部分,自顶向下逐层把软件划分成若干模块。
信息隐蔽:一个模块内的信息,对于不需要这些信息的其他模块来说不能访问。
模块独立性:每个模块只完成独立的子功能 ,并且与其他模块的联系少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。可以分为以下两点
高内聚性:指一个模块内部各个元素间彼此结合的紧密程度
低耦合性:指模块间互相连接的紧密程度
概要设计
零概要设计的任务:
①设计软件系统结构
②数据结构及数据库设计
③编写概要设计文档
④概要设计文档评审
概要设计的工具是程序结构图(SC)。
详细设计
详细设计的任务:
确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
详细设计的常用工具:
图形工具:程序流程图、N-S图、PAD、 HIPO
表格工具:判定表
语言工具: PDL (伪码)
程序流程图
在数据流图(DFD)中箭头线段表示数据流
四、软件测试
零软件测试的目的是发现程序中的错误。
软件测试的准则:
所有测试都应追溯到用户需求
在测试之前制定测试计划,并严格执行
充分注意测试中的群集现象
避免由程序的编写者测试自己的程序
不可能进行穷举测试
妥善保存测试分析报告,为维护提供方便
静态测试
不实际运行软件,通过人发挥思维优势发现程序的错误
动态测试
基于计算机的测试,是为了发现错误而执行程序的过程
白盒测试:把测试对象看作一个打开的盒子,利用程序内部的逻辑结构,对程序所有逻辑路径进行测试 分为①逻辑覆盖测试②基本路径测试
黑盒测试:完全不考虑程序内部的逻辑结构(程序外部功能),只检查程序是否能接收输入数据而产生正确的输出信息 分为①等价类划分法②边界值分析法③错误推测法
软件测试步骤
五、软件的调试
对程序进行了成功的测试之后将进入程序调试,通常称为Debug(排错) ,
主要在开发阶段进行。
程序调试的任务是诊断和改正程序的错误。
基本步骤:
①错误定位
②修改设计和代码,以排除错误
③进行回归测试,防止引进新的错误
软件调试方法:
①强行排除法②回溯法③原因排除法