【系统架构师】-案例篇(四)软件架构风格

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

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

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

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

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

【问题1】

请用200字以内的文字解释什么是软件架构风格,并从集成开发环境与用户的交互方式、集成开发环境的扩展性、集成开发环境的数据管理三个方面说明为什么最终采用了李工的设计方案。

软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。

答题方式:内容举例,结果导向、对比好/坏。

关注题目中的需要实现的业务功能

1)从集成开发环境与用户的交互方式看,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道一过滤器架构风格则对用户的交互式数据处理支持有限。

2)从集成开发环境的扩展性来看,系统核心需求要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖关系,并可以灵活定义功能之间的逻辑顺序。管道一过滤器架构风格同样以数据格式解耦数据处理过程之间的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。

3)从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道一过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。

【问题2】

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

为了满足需求(2),应该采用解释器架构风格。具体来说,需要:

  • ①为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;
  • ②编写解释器对该语言进行解释;
  • ③生成对应的脚本语言程序。

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

首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。

集成开发环境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。

在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。

参考 【系统架构师】-软件架构设计-CSDN博客

相关推荐

  1. 2024系统架构---论软件系统架构风格

    2024-05-11 15:28:02       15 阅读
  2. 2024系统分析---论软件系统架构风格

    2024-05-11 15:28:02       32 阅读
  3. 仓库风格-系统架构(九)

    2024-05-11 15:28:02       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 15:28:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 15:28:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 15:28:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 15:28:02       20 阅读

热门阅读

  1. Npm基本解说

    2024-05-11 15:28:02       11 阅读
  2. 关于测试用例

    2024-05-11 15:28:02       9 阅读
  3. Ubuntu22.04部署NewGIS平台流程

    2024-05-11 15:28:02       10 阅读
  4. MySQL查询所有数据库并导出命令过滤系统库

    2024-05-11 15:28:02       10 阅读
  5. 数据分析的行为要求

    2024-05-11 15:28:02       12 阅读
  6. C# 显示毫秒

    2024-05-11 15:28:02       10 阅读
  7. c#---枚举与结构体

    2024-05-11 15:28:02       10 阅读