软件设计的进化.pptx
文本预览下载声明
1
软件设计的进化
2
内容
10.1 遗留系统
10.2 软件的进化策略
10.3 软件再工程
10.4 软件体系结构的进化
10.5 代码重构和数据重构
10.6 软件移植
第1页/共46页
3
遗留系统
遗留系统是过去开发的计算机系统,通常使用了目前已经过时或不再使用的技术。
这些系统的开发可能在生命周期中一直持续,通过变更来适应新需求、新运行平台等方面的变化。
遗留系统不仅包括硬件和软件,还包括遗留的业务过程和步骤。对这类系统的一部分进行变更将不可避免地导致其它组成部分的变更。
第2页/共46页
4
遗留系统的组成
第3页/共46页
5
遗留系统的层次模型
第4页/共46页
6
内容
10.1 遗留系统
10.2 软件的进化策略
10.3 软件再工程
10.4 软件体系结构的进化
10.5 代码重构和数据重构
10.6 软件移植
第5页/共46页
7
(1)进化策略的分类
遗留软件的维护和升级将会受到预算、期限等多种因素的约束,因此开发者需要对遗留软件系统的实际情况进行评价,然后选择最合适的进化策略:
完全放弃该软件
不改变该软件系统并继续进行常规的维护
对软件系统实施再工程(re-engineering)以提高可维护性
用新系统替换遗留软件系统的全部或其中一部分
第6页/共46页
8
(2)进化策略的选择
选择合适的进化策略需要对遗留软件系统进行准确的评价。
在对遗留软件进行评价时,业务需求和技术这两个方面均要进行考虑。
第7页/共46页
9
遗留软件系统的评价
第8页/共46页
10
业务价值的评价
为了评价一个系统的业务价值,首先需要明确系统最终用户及其管理者,并从下面四个主要方面对系统进行考察:
系统的使用
系统支持的业务过程
系统的可靠性
系统的输出
第9页/共46页
11
系统质量的评价
从技术角度来评价一个软件系统,需要同时考虑应用软件本身以及软件运行的环境。
环境包括硬件和所有相关的支撑软件,例如对于系统维护所需要的编译器等。
认为环境很重要的原因是,很多软件系统的变更是由于环境变更导致的,例如硬件或操作系统的升级。
如果可能,在环境评价的过程中,应对系统及其维护过程的某些方面进行度量。
第10页/共46页
12
环境评价考虑的因素
因素
问题
厂商稳定性
供应商是否仍然存在?供应商经济上是否稳定并可能会继续存在?如果供应商不再存在,是否有其他人来维护系统?
失效率
硬件是否有较高的失效率?支撑软件是否会崩溃并迫使系统重启?
已使用时间
硬件和软件已经使用多久?硬件和支撑软件使用越久,就会越陈旧,尽管可能仍正常运转,但这时迁移到现代系统中有可能带来更显著的经济和商业利益。
性能
系统的性能是否足够?性能问题是否对系统使用者有明显的影响?
保障需求
硬件和软件需要哪些本地保障?如果保障的成本较高,就值得考虑对现有系统进行替换。
维护成本
硬件维护和支撑软件许可证的成本如何?与现代系统相比,陈旧的硬件可能有较高的维护成本。支撑软件每年的许可证收费也可能较高。
互操作性
该系统与其它系统的接口如何?例如,编译器能否在当前版本的操作系统中使用?是否需要硬件模拟器?
第11页/共46页
13
技术评价考虑的因素
因素
问题
可理解性
理解当前软件源代码的困难程度如何?其使用的控制结构有多复杂?变量是否具有能反映其使用的、有意义的命名?
文档
有哪些软件文档可用?文档是否完整、一致、有效?
数据
软件系统是否有数据模型?数据在文件间复制的程度有多大?系统使用的数据是否是最新和一致的?
性能
软件系统的性能是否足够?性能问题是否对用户有显著影响?
程序设计语言
用来开发软件的程序语言是否有可用的现代编译器?该程序语言是否还在新软件的开发中使用?
配置管理
软件所有部分的所有版本是否由一个配置管理系统进行管理?当前软件系统中使用的组件版本是否有清楚的描述?
测试数据
是否存在系统测试数据?在往系统中加入新特征后,是否实施了回归测试,并进行相应的记录?
人员技术能力
是否有人具有维护该系统的技术?是否只有有限数目的人员理解该系统?
第12页/共46页
14
内容
10.1 遗留系统
10.2 软件的进化策略
10.3 软件再工程
10.4 软件体系结构的进化
10.5 代码重构和数据重构
10.6 软件移植
第13页/共46页
15
再工程的概念
软件系统的进化过程包括对必须改进的程序进行理解,然后实现相应的改进。
但是,对于许多存在已久的遗留系统,这些系统已经难以理解和更改。
对这些遗留软件进行维护的成本甚至会超过用户所能容忍的程度。
这样,就需要通过再工程来对软件系统进行重建,改进其功能和性能以满足用户的最新需要,并提高整个系统的可靠性和可维护性。
第14页/共46页
16
再工程的优点
显示全部