| [1142] | 1 | <HTML> | 
|---|
|  | 2 | <HEAD> | 
|---|
|  | 3 | <TITLE>L2/L3 DMC Requirements</TITLE> | 
|---|
|  | 4 | </HEAD> | 
|---|
|  | 5 | <BODY> | 
|---|
|  | 6 | <CENTER> | 
|---|
|  | 7 | <H1>DMC Specifications</H1> | 
|---|
|  | 8 | <H2>L2/L3 Requirements</H2> | 
|---|
|  | 9 | <H3>Réza Ansari, Éric Aubourg, Floor van Leeuwen</H3> | 
|---|
|  | 10 | <H3>July 10, 2000 (draft)</H3> | 
|---|
|  | 11 | <H3>PL-HFI-SPP-SP-DMC002</H3> | 
|---|
|  | 12 | </CENTER> | 
|---|
|  | 13 | <SPACER TYPE="VERTICAL" SIZE="20"> | 
|---|
|  | 14 |  | 
|---|
|  | 15 | <H2>Introduction</H2> | 
|---|
|  | 16 |  | 
|---|
|  | 17 | The Data Management Component (<ACRONYM>DMC</ACRONYM>) is a set of | 
|---|
|  | 18 | interfaces handling data persistence for Planck <ACRONYM>DPC</ACRONYM>'s | 
|---|
|  | 19 | (in the <ACRONYM>IDIS</ACRONYM> framework). It will be used by both | 
|---|
|  | 20 | consortia (<ACRONYM>HFI</ACRONYM> and <ACRONYM>LFI</ACRONYM>). | 
|---|
|  | 21 |  | 
|---|
|  | 22 | <P> | 
|---|
|  | 23 | Since the <ACRONYM>DMC</ACRONYM> is a set of interfaces, different | 
|---|
|  | 24 | persistence mechanisms can be implemented in a transparent way. This | 
|---|
|  | 25 | insures some independance from the market (especially from the currently | 
|---|
|  | 26 | highly volatile market of object databases, O2 being virtually dead, Object | 
|---|
|  | 27 | Design appearing as the new leader as of June 2000). | 
|---|
|  | 28 |  | 
|---|
|  | 29 | <P> | 
|---|
|  | 30 | Even if the two consortia choose the same implementation, which is not | 
|---|
|  | 31 | required, care must be taken to preserve this independence as the | 
|---|
|  | 32 | <ACRONYM>DMC</ACRONYM> interface is evolved. | 
|---|
|  | 33 |  | 
|---|
|  | 34 |  | 
|---|
|  | 35 | <H2>Object persistence mechanisms</H2> | 
|---|
|  | 36 | The <ACRONYM>DMC</ACRONYM> should provide object persistence, i.e. the | 
|---|
|  | 37 | fact that the internal state of an object is preserved after the end of | 
|---|
|  | 38 | the life of the application that created or modified it. The | 
|---|
|  | 39 | <ACRONYM>DPC</ACRONYM>'s will use this object persistence facility to store | 
|---|
|  | 40 | data, like maps, <ACRONYM>TOI</ACRONYM>'s, calibration information, | 
|---|
|  | 41 | pointing information, etc. | 
|---|
|  | 42 |  | 
|---|
|  | 43 | <P> | 
|---|
|  | 44 | Data persistence can be achieved in several ways. For L2/L3 | 
|---|
|  | 45 | <ACRONYM>DPC</ACRONYM>'s, one should keep in mind that | 
|---|
|  | 46 |  | 
|---|
|  | 47 | <UL> | 
|---|
|  | 48 | <LI><ACRONYM>DPC</ACRONYM> software should be independant of the | 
|---|
|  | 49 | <ACRONYM>DMC</ACRONYM> implementation. In particular, it should be able to | 
|---|
|  | 50 | run, for testing and development purposes, without any | 
|---|
|  | 51 | <ACRONYM>DMC</ACRONYM> implementation (or a basic flat file | 
|---|
|  | 52 | implementation). | 
|---|
|  | 53 | <LI>Most objects handled during <ACRONYM>DPC</ACRONYM> processing will | 
|---|
|  | 54 | be transient. Only input data and final products of a task will be | 
|---|
|  | 55 | tagged persistent. Too tight a coupling between classes handled by | 
|---|
|  | 56 | <ACRONYM>DPC</ACRONYM> software and <ACRONYM>DMC</ACRONYM> should be | 
|---|
|  | 57 | avoided. | 
|---|
|  | 58 | </UL> | 
|---|
|  | 59 | One way to achieve this is by using the Bridge design pattern [Gamma 1995], to | 
|---|
|  | 60 | decouple interface and implementation inside the <ACRONYM>DMC</ACRONYM>. | 
|---|
|  | 61 | The <ACRONYM>DMC</ACRONYM> should probably be kept as a separate package providing | 
|---|
|  | 62 | persistence services, the science objects and classes having no explicit | 
|---|
|  | 63 | dependency to the <ACRONYM>DMC</ACRONYM>. | 
|---|
|  | 64 |  | 
|---|
|  | 65 | <P> | 
|---|
|  | 66 | The <ACRONYM>DMC</ACRONYM> interface should moreover make minimal | 
|---|
|  | 67 | assumptions on the implementation layer functionalities. | 
|---|
|  | 68 |  | 
|---|
|  | 69 | <H2>Data structure details, and opaque persistence</H2> | 
|---|
|  | 70 |  | 
|---|
|  | 71 | <ACRONYM>DPC</ACRONYM> software will need to store complex objects, which | 
|---|
|  | 72 | structure can evolve. The precise internal data structure does not need to | 
|---|
|  | 73 | be handled by the DMC (semantically, although the DMC needs of course to know | 
|---|
|  | 74 | how the structure is built in terms of basic data types). | 
|---|
|  | 75 |  | 
|---|
|  | 76 | <P> | 
|---|
|  | 77 | This facilitates schema evolution, since this provides skill separation | 
|---|
|  | 78 | between precise data structure definition (a physicist task) and data | 
|---|
|  | 79 | persistence (a database specialist task). | 
|---|
|  | 80 |  | 
|---|
|  | 81 | <P> | 
|---|
|  | 82 | This also keeps the <ACRONYM>DMCI</ACRONYM> simple: it is a low-level | 
|---|
|  | 83 | software layer, that should not depend on higher-level (and thus more | 
|---|
|  | 84 | volatile) concepts. | 
|---|
|  | 85 |  | 
|---|
|  | 86 | <P> | 
|---|
|  | 87 | Persistent data should be associated with tags and flags on which | 
|---|
|  | 88 | <ACRONYM>DMC</ACRONYM> requests can be based. A history of each object | 
|---|
|  | 89 | should also be kept, with support for versioning. Finer-grained searches | 
|---|
|  | 90 | should be handled by higher-level software layers. | 
|---|
|  | 91 |  | 
|---|
|  | 92 | <H2>Use cases</H2> The data model specifications document should be | 
|---|
|  | 93 | complemented by use cases.  A list of the kind of requests on each | 
|---|
|  | 94 | type of data will help determine the | 
|---|
|  | 95 | information that need to be | 
|---|
|  | 96 | accessible by the <ACRONYM>DMC</ACRONYM>, i.e. | 
|---|
|  | 97 | which classes of the | 
|---|
|  | 98 | data model have to be known by the | 
|---|
|  | 99 | <ACRONYM>DMC</ACRONYM>, and which | 
|---|
|  | 100 | tags should be associated with them. | 
|---|
|  | 101 |  | 
|---|
|  | 102 | <H2>Requirements summary</H2> | 
|---|
|  | 103 |  | 
|---|
|  | 104 | The <ACRONYM>DMCI</ACRONYM> should implement the | 
|---|
|  | 105 | following requirements: | 
|---|
|  | 106 |  | 
|---|
|  | 107 | <UL> | 
|---|
|  | 108 | <LI>The <ACRONYM>DMCI</ACRONYM> should | 
|---|
|  | 109 | provide a set of interfaces to  handle persistence on any kind of | 
|---|
|  | 110 | data. | 
|---|
|  | 111 | <LI>Software that uses <ACRONYM>DMCI</ACRONYM> facilities | 
|---|
|  | 112 | should be able to  run without those facilities. | 
|---|
|  | 113 | <LI>Making data | 
|---|
|  | 114 | persistent should not imply a hard-coded dependency between  the data | 
|---|
|  | 115 | definition (in C++ or Java) and the <ACRONYM>DMCI</ACRONYM>. | 
|---|
|  | 116 |  | 
|---|
|  | 117 | Persistence should in particular not be obtained by heritage, but by | 
|---|
|  | 118 | mechanisms like bridges and delegation. | 
|---|
|  | 119 | <LI>The <ACRONYM>DMCI</ACRONYM> should make persistent all basic data types | 
|---|
|  | 120 | (integers, floating point numbers, strings, and n-dimensional arrays | 
|---|
|  | 121 | of such data), as well as aggregates of those basic types. It should | 
|---|
|  | 122 | provide an <ACRONYM>API</ACRONYM> to define new data types as | 
|---|
|  | 123 | aggregates of already defined types. It should provide an | 
|---|
|  | 124 | <ACRONYM>API</ACRONYM> to define  searchable fields and tags | 
|---|
|  | 125 | associated to data. <LI>The <ACRONYM>DMCI</ACRONYM> should associate | 
|---|
|  | 126 | to any persistent data the  following characteristics: name, creation | 
|---|
|  | 127 | date, modification date, creator.  It should handle version history: | 
|---|
|  | 128 | several versions of an object can be  stored and retrieved. | 
|---|
|  | 129 | <LI>The <ACRONYM>DMCI</ACRONYM> should provide an <ACRONYM>API</ACRONYM> to | 
|---|
|  | 130 |  | 
|---|
|  | 131 | locate an object based on searcheable fields and tags, and on version; | 
|---|
|  | 132 | to retrieve and store an object; and to lock an object while it is | 
|---|
|  | 133 | being  processed. | 
|---|
|  | 134 | </UL> | 
|---|
|  | 135 |  | 
|---|
|  | 136 | The <ACRONYM>DMCI</ACRONYM> could provide | 
|---|
|  | 137 | more functionalities for | 
|---|
|  | 138 | fundamental data structures like | 
|---|
|  | 139 | <ACRONYM>TOI</ACRONYM>'s and maps. This | 
|---|
|  | 140 | remains to be defined, | 
|---|
|  | 141 | keeping in particular in mind that, for instance, | 
|---|
|  | 142 | unforeseen pixelisation schemes could be used and that this should neither | 
|---|
|  | 143 | break the <ACRONYM>DMC</ACRONYM> nor imply major developments in a low | 
|---|
|  | 144 | software layer. | 
|---|
|  | 145 |  | 
|---|
|  | 146 | <H3>Revisions</H3> | 
|---|
|  | 147 | <UL> | 
|---|
|  | 148 | <LI>0.1 Éric Aubourg, 07/07/2000 | 
|---|
|  | 149 | <LI>0.2 Éric Aubourg, 10/07/2000 | 
|---|
|  | 150 | </UL> | 
|---|
|  | 151 | </BODY> | 
|---|
|  | 152 | </HTML> | 
|---|