{"title":"A formal framework for the design of development environments","authors":"M. M. Pett, M. D. Rice, S. Seidman","doi":"10.1145/75199.75243","DOIUrl":null,"url":null,"abstract":"This paper describes a new formalism for specifying development environments for general hierarchical., modular systems. The formal framework is based on a restricted collection of sets and partial functions. formalism are described. Two applications of the In recent years, development environments have been built for many software and hardware systems. The essential similarity of these systems has been concealed by the wide variety of formal techniques that have been used in their description. In this paper, a new formalism is introduced for specifying development environments. The formalism emphasizes hierarchy and modularity, two features that are common to most application areas for which development environm’ents have been constructed. A development environment based on our formalism will include operations that construct and modify systems by selecting components from a library and specifying interfaces between these components. The formalism provides a logically consistent framework for the environment designer which can be adapted to a particular situation by choosing relevant framework attributes. The formal framework is based on a restricted collection of sets and partial functions which are used to define a construction setting, and a collection of basic operations on construction settings. The framework is described using the set-theoretic specification language Z [3]. Two specific applications will be discussed below: a programming development environment for coarse-grain dataflow graphs [ 1,2], and the STILE development environment [4]. In the framework, the lowest level of system components consists of templates, which reside in a common library Lib, which in turn is a finite subset of the basic set Temp. New templates can be added to the library using the EXT operation, described below. Each template has a unique non-empty set of ports, drawn from the basic set Port, which represent. potential interfaces to other templates. The association between templates and ports is defined by the following Z schema: (Note that the symbol --I--> is used in Z to denote apartial function, ,while FlS Perh.SSiOn to Copy Without fee all or part of thii material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice IS given that copying is by perti&on of t.be Assc?=ation for Computing Machinery. To copy otherwise, or DO republish, requires a fee and/or spedic permission. M. D. Rice S. B. Seidman Center for Parallel Computation Department of Computer Science George Mason University Fairfax, Virginia 22030 denotes the set of finite subsets of a set S. The domain and range of a function fare denoted by dom f and ran f.) disjoint {interfaces(t) : t E dom interfaces) The common library Lib is precisely the domain of the function interfaces. The following Z schema defines the owner function from ports to templates: Port-Association 1 TemDlate-Association owier : port --I--> Temp I dom owner = u(interfaces(t) : t E dom interfaces) Vt : dom interfaces 9 interfaces(t) = owner’(t) Notice that the specification of Template-Association is included in that of Port-Association. Each port has an associated set of attributes, which are referenced by the members of an index set AmIndex, which is the disjoint union of the basic sets Struct and NonStruct. Struct will be used to reference attributes referring to relationships between components in a system, while NonStruct will be used to reference attributes referring to such consistency issues as type checking. The set of attributes indexed by iE AttrIndex is denoted Am(i), and the set of all attributes is the disjoint union of the Attr(i). Every template port has a set of attributes, based on an attribute jhction specified by the following schema : Port Attribute 1 Port-Association attr : Port --I--> (AttrIndex ---> Am) dom attr = dom owner The function attr can also be regarded as a partial function Tom the Cartesian product Port x AttrIndex to Am. The templates and ports defined above are used in a construction setting to create larger, more complex objects in a modular fashion. All system components are based on templates selected from the template library. When a template is to be used in a construction setting, it is instantiated by creating a module or node (from the basic set Node) based on the underlying template. The resulting relationship is described by the following Z schema: 01989 ACM O-89791 -305-l /89/0500/0284$00.75 284 Node$kmplate~Association Template-Association node-parent : Node --I--> Temp dom node-parent E FNode ran node-parent = dom interfaces I The domain of node-parent is the collection of all currently instantiated nodes. For each instantiated node, its interfaces or slots are derived from the ports of the underlying template. These interfaces will be used in the construction setting to create relationships with other nodes or with the external environment. Formally, Slot is defined as the subset ((n,p)) of Node x Port whose members simultaneously satisfy the following conditions: n E dom node-parent and p E interfaces (node-parent(n)). The following schema describes the relationships between slots, nodes, and ports: Slot-Association slot-parent : Slot ----> Port owner* : Slot ----> Node slot-parent(n,p) = p owner*(n,p) = n The following commutative diagram summarizes the relationships between slots, nodes, ports, and templates:","PeriodicalId":435917,"journal":{"name":"International Workshop on Software Specification and Design","volume":"36 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1989-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"International Workshop on Software Specification and Design","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/75199.75243","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1
Abstract
This paper describes a new formalism for specifying development environments for general hierarchical., modular systems. The formal framework is based on a restricted collection of sets and partial functions. formalism are described. Two applications of the In recent years, development environments have been built for many software and hardware systems. The essential similarity of these systems has been concealed by the wide variety of formal techniques that have been used in their description. In this paper, a new formalism is introduced for specifying development environments. The formalism emphasizes hierarchy and modularity, two features that are common to most application areas for which development environm’ents have been constructed. A development environment based on our formalism will include operations that construct and modify systems by selecting components from a library and specifying interfaces between these components. The formalism provides a logically consistent framework for the environment designer which can be adapted to a particular situation by choosing relevant framework attributes. The formal framework is based on a restricted collection of sets and partial functions which are used to define a construction setting, and a collection of basic operations on construction settings. The framework is described using the set-theoretic specification language Z [3]. Two specific applications will be discussed below: a programming development environment for coarse-grain dataflow graphs [ 1,2], and the STILE development environment [4]. In the framework, the lowest level of system components consists of templates, which reside in a common library Lib, which in turn is a finite subset of the basic set Temp. New templates can be added to the library using the EXT operation, described below. Each template has a unique non-empty set of ports, drawn from the basic set Port, which represent. potential interfaces to other templates. The association between templates and ports is defined by the following Z schema: (Note that the symbol --I--> is used in Z to denote apartial function, ,while FlS Perh.SSiOn to Copy Without fee all or part of thii material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice IS given that copying is by perti&on of t.be Assc?=ation for Computing Machinery. To copy otherwise, or DO republish, requires a fee and/or spedic permission. M. D. Rice S. B. Seidman Center for Parallel Computation Department of Computer Science George Mason University Fairfax, Virginia 22030 denotes the set of finite subsets of a set S. The domain and range of a function fare denoted by dom f and ran f.) disjoint {interfaces(t) : t E dom interfaces) The common library Lib is precisely the domain of the function interfaces. The following Z schema defines the owner function from ports to templates: Port-Association 1 TemDlate-Association owier : port --I--> Temp I dom owner = u(interfaces(t) : t E dom interfaces) Vt : dom interfaces 9 interfaces(t) = owner’(t) Notice that the specification of Template-Association is included in that of Port-Association. Each port has an associated set of attributes, which are referenced by the members of an index set AmIndex, which is the disjoint union of the basic sets Struct and NonStruct. Struct will be used to reference attributes referring to relationships between components in a system, while NonStruct will be used to reference attributes referring to such consistency issues as type checking. The set of attributes indexed by iE AttrIndex is denoted Am(i), and the set of all attributes is the disjoint union of the Attr(i). Every template port has a set of attributes, based on an attribute jhction specified by the following schema : Port Attribute 1 Port-Association attr : Port --I--> (AttrIndex ---> Am) dom attr = dom owner The function attr can also be regarded as a partial function Tom the Cartesian product Port x AttrIndex to Am. The templates and ports defined above are used in a construction setting to create larger, more complex objects in a modular fashion. All system components are based on templates selected from the template library. When a template is to be used in a construction setting, it is instantiated by creating a module or node (from the basic set Node) based on the underlying template. The resulting relationship is described by the following Z schema: 01989 ACM O-89791 -305-l /89/0500/0284$00.75 284 Node$kmplate~Association Template-Association node-parent : Node --I--> Temp dom node-parent E FNode ran node-parent = dom interfaces I The domain of node-parent is the collection of all currently instantiated nodes. For each instantiated node, its interfaces or slots are derived from the ports of the underlying template. These interfaces will be used in the construction setting to create relationships with other nodes or with the external environment. Formally, Slot is defined as the subset ((n,p)) of Node x Port whose members simultaneously satisfy the following conditions: n E dom node-parent and p E interfaces (node-parent(n)). The following schema describes the relationships between slots, nodes, and ports: Slot-Association slot-parent : Slot ----> Port owner* : Slot ----> Node slot-parent(n,p) = p owner*(n,p) = n The following commutative diagram summarizes the relationships between slots, nodes, ports, and templates:
本文描述了一种用于指定通用层次结构开发环境的新形式。模块化系统。正式框架是基于集合和部分函数的有限集合。描述了形式主义。的两种应用近年来,已经为许多软件和硬件系统构建了开发环境。这些系统本质上的相似性被描述中使用的各种形式技术所掩盖。本文引入了一种新的形式来确定开发环境。形式化强调层次和模块化,这两个特性对于大多数构建了开发环境的应用程序领域来说都是常见的。基于我们的形式化的开发环境将包括通过从库中选择组件并指定这些组件之间的接口来构造和修改系统的操作。形式主义为环境设计者提供了一个逻辑上一致的框架,可以通过选择相关的框架属性来适应特定的情况。正式框架基于用于定义构造设置的集合和部分函数的有限集合,以及构造设置的基本操作集合。该框架使用集合理论规范语言Z[3]进行描述。下面将讨论两个特定的应用程序:用于粗粒度数据流图的编程开发环境[1,2]和STILE开发环境[4]。在框架中,最低级别的系统组件由模板组成,这些模板驻留在公共库Lib中,而Lib又是基本集合Temp的有限子集。可以使用EXT操作将新模板添加到库中,如下所述。每个模板都有一个唯一的非空端口集,从基本端口集绘制,表示。其他模板的潜在接口。模板和端口之间的关联由下面的Z模式定义:(注意,符号——I——>在Z中表示部分函数,而在Z中表示部分函数。只要不为直接商业利益而制作或分发这些材料,并且出现ACM版权声明、出版物的标题和日期,并注明复制是由ACM自行决定的,就可以免费获得全部或部分材料。计算机协会。以其他方式复制或重新发布,需要付费和/或特别许可。M. D. Rice S. B. Seidman并行计算中心乔治梅森大学计算机科学系Fairfax, Virginia 22030表示集合s的有限子集的集合。函数的定义域和值域(表示为dom f和ran f) disjoint {interfaces(t): t (dom interfaces)公共库Lib正是函数接口的定义域。下面的Z模式定义了从端口到模板的owner函数:port - association 1 TemDlate-Association owner: port——I——> Temp 1 dom owner = u(interfaces(t): t E dom interfaces) Vt: dom interfaces 9 interfaces(t) = owner ' (t)注意,Template-Association的规范包含在port - association的规范中。每个端口都有一组相关的属性,这些属性由索引集AmIndex的成员引用,索引集AmIndex是基本集Struct和NonStruct的不联合并。Struct将用于引用涉及系统中组件之间关系的属性,而NonStruct将用于引用涉及类型检查等一致性问题的属性。iE AttrIndex索引的属性集合记为Am(i),所有属性的集合为Attr(i)的不相交并。每个模板端口都有一组基于以下模式指定的属性集合的属性:port attribute 1 port - association attr: port——I——> (AttrIndex——> Am) dom attr = dom owner函数attr也可以看作是一个偏函数Tom是port x AttrIndex到Am的笛卡尔积。上面定义的模板和端口用于构建设置,以模块化的方式创建更大、更复杂的对象。所有系统组件都基于从模板库中选择的模板。当模板要在构造设置中使用时,通过基于底层模板创建模块或节点(从基本集合node)来实例化它。由此产生的关系由以下Z模式描述:01989 ACM O-89791 -305-l /89/0500/0284$00.75 284 Node$kmplate~Association Template-Association Node -parent: Node -I- > Temp dom Node -parent E FNode ran Node -parent = dom interfaces I Node -parent的域是当前实例化的所有节点的集合。对于每个实例化的节点,其接口或槽都派生自底层模板的端口。 这些接口将在构造设置中用于创建与其他节点或外部环境的关系。正式定义为Node x Port的子集((n,p)),其成员同时满足以下条件:n个E dom Node -parent和p个E接口(Node -parent(n))。槽位、节点、端口的对应关系如下图所示:Slot- association Slot- parent: Slot ----> Port owner*: Slot ----> Node Slot- parent(n,p) = p owner*(n,p) = n槽位、节点、端口、模板之间的交换关系如下图所示: