论文部分内容阅读
随着计算机系统应用的不断普及和深入,其中软件系统的规模和复杂性不断增大,如何有效地控制软件系统的复杂性已成为学术界和工业界迫切需要解决的重要问题。除了功能性需求之外,现代软件系统还需要满足越来越多的非功能性需求(属性),这也是软件系统复杂性难以控制的重要原因。在软件模块化设计和实现过程中,由于系统的非功能属性与基本功能行为间通常存在正交的耦合关系,从而横切多个基本功能模块,因此难以将其自然地封装在独立的模块之中,进而导致多个模块间存在相互依赖的复杂关系,在系统设计、实现、测试、维护等多个环节中形成了障碍、增加了软件系统的复杂性。本文针对若干软件非功能属性,研究了相应的设计和实现技术,主要工作如下:1.基于UML活动图的面向方面软件建模与验证面向方面软件技术引入了方面机制封装软件非功能属性,已成为处理非功能属性的重要手段。我们提出了一种基于UML活动图的面向方面建模与验证技术,在软件设计阶段将非功能属性封装为方面模型,在与基本模型集成后,基于Petri网和CTL进行验证,从而扩展和增强了面向方面建模技术处理软件非功能属性的能力。2.基于混合执行测试的缓冲区溢出缺陷检测缓冲区溢出是一类常见的软件安全缺陷(非功能缺陷),我们提出了一种基于混合执行测试的缓冲区溢出缺陷检测方法。该方法结合静态分析和动态执行两种互补性较强的技术,先使用静态分析工具分析程序中涉及缓冲区溢出缺陷的可疑语句,然后基于静态分析所报告的可疑缺陷语句指导程序的混合执行测试,从而有效降低了缺陷检测成本。3.针对计算误差处理的面向方面程序设计计算误差处理是科学计算程序中常见的非功能属性。我们发现,同一类误差的处理策略通常都是相似的,并且会横切多个基本功能模块,是典型的横切关注点。因此,我们提出使用面向方面技术将计算误差策略封装为方面,并在一个真实的卫星轨道测算系统上进行了实例研究。该项工作不仅提高了程序的模块化程度和可维护性,而且扩大了面向方面程序设计技术的应用范围。