程序包设计的原则外文翻译资料

 2023-02-18 11:02

计算

实践

程序包设计的原则

法国Electricit6 Meyer Bertrand

摘要:子程序包是一组相关的子程序用于扩展在可用设施的设计系统。为各种应用程序开发几个这样的包的结果,有着外部和内部设计标准之间的区别——什么属性的包应该提供给他们的用户和设计师应该遵循的指导方针。一个重要的问题是可重写的软件的重新设计,提出一个理想的解决方案,使抽象数据类型的问题得以解决。

1、介绍

几年来我们中的一些人在EDF编写具有普遍适用性的软件工具。合法软件工作室(软件工作店)已经被用于开展我们团队的活动。已构建的工具和分布式使性质和利用方式不同。一个重要的类别是子程序包。子程序包是一组可能被叫做任何程序的程序,其目的是提供一个执行任务的途径,在应用程序可用的编程语言而不是直接地址的某些领域。

在过去三年,我们已经开发出了包括列于图1的子程序包的样板。在这些包中我们有了了不同的见解。我们的目的是传达一些其他从业者可能遇到的类似的问题。没有突破性的声明,我们的技术仍然是主要标准。但我们觉得,他们在演讲和讨论中引用我们设计的包的软件工程方法或许有助于使程序员习惯在一个“工业”的环境工作。

在第2部分中,我们描述了我们的工作环境,一个大型科学计算中心,说明子程序包的需求相对于其他类型的软件工具更旺盛。第三节详细讨论外部设计标准,即包应该如何展现外面的世界。第四部分提出了我们的内部设计的方法,即使满足前一节的合理要求,我们的方法的观点是认为实现一个包对应一个或多个抽象数据类型。第五节总结和反思我们的收获的经验。

规定的自命名的形式是我们讨论的一个重要组成部分,我们在整个文本中翻译法语单词和出现在子程序的缩写名称。包的名称本身已经被保存。

  1. 为什么子程序要使用包的形式

这里提出的想法肯定在某种程度上反映出我们是面向科学计算中心,主要是Fortran编程这一事实;较小的一个,它在MVS使用三个IBM计算机(370 - 168、370、168),最近一个叫Cray的补充道。

读者可能会问的第一个问题是为什么我们专注于集合的子程序。我们的目标是扩展现有的语言提供的设施的范围。至少有四个其他的解决方案:

(1)说服用户切换到一个更好的或更强大的语言;
(2)写作JCL步骤;
(3)编写对话过程;
(4)设计专用预处理器。

CR类别和主题描述符:D.2。0(软件工程(:通用标准;D.2.2(软件工程):工具和技术模块和接口,软件库,用户界面;D.2.7[软件工程]:分配和维护文档,可扩展性;D.3.3[程序语言]:语言构造抽象数据类型、模块、包。一般条款:设计、文档、语言,可靠性。额外的关键字和短语:可重用的软件,软件工具,源程序。作者目前地址:b·迈耶Electricit6法国(EDF)方向des练习曲等生物,1,戴高乐G6namp;al大道,92141号克拉马尔,法国。允许复制没有付费全部或部分的材料是可以的,这种材料被授予的副本没有直接或分布的商业优势,或分布式的ACM版权声明

copy;1982 ACM 0001 - 0419cent;0182/82/0700 - 0419

计算

有用的错误信息,源水平优化)的服务。他们通常没有相关的运行时系统,更不用说调试艾滋病。

因为他们在现有的编程语言中生成代码,他们依赖关联设施。这造成运行时错误的困境:他们必须追溯到通过一个字段的项目,这几乎比编译器产生的目标代码可读性更强。

实践

简单地说,我们将讨论为什么这些选择并不总是令人满意的。解决方案(1)无疑是最理想的。但是,令人难过的事实是,大多数程序员在工业上使用第一代语言后不太可能尝试另一个。如果你的目标是生产需要使用的工具,你最好符合大众化的原则。(这是一个更令人感到悲哀的事实,正如我们shah在第四节中看到的,作家通常是被禁止使用现代语言作为工具的,因为技术约束。)

解决方案(2)和(3)(批处理或会话过程)是适用于“最终用户”的工具,而不是由程序执行的的任务。

解决方案(4)(预处理器)似乎有吸引力但有许多缺点。其中之一是,它可能导致预处理器提供各种用途的扩散,这不会作为一个规则而相互兼容。作为一个例子,考虑到一个Fortran程序员希望使用“结构化编程的控制结构。他的程序输出作用到各种图形设备,他们需要一些数组动态范围(是在加工开始前一个文件的读取)。许多预处理器,如Ratfor。[5],可用于第一个目的;其他人,如Fortran 3d[11],为第二个(但是请注意,当前版本的产品使用子程序包公式);还有一些人存在第三个要求。这些预处理器的输入语言,一般来说,使用完全不同的约定。他们对待错误不会是相同的。在代码生成Fortran,其中一些将删除评论,而另一些人会认出某个预定义的语法评论作为指令。他们的结合使用将是非常困难的,在许多情况下是不可能的。

预处理器提供另一个众所周知的问题。通常简单地去想,他们不提供的所有被期望来自一个设备精良的编译器(交叉引用、符号表、数据流分析、

Ensorcel#-- 自由格式的输入和输出

Chronos-- 时间测量

Textes-- 文本操作

Ax~dir-- 直接访问

Gescran-- 文件管理

Tree-- 全屏编程内部排序

我可以用全屏吗?(是的,如果回答= O)
离开全屏模式。

ns定义为屏幕上的名字。
设置为n的最大数量每屏幕窗口行。
创建窗口在屏幕ns nw,红外光谱、iu,id作为坐标。
删除窗口西北。西北亮度b分配给窗口。
使窗口nw保护。
使窗口nw免费(保护)。
从现在开始,把字母窗口nw到首都。
从现在起,留下任何字符窗口站西北。

替换内容的窗口与tabcha西北。
窗口nw填充空白。指定屏幕nss屏幕望远镜的价值。
用空格填充所有保护窗口屏幕ns。
海里的数量变化分配给窗口nw自从上次输入的操作。
分配给tabcha nw当前内容的窗口。

在终端显示屏ns。
从终端输入屏幕ns。
光标位置在窗口nw,位置(在线,ncol)。
什么位置(在线,ncol)在窗口光标西北吗?([0,O]如果不是在窗口)
分配到n的数量发送屏幕内容使用的功能键。
直接nw后续输出窗口。
从窗口nw获得后续的输入。

初始化和终止

调用ASKGGE(答案)

调用LEAGGE

定义屏幕和创建窗口
调用DEFSGE(ns)
调用MXLSGE(n)

调用CREWGE (nw, ns, il, it, iu,id)

调用DELWGE (nw)

调用 BRIWGE (nw, b)

调用 PROWGE (nw)

调用 FREWGE (nw)

调用 CAPWGE (nw)

调用 ASIWGE (nw)

改变或检查内部形象

调用REPWGE (nw, tabcha)

调用BLAWGE (nw)

调用ASSSGE (nst, nss)

调用 BLASGE (ns)

调用NBCWGE (nw, n)

调用EXAWGE (nw, tabcha)

输入和输出(影响外部形象)

调用WRISGE (ns)

调用 REASGE ins)

操作鼠标和功能键

调用 POSCGE (nw, nline, ncol)

调用 EXACGE (nw, nline ncol)

调用EXAKGE (ns, n)

输入输入-输出(接口包迷惑~)

调用 UNIOGE (nw)

调用 UNIIGE (nw)

计算

实践

附录A,错误消息  

B——外部名称的列表

C,可移植性  

D -性能 

E -控制流和数据流图

F—快速参考列表(最后一页)

 前言(“如何使用本手册”)  

  1. ,介绍  
  2. 各个子程序的描述 
  3. 限制和警告  
  4. 示例  
  5. 观念上实现  

用户
应用程序
程序

系统(编译器,运行时系统,操作系统,等)

执行一般实用程序任务。包括应用程序/子程序包/系统层次结构,如图3所示;当然,其他层次的可能也会存在。我们是指程序调用子程序为应用程序;另一方面,用户将这些个人(或程序)运行应用程序。(这些术语,尤其是后者--两个被滥用最严重的的数据,我们将努力去使用它们。)

自我约束是必要的,因为至少有一个应用程序级别在用户和我们的子程序之间。因此后者必须尽可能的对用户隐藏。这是特别重要的错误(Sec,3.5)。

3.3的易用性

文档

文档组织简单,易于使用且同性质相同。所有的包都被记录在使用相同的结构手册,如图4所示。

命令的参数

易于使用的关键是设计的一致性。这一标准因为新包的使用是可用的子程序数量增加变得更加关键的重要因素。它要求产品严格遵守一组常规的、连贯的约定。

3.1整体简洁性

在简洁性领域,我们的中心论点是,如果需要依赖参考手册,大多数程序员将不会使用子程序包。尽管我们坚持用户阅读手册至少一次。我们的理想是,他们应该在没有进一步引用任何书面文件的情况下能够为标准应用程序使做出一个包。在实践中,我们还没有完全成功地达到这个目标,但是我们还是成功地收集所有必要的关于包在一个页面的正常使用的信息,。我们正考虑一个强制性要求。例如,查看如图2中列出包的引用表Gescran。

我们的方法最重要的方面是,我们不要试图写复杂的包提供范围广泛的服务和满足所有用户的幻想的软件。相反,我们专注于用户需求的仔细研究,努力提供简单而高效的答案。这对于他们来说最重要。当然,决定哪些是最重要的问题往往是一个从用户需求设计的决策,是未表达的,如果表达,需要转化成很多现实的工作规范。

3.2自我克制

我们的子程序调用其他程序或子程序:他们不是直接关心解决“有趣”的问题,而是

此外,需要注意的是,预处理器只是用来加强表面的Fortran改进。他们通常不提供补救措施,这种语言的内在局限性是有关于数据结构,动态分配,指针变量,内部和内部类型检查、递归等。

子程序包没有这些缺陷,尽管如此,不可否认的是他们提了出其他两个我们接下来要讨论的问题——潜在的用户,提供了一个非常简洁的方式去丰富现有的编程语言的新指令,实现了子程序的调用。

  1. 外部设计标准

子程序包是一组相互相关的子程序。他们应该如何相互“相关”将在第四部分详细地去研究。目前,我们研究一个重要的问题:这些子程序应如何呈现给他们的潜在用户?这个问题是至关重要的,尤其是考虑到程序员往往不愿投资必要的努力来学习一种新的方法这一事实。他们不会被吸引而去使用我们的包,除非一些非常有吸引力的论点说服他们这样做。

下面我们将列出这些我们对包应该拥有的准确解释去规范这些设计标准的品质——如何简单;易控;易用、同质、安全。

计算

这符合“目的地第一”规则,虽然文件标识符比之前的有的其他包的目标要早。但是,对于写程序,我们选择了规则。

调用WRIFDA(源文件标识, 记录编号、误差指示器)

因为我们觉得相应的参数占据完全相同的地位在这两个操作很容易记住,“目标”相对于“阅读”和“源”相对于“写”是对称的。目的地的第一条规则因此由WRIFDA违反了。

的,每个子程序只能执行一个定义良好的单一任务。在我们的例子中,该属性成为需要短的参数列表,另一个动机,而不是这个需求的结果。这的确是我们的设计理念不可或缺的(见第4节)。

这种方法引发许多我们的商业上可用的包的这样的有趣的实际后果。说明f,是让子程序被用来实现一个操作有一定数量,说明n,是操作数。通常有几种操作模式的案例,描述了一定数量,说明m,是参数或选项。通常情况下,n是小,但可能很大,并且将长的和用户请求的改进一样大。

在这一点上,读者可能会问精确定义的参数和操作数之间的区别。尽管存在很多与直观所不同的情况,并不存在一个绝对的定义。相反,区别应该被认为是设计决策的设计基于以下指南:

——操作数应该保持小的n。

——系统应该能够设置参数的默认值。

——在包装的进化过程中,作为参数被添加(或删除),对于任何一个单独的子程序的规范操作数必须不能被改变。

实践

一个需要平缓条件的重要是区域的参数顺序。在语言环境中不提供关键字参数的传输,实际参数中的任何子程序必须有一个固定的

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[147726],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。