软件工程基本概念

一,软件工程基本概念

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

软件分类

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

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

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

软件危机

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

软件工程

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

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

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

软件工程三要素

  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
实现->用户操作手册
测试->测试分析报告->静/动态,白/黑盒
维护
使用
维护
退役

  • 12
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值