目录

软件工程基本概念

软件工程基本概念

文章目录

一,软件工程基本概念

软件 :程序,设计,文档。

软件分类

系统软件 :操作系统,编译程序,汇编程序,网络软件,数据库管理系统。

应用软件 :事务处理软件,工程与科学技术软件,实时处理软件,人工智能软件。

支撑软件(工具软件) :需求分析工具软件,编译工具软件,测试工具软件,维护工具软件。

软件危机

需求增长,开发难控,质量难保,难以维护,成本提高,生产率低

软件工程

软件工程 :应用于计算机软件的定义,开发和维护的一整套方法,工具,文档,实践标准和工序。

其目的是提高软件生产率,提高软件质量,降低软件成本。

其核心思想是把软件当成一个工程产品来处理。

软件工程三要素

  1. 方法是完成软件工程项目的技术手段
  2. 工具支持软件的开发,管理和文档生成
  3. 过程支持软件开发的个环节的控制和管理

软件生命周期

将软件产品从提出,实现,使用维护到停止使用退役的过程称为软件生命周期

分为软件定义,软件开发及软件运行维护3个时期。维护是持续时间最长,花费代价最大的一个时期。

软件工程学的一个目的就是提高软件的可维护性,降低维护代价。

软件生命周期

3个时期共有8个阶段

定义时期 :问题定义可行性研究,需求分析,概要设计

开发时期 :详细设计,实现,设计

运行维护 :使用,维护

需求分析

需求分析 :确定系统的逻辑模型。参与人员有用户,项目负责人和系统分析员。

其工作 :需求获取 需求分析 编写需求规格说明书 需求评审

产生文档 :为需求规格说明书

需求规格说明书的作用

(1)便于用户,开发人员进行理解交流

(2)反映用户问题的结构,可以作为软件开发工作的基础和依据

(3)作为确定测试和验收的依据

需求规格说明书(SRS)

需求分析阶段产生的主要文档是“软件需求规格说明书”,其 特点 是:

正确性 :体现待开发系统的真实要求

无歧义性 :对每个需求只有一种解释

完整性 :包括全部有意义的需求

可验证性 :每个需求都是可验证的

一致性 :各个需求的描述不矛盾

可理解性 :需求说明书必须简明易懂

可修改性 :结构分格在改变时,是易于实现的

可追踪性 :每个需求的来源和流向是清晰的

二,结构化分析方法

需求分析方法 有:

(1)结构化需求分析方法

(2)面向对象的分析方法

结构化分析方法 :使用数据流图(DFD),数据字典(DD),判定表和判定树等工具来建立系统的逻辑模型

数据流图(DFD)

数据流图的图形元素:

O 加工:输入数据经加工变换产生输出

-> 数据流:沿箭头方向传递数据的通道

= 存储文件(数据源):存放各种数据的文件

口 源(潭):系统和文件的接口

数据字典是结构化分析的核心

三,结构化设计方法

软件设计的划分

从工程管理角度划分 :概要设计 详细设计

按技术观点分析 :结构设计 数据设计 接口设计 过程设计

软件设计基本原理

抽象 :在软件设计中,可以定出多个抽象级别,抽象层次从概要设计到详细设计逐步降低。

模块化 :把一个待开发的软件分解为若干小的简单的部分,自顶向下逐层把软件划分为若干模块。

信息隐蔽 :一个模块内的信息,对于不需要这些信息的其他模块来说不能访问。

模块的独立性 :每个模块只完成独立的子功能,并且与其他模块的联系少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。

软件模块独立性

高内聚性 :指一个模块内部各个元素间彼此结合的紧密程度

低耦合性 :指模块间互相连接的紧密程度

概要设计

概要设计的任务

(1)设计软件系统结构

(2)数据结构及数据库设计

(3)编写概要设计文档

(4)概要设计文档评审

概要设计的工具是程序结构图(SC)

详细设计

详细设计的任务

确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。

详细设计的常用工具

图形工具 :程序流程图,N-S图,PAD,HIPO

表格工具 :判定表

语言工具 :PDL(伪码)

四,软件测试

软件测试的 目的 是发现程序中的错误。

软件测试的准则

  1. 所有测试都应追溯到用户需求
  2. 在测试之前制定测试计划,并严格执行
  3. 充分注意测试中的群集现象
  4. 避免由程序的编写者测试自己的程序
  5. 不可能进行穷举测试
  6. 妥善保存测试分析报告,为维护提供方便

静态和动态测试

静态测试 :不实际运行软件,通过人发挥思维优势发现程序中的错误

动态测试 :基于计算机的测试,是为了发现错误而执行程序的过程

白盒和黑盒测试

白盒测试 :把测试对象看作一个打开的盒子,利用程序内部的逻辑结构,对程序所有逻辑路径进行测试

(1)逻辑覆盖测试

(2)基本路径测试

黑盒测试 :完全不考虑程序内部的逻辑结构,只检查程序是否能接受输入数据而产生正确的输出信息。

(1)等价类划分法

(2)边界值分析法

(3)错误推测法

软件测试步骤

单元测试 :是对软件测试的最小单元——模块进行测试,目的是各模块内部的错误

集成测试 :是把模块按照设计要求组装起来的同时进行测试,目的是发现与接口有关的错误。

确认测试 :是验证软件的功能和性能是否满足各种需求,以及软件配置是否完全正确

系统测试 :是将软件作为一个元素,与计算机系统其他元素组合在一起,进行集成测试

五,程序的调试

对程序进行了成功的测试后将进行程序调试,通常称为Debug(排错),主要在开发阶段进行。

程序调试的任务是诊断和改正程序的错误

基本步骤

(1)错误定位

(2)修改设计和代码,以排除错误

(3)进行回归测试,防止引进新的错误

软件测试方法

(1)强行排除法

(2)回溯法

(3)原因排除法

软件工程

定义

可行性研究,初步项目计划->可行性分析报告

需求分析->需求规格说明书->数据流图DFD,判定树,数据字典DD,判定表

开发

概要设计->概要设计说明书->程序结构图(SC)

详细设计->详细设计说明书->程序流程图,N-S,PAD,HIPO,判定表,PDL

实现->用户操作手册

测试->测试分析报告->静/动态,白/黑盒

维护

使用

维护

退役