不变量(Rep invariant)和抽象函数(Abstraction function)

不变量

        一个好的抽象数据类型的最终,也许是最重要的属性是它保留了自己的不变量不变量是程序的一个属性,对于程序的每个可能的运行时状态,它始终为真。不可变性是我们已经遇到的一个关键不变性:一旦创建,不可变对象在其整个生命周期中应始终表示相同的值。当 ADT 保留其自身的不变量时,对代码的推理就变得容易得多。如果可以指望字符串永远不会更改这一事实,则可以在调试使用字符串的代码时,或者在尝试为使用字符串的另一个 ADT 建立不变量时排除这种可能性。将其与可变字符串类型进行对比,可变字符串类型可由有权访问它的任何代码进行更改。

抽象函数: 

        表示值(或简称 rep 值)的空间由实际实现实体的值组成。在简单的情况下,抽象类型将实现为单个对象,但更常见的是需要一个小的对象网络,因此此值实际上通常是相当复杂的东西。抽象值的空间由类型旨在支持的值组成。这些都是我们想象力的虚构。它们是柏拉图式实体,并不像描述的那样存在,但它们是我们想要查看抽象类型的元素的方式,作为该类型的客户端。例如,无界整数的抽象类型可能将数学整数作为其抽象值空间;例如,它可能被实现为基元(有界)整数数组的事实与该类型的用户无关。当然,抽象类型的实现者必须对表示值感兴趣,因为实现者的工作是使用 rep 值空间实现抽象值空间的幻觉。

  • 每个抽象值都由某个rep值映射到. 实现抽象类型的目的是支持对抽象值的操作。那么,我们大概需要能够创建和操作所有可能的抽象值,因此它们必须是可表示的。
  • 一些抽象值由多个rep值映射到. 这是因为表示不是一个严格的编码。有多种方法可以将无序的字符集表示为字符串。
  • 并非所有的rep值都被映射. 在本例中,字符串“abbc”没有被映射,因为我们已经决定rep字符串不应该包含重复项。这将允许我们终止remove方法,因为我们知道最多只能有一个。

       软件体系结构设计既然作为软件工程的一部分,它的计算机辅助实现手段是相当重要的。我们应当开发出一些软件工具来实现体系结构的描述和分析,开发阶段转换工具,以实现阶段成果的自动转换,例如,把需求规格说明自动转换为构件等。目前关于这方面的研究成果很少,特别是可以应用到实际项目开发中的工具和环境就更少。

      当今软件系统的规模变得越来越大,结构也越来越复杂,同时从头开始构建的大系统数量在急剧地减少,因而很多遗留系统正在被逐步地利用.从遗留系统软件代码和系统中抽取结构信息,经过描述、统一、抽象、一般化与实例化等处理,可总结出系统的体系结构。

     在这种情况下,软件再工程变得越来越重要,因为它提供了一条把遗留系统转换为可进跳系统的现实可行的途径,是一种可以改进人们对软件的理解和改进软件本身的活动。这类研究的目的是为一些特定的应用领域的软件系统提供一些体系结构框架,如控制系统、移动机器人和用户接口界面等。通过这些框架可以很方便地构造一个新的软件系统。所以正确合理地运用软件体系结构的知识可以在项目开发中发挥它无穷的力量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值