论文部分内容阅读
构件技术和软件体系结构技术是提高软件生产率和软件质量、解决软件危机的关键技术,但目前这两种技术面临着许多挑战性问题,比如由于构件复用程度低、复用粒度小而导致构件技术难以为软件开发提供高质、高效的支持,由于软件体系结构设计与系统实现之间存在鸿沟而导致软件体系结构无法有效地指导软件开发等。这些挑战性问题使得构件技术和软件体系结构技术难以在软件开发中发挥应有的作用,如何解决这些问题得到了普遍关注。本文认为,构件模型和面向构件语言是解决目前构件技术和软件体系结构技术所面临挑战性问题的突破口,因此,本文将构件模型和面向构件语言作为研究的主要内容。在全面分析现有构件模型、面向构件语言及相关技术研究现状的基础上,本文以解决构件技术和软件体系结构技术所面临的挑战性问题为目标,以概念完整性和关注点分离原则为指导原则,重点在新型构件模型的研究、新型面向构件语言的设计与实现、实现从体系结构设计到系统底层代码映射的方法、构件接口信息的丰富等几个方面进行了系统深入的研究,主要工作包括:1.新型构件模型的研究。构件模型定义构件的本质特征及构件之间的关系,构件之间的关系与构件是两个不同的概念和关注点,在构件模型中都应该得到充分的支持。但现有构件模型对构件之间的关系,特别是对交互协作关系支持不足。针对这个问题,提出了一个基于软件体系结构的构件模型SACM。SACM引入了连接子概念,与构件具有同等地位的连接子用于显式地描述构件之问交互协作等关系。连接子的引入使得构件之间的交互协作在构件模型中真正成为独立于构件之外的一阶建模实体,从而为交互协作的描述、分析和验证提供了较好的支持。进一步,SACM将连接子分为被动连接子和主动连接子,被动连接子的引入使得计算与通信相分离,主动连接子的引入使得计算与控制、通信相分离,解决了现有构件模型中计算与控制、通信相混杂的问题。在对被动连接子和主动连接子进行比较的基础上,提出了基于被动连接子的构件组合方法和基于主动连接子的构件组合方法。2.新型面向构件语言的设计与实现。为更好地支持面向构件的软件开发,程序设计语言必须有相应的语言机制支持构件的封装、复用和组合,必须具备安全的类型系统,但现有的程序设计语言在不同程度上缺乏支持构件复用和组合的机制。针对这个问题,设计和实现了一门新的面向构件语言SAJ,SAJ的特色在于在程序设计语言中支持了软件体系结构的核心概念。与现有的程序设计语言相比,SAJ使用端口概念进一步增强了对构件封装性的支持,使用独立于构件以外的一阶实体一连接子来支持构件的复用和组合,强调在程序设计语言层次上为面向构件设计原则提供支持,从而更好地支持了面向构件的软件开发。给出了SAJ语言的语法、语义和类型系统。在类型系统中,给出了验证构件连接的正确性、构件之间交互协作的正确性等性质的类型推导规则。证明了SAJ语言的类型安全性,类型安全性使得基于SAJ的软件开发更加安全和实用。3.实现从体系结构设计到系统底层代码映射的方法。为使软件体系结构有效地指导软件开发,必须实现从体系结构设计到底层代码的映射,但目前缺乏成熟的解决方案。针对这个问题,在SACM和SAJ基础上,提出了一个两阶段映射的方法。两阶段映射包括从体系结构设计模型到详细设计模型(基于SACM的构件模型)的映射和从详细设计模型到底层实现(SAJ代码)的映射。构件模型SACM和面向构件语言SAJ都支持软件体系结构的核心概念,所以与其它解决方案相比,两阶段映射方法更加自然和实用,映射的正确性更容易得到保证,从而有助于保证系统实现与体系结构设计的一致性。给出了从详细设计模型到底层SAJ代码映射的实现方法。4.构件接口信息的丰富。从简单和实用的原则出发,研究了如何丰富构件接口信息。提出了构件请求服务与提供服务之间存在贡献关系和依赖关系的观点,进而提出在构件端口上显式描述贡献关系和依赖关系的方法,贡献关系和依赖关系的显式描述使构件能够更灵活地适应环境,能提高构件的复用程度。提出了服务参数值对构件行为协议有影响的观点,提出了在构件行为协议中显式描述服务参数值的方法。综上所述,本文的工作针对目前构件模型和面向构件语言中亟待解决的几个重要问题提出了有效的解决方案,对于推进构件模型和面向构件语言的研究,对于解决构件技术和软件体系结构技术所面临的挑战性问题,具有一定的理论意义和应用价值。