home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / v21 / 197 < prev    next >
Internet Message Format  |  1990-12-05  |  25KB

  1. From std-unix-request@uunet.uu.net  Thu Oct 11 09:55:44 1990
  2. Received: from cs.utexas.edu by uunet.uu.net (5.61/1.14) with SMTP 
  3.     id AA02961; Thu, 11 Oct 90 09:55:44 -0400
  4. Posted-Date: 11 Oct 90 01:28:09 GMT
  5. Received: by cs.utexas.edu (5.64/1.77) 
  6. From: WALLI%7178.gm@hac2arpa.hac.com
  7. Newsgroups: comp.std.unix
  8. Subject: The Context for LIS of POSIX
  9. Message-Id: <13460@cs.utexas.edu>
  10. Sender: fletcher@cs.utexas.edu
  11. X-Submissions: std-unix@uunet.uu.net
  12. Date: 11 Oct 90 01:28:09 GMT
  13. Reply-To: std-unix@uunet.uu.net
  14. To: std-unix@uunet.uu.net
  15.  
  16. Submitted-by: WALLI%7178.gm@hac2arpa.hac.com
  17.  
  18.  
  19.      The Context for Programming Language Independence for POSIX
  20.  
  21.               Stephen R. Walli - walli@osmcl1.gm.hac.com
  22.                          EDS of Canada, Ltd.
  23.  
  24.  
  25.  
  26.  
  27. 1  INTRODUCTION
  28.  
  29. Programming Language Independent  Specification  (LIS)  of  POSIX  has
  30. become  a  hot topic within the IEEE P1003 Working Groups and ISO WG15
  31. (POSIX).  Depending on one's point of view, it will  either  make  the
  32. POSIX  family  of  standards  more  robust  and  usable  or  make them
  33. completely unusable while seriously delaying the process.  What I hope
  34. to  accomplish  here  is  to  present all of the relevant concerns and
  35. information in one place, so as to provoke ideas and discussion  which
  36. will  prove  fruitful  in  the  upcoming P1003 Seattle meeting and the
  37. subsequent WG15 meeting on Orcas Island.
  38.  
  39. The standard disclaimers apply.  All views expressed are the  author's
  40. and  do  not  necessarily  represent  the  opinions  of the IEEE P1003
  41. Working Group members, ISO WG15 or the author's  employers.   I  would
  42. like to thank Paul Rabin for reading this through, catching some of my
  43. oversights and helping me clarify some of my statements.  POSIX  is  a
  44. registered  trademark  of the IEEE.  UNIX is a registered trademark of
  45. AT&T.
  46.  
  47.  
  48.  
  49. 2  WHAT EXACTLY IS THE POINT OF LIS
  50.  
  51. I will not provide any of the historical reasons/arguments/discussions
  52. between  ISO and the IEEE since all I know is hearsay, and I would not
  53. want to raise anyone's ire if I've misunderstood any of the facts.  It
  54. also  serves  no  real  purpose  in  accomplishing the task at hand to
  55. re-iterate these discussions.   It  is  sufficient  to  say  that  the
  56. direction  to  accomplish  the LIS work is coming from ISO and TCOS-SS
  57. has agreed to the work.
  58.  
  59. The directive is to  write  the  POSIX  interfaces  in  a  programming
  60. language  independent  way,  such that the functionality and behaviour
  61. are completely described, but no language  semantics  are  introduced.
  62. This  then  frees  up language bindings groups to map to the interface
  63. specification in a way most natural  for  their  particular  language.
  64. Describing the service in a language independent manner also serves to
  65. provide a more rigorous definition of the service [1].
  66.  
  67. Many will argue that POSIX is a C language standard interface to  UNIX
  68. system  services,  and  all  of  the noise about any other programming
  69. language binding or any other operating system  is  immaterial.   I've
  70. both  seen  this  and heard it voiced in the occasional dark corner at
  71. P1003 Working Group meetings.
  72.  
  73. While POSIX' roots are most certainly  C  interfaces  to  UNIX  system
  74.  
  75.                                                                 Page 2
  76.  
  77.  
  78. services,  the  market has driven POSIX beyond those roots.  There are
  79. many other language groups which have a  vested  interest  in  writing
  80. portable  applications  which want access to operating system services
  81. in a portable way [2].  The US government commitment to Ada,  and  the
  82. amount  of  government funded work in FORTRAN has created the need for
  83. two POSIX Working Groups  to  produce  their  respective  bindings  to
  84. 1003.1  services.   As  the commercial market interest in Open Systems
  85. grows, I have no doubt we will eventually  see  a  COBOL  binding.   I
  86. would  be very surprised if there isn't someone at IBM already working
  87. in this direction.
  88.  
  89. The fact remains that the LIS  of  POSIX  is  required  work  for  the
  90. international acceptance of POSIX, and is here to stay.
  91.  
  92.  
  93.  
  94. 3  WHAT ARE PAUL AND STEPHE DOING?
  95.  
  96. Paul Rabin and I are working on the methods document [1] for producing
  97. a  language independent specification of POSIX.  Paul found time to do
  98. all the real work of compiling and editing the document, while I acted
  99. as critical reviewer and chief nit-picker.
  100.  
  101. The work is based on documents received  from  ISO/IEC  JTC1/SC22/WG11
  102. which  is defining a set of methods for creating abstract, programming
  103. language independent procedure specifications [3] [4].
  104.  
  105. The method's objectives are:
  106.  
  107.       o  to meet the ISO requirement of  producing  a  LIS  of  POSIX,
  108.          while  adhering  to  their  guidelines  on  developing  these
  109.          specifications.
  110.  
  111.       o  to facilitate the development of language bindings from  base
  112.          LIS.
  113.  
  114.       o  to  facilitate  the  development  of  base  LIS   which   are
  115.          sufficiently  robust  so  as  to ensure a common recognizable
  116.          functionality in the bindings.
  117.  
  118. Specific non-goals include:
  119.  
  120.       o  Interoperability  between  modules   written   in   different
  121.          languages   bound   within  the  same  executable  image,  or
  122.          interoperability between applications  written  in  different
  123.          languages using common services, including data interchange.
  124.  
  125.       o  Incorporating formal description techniques.
  126.  
  127.       o  Ensuring   the   portability   of   language    or    binding
  128.          implementations.
  129.  
  130.       o  Providing a machine translatable language-independent binding
  131.          description language.
  132.  
  133.                                                                 Page 3
  134.  
  135.  
  136. We discovered that interoperability between  applications  written  in
  137. different  programming  languages cannot be ensured within the current
  138. scope.   The  general  formula  presented  by   WG11   for   producing
  139. language-independent   procedure   specifications   is  to  model  the
  140. interface using abstract data types, then  each  binding  defines  its
  141. mapping of real data types to these abstract types.
  142.  
  143. Interoperability fails when certain abstract opaque types, process  id
  144. or  file  descriptor for example, are mapped by different languages to
  145. different types.  What may be effectively mapped to a pointer  in  one
  146. language  cannot  be  supported  by  another  language  which does not
  147. understand pointers.  The second language must  map  the  opaque  type
  148. differently, to the detriment of interoperability.
  149.  
  150. In retrospect, this is not unreasonable.  POSIX' goal is to ensure the
  151. portability  of an application using operating systems services across
  152. multiple implementations at the source level.  It makes no  effort  to
  153. ensure interoperability between programming languages, nor should that
  154. be within the scope of the standard.
  155.  
  156. The method defines a model which contains data  types,  procedures  on
  157. those  types, and constants.  The objects that the system services act
  158. upon are modelled by their abstract types.  The procedures  (services)
  159. become the operations on the data types.
  160.  
  161. Operating system service  interfaces  are  presented  as  an  abstract
  162. procedure,  with input parameters, output parameters and the notion of
  163. a completion status.  Note that completion status does not refer to  a
  164. returned  value, but could just as easily refer to a raised exception,
  165. a signal, a return value of a  function,  an  output  parameter  of  a
  166. procedure, or any other entity you can imagine.
  167.  
  168. The methods document goes on  to  suggest  guidelines  for  both  base
  169. standard and language binding developers.
  170.  
  171. The methods document has  been  updated  since  Danvars  and  will  be
  172. presented  again in Seattle.  It will be put to a mock ballot sometime
  173. after Seattle.  Donn Terry is managing the ballot list.
  174.  
  175. One interesting example of a similar informal method  that  I've  seen
  176. recently  is the circulation of ORKID Draft 2.1 [5] in a LIS form with
  177. a C binding.  ORKID isn't as complex as POSIX, but the draft serves as
  178. an  interesting  and  complete  example.   A C binding accompanies the
  179. draft as an appendix, formatted tersely as a C header file.   I  would
  180. be  very  interested  to see a FORTRAN or Ada binding to the draft, if
  181. one exists.
  182.  
  183. The draft has the same problem with language interoperability that  we
  184. discovered  with  our  method,  in that there is considerable room for
  185. choosing language specific data types to match the opaque types.  They
  186. go  as  far  as  to allow implementations within a language to specify
  187. their own data types.  I haven't spent enough time with the  draft  to
  188. be  able  to  comment on whether this hurts networked applications, or
  189. whether the procedure interface deals with this behind the application
  190. developer's back.  It is still a valuable example.
  191.  
  192.                                                                 Page 4
  193.  
  194.  
  195. Paul is managing a mailing list for LIS related issues and discussion.
  196. Messages  for  distribution  to  the  whole  list  should  be  sent to
  197. posix-lis@osf.org or uunet!osf.org!posix-lis.  Requests for updates to
  198. the list should be sent to posix-lis-request@osf.org.
  199.  
  200.  
  201.  
  202. 4  PEOPLE ISSUES
  203.  
  204. There are a number of people issues surrounding the LIS, which  should
  205. be  understood,  because  the  LIS  sometimes  becomes  an emotionally
  206. debated topic.  An effort has been made to state them  unbiasedly  and
  207. to  completely  avoid  any  of  the  finger  pointing  arguments which
  208. sometimes occur.
  209.  
  210.  
  211.  
  212. 4.1  People Issue #1
  213.  
  214. Many people have devoted  a  considerable  effort  into  building  the
  215. current 1003.1 standard and the draft documents which are balloting or
  216. near ballot.  There is ownership and  sweat  built  into  all  of  the
  217. documents.  A perception exists that the ISO mandate to produce LIS of
  218. the services destroys these documents.   It  does  not.   There  is  a
  219. desire  to change the documents to produce the best possible standard,
  220. yet backwards conformance to the current work has always been a goal.
  221.  
  222. These documents  will  change  in  future  revisions  of  POSIX.   The
  223. knowledge gained and information content is valid.  We are discussing,
  224. however, an effort that is  far  beyond  simple  reformatting  of  the
  225. current documents.
  226.  
  227. ANY significant  change  at  this  point  will  inevitably  meet  with
  228. resistance  no  matter  how  it's presented.  This whole issue is very
  229. analogous to 1003.3 requirements for providing test assertions at this
  230. point.   At the last P1003 meeting in Danvars, I had an opportunity to
  231. spend time in the .1, .5 and .9 rooms, (as well  as  my  home  in  .4)
  232. discussing  LIS issues.  I think I'm beginning to understand how Roger
  233. Martin (P1003.3 chair) feels any time he shows up in  another  working
  234. group to explain test assertion requirements.
  235.  
  236.  
  237.  
  238. 4.2  People Issue #2
  239.  
  240. Working Groups that thought they had ballotable  documents  are  being
  241. asked  to  fulfil  additional requirements.  These requirements entail
  242. considerable extra effort.  Base standards groups are being  asked  to
  243. provide  base LIS of their services, and the C language binding to the
  244. LIS.  Bindings groups are being asked to provide reformatted  bindings
  245. to  a  base  LIS  which  doesn't  yet  exist.   At  the same time test
  246. assertion requirements are being presented.  Both of these  areas  are
  247. perceived  as  being tedious and "boring".  One Working Group actually
  248. went on record saying they felt they would lose membership over  these
  249. issues.
  250.  
  251.                                                                 Page 5
  252.  
  253.  
  254. For this work  to  be  worthwhile  it  must  be  done  completely  and
  255. accurately.   This  will  require  exacting  effort.  Nothing like the
  256. "exciting" work of arguing the functionality of a family of  services.
  257. This  comes  at the perceived end of work as a draft document prepares
  258. to go to ballot.
  259.  
  260.  
  261.  
  262. 5  THICK DOCUMENTS OR THIN - A USABILITY ISSUE
  263.  
  264. One of the debates currently being argued  in  P1003  is  whether  the
  265. individual language bindings are thick documents or thin.
  266.  
  267. In the thick  document  scenario,  there  is  a  base  document  which
  268. describes  the  abstract service interfaces, and each binding document
  269. is a thick  standalone  document  which  will  repeat  the  functional
  270. descriptions,  adjusted  for  the  particular  language.   This camp's
  271. followers are programmers with real experience in receiving a standard
  272. on  their  desk  and having to use it as a programming tool.  The base
  273. document becomes a tool only for language binding writers.
  274.  
  275. The thin document scenario has a  base  document  describing  abstract
  276. service  interfaces,  but each thin binding will only include language
  277. specific information.  All  appropriate  functional  descriptions  are
  278. pointed  to  in  the  base  document  by  reference.  This camp is the
  279. "Standards aren't for People" crowd.  Standards  are  only  meant  for
  280. conformance  testing for procurement.  If a programmer actually had to
  281. use the binding standard, they would also require  the  base  standard
  282. and would then work with a finger stuck in each book.
  283.  
  284. There are actually  two  separate  issues  hidden  in  the  thick/thin
  285. binding  debate.   The  first issue is whether a binding is allowed to
  286. repeat material contained in the base LIS.  The second issue  concerns
  287. whether a binding provides a direct one-to-one mapping to the base, or
  288. whether it can be creative and more directly map to the  semantics  of
  289. the language being bound.
  290.  
  291. For the record, the P1003.5 (Ada) Working Group decided early in their
  292. history  to  create  a  standalone  document  appropriate  to  the Ada
  293. language.  The P1003.9 (FORTRAN)  Working  Group  chose  to  create  a
  294. binding  which  points  to  the  "base" document, mapping its services
  295. one-to-one as closely as possible.
  296.  
  297. We are working under the assumption that  ISO  ascribes  to  the  thin
  298. binding  camp.  Semantically, standards do not overlap.  Standards are
  299. allowed to refer to other standards.  There are genuine and  realistic
  300. concerns  with  synchronizing  standards  documents  if many documents
  301. contain overlapping material.
  302.  
  303. For the record, I'll voice the following  suggestion.   The  STANDARDS
  304. themselves  will  be individually drafted and balloted documents as in
  305. the thin binding camp.  The LIS standard  comes  first.   The  binding
  306. standard  comes  second.   However,  instead  of  merely pointing to a
  307. another document, or including its own interpretation of the  contents
  308. of  the other standard, the text of the LIS is directly embedded.  The
  309.  
  310.                                                                 Page 6
  311.  
  312.  
  313. embedded LIS text is clearly delineated so as to be  clearly  separate
  314. from  the binding text, and only the binding text is ballotable in the
  315. draft binding document.  This  would  hopefully  solve  the  usability
  316. issue put forward by the one document camp.
  317.  
  318. Think of it  as  a  documentation  analogy  to  software  development.
  319. Instead  of  subroutine  calls  pointing  elsewhere, there are already
  320. expanded "macro" calls to  "speed"  the  understanding.   (Publication
  321. synchronization  concerns  become  source  control concerns similar to
  322. different applications referencing the same "macro" library.) It would
  323. simplify the synchronization issue.
  324.  
  325. Ultimately I believe the publication should be usable by mere mortals.
  326.  
  327.  
  328.  
  329. 6  THE CASE FOR RIGOROUS FORMAL METHODS AND THE CASE AGAINST
  330.  
  331. Another hot debate is the level of rigor required  by  the  LIS.   Our
  332. understanding  is  that  natural language descriptions of the services
  333. are sufficient for the current LIS of POSIX.  It is explicitly  stated
  334. in the draft methods document that we are not pursuing a formal method
  335. of specification for the standard.
  336.  
  337. There seems to be a lack of experience and standardization  of  formal
  338. methods  within the standards community.  Little work has been done to
  339. formally  specify  standards.   (Now  that  I've  publicly  made  this
  340. statement,  I'm  sure  I'll  be accosted by everyone next week who has
  341. seen anything even remotely looking like a formal  standard.)  I  base
  342. this  statement  on  three  P1003  meetings  worth  of  LIS BOFs where
  343. everyone is quick to suggest their favourite formal method, but  there
  344. is  never  anyone  who has taken the trouble to bring an example of it
  345. used to specify a standard.   Please  do.   The  author  welcomes  all
  346. related information.
  347.  
  348. A recent issue of IEEE Software had a very reasonable article  on  the
  349. use  of  formal  methods in the standards process [6].  This work came
  350. out of a working group formed by the British Computer Society (BCS) to
  351. address  the  lack  of  informed  opinion on the matter.  They outline
  352. briefly the reasons for  using  formal  methods,  a  few  examples  of
  353. experiments  with using formal methods on standards, and finish with a
  354. set of guidelines.  These guidelines are by far the strongest part  of
  355. the article.
  356.  
  357. They also refer briefly to an ISO three-phase plan [7] to bring formal
  358. methods into the standards process.
  359.  
  360.      1.  Phase 1 has the use of formal methods restricted due to  lack
  361.          of  experience  and expertise.  Work is done in parallel on a
  362.          formal  specification  of  the  standard,   which   hopefully
  363.          contributes  to  the  robustness and clarity of the standard,
  364.          and the results are published as a SEPARATE report.
  365.  
  366.                                                                 Page 7
  367.  
  368.  
  369.      2.  Phase 2 has seen the knowledge and experience  base  expanded
  370.          in  the  use of formal methods in standards creation, and the
  371.          work proceeds in parallel and is sufficient to  be  published
  372.          as  an  informative  annex.   (Note:   This is not a balloted
  373.          NORMATIVE one, but an unballoted informative one.)
  374.  
  375.      3.  Phase 3 sees the standards developing  body  well  versed  in
  376.          formal  methods  and  the  formal description is the standard
  377.          with a natural language commentary.
  378.  
  379. One thing that the article warns against is the retrofitting of formal
  380. methods  to an existing standard, because it can often demonstrate the
  381. lack of conceptual integrity of the original work.
  382.  
  383. Additionally they recommend choosing an appropriate formal  method  to
  384. express  the  standard,  depending  on  such  factors  as the proposed
  385. standard's content, mathematical sufficiency and accessibility to  the
  386. standards forming group.
  387.  
  388. The primary formal methods that have been suggested are Z, and VDM.
  389.  
  390. Z actually has a number of interesting examples to  consider.   Recent
  391. work  has been done to produce a formal specification of P1003.1 using
  392. Z, and it was reported upon by Martin Kirk [8].
  393.  
  394. The report concluded that while the work was useful at finding "weasel
  395. worded"  areas of the standard, it requires a large effort to continue
  396. this work.  Several other problems  exist  as  well.   Some  of  these
  397. problems  had  to  do with the complexity of POSIX, and its deliberate
  398. areas of ambiguity.  Other problems encountered had to do with  the  Z
  399. notation and the choice of model.
  400.  
  401. Indeed this raises an area of concern  with  how  far  formal  methods
  402. should  be applied to POSIX.  POSIX has deliberate areas of ambiguity,
  403. "weasel words", and unspecified nature.  This is  required  so  as  to
  404. allow   a   maximum   number   of  implementations,  to  not  restrict
  405. implementations in unnecessary ways or force  implementations.   POSIX
  406. is a standard for portable operating system service interfaces.  It is
  407. not the specification of an operating  system  [9].   There  are  also
  408. times when weasel words are the only way to arrive at consensus.
  409.  
  410. Another interesting example of Z in this area is a recent  article  by
  411. J.   Michael  Spivey  on  using  Z to specify a real-time kernel [10].
  412. This is the specification of a minimal kernel and not an interface  to
  413. it.  Spivey discusses several deficiencies in his specification of the
  414. kernel,  and  addresses  all  of  them  at  the  risk  of  making  his
  415. specification  more complex and less understandable.  He does conclude
  416. that using a formal specification is a valuable  and  beneficial  tool
  417. for  answering  questions about the kernel, but he then "suggests that
  418. the idea of using  a  formal  specification  as  a  complete  contract
  419. between implementer and user is not very helpful." [11]
  420.  
  421. Indeed it has been sensibly pointed out that the use of formal methods
  422. is   beneficial   to  aiding  understanding  about  the  object  being
  423. specified, but that they need not be  a  complete  specification  [12]
  424.  
  425.                                                                 Page 8
  426.  
  427.  
  428. [13]  [14].   This certainly fits in with the ISO three-phase approach
  429. to  introducing  formalism  into  standards.   They  never  require  a
  430. complete formal specification without natural language commentary.
  431.  
  432. The Vienna Development Method (VDM) is also frequently suggested as  a
  433. candidate  formal method.  VDM has a similar flavour to Z but does not
  434. have a facility  similar  to  Z's  schema  calculus  to  allow  simple
  435. specifications to be built into complex ones.
  436.  
  437. This summarises all the current discussion  I've  discovered  to  date
  438. concerning   actual   formal  methods  to  specify  a  standard  POSIX
  439. interface.
  440.  
  441.  
  442.  
  443. 7  A BRIEF NOTE ON TESTING AND CONFORMANCE ISSUES
  444.  
  445. There are several testing issues about LIS  of  POSIX  no  matter  how
  446. formal  the  specification  method.  The following questions have been
  447. raised.
  448.  
  449. How does one "test" a language independent  specification?   At  first
  450. glance,  one  doesn't.  Test assertions are merely done at the binding
  451. level to  allow  implementations  to  demonstrate  conformance.   This
  452. certainly needs to be done.
  453.  
  454. But can formal or natural language assertions be made about  the  LIS,
  455. which can be tested manually by argument and inspection, and which can
  456. then act as a basis set of  assertions  used  when  building  language
  457. binding assertions?
  458.  
  459. >From a different point of view, is there a set of assertions that  can
  460. be  made  about  the  LIS  which can help determine how good a binding
  461. reflects the base?  How do bindings conform to the base?  If a binding
  462. becomes  a  one-to-one  mapping  of  the  base  LIS, then they conform
  463. directly.  If they do  not  completely  map  the  binding  or  map  it
  464. differently, how is conformance measured?
  465.  
  466. All of these questions need some thought, and I  hope  this  generates
  467. some creative feedback for next week.
  468.  
  469.  
  470.  
  471. 8  SUMMARY
  472.  
  473. I hope I have presented completely and with as little bias as possible
  474. the  issues  surrounding  the  language  independent  specification of
  475. POSIX.
  476.  
  477. Hopefully at the BOF gatherings at P1003 and the WG15 Ad Hoc, many  of
  478. these  issues  can  be  solved to everyone's satisfaction, with a care
  479. towards the tremendous effort which has gone on to  date  at  building
  480. POSIX.
  481.  
  482. I look forward to seeing everyone there.
  483.  
  484.                                                                 Page 9
  485.  
  486.  
  487. 9  REFERENCES
  488.  
  489.  
  490. [1] Paul Rabin and Stephen Walli, "Draft TCOS-SS Programming  Language
  491. Independent Specification Methods", Draft 1, 15 July, 1990.
  492.  
  493. [2] Dominic Dunlop, comp.std.unix Volume 20,  Number  110,  USENET,  5
  494. July, 1990.
  495.  
  496. [3] "Proposed DTR 10182 on:Information Processing Systems - Guidelines
  497. for   Language   Bindings",   ISO/IEC  JTC1/SC22  N754,  International
  498. Standards Organization, Geneva.
  499.  
  500. [4]  "Common  Language-Independent  Datatypes:   Working  Draft   #3",
  501. ISO/IEC  JTC1/SC22/WG11  N162,  International  Standards Organization,
  502. Geneva.
  503.  
  504. [5] ORKID Working Group, "ORKID  -  Open  Real-time  Kernel  Interface
  505. Definition, Draft 2.1", August 1990.
  506.  
  507. [6] David Blyth, et al, "The Case for Formal  Methods  in  Standards",
  508. IEEE Software, Volume 7, Number 5, September, 1990.
  509.  
  510. [7] "JTC1 Statement  of  Policy  on  Formal  Description  Techniques",
  511. ISO/IEC   JTC1   N145,  and  ISO/IEC  JTC1/SC18  N1333,  International
  512. Standards Organization, Geneva, 1987.  This reference was  pointed  to
  513. in [6] and I have not yet been able to obtain a copy.
  514.  
  515. [8] Martin Kirk, "Z Specification of P1003.1", ISO/IEC  JTC1/SC22/WG15
  516. N115, International Standards Organization, Geneva, September, 1990.
  517.  
  518. [9] Donn Terry, "Suggested Response to JTC1/SC22/WG15 N115",  Document
  519. SC22/WG15 US TAG N146.
  520.  
  521. [10]  J.   Michael  Spivey,  "Specifying  a  Real-Time  Kernel",  IEEE
  522. Software, Volume 7, Number 5, September, 1990.
  523.  
  524. [11] Ibid.  p.27
  525.  
  526. [12] J.  Michael Spivey, "The  Z  Notation  :   a  reference  manual",
  527. Prentice Hall International, 1989
  528.  
  529. [13] Anthony Hall, "Seven Myths of  Formal  Methods",  IEEE  Software,
  530. Volume 7, Number 5, September, 1990.
  531.  
  532. [14]  Jeannette  M.   Wing,  "A  Specifier's  Introduction  to  Formal
  533. Methods", Computer, Volume 23, Number 9, September 1990.
  534.  
  535.  
  536. Volume-Number: Volume 21, Number 197
  537.  
  538.