问题 问答题

试题一(共25分) 阅读以下关于软件架构风格的说明,在答题纸上回答问题。

[说明] 某软件公司为其新推出的字处理软件设计了一种脚本语言,专门用于开发该字处理软件的附加功能插件。

为了提高该语言的编程效率,公司组织软件工具开发部门为脚本语言研制一套集成开发环境。软件工具开发部门根据字处理软件的特点,对集成开发环境进行了需求分析,总结出以下3项核心需求:

(1)集成开发环境需要提供对脚本语言的编辑、语法检查、解释、执行和调试等功能的支持,并要实现各种功能的灵活组合、配置与替换。

(2)集成开发环境需要提供一组可视化的编程界面,用户通过对界面元素拖曳和代码填充的方式就可以完成功能插件核心业务流程的编写与组织。

(3)在代码调试功能方面,集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能。具体来说,在调试过程中,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处所对应的代码。

针对上述需求,软件工具开发部门对集成开发环境的架构进行分析与设计,王工认为该集成开发环境应该采用管道—过滤器的架构风格实现,李工则认为该集成开发环境应该采用以数据存储为中心的架构风格来实现。公司组织专家对王工和李工的方案进行了评审,最终采用了李工的方案。

在对软件系统架构进行设计时,要对架构需求进行分析,针对特定需求选择最为合适的架构风格,因此实际的软件系统通常会混合多种软件架构风格。请对核心需求进行分析,说明为了满足需求(2)和(3),分别应采用何种架构风格,并概要说明采用相应架构风格后的架构设计过程。

答案

参考答案:

为了满足需求(2),应该采用解释器架构风格。

具体来说,需要:

①为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;

②编写解释器对该语言进行解释;

③生成对应的脚本语言程序。

为了满足需求(3),应该采用隐式调用架构风格。

具体来说,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。

解析:

本问题主要考查考生如何根据应用要求选择合适的架构风格。需求(2)要求“集成开发环境需要提供一组可视化的编程界面,用户通过对界面元素拖曳和代码填充的方式就可以完成功能插件核心业务流程的编写与组织”,这是一个对可视化开发过程的典型描述,而可视化开发的核心是如何定义并解释可视化编程语言,其核心应该是解释器架构风格。因此针对需求(2),应该采用解释器架构风格。

具体来说,需要:

①为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;

②编写解释器对该语言进行解释;

③生成对应的脚本语言程序。

需求(3)要求“在代码调试功能方面,集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能。具体来说,在调试过程中,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处所对应的代码。”从描述中可以看出,这是一个具有“事件触发”能力的功能描述,即由“断点命中”事件触发事先定义的“代码自动定位”功能。可以看出,这样的需求采用隐式调用架构风格最为恰当。具体来说,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。

单项选择题
填空题