软件维护概述



现在软件维护是SDLC的一部分。它代表了所有的修改和软件产品的交付之后更新完成。有原因,为什么修饰是必需的,其中一些在下面进行简要提到数:

  • 市场条件 - 政策,这改变了的时候,如税收和新引入的约束一样,如何保持记账,可能会触发需要进行修改.

  • 客户要求 - 客户可能会要求在软件的新特性或功能.

  • 主机修改 - 如果任何目标主机中的硬件和/或平台(如操作系统)的,需要修改软件,以保持适应性。.

  • 组织的变化 - 如果有任何业务层面的变化,在客户端,比如减少组织的实力,收购另一家公司,机构进军新的业务,需要在原有的软件可能会出现修改.

维修的类型

在软件生命周期,维护类型可以根据其性质不同而不同。它可能只是一个例行的维护任务,一些用户发现了一些bug或者基于维护规模或性质,它可能是一个大的事件本身。以下是一些类型基于其特性的维护:

  • 纠正性维护 - 这包括修改和升级换代,以便纠正或解决问题,这是任一发现用户或由用户错误的报告得出的结论进行.

  • 自适应维护 - 这包括修改和升级应用,以保持软件产品最多,更新和调整,以技术和业务环境的不断变化的世界.

  • 完成式维护 - 这包括修改和升级换代,以便保持该软件在长时间周期可用做。它包括的新功能,为完善软件,提高其可靠性和性能的新的用户需求.

  • 预防性维护 - 这包括修改和级换代,以防止该软件的未来的问题。它的目的是出席的问题,这是不能在这一刻显著但在将来可能会导致严重的问题.

维护成本

报告表明,维护成本高。在估算软件维护的一项研究发现,维修费用更是高达67%,整个软件流程周期的成本.

维修费用表

上的平均,软件维护的成本是所有SDLC阶段的50%以上。有各种因素,其中触发维护成本变高,如:

影响维护成本的现实世界中的因素

  • 任何软件的标准的年龄被认为是长达10至15年。.
  • 旧的软件,这是为了工作,慢的机器较少的内存和存储容量不能保持自己对现代新的硬件来增强软件的挑战.
  • 随着技术的进步,它变得代价高昂的维护旧软件.
  • 大多数维修的工程师都是新手,使用试错法来纠正问题.
  • 通常情况下,取得了很容易伤害到软件的原始结构,使其难以在任何后续的更改.
  • 化往往留下无证可能导致未来更多的冲突.

软件月底因素维修费用

  • 软件程序的结构
  • 编程语言
  • 依赖于外部环境
  • 员工的可靠性和可用性

维护活动

IEEE规定的顺序维护过程活动的框架。它可以在迭代的方式被使用,并且可以被扩展以便定制产品和过程可以包括在内

维护活动

这些活动去手牵手,每个以下阶段:

  • I识别与跟踪 - 它涉及到有关鉴定的修改或维修要求的活动。它是由用户或系统产生的本身可能通过日志或错误信息报告。这里,维护类型分类也.

  • 分析方法 - 修改了其对系统的影响,包括安全和安全的影响进行分析。如果可能的影响是严重的,可替代的解决方案是找。一组需要修改,然后兑现成要求的规格。修改/维护的成本进行了分析和估算得出.

  • 设计 - 新模块,这需要被替换或修改时,被设计针对在前一阶段设置的要求规格。测试用例的验证和确认创建.

  • 实施 - 新的模块编码​​在设计阶段创建结构化设计的帮助。每个程序员应该做单元测试.

  • 系统测试 - 集成测试新创建的模块中完成的。集成测试也进行了新的模块和系统之间。最后,系统进行测试作为一个整体,下面的回归测试程序.

  • 验收测试 - 内部测试系统后,它是接受用户的帮助下进行测试。如果在这种状态下,用户的投诉,他们正在解决或一些问题指出,在接下来的迭代来解决.

  • 交付 - 在验收测试,系统部署各地组织无论是小更新包或全新安装的系统。最后的测试发生在客户端软件到底交付后.

    训练设施,如果需要提供,除了用户手册的硬拷贝.

  • 维护管理 - 配置管理是系统维护的重要组成部分。它是辅助版本控制工具,版本控制,半版或补丁管理.

软件再工程

当我们需要更新的软件,它保持目前的市场,而不会影响其功能,它被称为软件再工程。这是一个全面的过程,软件设计变更和程序重新写入.

传统的软件跟不上调整与市场上现有的最新技术。作为硬件已经过时,软件更新成为一个头疼的问题。即使软件衰老随着时间的推移,它的功能没有.

例如,最初的Unix是用汇编语言开发的。当C语言应运而生,Unix的重新设计在C中,由于在汇编语言中的工作是困难的.

除此之外,有时程序员会注意到的软件几个部分需要比其他人更维护和它们还需要重新设计。.

再造的过程

重新设计流程

  • 决定要重新设计 - 它是整个软件或其中的一部分?

  • 执行反向工程 - 以获得现有的软件规范.

  • 重组计划 - 如果需要的话。例如,改变功能为导向的课程为面向对象的程序.

  • 重新构造数据 - 据需要.

  • 应用正向工程 - 的概念,以获得重新设计的软件.

还有在软件再工程中几个重要术语

逆向工程

这是一个过程,深入分析,了解现有的系统来实现系统的规范。这个过程可以看作是反向的SDLC模式,即我们试图通过分析较低的抽象层次,以获得更高的抽象水平.

现有系统是以前设计的实现。设计师然后做逆向工程通过查看代码,并试图让设计并尝试总结规范.

逆向工程

重组计划

它是一个过程,以重新构造和重新构造的现有软件。这是所有关于重新编排的源代码,无论是在相同的编程语言,或者从一个编程语言不同的一个。重组可以有代码,重组和数据重组或两者兼而有之.

重新构筑不会影响软件的功能,但提高可靠性和可维护性。程序组件,从而导致错误发生非常频繁是可以改变的,或者更新了重组.

软件的过时硬件平台的可靠性可通过重组被删除.

正向工程

正向工程是从中通过逆向工程的方式被放倒在手的规格得到所希望的软件的过程。它假定有一些软件工程在过去已经完成.

正向工程是一样的,只有一点区别的软件工程过程 - 它反向工程之后进行总.

正向工程

组件的可重用性

组件是软件的程序代码,它执行系统中的一个独立的任务的一部分。它可以是一个小的模块或子系统本身.

示例

登录程序在网络上使用可被视为组件,在软件的打印系统可以被看作是该软件的一个组件.

组件具有功能性高内聚和耦合率较低,也就是说,它们相互独立,可以不依赖于其他模块执行任务.

在面向对象的,被设计的目的是非常特定的关注,并有较少的机会在其它一些软件的使用.

在模块化编程,这些模块被编码以执行其可以跨越其他软件程序号被用于特定的任务.

有一个全新的垂直,这是基于再利用的软件组件,以及被称为基于组件的软件工程(CBSE).

组件

再利用可以在各个层次进行

  • 应用层 - 如果整个应用程序被用作新的软件子系统.

  • 组件级 - 当应用程序的子系统被使用.

  • 模块级 - 当被重新使用的功能模块.

    软件组件提供的接口,其可以用于建立不同的组件之间的通信.

再利用过程

可以采用两种方法:一是通过保持相同的要求和调整部件或组件保持不变,修改的要求.

再利用过程
  • 需求规格 - 功能性和非功能性需求被指定,软件产品必须符合其中,与现有的系统中,用户输入或两者的帮助.

  • 设计 - 这也是一种标准的SDLC过程步骤,其中要求在软件中用语的定义。系统的基本架构作为一个整体,其子系统中创建的.

  • 指定组件 - 通过对软件的设计,设计师隔离整个系统分成较小的组件或子系统。一个完整的软件设计,变成了一组组巨大的协同工作的集合.

  • 搜索合适的组件 - 软件构件库是由设计师称为搜索匹配元件,功能的基础上,拟软件要求上.

  • 集成组件 - 所有匹配组件打包在一起,塑造他们作为完整的软件.

Advertisements