基于Python的天文软件命令行界面设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Python的天文软件命令行界面设计与实现计算机软件技术的不断发展,推动了人机交互技术的长足进步。从传统的命令行(Command Line Interface,CLI),到图形用户界面(Graphical User Interface,GUI),再发展到当前的自然用户界面(Natural User Interface,NUI)。界面技术使得用户与计算机之间的交互过程越来越简单,越来越便捷。

无论界面技术如何发展,命令行技术作为一种基于文本命令的模式,一直被广大软件开发人员所喜爱,这是由命令行技术的特点决定的[1, 2]。一是命令行可以通过纯字符完成命令的输入,不需要频繁地使用鼠标等其它交互手段;二是在熟练记忆命令的前提下,命令行的效率是所有的交互手段中最高的,特别是对大量重复处理、批处理的时候,命令行优势明显。因此,无论图形界面技术如何发展,命令行均是主流软件考虑并保留的基本交互方式。

在天文数据处理领域,交互式数据语言(Interactive Data Language,IDL)、CASA(Common Astronomy Software Applications)等天文软件均提供了命令行接口。CASA软件在原有的AIPS、AIPS++基础上发展起来,目前已经是射电天文领域最为常用的数据处理软件,其操作完全需要通过命令行实现,在使用中不难发现仍有一些不方便之处,主要表现在:

(1)联机帮助功能不完备,不能分级提示。当用户不熟悉该软件时,联机帮助过程不详尽,不能获知命令参数的类型及格式,导致用户无法正确使用该命令。

(2)命令库没有进行有效分类。CASA命令复杂,数量庞大,在没有分类的情况下,在大量的命令中查找所需要的命令,对于操作人员非常困难。

从当前各类命令行界面的设计与特点来看,最为著名的是美国思科公司在其路由、交换机上实现的命令行界面,可以实现命令的联机帮助、自动命令补全、全程命令参数提示、严格的数据校验等。在其推出后,迅速成为全世界命令行交互软件的一个参考标准。国内外的后续产品都参考借鉴了思科公司(CISCO)的命令行风格。

本文借鉴思科公司命令行的设计思路[3, 4],在新一代中国太阳射电日像仪[5, 6](Chinese Solar Radio Heliograph,CSRH)数据处理系统的开发中,设计并实现了命令行界面系统-CSRHOS。该软件基于射电天文当前流行的Python语言,以太阳射电日像仪数据处理系统为应用背景,通过多个视图实现不同的命令分类,在交互过程中可以进行有效的权限控制,并可以实现命令的自动补全和联机帮助,使用者无需记忆复杂的命令即可快速地输入命令,取得了较好的应用效果。

1 系统设计

1.1 设计的需求分析

天文软件与其它计算机应用软件相比并没有很大的特殊性,但针对一个望远镜的观测与数据处理软件系统,软件的使用与交互仍有较明确的单一需求。包括:(1)交互命令要直观,输入的命令应尽可能简短;

(2)对输入的数据必须有较强的检验,确保数据输入的合法性,避免影响最终的数据处理结果;(3)由于操作

人员众多,尽可能不要让操作人员记忆太多的命令;(4)由于功能变化较大,要具有较好的可扩展性等;(5)

系统的鲁棒性要好,用户输入错误不会导致系统异常或崩溃;(6)输入顺序的不同不应该影响数据的处理;

(7)在输入命令时,为了避免命令歧义,要求命令关键字部分严格区分大小写,但用户输入的各类参数应具有较好的灵活性,比如可以不区分大小写,要适应人的自然等。为此,CSRHOS-CLI的设计与实现应该达到如下要求:

(1)为天文学家提供最为简单的交互方式。输入时,支持正常的光标移动,可以利用上下光标键翻转已经发过的命令,避免重复输入;输入一个命令时,只要输入的内容可以完整且唯一地表明一个命令,则不需要再输入下去,比如,如果命令是enable,当输入en后,如果没有其它命令以en开头,则en就可以唯一地表示enable,用这样的技术简化用户输入。

(2)支持自动补全。在用户输入一个命令的部分后,可以用Tab按键实现自动命令补全,比如用户输入en后,按Tab键,则屏幕应自动出现enable。

(3)在输入过程中,随时允许用户输入问号(?)实现联机帮助。用户在命令行提示符下,如果直接按?号,则应该列出所有的可用命令;如果用户输入了e,在后面再按?号,则应显示所有的以e开头的命令,用这样的方式,可以让用户即使没有看操作手册,也可以根据提示内容进行操作。

(4)在输入时要严格进行数据类型的匹配与校验,比如,如果要求用户输入一个观测时间,则应该判断用户输入的是不是HH∶MM∶SS格式,输入的内容必须是数字,不能是字符,输入的范围要合理,HH 必须在00-23之间,MM必须在00-59之间。同时,也必须满足人们的使用习惯,上午8∶30分,则可以输入8∶30∶0,这也是正确的格式。

(5)能够提供不同的视图,将不同类型的命令分布在不同的视图下,以帮助用户快速地找到命令,避免大量的命令在一起不容易查找。比如针对星表计算的命令均放在一个视图下,把数据处理的均放在另一个视图等,就可以达到很好的命令分类效果。

(6)在输入命令时要严格区分命令关键字部分大小写,而参数部分不需要区分大小写。例如,在计算某星体在某一时刻的视位置信息,命令“planet 2012-11-22 0∶0∶0 sun”计算太阳在2012-11-22零点的视位置,其中planet为命令关键字,sun为其中的一个参数,用户如果输入命令“PLANET 2012-11-22 0∶0∶0 sun”则错误,用户如果输入命令“planet 2012-11-22 0∶0∶0 Sun”是正确的。

(7)采用Python语言开发完成,这是考虑到当前在射电天文领域,Python语言正在成为最主流的语

言,SunPy等大量的基础支撑包的出现给Python在天文软件中的开发带来了有力的支撑。

1.2 系统构架

根据上述需求,CSRHOS-CLI的系统架构设计如图1,命令行系统主要分为4大部分,分别是:命令输入与联机帮助,命令解析、校验与执行,权限与视图控制,模块载入。(1)命令输入与联机帮助:通过在Unix/Linux平台下的Readline[7]实现用户命令输入,提供Tab键自动补全和问号(?)联机帮助功能。CSRHOS-CLI命令繁多,为用户提供自动补全和联机帮助功能,可以使用户快速输入命令,即使不熟悉本系统,也能根据帮助内容进行操作。(2)命令解析、校验与执行:对用户输入命令进行匹配、补全,实现参

相关文档
最新文档