电子科大软件工程网络课件
《软件工程》课件——第1章 软件工程概述
![《软件工程》课件——第1章 软件工程概述](https://img.taocdn.com/s3/m/cb79cdcb7d1cfad6195f312b3169a4517723e59e.png)
软件的分类
图1.3 软件的分类
软件的分类
另外,从软件工程学的角度来划分软件产品,可以分为基础软件、支 撑软件和应用软件等。
基础软件是指保证计算机运行并支撑应用软件运行的基础环境,包括 操作系统、数据库、中间件。
支撑软件是指支撑各种软件的开发与维护的软件,又称减开发环境( Integrated Development Environment, IDE),主要有环境数据库、各 种接口软件和工具组,包括编程工具、建模工具、版本控制、软件测试等 类型。
软件的特性
图1.1 硬件失效曲线图
软件的特性
图1.2 软件失效曲线
软件的特性
⑥ 应用特性。软件的应用极为广泛,如今它 已渗入国民经济和国防的各个领域,现已成为信 息产业、先进制造业和现代服务业的核心,占据 了无可取代的地位。
软件的特性
(2)软件的生产特性 ① 软件开发特性。由于软件固有的特性,使得软件的开发不仅具
有技术复杂性,还有管理复杂性。技术复杂性体现在:软件提供的功能比 一般硬件产品提供的功能多,而功能的实现具有多样性,需要在各种实现 中做出选择,更有实现算法上的优化带来的不同,而实现上的差异会带来 使用上的差别。管理上的复杂性表现在:第一,软件产品的能见度低,要看 到软件开发进度比看到有形产品的进度困难得多;第二,软件结构的合理性 差,结构不合理使软件管理复杂性随软件规模增大而呈指数增长。
软件的特性
③ 软件维护特性。软件在运行过程中的维护工作比硬件复杂得多。
首先软件投入运行后,总会存在缺陷甚至暴露出潜伏的错误,需要进行“纠 错性维护”。其次,用户可能要求完善软件性能,对软件产品进行修改,进 行“完善性维护”。当支撑软件产品运行的硬件或软件环境改变时,也需要 对软件产品进行修改,进行“适应性维护”。软件的缺陷或错误属于逻辑性 的,因此,不需要更换某种备件,而是修改程序,纠正逻辑缺陷,改正错误 ,提高性能,增加适应性。当软件产品规模庞大、内部的逻辑关系复杂时, 经常会发生为纠正一个错误而产生新错误的情况,因此,软件产品的维护往 往比硬件产品的维护工作量大且复杂。
电子科技大学,软件工程第九章进行体系结构设计 PPT资料共15页
![电子科技大学,软件工程第九章进行体系结构设计 PPT资料共15页](https://img.taocdn.com/s3/m/f7e6348019e8b8f67c1cb9c9.png)
调用和返回体系结构 主程序/子程序体系结构 远程过程调用体系结构
面向对象体系结构
层次体系结构 各模块实现功能的层次不一样
• 9.3.2 体系结构模式
不同模式操作下的一些特征---并发性、持久性、分布性。
• 9.3 体系结构风格和模式
对完成同一种或同一类工作,不同的设计人员在体系结构 设计的方式各不一样,这种方式的一定程度上的抽象,就 是体系结构风格。
体系结构模式就是风格的具体体现,或者体系结构设计的 一个框架。
• 9.3.1 体系结构风格的分类
以数据为中心的体系结构 特点:客户构件基本独立
• 9.6 映射数据流到软件体系结构
变换流 事务流 变换映射 事务映射
更多精品资源请访问
docin/sanshengshiyuan doc88/sanshenglu
是一定程度上的抽象,非可运行的软件。
凭借体系结构图,软件开发人员可以: 分析设计能否完全满足需求 为设计中某些方面的变更提供指导 降低由于软件构造不合理带来的风险
• 9.2 数据设计
数据设计:把分析模型中定义的数据对象转化成软件构件级的 数据结构,或整个程序级的数据库结构。
体系结构级(系统结构级,或程序级)的数据设计:
• 9.5 评估可选的体系结构设计
实现一个具体的任务可以有多种不同的体系结构,哪一个 更好?
体系结构权衡分析方法(SEI): 核心:通过孤立地考虑每个属性来评估质量属性
体系结构的复杂性
体系结构描述语言
UML 体系结构描述语言(architectural description language,ADL)
电子科技大学嵌入式软件工程ppt课件
![电子科技大学嵌入式软件工程ppt课件](https://img.taocdn.com/s3/m/9e18c8af804d2b160a4ec024.png)
嵌入式软件的交叉开发环境
• 物理连接和逻辑连接 – 物理连接是指宿主机与目标机通过物理线路连 接在一起,连接方式主要有三种:
• 串口 • 以太口 • OCD(On Chip Debug)方式,如JTAG、BDM等
5.3.2 宿主机上的交叉开发环境
(2)将交叉编译器路径添加到系统环境变量中,便于使用:
gedit /etc/profile 添加以下四行到该文件中: export PATH=/usr/local/arm/4.3.2/bin:$PATH export TOOLCHAIN=/usr/local/arm/4.3.2 export TB_CC_PREFIX=arm-linuxexport PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
• 调试器与ROM Monitor之间的通信遵循 远程调试协议。
宿主机
目标机
调试器
Windows或其它桌 面操作系统 PC机等硬件
逻辑上的连接 物理上的连接
监控程 序(ROM 被调试 Monitor) 程序
嵌入式 硬件
ROM Monitor调试方式
ROM Monitor
• 在目标机上电或复位后首先执行的就是 ROM Monitor,它对目标机进行一些必 要的初始化
交叉调试
非交叉调试
调试器和被调试程序运行在不同 调试器和被调试程序运行在同一
的计算机上
台计算机上
可独立运行,无需操作系统支持
需要操作系统的支持
被调试程序的装载由调试器完成
电子科技大学,软件工程第十一章用户界面设计PPT课件
![电子科技大学,软件工程第十一章用户界面设计PPT课件](https://img.taocdn.com/s3/m/27710caca98271fe900ef945.png)
➢ 设计时应注意的问题---系统响应时间(时间长度和可变 性)、帮助设施、错误处理、菜单和命令标记、应用的可 访问性、国际化
• 11.5 设计评估 初步设计
建立原型的 #1界面
建立原型的 #n界面
用户评估 界面
需要进行的 设计修改
设计者研究 评估结果
图11-4 界面设计的评估周期
界面设计 完成
第十一章 用户界面设计
将开发一个应用软件比喻为建筑一栋房子, 楼房的结构布局设置相当于软件工程的体 系结构设计,房间的具体设计相当于构件 级设计,而门、窗、墙面砖等的设计相当
于软件工程的界面设计。
1
• 接口设计包含:
➢ 软件构件间的接口设计 ➢ 软件和其它硬件或软件间的接口设计 ➢ 人与计算机间交互信息的界面设计
4
减轻用户的记忆负担: ➢ 减少对短期记忆的要求 ➢ 建立有意义的缺省 ➢ 定义直观的快捷方式 ➢ 界面的视觉布局应该基于真实世界的象征 ➢ 以不断进展的方式揭示信息
5
保持界面一致: ➢ 允许用户将当前任务放入有意义的环境中 ➢ 在应用系统家族内保持一致 ➢ 和用户已有的合理的交互模型保持一致
6
➢ 用户分析---属于哪一类用户、用户访谈、零售输入、市场输入、 支持输入
➢ 任务分析和建模---使用用例、任务细化、对象细化、工作流分 析、层次表示。
➢ 显示内容分析 ➢ 工作环境分析9• 11.4 界面设计步骤
➢ 应用界面设计步骤 ➢ 界面设计模式----完整用户界面、页面布局、表格和输入、
表、直接数据操作、导航、搜索、页面元素、电子商务、 其它
114界面设计步骤界面设计模式完整用户界面页面布局表格和输入表直接数据操作导航搜索页面元素电子商务其它10设计时应注意的问题系统响应时间时间长度和可变性帮助设施错误处理菜单和命令标记应用的可访问性国际化115设计评估初步设计建立原型的1界面用户评估界面建立原型的n界面需要进行的设计修改设计者研究评估结果界面设计完成图114界面设计的评估周期11评估标准
软件工程ppt课件完整版
![软件工程ppt课件完整版](https://img.taocdn.com/s3/m/c17e003900f69e3143323968011ca300a6c3f693.png)
使用缺陷管理工具对缺陷进行 跟踪,确保每个缺陷都得到处 理。
缺陷修复
开发人员对缺陷进行分析并修 复,然后提交给测试人员进行 验证。
回归测试
对修复后的缺陷进行回归测试 ,确保修复没有引入新的缺陷
。
质量评估与改进
质量评估
定期对软件产品的质量进行评估,包括功能 、性能、安全等方面。
过程改进
对软件开发过程进行持续改进,提高开发效 率和软件质量。
,提高代码的可读性和可维护性。
模块化开发
02
采用模块化开发方式,将系统划分为不同的模块进行开发,提
高开发效率和质量。
错误处理
03
对可能出现的错误进行充分的考虑和处理,包括异常捕获、日
志记录和错误提示等,确保系统的稳定性和可靠性。
05 测试与质量保证
测试类型及方法
功能测试对软件产品的各项功 进行验证,确保符 合需求和设计。
同时引入了风险管理机制。
螺旋模型的主要阶段包括:制 定计划、风险分析、工程实施
和客户评估。
螺旋模型的优点在于其强调风 险分析和迭代开发,能够及时 发现并解决问题,降低项目风 险。
螺旋模型的缺点在于其需要较 高的项目管理能力和技术水平 ,且可能因为过度关注风险而 忽略其他重要因素。
敏捷开发模型
敏捷开发的主要实践包括:短周期迭代开发、 持续集成、持续交付和自动化测试等。
水平。
04
迭代增量模型的优点在于其能够逐步增加系统功能和 性能,降低项目风险,同时也能够及时发现并解决问 题。
03 需求分析与管理
需求获取与整理
确定需求来源
与客户、利益相关者、业务领域 专家等进行沟通,明确需求背景
和范围。
《软件工程电子教案》课件
![《软件工程电子教案》课件](https://img.taocdn.com/s3/m/aa71e590ab00b52acfc789eb172ded630a1c9847.png)
《软件工程电子教案》PPT课件第一章:软件工程概述1.1 软件工程的定义解释软件工程的含义和目的强调软件工程的重要性1.2 软件开发生命周期介绍软件开发生命周期的基本阶段讨论每个阶段的关键活动和任务1.3 软件工程原则介绍软件工程的基本原则解释每个原则的重要性和应用第二章:需求分析2.1 需求分析的重要性强调需求分析在软件工程中的作用解释需求分析的目标和结果2.2 需求收集和分析方法介绍需求收集和分析的主要方法讨论每种方法的优缺点和适用场景2.3 需求规格说明书解释需求规格说明书的结构和内容强调需求规格说明书的重要性和维护第三章:软件设计和架构3.1 软件设计的重要性强调软件设计在软件工程中的作用解释设计的目标和结果3.2 软件架构设计介绍软件架构设计的基本概念和方法讨论架构设计的重要性和评估3.3 详细设计解释详细设计的过程和工具强调详细设计的重要性和与实现的关联第四章:软件实现和编码4.1 编码的重要性强调编码在软件工程中的作用解释编码的目标和结果4.2 编程语言和工具介绍常用的编程语言和开发工具讨论每种语言和工具的适用场景和特点4.3 编码规范和最佳实践解释编码规范和最佳实践的作用强调遵循规范和最佳实践的重要性第五章:软件测试和验证5.1 软件测试的重要性强调软件测试在软件工程中的作用解释测试的目标和结果5.2 测试方法和策略介绍常用的软件测试方法和策略讨论每种方法和策略的适用场景和优缺点5.3 测试用例和测试覆盖率解释测试用例的设计和编写强调测试覆盖率的重要性和评估方法第六章:软件维护和演化6.1 软件维护的概念解释软件维护的定义和目的强调软件维护的重要性6.2 维护活动和维护过程介绍软件维护的主要活动和过程讨论每个活动的关键任务和挑战6.3 软件演化模型介绍软件演化的一些常见模型讨论每种模型的适用场景和特点第七章:软件项目管理7.1 软件项目管理的重要性强调软件项目管理在软件工程中的作用解释项目管理的目标和结果7.2 项目管理工具和技术介绍常用的软件项目管理工具和技术讨论每种工具和技术的适用场景和优缺点7.3 项目计划和进度控制解释项目计划的概念和过程强调进度控制的重要性和方法第八章:软件质量保证8.1 软件质量的概念解释软件质量的定义和重要性强调软件质量保证的作用8.2 质量标准和质量模型介绍常用的软件质量标准和模型讨论每种标准和模型的适用场景和特点8.3 质量保证过程和活动解释质量保证的过程和主要活动强调质量保证的重要性和实施方法第九章:软件工程伦理和法律问题9.1 软件工程伦理问题讨论软件工程中的伦理问题,如知识产权、隐私等强调软件工程师的伦理责任和行为准则9.2 软件工程法律问题介绍软件工程中涉及的法律问题,如版权、合同等讨论法律问题对软件工程的影响和应对策略9.3 合规性和标准化解释软件工程的合规性和标准化的概念强调合规性和标准化的作用和实施方法第十章:软件工程前沿技术10.1 软件工程新技术介绍软件工程中的一些前沿技术,如、云计算等讨论每种技术的应用场景和前景10.2 技术趋势和挑战讨论软件工程中的技术趋势和面临的挑战强调应对技术趋势和挑战的方法和策略10.3 未来软件工程的发展展望未来软件工程的发展方向和趋势强调软件工程师在未来的角色和责任重点和难点解析重点环节一:软件工程的定义和目的重点关注软件工程的定义和目的,理解软件工程的核心目标和原则。
《软件工程》PPT课件
![《软件工程》PPT课件](https://img.taocdn.com/s3/m/5de21f7ca22d7375a417866fb84ae45c3a35c25f.png)
设计方法
E-R图、范式化、反范式化等
优化策略
索引优化、查询优化、存储优化等
04
软件测试与质量保证
测试策略与计划制定
确定测试目标
明确测试的目的和范围,确保测试工作有针对 性。
制定测试计划
根据测试目标,制定详细的测试计划,包括测 试资源、时间表、风险管理等。
选择测试方法
根据软件特点和测试需求,选择合适的测试方法,如黑盒测试、白盒测试、灰 盒测试等。
《软件工程》PPT课件
目录
• 引言 • 软件需求分析 • 软件设计与开发 • 软件测试与质量保证 • 软件维护与演化 • 软件工程管理与实践
01
引言
软件工程概述
软件工程定义
软件工程是一门研究计算机软件开发、 维护和管理的科学,旨在通过系统方 法、工具和技术来提高软件开发的效 率和质量。
软件工程的目标
B
C
D
持续改进与优化
在项目执行过程中,不断总结经验教训, 持续改进和优化项目管理流程和方法。
迭代开发与交付
通过短周期的迭代开发和交付,不断收集 用户反馈,及时调整产品方向和开发计划。
THANKS
感谢观看
回归测试
02
03
缺陷分析
在修复缺陷后,进行回归测试以 验证修复效果,确保软件质量得 到提升。
对缺陷进行统计分析,找出缺陷 产生的原因和规律,为改进软件 开发过程提供依据。
质量保证措施
代码审查 通过代码审查,检查代码是否符合编码
规范和设计要求,提高代码质量。
质量度量与监控 建立质量度量体系,对软件质量进行 度量和监控,及时发现和解决问题。
在给定成本和时间内,设计、实现和 维护软件系统。同时,软件工程也致 力于开发高质量、高可靠性和易于维 护的软件产品。
电子科大计算机网络PPT第二章
![电子科大计算机网络PPT第二章](https://img.taocdn.com/s3/m/74211f761711cc7931b71643.png)
不需要编写网络核心设备上的软件
网络核心设备不作用于应用层 这种设计使得能够快速开发应用
application transport network data link physical
application transport network data link physical
2: Application Layer
某些应用(如音频)能够容
忍某些丢失
其他应用(如文件传输,
Telnet)要求100%可靠数 据传输
实时性保障 某些实时应用(如因特网 电话、交互式游戏)要求 “有效的”低时延 其他应用(如文件传输) 对时延较为宽容
最小带宽保障(吞吐量) 某些带宽敏感应用(如多 媒体)要求“有效的”最 小量的带宽 其他应用(”弹性应用 “)充分利用可供使用的 带宽 自适应编码技术,使得如 多媒体应用有一定的弹性 安全性保障
很多应用是客户机/服务器与P2P 的混合
voice-over-IP P2P 应用 集中式的服务器: 获得对方的地址 用户之间的连接: 直接 (不通过服务器) 文件传送P2P 集中式文件搜索:
Napster(类似于国内的酷狗)
即时讯息qq等
• 对等方在中心服务器上注册内容 • 对等方查询相同的中心服务器以定位内容
应用层
19
Chapter 2:应用层
2.1 应用层协议原理 2.2 Web和HTTP 2.3 FTP *2.6 P2P 文件共享 2.7 TCP的套接字编程 2.8 UDP的套接字编程
2.4 电子邮件 SMTP, POP3, IMAP
2.5 DNS
2: Application Layer
《软件工程电子教案》课件
![《软件工程电子教案》课件](https://img.taocdn.com/s3/m/9fbc3d80b8f3f90f76c66137ee06eff9aff84940.png)
《软件工程电子教案》PPT课件第一章:软件工程概述1.1 软件与软件工程的概念解释软件的定义和特点介绍软件工程的目标和方法1.2 软件生命周期描述软件从需求分析到维护的各个阶段解释软件生命周期的主要活动和任务1.3 软件工程原则介绍软件工程的基本原则,如模块化、抽象化、逐步求精等解释这些原则的重要性及其在软件开发中的应用第二章:需求分析2.1 需求分析概述解释需求分析的目的和重要性介绍需求分析的主要任务和方法2.2 需求收集与分析介绍需求收集和分析的技术和工具解释如何确定用户需求和系统功能2.3 需求规格说明书解释需求规格说明书的编写和作用提供一个需求规格说明书的基本结构示例第三章:软件设计3.1 软件设计概述解释软件设计的概念和目的介绍软件设计的主要任务和方法3.2 总体设计解释总体设计的重要性和主要任务介绍总体设计的常用技术和工具3.3 详细设计解释详细设计的重要性和主要任务介绍详细设计的常用技术和工具第四章:编程与编码4.1 编程语言选择解释编程语言选择的重要性和考虑因素介绍常用的编程语言及其特点4.2 编码规范与技巧解释编码规范的意义和作用介绍编码规范的基本要求和常用技巧4.3 代码审查与优化解释代码审查的目的和重要性介绍代码审查的方法和技巧第五章:软件测试与维护5.1 软件测试概述解释软件测试的目的和重要性介绍软件测试的主要任务和方法5.2 测试用例设计与执行解释测试用例的设计原则和方法介绍测试用例的执行和缺陷跟踪5.3 软件维护解释软件维护的定义和重要性介绍软件维护的主要任务和方法《软件工程电子教案》PPT课件第六章:项目管理6.1 项目管理概述解释项目管理的概念和重要性介绍项目管理的主要任务和方法6.2 项目计划与组织解释项目计划的目的和内容介绍项目组织和团队建设的方法6.3 项目进度控制与风险管理解释项目进度控制的方法和工具介绍项目风险识别、评估和应对策略第七章:软件质量保证7.1 软件质量概述解释软件质量的概念和重要性介绍软件质量保证的目标和方法7.2 软件质量标准和评估解释软件质量标准的概念和分类介绍软件质量评估的方法和工具7.3 软件质量保证活动解释软件质量保证活动的内容和类型介绍软件质量保证计划在项目中的实施方法第八章:软件开发工具与环境8.1 软件开发工具概述解释软件开发工具的概念和作用介绍常用的软件开发工具类别和特点8.2 集成开发环境(IDE)解释IDE的概念和功能介绍主流IDE工具的使用方法和特点8.3 软件configuration management解释软件配置管理的重要性介绍软件配置管理工具和最佳实践第九章:面向对象方法9.1 面向对象概述解释面向对象的原理和特点介绍面向对象方法的主要概念,如类、对象、继承等9.2 面向对象分析解释面向对象分析的目标和方法介绍UML(统一建模语言)在面向对象分析中的应用9.3 面向对象设计解释面向对象设计的任务和原则介绍设计模式的概念和常用设计模式第十章:软件工程案例分析10.1 案例分析概述解释软件工程案例分析的目的和方法介绍案例分析的步骤和技巧10.2 案例分析实例提供一个或多个软件工程案例分析的具体实例分析案例中的成功经验和问题所在解释案例分析报告的结构和内容重点和难点解析重点环节1:软件生命周期软件生命周期是软件工程的基础,包括软件开发的各个阶段,如需求分析、设计、编码、测试和维护等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章 软件维护
8.1 软件维护的基本概念
8.2 软件维护的过程 8.3 软件维护技术 8.4 软件可维护性 8.5 软件再工程
8.1软件维护的基本概念
8.1 软件维护的基本概念
软件维护是指软件系统交付使用以后,为了改正错误或满足新的 需求而修改软件的过程。
软件维护工作处于软件生命期的最后阶段,维护阶段是软件生存 期中最长的一个阶段,其花费高达整个软件生命期花费的约60-70%。 因此,应充分认识到维护工作的重要性和迫切性,提高软件的可维护 性,减少维护的工作量和费用,延长已开发软件的生命期,以发挥其 应有的效益。
点击选择 维护内容
纠错性维护(Corrective Maintenance)
适应性维护(Adaptive Maintenance)
预防性维护(Preventive Maintenance)
8.1.2 软件维护的类型
图8.1表示各种维护所占的比例,显 然完善性维护所占的比例最大。
预防性 维护4%
二、软件维护的策略
针对以上几种类型的维护,可采取相 应的维护策略,以提高维护效率,降低维 护成本。
1、纠错性维护策略
开发过程中采用新技术,利用应用软 件包,提高系统结构化程度,进行周期性 维护审查等。
完善性 维护50%
纠错性 维护 25%
适应性 维护21%
纠错性维护 适应性维护 完善性维护 预防性维护
图8.1 各类维护所占的比例Βιβλιοθήκη 8.1.4 软件维护的代价
二、软件维护的工作量模型
维护活动分为生产性活动和非生产性活动。 生产性活动 包括分析评价、修改设计和编写程序代码等。 非生产性活动 包括理解程序代码,解释数据结构,接口特点和设 计约束等。 Belady 和 Lehman 提出软件维护工作模型:
M=P+K*EXP(C - D) 其中:
M—维护工作的总工作量 P—生产性活动的工作量 K—经验常数 C—程序复杂度(由非结构化维护引起的) D—对维护软件熟悉程度的度量 显然,若C越大,D越小,则维护工作量成指数增长,为此,必须 防止出现非结构化维护并尽可能由熟悉软件的原开发人员参加维护。
8.2 软件维护的过程
8.2 软件维护的过程
由于软件的发展非常迅速,显然,对软件进行维护的目的是为了纠 正软件开发过程未发现的错误,增强、改进和完善软件的功能和性能, 以适应软件的发展,延长软件的寿命。
8.1.2 软件维护的类型
8.1.2 软件维护的类型
一、按照不同的维护目的,维护工作可分成4类。
完善性维护(Perfective Maintenance)
8.1.3 软件维护的特性
一、时间长、工作量大、成本高
维护阶段是软件生存期中最长的一个阶段,软件维护的工作量占整个 软件生存期的70%以上(图8.2),而且还在逐年增加。因此,如何减少 软件维护的工作量,降低软件维护的成本,就成为提高软件维护效率和质 量的关键。
二、维护的副作用
维护的副作用是指由于修改程序而导致新的错误 或者新增加一些不必要的活动。
太累了!受不了啦! 几万行程序怎么改 哦???
结构化维护 — 指软件开发过程是按照软件工程方 法进行的,开发各阶段的文档齐全,软件的维护过程, 有一整套完整的方案、技术、审定过程及文档。
可以看到,维护工作的难度及工作量的大小,明显的与前期的开发工作 密切相关。
8.1.4 软件维护的代价
8.1.4 软件维护的代价
8.1.3 软件维护的特性
三、软件维护的困难
由于软件维护工作通常并不由软件的设计和开发人员来完成,维护人 员首先要对软件各阶段的文档和代码进行分析、理解。因而出现了理解别 人的程序困难、文档不齐等问题,尤其是对大型、复杂系统的维护,更加 困难和复杂,甚至是不可能的!
1、结构化维护与非结构化维护
非结构化维护 — 缺乏必要的文档说明,文档缺少 或者不一制,难于确定数据结构、系统接口等特性,这 样的维护工作令人生畏,事倍功半。
8.1.1 软件维护的定义
8.1.1 软件维护的目的
软件维护是指在软件运行/维护阶段对软件产品进行的修改活动。 通常要求进行维护的主要原因有: 在运行中发现在测试阶段未能发现的软件错误和设计缺陷; 需要改进设计,以增强软件的功能,提高软件的性能; 要求已运行的软件能适应特定的硬件、软件、外部设备和通信设备 等的工作环境,或是要求适应已变动的数据或文件; 为使投入运行的软件与其它相关的程序有良好的接口,以利于协同 工作; 为使运行软件的应用范围得到必要的扩充。
一、软件维护工作量大
维护费用高达开发费用的60% — 70%,而且逐年上涨。维护中还可 能引入新的潜在错误。要减少维护工作量,首先要考虑影响软件维护的 因素。
影响软件维护工作量和成本的因素很多,主要有以下方面: 1、系统的大小 系统越大,功能就越复杂,维护工作量就越大。 2、程序设计语言 语言的功能越强,生成程序所需要的指令(程序) 越少,而且程序的可读性也越好,维护工作量也就越小。 3、系统年龄 系统越老,修改维护的次数就越多,结构也就越乱。 因此维护工作量也就越大。 4、软件开发新技术的应用 软件开发过程中,使用先进的分析和设 计技术,以及程序设计技术,如:面向对象的技术、构件技术、可视化 程序设计技术等,可以减少维护工作量。
1、修改代码的副作用
其余 29%
维护 71%
在修改源代码时,可能引起的错误。 2、修改数据的副作用
图8.2 维护工作比例
在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导 致软件出错。数据副作用就是修改软件信息结构导致的结果。
3、修改文档的副作用
对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技 术文档进行相应修改。但修改文档过程会产生新的错误,导致文档与程序 功能不匹配,缺省条件改变等错误,产生文档的副作用。
2、适应性维护策略
对可能变化的因素进行配置管理,将因环境变化而必须修改的部分局部 化,即局限于某些程序模块等。
3、完善性维护策略
除了可以使用前面两类维护的策略外,还有使用功能强、使用方便的工 具,采用原型化方法开发等,也可提高可维护性。
4、预防性维护策略 常采用提前实现、软件重用等技术。
8.1.3 软件维护的特性