time 
设为首页】【收藏本站
当前位置: 主页 > 软件工程 > 软件过程 > 程序设计方法的演化及极限

程序设计方法的演化及极限

时间:2009-12-04 22:56 点击:862次 字体:[ ]




  4.后面向对象方法

  虽然面向对象程序设计方法有诸多优点,但经过多年的实践摸索,人们也发现面向对象方法有其不足,如许多软件系统不完全都能按系统的功能来划分构件, 仍然有许多重要的需求和设计决策,比如安全、日志等,它们具有一种“贯穿特性”(crosscutting concerns),无论是采用面向对象语言还是过程型语言,都难以用清晰的、模块化的代码实现。最后的结果经常是:实现这些设计决策的代码分布贯穿于整个系统的基本功能代码中,形成了常见的“代码散布”(code scattering)和“代码交织”(code tangling)现象。代码交织现象是现有软件系统中许多不必要的复杂性的核心。它增加了功能构件之间的依赖性,分散了构件原来假定要做的事情,提供了许多程序设计出错的机会,使得一些功能构件难以复用,源代码难以开发、理解和发展。

  因此,人们在面向对象的基础上发展了更多的新技术,借以弥补面向对象技术的缺陷,使得面向对象技术能够更好的解决软件开发中的问题。这些建立在面向对象的基础上、并对面向对象做出扩展的新技术被广泛应用的时期,我们把它称为“后面向对象时代”。在后面向对象时代,有许多新型的程序设计思想值得关注。

  4.1 面向方面程序设计

  面向方面程序设计(Aspect-Oriented programming, AOP)方法,这一概念最早是由施乐(Xerox)公司在美国加州硅谷PaloAlto 研究中心(PARC)的首席科学家、加拿大大不列颠哥伦比亚大学教授Gregor Kicgales 等人首次在1997 年的欧洲面向对象编程大会(ECOOP 97)上提出[4]。

  所谓的Aspect,就是AOP提供的一种程序设计单元,它可以将上文提到的那些在传统程序设计方法学中难于清晰地封装并模块化实现的设计决策,封装实现为独立的模块。 Aspect是AOP的核心,它超越了子程序和继承,是AOP将贯穿特性局部化和模块化的实现机制。通过将贯穿特性集中到Aspect中,AOP就取得一种单一的结构化行为---该行为在传统程序中分布于整个代码中--这样就使Aspect代码和系统目标都易于理解。在AOP中,Aspect是AOP中的一阶实体,AOP中的Aspect正如OOP中的类。现有对Aspect的认识有错误校验策略、设计模式、同步策略、资源共享、分布关系和性能优化等。

  Aspect的实现和传统开法方法中模块的实现不同。Aspect之间是一种松耦合的关系,各Aspect的开发彼此独立。主代码的开发者甚至可能没有意识到Aspect的存在,只是在最后系统组装时刻,才将各Aspect代码和主代码编排融合在一起。因此,主代码和Aspect之间可以是一种不同于传统“显式调用”关系的“隐式调用”[5]。在软件复杂性日益增加的今天,隐式调用有巨大的优点,因为某一应用的领域专家,不太可能对分布、认证、访问控制、同步、加密、冗余等问题的复杂的实现机制很熟悉,因此就不能保证他们在程序中进行正确的调用。在当前强调程序演化的情况下,这一点尤其重要,因为开发人员很难正确预见到未来对程序的新需求。

  AOP 是一种关注点分离技术,通过运用aspect 这种程序设计单元,允许开发者使用结构化的设计和代码,反映其对系统的认识方式。要使设计和代码更加模块化、更具结构化,使关注点局部化而不是分散于整个系统中。同时,需使关注点和系统其他部分保持良好定义的接口,从而真正达到“分离关注点,分而治之”的目的。

  有关AOP更加详细的资料,读者可以进入希赛网(http://www.csai.cn)的“技术应用”频道中的“IT新技术”栏目,阅读相关的文章。

  4.2 面向Agent程序设计

  随着软件系统服务能力要求的不断提高,在系统中引入智能因素已经成为必然。Agent作为人工智能研究重要而先进的分支,引起了科学、工程、技术界的高度重视。斯坦福大学的Barbara Hayes-Roth在IJCAI'95的特约报告中提及:智能的计算机主体既是人工智能最初的目标,也是人工智能最终的目标。

  在计算机科学主流中,Agent的概念作为一个自包含、并行执行的软件过程能够封装一些状态并通过传递消息与其它Agent进行通信,被看作是面向对象程序设计的一个自然发展。Agent具有以下主要特征:

  (1) 代理性(Action On Behalf Others)。代理具有代表他人的能力,即它们都代表用户工作。这是代理的第一特征。

  (2) 自制性(Autonomy)。一个代理是一个独立的计算实体,具有不同程度的自制能力。它能在非事先规划、动态的环境中解决实际问题,在没有用户参与的情况下,独立发现和索取符合拥护需要的资源、服务等等。



本文地址 : http://www.fengfly.com/plus/view-159869-1.html
标签: 代码 方法 程序设计 演化 极限 面向
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: