CN1105508A - 动态浏览窗系统 - Google Patents
动态浏览窗系统 Download PDFInfo
- Publication number
- CN1105508A CN1105508A CN 94190009 CN94190009A CN1105508A CN 1105508 A CN1105508 A CN 1105508A CN 94190009 CN94190009 CN 94190009 CN 94190009 A CN94190009 A CN 94190009A CN 1105508 A CN1105508 A CN 1105508A
- Authority
- CN
- China
- Prior art keywords
- pane
- ingredient
- computer program
- hagioscope
- characteristic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Digital Computer Display Output (AREA)
Abstract
一个面向人的目标编程系统提供了一个交互和动态的处理以助于计算机程序的增量建立。该增量建立简化了操作系统及具有图形用户界面的应用程序之类的复杂计算机程序的开发。一个程序被成型为一个称为组成部分的单元集。一个组成部分表示一个分类或功能之类的可编译语言元素。三个主要的功能性是数据库,编译程序和建立处理。
Description
本发明涉及计算机辅助软件工程(CASE),尤其涉及面向人的目标编程系统(HOOPS),该系统为计算机程序的建立提供了交互和动态环境。HOOPS使程序员得以利用优化增量编译程序在计算机程序中对微小的颗粒源码进行编辑。本发明的主题在于导航系统,该系统使程序员可以对存储的任何有关程序中被引用的任何程序部分的信息进行访问。该信息是由一独特的图形用户界面(GUI)所提供的。该GUI为程序员提供了一个通过程序导航的直观系统。本发明通过使用通用的面向目标编程(OOP)语言C++的优选实施例来进行公开,但其原理适用于面向目标的计算机编程语言以及过程计算机编程语言,并且本发明亦可用于建立使用常规的和OOP语言的程序。
OOP是建立友好的用户关系以及智能计算机软件的最佳环境。OOP的关键元素是数据密封性(data encapsulation)、固有性(inheritance)以及多形性(Polymorphism)。这些元素可以用于产生图形用户界面GUI,尤其是由具有图符,鼠标光标以及菜单的视窗环境所构成的GUI。虽然这三种关键元素在OOP语言中很常见,但大部分OOP语言在实施它们时有很大的区别。
OOP语言的例子包括Smalltalk、目标Pascal和C++。Smalltalk实际上不止是一种语言,更准确地讲,它应该被标识为一种编程环境。该语言是在70年代早期内位于施乐普拉阿图研究中心(PARC)的学习研究小组开发的。在该语言中,一个消息被送到一个目标以对其进行评价。消息完成的任务类似于在常规编程语言中的功能调用。程序员无需关心数据类型而只须关心生成正确顺序的消息及使用正确的消息。目标Pascal是用于苹果公司的Macintosh_计算机上的语言,苹果公可在Pascal语言的设计者一尼古拉期·沃斯(Niklaus Wirth)一的合作下开发出了目标Pascal(Object Pas-cal)语言,C++则是由斯托斯特拉普(Bjarne Stroustrup)在1983年在AT&T贝尔实验室由C语言扩展而成的。C++的主要概念是分类,它是用户定义型的。分类提供了面向目标的编程特性。C++模型与C模型相兼容而且可随意链接。从而现有的C程序库可由C++程序所用。最广泛使用的基于目标和面向目标的编程语言源于60年代由挪威的戴沃(O-J·Dahl),梅阿汉(B·Myhrhaug)以及而才格得(K·Ny-grad)所开发的Simula语言。有关OOP的信息可参见布克(Grady Booch)所著的“Object Oriented Design With Applica-tions”(Benjimin/Cummings Publishing Co.,Inc.,ReadwoodCity.Califormia 1991)
运行一个计算机程序的完整过程涉及把程序员写出的源码译为机器可执行的格式,通常称为目标码,然后再执行该目标码,翻译的过程是由解释(interpreter)程序或编译(Compiler)程序完成。在解释程序中,翻译是随程序的运行而进行的,而在编译程序中,则是在运行该程序之前就进行翻译并将结果作为目标码存贮起来。也就是说在一般的编译和执行系统中,翻译和执行是分开进行的。即编译只进行一次。而在解释系统中,例如Smalltalk解释程序,两者是顺序进行。Smalltalk需要解释程序是因为直到一个目标被实现之前编程环境不允许指定专用寄存器或地址空间。
一个编译程序包括三部分;词法分析程序,语法分析程序,以及代码生成程序。词法分析程序的输入是代表高级语言程序的一序列字符。词法分析程序将该序列字符分为一序列标记以输入到语法分析程序。语法分析程序进而将该序列标记分为指令并利用语法规则的数据库来确定是否每条指令的语法正确与否。若不正确,则产生错误消息。若正确,则指令被解压缩成为一序列基本指令。这些基本指令被送至代码生成程序以产生低级语言。代码生成程序本身通常又分为三部分;中间编码,代码优化,以及代码生成,基本而言,代码生成程序接收来自语法分析程序的输出并生成机器语言码。
为了助于软件开发,已开发出增量编译程序,在这类程序中,编译程序在批处理操作中生成用于接收的一条语句或一组语句的代码,而与稍后生成的用于其他语句的代码无关。增量编译的优点在于代码可以在部分程序写成时即进行编译和测试,而无需等到整个程序完成时才进行调试处理。但是,常规的增量编译程序必须每次都对一个完整的模块进行再处理。
优化编译程序产生高度优化的目标码,从而在许多情况下使得在源码时进行调试比一个非优化编译程序更困难。这一问题源于这一事实,即虽然一个例行程序将被编译以给出适当的答案,但计算该答案的确切方式可能与源码中描述的大相径庭。优化编译程序可以做的一些事情包括删除已知不会影响最终结果的代码或变量,将非变量代码移出循环,合成公用码,在变量不再需要时重新使用分配给这些变量的寄存器等等。如此,源码到目标码或目标码到源码的映射在给定某些优化时可能会有困难。由于变量的值可能并非在例行程序中任意位置处总是可用的,所以可能难于校验变量的值。在优化代码中修改变量值尤为困验。除非专门说明为易变的,否则编译程序会“记住”分配给变量的值并可能在以后的代码中不再读该变量而使用“已知”的值。因此,在该值中的改变会产生错误的程序结果。
虽然在先有技术的计算机程序建立,测试及开发中有许多优点,但已知的软件开发工具仍给程序员带来极大负担,从而通常要求有直觉的洞悉力。其次,常规的面向批处理的编程系统需要很长的编辑——编译——测试周期,这时编程的创造性行为带来的极大的不利影响。
由施乐PARC学习研究小组和苹果Macintosh_的开创,尤其是在近来微软视窗和IBM的OS/2的引导下,应用程序的直观图形用户界面(GUI)的开发已有了很大进展,但是,程序设计员依然没有类似的直观GUI以帮助进行程序开发的基本任务,尤其是在开发操作系统一类的复杂程序时更是如此。
因此,本发明的一个目的是提供一种用于模型化计算机程序的面向人的交互动态处理。该处理有助于程序员的精力集中,从而提高生产力。
本发明的另一目的是为程序员提供对于任何有关程序中被引用的部分的存储信息的存取。
本发明进一步的目的是为程序员提供直观的图形用户界面以助于建立计算机程序的交互和动态处理。
根据本发明,提供了一个在计算机程序中导航的系统。这是通过首先把计算机程序成型为组成部分集(Collection ofComponents),然后在存储器中存储这些组成部分的方式而实现的。通过访问存储的并与计算机程序相关的组成部分实现了导航功能。本系统通过在一个显示屏上的第一窗格显示与计算机程序关联的信息的方式,而响应用户选择的一部分程序。一个第2窗格被生成并在第一和第二窗格之间生成一个系统设置链接。该链接可显示为“连接”图并提供一个直观浏览功能,该功能有助于用户了解程序中各个模块的关系。
本发明的最佳实施例是以C++完成的,并用C++、C以及汇编语言建立程序,这些语言是当前最流行使用的。本发明的程序一般可用这三种语言完成。因此,虽然本发明本身是以面向目标的编程语言写成的面向目标的程序,但其并不仅限于以面向目标的程序语言建立程序。本发明可同样用于以过程语言建立程序。进而,本发明不限于C++语言,它也可由其他编程语言实现。而且本发明不限于只用于这三种语言;也就是说,本发明的原理可用于更为一般应用的面向人的目标编程系统。
上述目的和优点可从本发明的详细叙述以及附图中有更好的理解,其中,
图1展示了一种可以支持高分辨率图形显示设备和光标指示设备(例如鼠标器)的常规计算机系统,本发明即可在该系统上实施;
图2是图1所示常规计算机系统的主要部件框图;
图3是根据一个优选实施例的数据结构;
图4-24是根据一个优选实施例的计算机屏幕的图示,该屏幕示出了典型的视窗。
参照图1,示出了一个常规计算机10,该计算机10包括一系统单元12,一个高分辨率显示设备14,例如一个阴极射线管(CRT),或者一个液晶显示器(LCD)。这种显示并不重要,除非要求用于显示视窗系统,尤其是图形用户界面时需要高分辨率,用户对计算机的输入由键盘16以及光标指示设备,例如鼠标器18完成,鼠标器18与键盘16相连并进而与系统依次相连。替换地,鼠标器18可连到系统单元12的一个专用或串行口。图1所示的计算机是Apple Macintosh_(苹果计算机的注册商标)及IBM PS/2。其他机型包括各种工作站,例如IBM RISC System/6000以及Sun Microsysitems计算机。
图2展示了图1所示通用目的的计算机的基本部件。系统单元12包括与总线24相连一个中央处理单元(CPU)21,随机存取存储器(RAM),以及只读存储器(ROM)23。CPU21可以是任何商业化的微处理器,例如Motorola 68030和68040(它们通常用于Apple Macintosh计算机中)或Intel80386及80486(它们通常用于IBM PS/2计算机中)。其他微处理器,例如RISC(用于减少指令集计算机)微处理器(通常用于工作站)也可使用。ROM24存储用于CPU的基本微码,包括基本输入/输出系统(BIOS)。计算机系统10的操作系统(OS)也可存在ROM24中,或者把OS作为初始程序装入(IPL)的一部分存入RAM22中。RAM22也用于存储部分应用程序以及执行该程序过程中生成的临时数据。总线24可以是Apple NuBus,IBM MicroChannel或工业标准之一的总线例如ISA(工业标准适配器)或EISA(扩展的工业标准适配器)。
与总线24相连的还有多个输入/输出(I/O)适配器,包括一个用户接口适配器25以及一个I/O适配器26。键盘16与用户接口适配器25相连,而I/O适配器26与软盘驱动器27和硬盘驱动器28相连。软盘驱动器27允许把数据和程序读写到可擦除介质,而硬盘驱动器对通常存储页入页出RAM22的数据和程序。显示设备14通过显示适配器29而与总线24相连。通讯适配器30为网络提供接口。其他支持电路(未示出)以集成电路芯片的形式被连到总线24和/或CPU21。这些芯片包括例如控制总线24上的信息量的总线主控芯片。总线24在某些计算机中可以是双总线;一个数据总线和一个考虑图形用户界面中需要的高速显示操作的显示总线。
根据本发明的面向人的目标操作系统(HOOPS)可根据要编辑的程序是要建立的程序还是已有程序以决定输入一个项目名或一个现有的项目名的方式在计算机上开始。HOOPS打开的初始视窗显示了“项目”部件的“成员”特性及其直接成员。虽然开始只显示直接成员,但同样视窗用于显示在项目部件处开始的每个部件。
HOOPS动态测览系统使用户动态地建立程序表示。该系统设计用于快速和动态显示的改变或生成,而这些显示可保存起来以供以后再使用。以这种方式,用户可以对系统进行裁剪。
本系统基于四个主要部件:窥视窗,窗格视窗及连线。系统提供了一组可扩充的窥视窗以供显示一个程序的各个方面。为使用一个窥视窗,必须在一窗格中显示该窥视窗。窗格则在视窗中显示。一个视窗可以显示不止一个窗格(因此不止一个窥视窗),而且窗格可以通过连线连接以提供导航操作,从而生成丰富的各种组合。由于这组窥视窗可扩充,该系统不会对可以生成的各种显示带来内在的限制。
本系统可用于具有一组内相关数据,尤其是层次的或性质上是网络的任何域,例如计算机程序的表示。另一个域的例子是学校的数据库,其中有学生,老师,课程以及它们之间的各种关系。
下面给出几个定义。
程序(Program)
如在本发明中叙述的,一个HOOPS程序包括一个叫作“项目”的不可建立部件以及一个“可建立部件”集。不可建立部件亦可存储,但在本叙述中,只要谈到未限定部件,就是指一个“可建立部件”,不可建立部件在建立操作中将不被编译。
组成部分(Component)
一个组成部分有一个唯一的标识并被命名。不同的组成部分由称为ID的唯一标识符的某些格式加以区分。有一个称为空IS(Null ID)的区别ID,它不属于组成部分。该ID在一个分量生成时被赋予而且在该组成部分存在期间不会改变。若一个组成部分被删除了,它的ID不会再被使用。实际,ID通常是数字的。
一个组成部分也有一个“名字”,它包括没有白空间的文本串。不同组成部分不必有不同名字。可以获得所有组成部分的表格(可能是空的),其中所有组成部分的名字与某些给定文本串相吻合。一个组成部分的名字可以在该组成部分存在期间被改变任意项数。
组成部分用于表达语义语言元素。表达的方式取决于被模块化的特定计算机语言。例如在C++中由组成部分表达的语言元素的部分表格包括全局数据,全局功能,分类,数据成员,成员功能,typedef,enums,仿真程序,宏指令,“或”运算以及结构。通常,每个语义元素将有一相关联的区别种类。
特性(Properties)
一个组成部分包括一个命名的“特性”(Property)集。一个特性表示与该组成部分有关的一些数据。给定组成部分的ID和特性名之后,可以存取和检索这些数据。特性名字通常由标识名字的数字(有时称为记号)在内部表示。也有不属于特性的区别特性名,叫做“空特性”(Null Property)。
与一给定特性相关的数据对不同的组成部分而言是不同的。改变一个组成部分给定特性的数据并不意味着改变用于任何其他组成部分的同一特性的数据。但是,有可能在一个组成部分的一个特性中的改变会导致同一或另一组成部分的另一特性的改变。
所有组成部分必须有特性“名”和“贮存器”,该特性“名字”存有组成部分的名字。“贮存器”特性则包含了特性名为“空特性”的一个单一引用。从任一组成部分开始并相继地由贮存器ID引用的组成部分取代前一组成部分将总是最终导致“项目组成部分(Projct Component)。该“项目”的“贮存器ID”是“空ID”(Null ID)。如此,所有组成部分在“项目”中被描述。
引用(Reference)
“引用”是包括一个ID和一个特性名。一个引用唯一地标识特性数据的一部分。就象其所引用的组成部分和/或特性,引用通常被松散地使用,实际上,一个引用通常包含在程序建立中间接使用的信息,以标识特性中的哪种数据版本及哪个子区的数据要被引用。有一个区别引用以及空引用,空引用说明没有组成部分或特性。
类别(Kinds)
每一个组成部分都有一“类别”(Kind)。一个类别是指把组成部分分为例如共用同样特性或同样语言专用作为的各个组的一个文本串。大部分类别专用于一种特定的计算机语言并用于指定语义区别语言元素。
然而,有一些由系统定义的类别,它们分别为“项目”,“库”,以及“贮存器”。这些类别只用于不可建立组成部分。“项目”类别是“项目”组成部分的类别。“库”类别则是用于链接到目标码的一个外部块(例如一个共同库或应用程序)的组成部分集。“贮存器”类别则应用于把其他分量分组归类以便组织的组成部分。实际上,类别通常在内部由数码表示。
窥视窗(Viewer)
窥视窗是用于显示一个组成部分的特定特性的图形表示。但是,在显示该特性的处理过程中可以要求窥视窗显示辅助信息。它们包括从其他特性而来的数据。一个窥视窗有一个输入和一个输出,两者是引用的。所说的输入指定至少一个组成部分和特性,也可以指定该特性的信息的子范围。该输出至少指定一个组成部分。它也可以指定一个特性以及该特性数据的一个子范围。该输出可响应于用户动作及系统中的状态变化而改变。
窗格(Paue)
一个窗视窗显示在一窗格中,窗格有一输入和输出,两者都是引用的。该输入指定至少一个组成部分,它亦可指定组成部分的一个特性和特性的信息的一个子范围。其输出指定至少一个组成部分并可指定一个特性和该特性信息的一个子范围。该输出可响应用户动作及系统内的状态改变而改变。
一个窗格确定了它的窥视窗输入,该输入一般是通过从该窗格的输入中导出得到。这种所导出的性质可动态地根据系统状态或静态地改变窗格的实施而从窗格到窗格进行变化。在本发明提供的最简导出实施例中,窥视窗的输入与窗格的输入相同。类似地,窗格的输出从窥视窗窗格输出中导出。该导出的性质从窗格到窗格不同,它或者动态地取决于系统状态,或者静态地由窗格实施的变化而定。在根据本发明的最简导出实施例中,一个窗格的输出等于其窥视窗的输出。
测览窗
测览窗(browser)是显示至少一个窗格的视窗。在一个视窗中的窗格数量及安排可由用户动态控制。测览窗有一输入,其为一引用,浏览窗的输入作为对测览窗第一窗格的输入,该第一窗格通常是占用浏览窗左上角的窗格。
连线(Wire)
连成(wire)是两个窗格之间的连接。连线的目的是要一个窗格的输出控制另一窗格的输入。与窗格和窥视商类似。连线也有一个输入和输入,二者均为引用。为了在两个窗格之间生成连接,一个窗格的输出与连线的输入连接。同样连线的输出连到第二窗格的输入,从而建立了连接。
连线的输出自其输入导出。这一导出的性质对各个连线不同,其动态地取决于系统状态,或静态地由连线的不同实施而定。
连成可在通过输入之前把其输入变换为其输出。有各种的用于建立连接的连线实施方式,而且每个实施可以与不同的变换结合。最佳实施例只提供了最简导出,其中,连线的输入未经改变地通过连线到达其输出。窗格的输出可与任意数量的连线连接。这提供了一种机制,其中,一个窗格的输出“控制”了任意数量的其它窗格的输入。用户可以动态地控制两个窗格之间的连接。
对窥视窗连接的特性:
为了简化同样特性的不同显示,并允许对不同特性使用同样的窥视窗实施,本系统提供了一种将特性与窥视窗关联的技术。
在优选实施例中,由一组窥视窗表实现连接。每一个窥视窗表可与任意数量的特性关联。一个窥视窗表是一个命名的窥视窗说明表,每个说明定义了一个窥视窗名字和实施分类。图3示出了优选实施例中窥视窗表的一个最简版本。第一个表命名为“成员窥视窗”,它包括对两个窥视窗的说明。第一个说明称之为“略图(Outline)”,并由“窥视窗”库中的“TNew Out Line Tree”分类所实施;第二个说明是“树(tree)”并由窥视窗库中的“(TNew Tree Viewer)”分类所实施。
每个特性与一个窥视窗表关联。例如,下面的表展示了一个“项目”组成部分的特性,以及与每个特性关联的窥视窗表。特性 窥视窗表(Proporty) (Viewer List)成员 成员窥视窗(Members) (MembersViewers)说明 说明窥视窗(Description) (DescriptionViewers)宏变化 群窥视窗(Macro Changes) (GroupViewers)界面变化 群窥视窗(Interface Changes) (GroupViewers)实施变化 群窥视窗(Implementation Changes) (GroupViewers)建立误差 误差表窥视窗(Build Errors) (Build Errors)建立的组成成分 群窥视窗(Component Built) (Group Viewers)编译程序(Compilers)客户 导出的引用窥视窗(Cliens) (Clients)引用 导出的引用窥视窗(References) (Refrences)
在本例中,“成员”特性(Members property)可由成员窥视窗“(MembersViewers)”表中指定的窥视窗显示。参见图3,成员窥视窗“(MembersViewers)”表中包括两个窥视窗,“略图”窥视窗和“树”窥视窗。因此,“项目”组成部分的“成员”特性可由“略图”窥视窗或“树”窥视窗显示。
该表还示明了与同样窥视窗表关联的一些特性,展示了同样的窥视窗可用于不同的特性。“编译程序”特性没有与之相关的窥视窗表,表明“编译程序”特性根本不能被显示。表中的第一个特性被认为是组成部分的系统设置特性,它用在确定哪个特性和窥视窗要在一个窗格中显示的时候。
以下是测览系统基本过程的叙述。
过程A:设置一个窗格的窥视窗
给定:一个窥视窗名字
1.在与显示的特性关联的窥视窗表中查找该窥视窗名字。
2.若发现了窥视窗名字,去往步骤5。
3.没有找到该窥视窗名字,使窗格空。
4.去往步骤8。
5.例示一个与该窥视窗表中的窥视窗名字关联的分类的窥视窗。
6.把该窥视窗的输入设置到该窗格的输入。
7.在窗格中建立窥视窗并显示该窥视窗。
8.过程结束。
过程B:设置一个窗格的特性
给定:一个特性名
1.把窗格的特性名设到给定的特性名。
2.更新该窗格的标题框以展示给定特性名。
3.从该商格的输入组成部分获取给定名字的特性。
4.获取该特性的窥视窗表。
5.若在表中只有一个窥视窗,去往步骤7。
6.通过生成用于窥视商表的每个入口的选项屏项而构成窥视窗选项屏。
7.用窥视窗表的第一个窥视窗名调用过程A以设置窗格的窥视窗。
8.过程结束。
过程C:设置一个窗格的输入
给定:一个引用
1.若引用不是空引用,去往步骤3。
2.引用是空的。把窗格设置到空状态。去往步骤12。
3.把窗格标题框中的组成部分名设置到引用指定的组成部分。
4.副用引用指定的组成部分的特性名填充特性上托选项屏。
5.若窗格是特性锁定,去往步骤9。
6.若引用没有指明一个特性,跳到步骤8。
7.引用指明一特性。调用过程B把窗格的特性设定到引用的特性,去往步骤12。
8.引用没有指明一个特性,获取引用指定的组成部分并调用过程B把窗格的特性设定到组成部分的系统设置特性。去往步骤12。
9.窗格是特性锁定的。获取由引用指定的组成部分。若组成部分没有窗格的特性,去往步骤11。
10.组成部分有锁定的特性。调用过程B把窗格的特性设定到该锁定的特性。去往步骤12。
11组成部分没有锁定的特征。在窗格中没有窥视窗建立。
12结束过程。
过程D:设置一个窥视窗输出
给定:窥视窗确定通常由用户初始化的某些行为需要窥视窗的输出改变。
1构成一个表示该窥视窗的新输出的引用。
2调用过程E来设定窗格的输出。
3结束过程。
过程E:设置一个窗格的输出
给定:一个表示窗格的窥视窗输出的引用。
1把窥视窗的输出转换成窗格的输出(在最简单情况下,二者是相同的)。
2对每个连接到窗格的输出的连线,调用过程F以设置连线的输入到窗格的输出。
3过程结束。
过程F:设置一个连线的输入
给定:一个引用
1把给定的引用是换成连线的输出(在最简单情况下,该输出与给定的引用相同)。
2调用过程C设置连到连线输出的窗格的输入。
3过程结束
过程G:连接两个窗格
给定:一个输入窗格和一个输出窗
1生成一个装卸连线
2把该连线加到输出窗格连线组。
3把该连线连接到输入窗格。
4调用过程F设置连线的输入。
5结束过程
过程H:划分窗格
给定:装卸窗格的尺寸
1生成一个装卸窗格目标。
2把新窗格的尺寸设定到给定尺寸。
3设定现有窗格的尺寸以便为新窗格提供空间。
4调用过程G把更有窗格与新窗格连接起来。
5结束过程
过程I:生成一个浏览窗
给定:作为该浏览窗输入的一个引用
1生成浏览窗目标。
2把游览窗的输入设定到给定的引用。
3生成一个其几何尺寸填充该测览窗的新窗格目标。
4用过程C把窗格的输入设定到测览窗的输入。
5过程结束
人的界面控制
图4示出了根据一个优选实施例的浏览窗。对每个测览窗,窗格以及窥视窗来说都有特定的控制。
每个测览窗有下列控制。关闭图符1210可用于在任何时刻关闭该视窗。在测览窗中对“项目”进行的任何改变被自动保存。测览窗缩放框1242使用户可以缩放浏览窗以使其占用整个屏幕。
每个窗格有下列控制。窗格标题框1240指出在窗格1230中显示的特性名以及显示的组成部分(1240)的名字。窗格划分框1250可使用户将一个窗格分为两个窗格并从而控制窗格的大小。窗格缩放框1243使用户可以动态地缩放窗格以使其完全占用视窗,或将窗格缩放至其原来的大小。上托选项屏1220允许用户选择输入组成部分(1240)的任意特性从而改变一个窗格中显示的特性。窗格特性锁定1211允许用户将一个窗格锁定到一个特定的特性而与该窗格的输入无关。水平和垂直卷动控制1252允许用户卷动窗格中一个窥视窗的内容。窥视窗选项屏1251包括可用于窗格显示的窥视窗的选项屏。特别地,若在窗格中显示的特性可由不止一个窥视窗显示时,该窥视窗包括了一个“窥视窗”(“Viewer”)选项屏1253,它可由用户用于在显示特性的窥视窗中进行选择。
还有用于在窗格之间建立连接的控制。当一个新窗格生成时,可从分为新窗格的窗格中建立系统设置连接。为改变连接,一个优选实施例把图形连线迭加到图5所示的测览窗,而且用户可以画一个新连线以改变窗格连接。在图5中,测览窗的输入连接到左边窗格的输入,而左边窗格的输出2连到右边两个窗格的输入。右边窗格的输出不与任何窗格相联。为改变该连接,例如把右上方窗格的输出连到右下方窗格的输入,则用户只需从右上方的窗格画一条新连线到右下方的窗格即可。
测览窗系统概要
以下概要示出了可以如何利用基于已知计算机科学问题(称之为Towers of Hanoi)的程序在实际中使用的动态浏览窗系统。
图6展示了包括一个窗格的测览窗。它可在打于“Tow-ers of Hanoi”编程项目之后被显示。窥视窗示出了项目中组成部分的层级,其中每个组成部分由一个图符和其名字表示。该层级的一些部分被缩灭以便只展示当前相关的那些组成部分。用过程I以及一个对“项目”组成部分作为输入的引用便生成测览窗。过程I调用过程C以便将窗格的输入设定为“项目”组成部分。过程C依次调用过程B以设置窗格的特性。由于对“项目”的引用没有指明一个特性,所以用系统设置特性“成员(Members)”(一个树数据结构)。最后,过程B调用过程A以设定窗格的窥视窗。该“Members”特性窥视窗表只包括“树(Tree)”和“略图(Outline)”这两个窥视窗。因此,“窥视窗(Viewer)”选项屏由每个窥视窗的入口构成,而且在表(Outline)中的第一个窥视窗被显示。
图7中,“窥视窗(Viewers)”选项屏被打开,示出了可由两个窥视窗“Tree”和“Outline”显示的“Members”特性。选择“Tree”选项屏项目调用过程A,从而用“Tree”窥视窗取代“Outline”窥视窗,其结果示于图8中。
图9中,“Properties”上托选项屏被打开,示出了由过程C获取的“项目”组成部分的可显示特性。图10示明在上托选项屏中选择“Description”项后的结果。这调用过程B来显示“Project”组成部分的“Description”特性。只有一个用于“De-scription”特性的窥视窗,所以无需“Viewers”选项屏。
图11示出了用户用垂直窗格划分控制由过程H把一个窗格分为两个窗格之后的结果。右边窗格的输入联到左边窗格的输入,如图12中的箭头所图示。由于左边窗格的输出是一个空引用,所以新窗格的输入也是一个空引用,从而根据过程C而导致了一个空窗格。
图13示出了用户在选择了表示左窥视窗中的“Classes”组成部分的图符之后的结果。这导致左窥视窗生成一个新输出以及一个对“Class”组成部分的引用。过程D被调用以处理新输出,而且过程C被调用以便把右窗格的输入设置为对“CLASSES”的引用。由于该引用未说明一个特性,用“CLASS”的系统设置特性“MEMBERS”调用过程B。“MEM-BERS”特性有两个窥视窗:“OUTLINE”和“TREE”,所以过程B构成了一个“VIEWERS”选项屏并在第一个窥视窗,“OUT-LOMEE”窥视窗上调用过程A。
图14示出了用户选择了表示左窥视窗中的“T PIC-TURE”组成部分的图符之后的结果。这改变了左窥视窗对“T PICTURE”组成部分引用的输出,过程D再次被调用,过程C亦被调用以将右窗格的输入设置为对“TPICTURE”的引用。进而,由于引用不指明特性,过程C用“TPICTURE”的缺省特性C称之为“界面”,调用过程B。该特性只有一个窥视窗,所以不生成“VIEWER”选项屏而且用过程A显示该窥视窗。
图15示出了用户在右窗格的缩放控制上按了一下之后的结果。该窗格现在充满了整个测览窗。在缩放控制上按一下将显示返回到图14所示的显示。
图16示出了用户用水平窗格划分框划分右窗格之后的结果。图17示出了窗格连接。浏览窗的输入连到左窗格的输入。左窗格的输出连到右上窗格的输入。右上窗格的输出连到右下窗格的输入。由于右上窗格的输出是一空引用,所以右下窗格是定的。
图18示出了在右上窗格选择了“绘图(Draw)”组成部分之后的结果。这导致了在右上窥视窗中生成一个新输出,该过程由过程D处理。这样便为右下窗格生成了一个新输入,该生成由过程C处理。由于输入未指定一个特性,“Draw”组成部分和“Implementaltion”特性的系统设置持性在右下窗格显示。
图19示出了在右上窗格选择“Debug”组成部分的结果,它导致了由过程D生成和处理的新输出。
图20示出了使用连接控制把左窗格的输出连到两个右窗格的输入。现在,两个右窗格接收同样的输入,在这一情况中是对“TPicture”在组成部分的引用。
图21示出了打开的右下窗格的“Property”选项屏,图22示出了用户从该选项屏中选中“Descnption”特性之后的结果。两个右窗格仍然有同样输入即对“TPicfure”的引用。但是,由于在右下窗格选中了一个不同的特性,每个窗格显示“Tpicture”的不同特性。
图23示出了用户在左窗中选中TDisk组成部分的图符之后的结果。它导致左窥视窗生成一个新输出。即一个对TDisk的引用,而且过程D被调用,从而使对TDisk的引用成为右边两个窗格的输入。右上窗格显示“TDisk”的“Interface”特性,而右下窗格显示“TDisk”的“Description”特性。
图24示出了用户选中左窗格中的“Classes”组成部分的图符之后的结果。它致使左窥视窗生成一个新输出,即一个对Closses的引用,而且该引用补充作为输入馈送到右边的两个窗格。由于该引用未指明一个特性,右上窗格使用其输入的系统设置特性,在本例中为“MEMBERS”特性。在下窗格显示“Deseription”特性,因为它被馈定到该特性。
虽然本发明以实施例方式叙述了本发明,但普通技术人员可在本发明基本原理下对实施例进行修改和变型。本发明的范围受权利要求保护。
Claims (22)
1.一种在计算机程序内进行导航的方法,其特征在于包括以下步骤:
(a)将一个计算机程序成型为一个组成部分集;
(b)在一个存储器中存储各组成部分;
(c)访问所存储的组成部分并根据计算机程序显示图符目录;以及
(d)通过显示与该计算机程序关联的信息而响应对程序一部分的选择。
2.根据权利要求1所述的方法,其特征在于还包括在一单独的视窗中显示与计算机程序关联的信息的步骤。
3.根据权利要求2所述的方法,其特征在于其中的视窗可动态调整。
4.根据权利要求1所述的方法,其特征在于包括对来自对于一个组成部分的引用的定义信息提供直接访问的步骤。
5.根据权利要求1所述的方法,其特征在于还包括对来自对于一个组成部分的引用的资料信息进行访问的步骤。
6.根据权利要求1所述的方法,其特征在于还包括对来自对于一个组成部分的引用的客户信息进行访问的步骤。
7.一种用于在计算机程序中导航的系统,其特征在于包括:
(a)用于将一个计算机程序成型为一个组成部分集的装置;
(b)用于在一个存储器中存储各组成部分的装置;
(c)用于访问存储的组成部分并根据计算机程序显示图符目录的装置;以及
(d)用于通过显示与该计算机程序关联的信息而响应对程序一部分的选择的装置。
8.根据权利要求7所述的系统,其特征在于还包括在一单独的视窗中显示与计算机程序关联的信息的装置。
9.根据权利要求8所述的系统,其特征在于其中的视窗可以动态地调整。
10.根据权利要求7所述的系统,其特征在于还包括对来自对于一个组成部分的引用的定义信息进行访问的装置。
11.根据权利要求7所述的系统,其特征在于还包括对来自对于一个组成部分的引用的资料信息进行访问的装置。
12.根据权利要求7所述的系统,其特征在于还包括对来自对于一个组成部分的引用的客户信息进行访问的装置。
13.一种用于在计算机程序内导航的方法,其特征在于包括以下步骤:
(a)将计算机程序成型为一个组成部分集;
(b)在存储器中存储各组成部分;
(c)访问存储的组成部分并根据计算机程序显示图符目录;
(d)通过在一个第一窗格中显示与计算机程序关联的显示信息响应对程序的一部分的选择,以及;
(e)生成一个第二窗格并在第一窗格和第二窗格之间生成一个系统设置连接。
14.根权利要求13所述的方法,其特征在于还包括生成一个几何数的步骤,该几何数连接第一和第二窗格并表示第一窗格和第二窗格之间的连接。
15.根据权利要求13所述的方法,其特征在于还包括存储第一窗格和第二窗格之间的连接的逻辑表示的步骤。
16.根据权利要求13所述的方法,其特征在于还包括生成多个窗格并生成多个窗格之间的多个连接的步骤。
17.根据权利要求16所述的方法,其特征在于还包括编辑连接以改变程序的特征的步骤。
18.根据权利要求1所述的方法,其特征在于还包括将一个视窗分为多个窗格的步骤。
19.根据权利要求1所述的方法,其特征在于还包括通过从一个选项屏中选择一项而动态地改变视窗中显示的信息的步骤。
20.根据权利要求1所述的方法,其特征在于还包括通过从一个选项屏中选择一项而动态地改变显示器上的信息步骤。
21.根据权利要求1所述的方法,其特征在于还包括把一个应用程序的多个显示与至少一种信息关联的步骤。
22.根据权利要求1所述的方法,其特征在于还包括把信息和多个显示关联的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8533993A | 1993-06-28 | 1993-06-28 | |
US08/085,339 | 1993-06-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1105508A true CN1105508A (zh) | 1995-07-19 |
Family
ID=22190944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 94190009 Pending CN1105508A (zh) | 1993-06-28 | 1994-01-03 | 动态浏览窗系统 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP0692112B1 (zh) |
JP (1) | JPH08512153A (zh) |
CN (1) | CN1105508A (zh) |
AU (1) | AU6019494A (zh) |
CA (1) | CA2144878A1 (zh) |
DE (1) | DE69400873T2 (zh) |
WO (1) | WO1995000902A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854932A (en) * | 1995-08-17 | 1998-12-29 | Microsoft Corporation | Compiler and method for avoiding unnecessary recompilation |
US6021418A (en) * | 1997-02-18 | 2000-02-01 | International Business Machines Corporation | Apparatus and method for displaying control-objects |
AUPP949599A0 (en) * | 1999-03-30 | 1999-04-22 | Griffith University | Visual architecture software language |
DE10032421C2 (de) * | 2000-07-04 | 2002-11-21 | Joerg-Ulrich Woelfel | Datenverarbeitungs-Werkzeug |
DE10140124A1 (de) * | 2001-08-16 | 2003-03-06 | Daimler Chrysler Ag | Verfahren zur Darstellung der Architektur eines Softwaresystems |
US7640584B1 (en) * | 2005-06-24 | 2009-12-29 | Rockwell Collins, Inc. | System and method for enhancing computer security |
-
1994
- 1994-01-03 DE DE69400873T patent/DE69400873T2/de not_active Expired - Fee Related
- 1994-01-03 AU AU60194/94A patent/AU6019494A/en not_active Abandoned
- 1994-01-03 JP JP7502763A patent/JPH08512153A/ja active Pending
- 1994-01-03 CA CA 2144878 patent/CA2144878A1/en not_active Abandoned
- 1994-01-03 EP EP94906506A patent/EP0692112B1/en not_active Expired - Lifetime
- 1994-01-03 WO PCT/US1994/000080 patent/WO1995000902A1/en active IP Right Grant
- 1994-01-03 CN CN 94190009 patent/CN1105508A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0692112A1 (en) | 1996-01-17 |
DE69400873D1 (de) | 1996-12-12 |
AU6019494A (en) | 1995-01-17 |
EP0692112B1 (en) | 1996-11-06 |
WO1995000902A1 (en) | 1995-01-05 |
CA2144878A1 (en) | 1995-01-05 |
DE69400873T2 (de) | 1997-05-22 |
JPH08512153A (ja) | 1996-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1181428C (zh) | 软件翻译的内省编辑器系统、程序和方法 | |
CN1120416C (zh) | 采用外观类进行软件翻译的内观编辑器系统和方法 | |
US6185728B1 (en) | Development system with methods for type-safe delegation of object events to event handlers of other objects | |
CN1105802A (zh) | 增量建立系统 | |
US7131111B2 (en) | Development of manifest for java embedded server bundle | |
CN101052948A (zh) | 对象过程图应用程序开发系统 | |
US7536294B1 (en) | Method and apparatus for translating computer programs | |
CN1242326C (zh) | 程序对象的串行化和解串行的方法和设备 | |
JP2005129027A (ja) | アプリケーションプログラミングインターフェース(api)の設計 | |
CN1102934A (zh) | 增量连接系统 | |
CN1105507A (zh) | 模型化系统 | |
EP1445693A2 (en) | System and method for building and configuring cross-platform applications | |
CN1750470A (zh) | 数据共享系统、方法以及软件工具 | |
JPH08202545A (ja) | ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法 | |
CN1811702A (zh) | 开发门户应用和自动部署门户应用的系统和方法 | |
US7093264B2 (en) | Method and apparatus for assembling Enterprise JavaBeans components | |
CN103718159B (zh) | 图像处理软件开发方法、图像处理软件开发装置 | |
CN112328229A (zh) | 一种快速创建Jenkins流水线的方法 | |
CN113220309B (zh) | 多语言的Modelica组件批量生成系统和方法 | |
Walker et al. | The symbolics Genera programming environment | |
CN1105508A (zh) | 动态浏览窗系统 | |
US8407309B1 (en) | Techniques for specifying and determining property information for portal entities using attributes | |
CN115113850A (zh) | 一种跨平台应用的构建、运行方法、服务器、终端和系统 | |
Del Sole | Visual Basic 2012 Unleashed | |
Roman et al. | VB. Net language in a nutshell: a desktop quick reference |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |