From irini@dworkin.CCS.Northeastern.EDU Thu Feb 27 10:13:40 1992 Return-Path: Received: from dworkin.ccs.northeastern.edu by flora-e0.ccs.northeastern.edu (4.0/SMI-3.2+CCS-main-2.8) id AA28430; Thu, 27 Feb 92 10:13:36 EST Received: by dworkin.ccs.northeastern.edu (4.1/SMI-3.2+CCS-subsidiary-2.2) id AA02130; Thu, 27 Feb 92 10:12:40 EST Date: Thu, 27 Feb 92 10:12:40 EST From: irini@dworkin.CCS.Northeastern.EDU (irini haralamboulou) Message-Id: <9202271512.AA02130@dworkin.ccs.northeastern.edu> To: lieber Subject: meeting Status: R Hi! Unfortunately I have something else today at 4:00. What about tommorrow around 9:00 or 9:30 a.m.? I send you the current copy of the paper. It follows. Irini ******************************************************************** COMPONENTS A component is an independent self-contained reusable unit of code that performs (defines a finite programming task) a finite, well defined task. It consists of: --A class dictionary that describes the data on which the component functions. --A list of Propagation Programs which in turn consist of: --A Propagation Pattern: it is the part of the component that performs the actual programming task. It defines all the member functions that will be propagated alond the classes of the cd. --A list of Propagation Graphs: these define specific paths on the cd graph and name them with acronyms. They are used by the Propagation pattern for more convenience. Whenever a path is to be traversed several times, we don'tneed to define it each time. Instead, we use the acronym that repre sents it to indicate where a particular interface will be propagated. --A list of Derived Edges: when we need to enhance a class with a new pro perty (part) we define derived edges. A derived edge is a component-dependent addittion to a class of a cd. It encapsulates the graph traversal needed to connect the given class with another class of the cd, and represents the relationship between them, exactly like the edges of the cd-graph represent the part-of/inheritance relationship between the vertices-classes of the graph. Propagation graphs and derived edges are not vital parts of a component. They are optional and used mostly for convenience. Our experience tells us that they make propagation patterns much shorter and clearer. Components can be formally defind by the following cd: Component = ClassDictionary "*propagation-program*" List(PropagationStatement). PropagationStatement : PropagationPattern | PropagationGraphDef | DerivedEdge. PropagationGraphDef = "*subgraph*" PropagationGraphName PPGraph ".". DerivedEdge = "*edge*" Vertex "+=" "<"