软件架构理论与实践》 —3.4 其他建模方法

网友投稿 424 2022-05-29

3.4 其他建模方法

3.4.1 文本语言建模方法

文本语言建模即通过文本文件描绘架构[69-70]。文本文件通常需要符合某些特殊的句法格式,就像.c和.java文件分别需要符合C语言和Java语言规范一样。(当然,架构决策也可以用自然语言进行文档化,这种情况下建模需要受到该语言的语法和拼写规则等的限制。)

针对只由一个组件—Web浏览器构成的Web客户机,图3-25和图3-26显示了两种对其架构进行描述的方法。其中图3-25使用了xADL本身的XML文本建模,图3-26使用了xADLite文本建模。这是一个应用不同文本建模方法来描述同一模型的例子。使用XML文本建模方法具有易读性和易操作性,并且可以用XML工具进行句法验证。而xADLite文本建模方法在描述同一模型时,在阅读性方面做了优化。

图3-25 XML文本建模方法

使用文本语言建模有如下优势:它可以在单个文档中描述整体架构,并且存在众多文本编辑器以方便用户与文本文档的交互。由于对结构化文本的语法分析、处理和编辑等相关技术的研究已经持续数年,当使用一种元语言(如BNF(Backus-Naur Form))来定义文本的句法时,许多工具能够生成程序库来对使用该语言的文本文档进行句法分析和检查。许多编辑器附带额外的开发支持工具,如当用户输入时可实现自动补全或语法检查等。

图3-26 xADLite文本建模方法

然而文本语言建模也有如下问题:文本符号可以很好地描述线性和层次结构(例如在C语言和Java语言中,线性顺序可用从上至下的行表示,层次结构可用括号和缩进表示),然而用文本语言建模方法表示类图结构不易理解。另外,文本编辑器通常限于显示连续满屏的文本,很难以其他方式组织文本(也有一些环境允许代码折叠,使得用户可以将某个文本块限制在一行之内)。

文本语言建模方法不仅要能够描绘模型,也要方便用户与模型之间的互动,如编辑、修改等,一般来说可使用一个普通的文本编辑器或字处理器,也可使用专门的工具或平台。为了使文本更易阅读和理解,原始的方法是使用分隔符、空白符和换行符等使得程序结构更加突出。另外还有一些装饰方法,如可以使用不同的字形、字体和颜色(例如,关键字用粗体表示,评论用斜体表示,不同字体大小表示不同的嵌套等级等),还可以使用表格或提纲。文本语言建模方法中一些先进的机制有语法高亮显示、文本的静态检查、自动补全、代码折叠等。

1.语法高亮显示

语法高亮显示是文本编辑器在显示文本尤其是显示源代码时的重要特性之一,它根据不同类型显示不同的颜色和字体[69]。这一特性使得编写结构化语言如程序语言或标记语言时,其结构错误和语法错误能够明显区分开来。高亮不会影响文本本身的含义,它仅仅方便相关人员的阅读和编辑。

2. 文本的静态检查

静态程序分析是指在不实际执行程序的情况下对计算机软件进行分析(在执行程序过程中的分析被称为动态分析)[70]。大多数情况下是通过源代码进行分析,然而在某些情况下也会根据目标代码进行分析。该术语通常指自动化工具的分析,人工分析被称为程序理解或代码审查。

3. 自动补全

《软件架构理论与实践》 —3.4 其他建模方法

许多工具,如Web浏览器、电子邮件程序、搜索引擎接口、源代码编辑器、数据库查询工具、文字处理软件、命令行解释器等,都提供自动补全这一功能。一般的文本编辑器也逐渐集成这一功能。自动补全需要程序在用户没有完全输入时已能够预测用户想要输入的单词或短语。当可以根据输入记录来预测当前输入的词语时,这一特性是非常有效的,如只有有限个可用的或常用的短语(常出现在电子邮件程序、Web浏览器或命令行的解释器等情况中),或输入的文本是高度结构化并易于预测的语言(例如在源代码编辑器中)。文本编辑器可根据一种或多种语言的单词列表进行预测。许多自动补全程序在用户输入某个单词若干次后会自动学习。许多自动补全的程序都能够在学习新单词后(如用户写了几次之后),基于个人用户的学习习惯提出其他建议。自动补全或单词预测均可加快书写速度,非常适合使用环境中的人机交互。

4.代码折叠

代码折叠是文本编辑器、源代码编辑器以及集成开发环境(IDE)的一个特殊功能,允许用户选择性地隐藏和显示当前编辑的文件的某些部分。它允许用户在任意时刻管理大量文本的同时只需要关注那些相关文本。这一特性有利于开发人员管理源代码文件。区别于文本折叠,代码折叠还需要遵循相关标记语言或程序语言的句法。

软件开发 架构设计 软件

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IDEA 远程协作编程,结对编程工具 Code With Me
下一篇:Python有哪些作用?
相关文章