论文部分内容阅读
在传统软件开发过程中,最困难的部分就是开发团队与软件使用人员之间的沟通,这也是软件项目失败或延期的常见原因。因为沟通不到位往往会引起需求不明确或歧义,导致返工。虽然随着软件开发技术的不断发展和完善,沟通环节所带来的弊端不断被减少,但依旧存在风险。同样的风险也存在于系统维护中。如何缓解系统开发和维护中需求不断变更所带来的压力?如何进一步提高系统开发和维护的效率?面对这些问题,本文以高校信息系统为研究领域,提出了一套面向最终用户编程的领域特定语言(DSL),并实现了该语言到Java的代码生成器。本文首先分析并研究了高校信息系统的特点,结合领域特定语言和最终用户编程技术,提出了一套适用于高校信息系统的特定领域语言。高校信息系统因业务繁多,逻辑复杂导致单以单层领域特定语言无法同时兼顾到面向最终用户和语言功能强大两个方面。本文采用分层的思想,从三个层次上设计了高校信息系统的领域特定语言:第一层,IDSL。这层是面向信息系统的最终用户编程DSL,本文参考了现有的信息系统DSL语言,根据MVC架构模式,从三个部分设计了IDSL:Model、View和Logic,分别对应数据模型、界面和后台逻辑。其中,Model由实体(Entity)组成,并提供增、删、改、查等多种方法,负责相应数据库表的存取;View通过少量标签支持信息系统中基本的页面定义,并提供增、删、改、查四种基本的业务逻辑操作操作;Logic支持顺序执行、条件分支和循环结构,并提供了变量申明,方法调用以及跳转至其它Logic或View的操作。此外IDSL不需要用户去定义参数的传递,从而减少了最终用户编程时的难度。第二层,UIDSL。这层是面向高校信息系统的最终用户编程DSL,本文在IDSL基础上,分析高校信息系统的共性,并以预定义特性的方式进行定义,包括预定义Enity、预定义View和预定义的逻辑操作。这些特性将减少最终用户编程的难度,提高最终用户的开发效率。第三层,SIDSL。这层是面向高校信息系统选课子领域的最终用户编程DSL。本文采用领域工程的方法分析系统的共性与可变性,然后统一共性并将可变性参数化以建立SIDSL语言。SIDSL语言采用XML方式进行编码,用户只需要对不同标签选用不同的值作为参数就可以定制选课子领域的不同特征。这种方式使最终用户在更高的抽象层上进行开发,编码也更简洁,效率更高。接着,根据高校信息系统输入模型复杂,逻辑可变性高这一特点,本文基于重写规则的程序转换技术和Spoofax框架,开发了I2J、U2I和S2U三套工具。最后,本文选择高校信息系统中的学生选课子系统,针对三层语言进行了三个实验。第一个实验表明IDSL编程比Java编程的效率要高;第二个实验表明UIDSL编程时间小于IDSL,开发效率更高;第三个实验表明示SIDSL的培训时间远小于UIDSL,开发时间略少于UIDSL,SIDSL更加面向最终用户,开发也效率更高。