ImageVerifierCode 换一换
格式:PPTX , 页数:21 ,大小:168.43KB ,
资源ID:2484605      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2484605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(10_软件演化和维护.pptx)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

10_软件演化和维护.pptx

1、Shanghai Jiao Tong University,上海交通大学软件工程中心,软件工程,Module:软件演化和维护,思考软件演化的规律是如何的?软件维护就是改错吗?软件维护和软件新产品开发哪个更具挑战?软件维护的关键技术是什么?如何保证它的成 功?,Software Engineering,2,沈备军,软件演化和维护,软件演化软件维护,第9章.教材,Software Engineering,3,沈备军,演化性是软件的基本属性,Software Engineering,4,沈备军,“变化”是现实世界永恒的主题,只有“变 化”才能发展。Lehman认为,现实世界的系统要么变得越 来越没有

2、价值,要么进行持续不断的演化变 化以适应环境的变化。软件是对现实世界中问题空间与解空间的具 体描述,是客观事物的一种反映。现实世界 是不断演化的,因此,演化性是软件的基本 属性。,软件演化,Software Engineering,5,沈备军,什么是软件演化(Software Evolution)是指对软件进行维护和更新的一种行为,它是软 件生命周期中始终存在的变化活动。按生命周期的不同阶段,软件演化可分为:开发演化创造一个新软件的过程,它强调要在一定的约束条件 下从头开始实施,占软件演化的30%运行演化又称软件维护(Software Maintenance),是软件系 统交付使用以后,为了改

3、正错误或满足新的需要而修 改软件的过程,它强调必须在现有系统的限定和约束 条件下实施,占软件演化的70%。,软件开发演化与运行演化,在传统环境下,运行演化在开发演化后发生在网络环境下,开发演化与运行演化已呈现出交织 协同、并生共长的态势,软件运行状态改变的同时,软件版本也不断升级,Software Engineering,6,沈备军,Lehman的8条软件演化法则,Software Engineering,7,沈备军,(1974)持续变更法则。软件必须持续改进,否则就 会变得越来越不令人满意。(1974)复杂度递增法则。软件的复杂性随着演化不 断增加,除非采取措施使系统保持或降低复杂性。(19

4、74)自调节法则。软件的演化过程可以自动调节 产品分布和过程测量,以接近正常状态。(1978)组织稳定性法则。在软件的生命周期中,组 织的平均开发效率是稳定的。,(1978)通晓法则。随着软件的演化,所有相关人员(如 开发人员、销售人员和用户)都必须始终掌握软件的内 容和行为,以便达到满意的演化效果。软件的过度增长 会削弱对其内容和行为的通晓程度,因此软件应保持均 衡的增长率。(1991)功能持续增加法则。在软件的生命周期中,软件 功能必须持续增加,否则用户的满意度会降低。(1996)质量衰减法则。如果没有严格的维护和适应性调 整使之适应运行环境的变化,软件的质量会逐渐衰减。(1996)反馈系

5、统法则。软件演化过程是由多层次、多循 环、多主体的反馈系统组成,而且要想在任何合理的基 础上达到有意义的改进就必须这样进行处理。,Software Engineering,8,沈备军,软件演化和维护,软件演化软件维护,Software Engineering,9,沈备军,软件维护“冰山”,Software Engineering,10,沈备军,有关调查结果表明,软件维护是软件工程中 最消耗资源的活动,很多软件公司中软件维 护的成本已经达到了整个软件生存周期资源 的40%到70%,甚至达到了90%。软件系统趋于大型化和复杂化,大多数软件 在设计时没有考虑到将来的修改问题,常常 还伴有开发人员变动

6、频繁、文档不够详细、维护周期过长等等问题,这些问题导致维护 活动的时间与花费不断增加。,维护类型,Software Engineering,11,沈备军,纠错性维护(Corrective maintenance)由于软件中的缺陷引起的修改完善性维护(Perfective maintenance),根据用户在使用过程中提出的一些建设性意见而 进行的维护活动适应性维护(Adaptive maintenance)为适应环境的变化而修改软件的活动预防性维护(Preventive maintenance)为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础,维护的技术问题,Software

7、Engineering,12,沈备军,有限理解(Limited understanding),对他人开发 软件进行维护时,如何快速理解程序并找到需要修 改或纠错的地方?在软件维护过程中需要大量的回归测试,耗时耗力。当软件非常关键以致不能停机时,如何进行在线维 护而不影响软件的运行?影响分析,如何对现有软件的变更所进行的全面分 析?如何在开发中促进和遵循软件的可维护性?易分析性(Analyzability)、易改变性(Changeability)、稳定性(Stability)和易测试性(Testability),维护成本,维护的工作可划分成:生产性活动 如,分析评价、修改设计、编写程序代码等非生

8、产性活动 如,程序代码功能理解、数据结构解释、接 口特点和性能界限分析等维护工作量的模型,M:维护的总工作量;P:生产性工作量;K:经验常数;e:软件的规模;c:复杂程度;d:维护人员对软件的熟悉程度,Software Engineering,13,沈备军,影响维护成本的因素,Software Engineering,14,沈备军,操作环境:硬件和软件软件的规模越大、复杂性越高、年龄越大,硬件的 能力越低,软件维护的成本和工作量就越大。组织环境:策略、竞争力、过程、产品和个人软件开发过程和维护过程越规范,采用的设计方法 和编程语言模块化程度越高,工程师对软件的熟悉 程度越高、能力越强,产品的可

9、靠性和安全性要求 越低,软件维护的成本和工作量就越小。,维护过程,Software Engineering,15,沈备军,维护活动,Software Engineering,16,沈备军,过程实施(Process Implementation)。建立维护过程期间 应执行的计划和规程,包括维护计划、维护规程、问题解决 规程、用户反馈计划、移交计划、配置管理计划。问题和修改分析(Problem and Modification Analysis)。在修改软件前,要分析修改请求/问题报告,以确定其对组 织、现行系统和接口系统的影响,提出可能的方案建议并形 成文档,通过核准形成期望的解决方案。修改实现

10、(Modification Implementation)。根据计划和方 案更新相应的需求、设计和代码,并进行测试等软件验证工 作。,维护评审/接收(Maintenance Review/Acceptance)。对 上述的维护进行评审,以确保对软件的修改是正确的,并且 这些修改是使用正确的方法按批准的要求完成的。迁移(Migration)。在软件的生存周期期间,如果需要将 它迁移到一个新环境,则应制订迁移计划、通告用户迁移、提供迁移培训、把软件迁移至新环境、通告迁移完成情况、评估新环境的影响、并进行旧软件和数据的归档。在迁移实 施时,旧环境和新环境可以并行进行工作,以便平稳迁移到 新环境。退役

11、(Retirement)。软件一旦结束使用生存周期,必须退 役。退役时,要制定退役计划、通知用户退役、提供退役培 训、实施退役、通告退役完成情况、并进行旧软件和数据的 归档。在制定退役计划时,要分析退役的成本和影响、决定 是局部还是全部退役、是否用新软件来代替退役软件等。,Software Engineering,17,沈备军,软件维护技术,Software Engineering,18,沈备军,程序理解逆向工程(Reverse Engineering)再工程(Reengineering),程序理解,Software Engineering,19,沈备军,软件维护的总工作量大约一半被用在理解程

12、序上。程序理解通过提取并分析程序中各种实体之间的关 系,形成系统的不同形式和层次的抽象表示,完成 程序设计领域到应用领域的映射。程序员在理解程序的过程中,经常通过反复三个活 动阅读关于程序的文档,阅读源代码,运行程序 来捕捉信息。程序理解工具基于程序结构的可视化工具,通过分析程序的结构,抽取 其中各种实体,使用图形表示这些实体和它们之间的关系,可以直观地为维护者提供不同抽象层次上的信息。帮助维护者导航浏览源代码,为浏览工作提供着眼点,缩 小需要浏览的代码范围。,逆向工程,Software Engineering,20,沈备军,逆向工程是分析软件,识别出软件的组成成份及其相 互的关系,以更高的抽

13、象层次来刻画软件的过程,它 并不改变软件本身,也不产生新的软件。逆向工程主要分为以下几类:重新文档化(redocumentation):分析软件,改进或提供 软件新的文档。设计恢复(design recovery):从代码中抽象出设计信息;规约恢复(specification recovery):分析软件,导出需求 规约信息;重构(refactoring,restructuring):在同一抽象级别上转换 软件描述形式,而不改变原有软件的功能;数据逆向工程(data reverse engineering):从数据库物理 模式中获取逻辑模式,如实体关系图。,再工程,再工程是在逆向工程所获信息的基础上修改或重构已有的软 件,产生一个新版本的过程,它将逆向工程、重构和正向工 程组合起来,将现存系统重新构造为新的形式。,Software Engineering,21,沈备军,

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2