Home
        Dealing with Evidence: The Programatica Certificate Abstraction
         Contents
1.     The sequents associated with either or both  of these certificates may be modified by subsequent edits  but this will in   validate c  at the very least   and the copy server will not allow it to be  revalidated if c    is invalid or if the sequents of c and c    differ        Weakening  The weakening server supports the construction of certificates  c in which the sequent is obtained by weakening the sequent of another  certificate c     i e   by adding extra hypotheses on either side of the sequent         Resolution  The resolution server is the most sophisticated internal server  in the prototype  and is based on resolution  or  to be more precise  on the     cut    rule of sequent calculus  unification plays no part in the prototype   s  underlying propositional logic      A X  B CEX D  A C FH B D   Here  A  B  C  and D are arbitrary sequences of formulae and we emphasize  the special role that X plays as a part of both hypotheses  by referring to the  rule as    resolution on X     When the resolution server is invoked  it prompts  the user to enter a value for X  and then searches for ways to apply resolution  on X to the sequents of the currently selected certificates  If resolution cannot  be used  no certificate is constructed and an error diagnostic is displayed   On the other hand  if there is more than one way to apply resolution  then  the user is presented with a list of possible results and asked to select one  of them  If there is only one possible choice
2.   then the server just constructs  the necessary certificate and inserts it into the host document        Dealing with Evidence 11    Thinking beyond these specific examples  it is clear that internal servers pro   vide the infrastructure for interactive theorem proving  with different servers  corresponding to inference rules or  depending on your perspective  tactics  In  a practical system  with a richer underlying logic  it would be useful to include  more powerful internal servers to automate and combine primitive tasks includ   ing  for example  quantifier elimination  matching and unification  simplification  and rewriting  Adding a degree of programmability would give further flexibility   allowing users to develop and use custom libraries of derived rules and tactics     5 User Interface Issues    One of the most challenging practical aspects of building an evidence manage   ment system is in developing an interface that will help users to work more ef   fectively and to understand the details of a complex project more easily  In this  section  we describe some of the ideas for visualization of documents  servers and  certificates that we have been experimenting with to address these needs in the  context of our prototype  Several of these ideas are illustrated in Fig 4        ris Programatica Certificate Browser  File Certificates Scoring                                                                      Fig  4  A screenshot from the prototype showing two views of
3.  a particular document   On the left is a table that lists the certificates in the order they were created  On the  right is a graphical display that highlights dependencies between certificates     As the figure shows  every certificate is represented visually by an icon  The  standard icon for certificates obtained from an external server is a conventional    12 Mark P  Jones    certificate with a border color that can be used to distinguish between different  servers  Useful information can be conveyed in the choice of colors  for example   less reliable forms of evidence might be displayed with red borders  alerting users  to the possibility that stronger evidence might be needed    The icons for the certificates of internal servers are annotated with colored     ribbons    that represent the external servers on which the certificate depends   As aresult  the red coloring from an unreliable external certificate will propagate  to each of its clients  Of course there is a limit to the number of different    rib   bons    that can be displayed within an icon  and there are also some interesting  questions about how we might use other visual attributes  such as the ordering  or width of ribbons  to best reflect the quality of the underlying evidence    Early experiments with the prototype suggested that visualization of depen   dencies between certificates would be useful  This resulted in the development of  the second  right most  document view in the figure  which shows t
4.  and sequent  In addition  each certificate  may be associated with a particular host document  this association can be set  or broken using the attach or detach methods  respectively     abstract class Cert    Server getServer     Sequent getSequent       String getDescription       Doc getHost     boolean attach Doc doc    boolean detach Doc doc      boolean save Folder folder      boolean isValid     boolean validate     void invalidate     boolean edit            The last four methods support validation and editing  as described in Sec 3 2   The isValid method returns the value of the flag indicating whether the certifi   cate is known to be valid  but makes no attempt to validate a certificate whose  status is unknown  The latter task must  instead  be handled separately by the  validate method  It is also possible to invalidate a certificate  and all of its  clients  at any time  which sets the flag for each certificate to false  This will  typically be used when the certificate  or something on which it depends  has  been modified in some way that requires the user to recheck its validity  Finally   the edit method can be used to open an appropriate editor for the certificate     7 Summary    Many tools have been developed to help programmers produce evidence that  the software they are developing is correct  In this paper  we have described a  new kind of tool that will help users to manage and exploit that evidence in  the context of an evolving project  An initial p
5.  internal logic that can accommodate the logics of  many externals tools  or  at least  substantial portions of those logics   It also  suggests that different external tools are described and cataloged carefully so  that users can be quickly guided to an alternative when their first choice of an  external tool proves to be unsuitable  Note also that translation is not a one way  process  For example  to achieve a high level of integration  the counterexamples  that a model checker produces when an asserted condition fails should  ideally  be  translated back to use the same notation in which that assertion was expressed    A second responsibility of an external server is to capture and package context  from source documents so that it can be used by the external tool  In the context  of an external theorem prover  for example  we refer to this as    theory formation     because it will require assembling a theory that includes the facts and definitions  that are needed to prove a particular theorem    Translation and theory formation are challenging tasks  and neither one has  been addressed by the  almost trivial  external servers in our prototype  We  expect this to be an important area for future work  but note also that some  significant progress here has already been made in the Programatica project in  developing interfaces to both HOL98  2  and Alfa  11      4 2 Internal Servers    Internal servers do not require specific external tools  and so provide built in  funct
6.  its folder more deeply  For other tasks   such as opening a certificate  for editing or validation   the certificate type must be used to determine how  additional files or subfolders should be interpreted    For flexibility and extensibility  we can adopt a standard technique from  component based programming  representing each different type of certificate by  a globally unique identifier  or GUID   and using a registry to associate individ   ual GUIDs with corresponding certificate servers  Thus each type of certificate  can have a specialized server program that can access and use any extra data in  the corresponding certificate folder     3 Certificates    Certificates are a mechanism for encapsulating different types of evidence  The  evidence itself  as well as the internal format by which it is represented  will  vary from one certificate to the next  But  from the perspective of an evidence  management tool  every certificate offers the same basic interface  the most im   portant aspects of which are the attributes that describe a certificate   s sequent  and validity  and the operations that allow certificates to be validated and edited   Each of these features is described in the following subsections     3 1 Sequents    The sequent of a certificate formalizes the claim that the accompanying evidence  is intended to support  More generally  sequents provide the means by which  disparate kinds of evidence can be brought together in a single environment   In this pa
7. Dealing with Evidence   The Programatica Certificate Abstraction    Mark P  Jones    Department of Computer Science  amp  Engineering  OGI School of Science  amp  Engineering at OHSU  20000 NW Walker Road  Beaverton  Oregon OR 97006  USA    mpj cse ogi edu    Abstract  In software projects  developers often rely on a wide variety  of evidence to assure themselves that the system they are building is  functioning correctly  There are many ways to generate evidence   from  code reviews to testing and theorem proving   but the diversity and vol   ume of evidence can be hard to manage  maintain  or exploit as a project  evolves and meaningful levels of assurance are required    In this paper  we describe a new kind of tool that facilitates effective use  of evidence throughout a project  Such tools should allow users to capture  and collate evidence with source materials  to exploit dependencies  to  automate combination and reuse  and to understand  manage  and guide  further development and validation efforts  Our work is presented in the  context of a prototype built for the Programatica project at OGI where  evidence is represented by a certificate abstraction  but the key ideas  we  believe  should be more widely useful     1 Introduction    Throughout the lifetime of a software project  the designers and developers will  typically gather  generate  and rely on many different kinds of evidence  formal  and informal  to assure themselves that the system they are building is f
8. Systems  21 4   July 1999    James Corbett  Matthew Dwyer  John Hatcliff  Corina Pasareanu  Robby  Shawn  Laubach  and Hongjun Zheng  Bandera  Extracting finite state models from Java  source code  In 22nd International Conference on Software Engineering  pages  439 448  Limerick  Ireland  June 2000  IEEE Computer Society    Michael D  Ernst  Dynamically Detecting Likely Program Invariants  PhD the   sis  University of Washington  Department of Computer Science and Engineering   August 2000    S I  Feldman  Make A program for maintaining computer programs  Software     Practice and Experience  9 4   1979    Martin Fowler et al  Refactoring   Improving the Design of Existing Code  Addison   Wesley  1999    Michael J C  Gordon  Reachability programming in HOL98 using BDDs  In The   orem Proving in Higher Order Logics  TPHOLs   August 2000    Thomas Hallgren et al  The Alfa proof editor  http   www cs chalmers se    hallgren Alfa     Gary T  Leavens  K  Rustan M  Leino  Erik Poll  Clyde Ruby  and Bart Jacobs   JML  notations and tools supporting detailed design in Java  In OOPSLA 2000  Companion  Minneapolis  Minnesota  pages 105 106  ACM  October 2000    K  Rustan M  Leino  Greg Nelson  and James B  Saxe  ESC Java user   s manual   Technical Report Technical Note 2000 002  Compaq Systems Research Center   October 2000    Simon Peyton Jones and John Hughes  editors  Report on the Programming Lan   guage Haskell 98  A Non strict Purely Functional Language  1999  Available from  h
9. askell in mind  much of the  basic infrastructure could be adapted to other languages  For example  a version  of Programatica for Java might be based around the Java Modeling Language   JML   12  15  as a notation for expressing properties of Java code and integrat   ing theorem proving via LOOP  16   model checking via Bandera  6   automatic  invariant detection via Daikon  7   extended static checking via ESC Java  13    and other techniques such as runtime assertion generation  4     In short  as we have worked to develop the foundations for Programatica  it  has become clear that the basic certificate mechanisms are essentially orthogonal  to other aspects of the design  and that they may well have much wider applica   bility  We will see this concretely in the general roles that both documents and  certificates play in this paper    The remaining sections of this paper are as follows  In Sec 2 and Sec 3  we  describe the use of compound documents and certificates  respectively  in cap   turing source materials and associated evidence  The role of certificate servers in  supporting different types of evidence is presented in Sec 4  To explore our ideas  in more concrete form  we have built a prototype tool  which has also given us an  opportunity to experiment with user interface issues described in Sec 5  A quick  overview of the prototype implementation is included in Sec 6  We conclude with  a brief summary in Sec 7     Dealing with Evidence 5  2 Documents    The firs
10. c structure is firmly in place  developers might use tools based  on formal methods   such as model checkers or theorem provers   to establish  or obtain evidence for key properties  Effective use of such tools can require  significant investment  both in initial training and in daily use  and may   therefore  be considered too expensive in the early stages of a project while  significant structural changes are still likely  On the other hand  these tools  can also be used to obtain very strong guarantees about program behavior     such as freedom from deadlock  or verification of security or communication  protocols   that will be particularly important in safety or security critical  applications where a high degree of assurance is required        Finally  as the project approaches a release date or is prepared for deploy   ment  more emphasis is likely to be placed on compatibility testing  perfor   mance tuning  usability issues  documentation  and installation procedures     In practice  few  if any  software projects follow such a simple  linear course  of development with clear and neat divisions between different stages  Instead   they evolve in complex and unpredictable ways as bugs are detected and fixed   as users clarify or change their needs or request new functionality  and as the  development efforts adapt to reflect changing priorities and emphasis  This sug   gests a new opportunity to use evidence as as a mechanism for identifying and  tracking change  Moreo
11. epresenting certificates  It is also possible for such compound doc   uments to include image data  media files  property lists  or any other resources  that programmers might wish to package up with particular source files    In this paper  we focus on the folders that are used to store certificates within  a document  In particular  we need  i  a way to associate individual certificates  with particular points in the program  and  ii  a way to inspect and use the data  in each certificate folder in an appropriate manner    One way to meet need  i  is to use a special form of comment annotation in  the source text  In Programatica  for example  we can use a Haskell comment of  the form    cert   lemma1    to indicate the intended position in the document  of the certificate stored in the folder called lemmai  In a GUI editor  like the  one in Fig 1  the annotation can be displayed as an icon  However  by avoiding    6 Mark P  Jones    special syntax or binary representations  the basic program source text will be  kept in a form that can also be used by programmers who prefer conventional  text editors and standard command line programming tools    To meet need  ii   we will require each certificate folder to contain a descriptor  file that uses a standard format to capture important attributes such as the  name  type  and status of the certificate  Some of these details can be used  to provide a quick description of the certificate  without needing to probe the  contents of
12. f a user tries to access a certificate on a machine where the corresponding server  has not been installed  then a call to getServer  guid  will return null  Use of  such certificates will be limited  some details can be extracted from its descriptor   but operations that are specific to particular certificate types   such as editing  or validation   will not be possible    Each Server includes attributes that specify its guid and a text string that  can be used to describe the server in interactions with users  Once an appropriate  server has been identified  the load method can be used to obtain the certificate  corresponding to a particular folder in a source document   The matching save  functionality is located in the Cert class   We can also use a server   s newCert  method to insert a new certificate of the appropriate type into a particular host  document  In responding to this method  the server may query the user for any  additional information that it needs  The server may also choose to decline the  request  in which case it will return a null value     abstract class Server    String getDescription      GUID getGUIDQ   Cert load Folder folder    Cert newCert Doc host      14 Mark P  Jones    Our prototype includes several different implementations of the basic Server  interface  most of which correspond to the server types described in Sec 4    Individual certificates are represented by Cert objects  Each certificate in   cludes attributes that specify its server
13. ficate and hence    8 Mark P  Jones                                                        PEE x  PENES xl PENES xl  Test  Extreme Programatica G Assertion el Resolution  Status  Valid Status  Valid Status  Valid  Description   Simple Tests Hypotheses   c  o  Hypotheses   D  A   Details  M 1 2   Conclusions   E  F Conclusions   E  F  2 3 6 Confidence  100  Confidence  100  fact       120   Sources   Type   Sequent   valid   Conf   Score  C DFEF m  100  25  Ghe  B  10  75  Resolve on   C  oK   Cancel oK   Cancel 1   oK   Cancel                   Fig  3  Examples of the certificate editors in our prototype  The three editors shown  are for automated unit testing  left   assertions  center   and resolution  right      to work with and modify the underlying evidence   None of the examples in the  figure require this functionality      4 Certificate Servers    Certificate servers  or just    servers     play an important role as the primary mech   anism for creating and using different types of certificate  For example  once an  appropriate server has been located  we can use it to reconstruct the certificate  that is stored in a particular folder of a compound document  Servers are re   sponsible both for creating appropriate certificates  and for endowing them with  the functionality that is needed for validation and editing    We distinguish between external servers  which are used for certificates whose  evidence is supplied by external tools  and internal servers  which use f
14. hese depen   dencies in a simple and intuitive way  A lingering concern is that this graphical  view will become harder to work with as the number of certificates increases    A final comment is required to explain the references to confidence levels  and scores that some readers will have spotted in our screenshots  These are  a sign of the pragmatically motivated experiments that we have been using to  evaluate various schemes for comparing the quality of evidence in individual  certificates  and for establishing priorities  based on user specified preferences   that can guide further validation efforts  At present  user input is provided by  assigning    confidence    levels to servers and to individual certificates  and by se   lecting between different methods for calculating    scores     For example  one such  algorithm calculates the score of a certificate as the minimum confidence level of  all the certificates and servers on which it depends  Our experiments are ongoing  and we believe that they will contribute significantly to the usability of our tools   but it is too early to report any conclusions in this paper     6 Implementation Overview    There is no room here to provide detailed insights into the implementation of  our prototype  In this section  however  we provide brief sketches for the most  important abstractions  hoping that this will help to clarify some of the ideas  presented previously  In particular  we discuss the representation of compound  doc
15. ificate can be revalidated whenever I    C P     Clearly  the second of these is strictly more powerful than the first because every  trivial sequent can be established using monotonicity  Nevertheless  in a practical  system  when the costs of validation are taken into account  it may be very useful  to have both weak but efficient servers to deal with easy special cases  and more  powerful but also more expensive servers to deal with harder  general cases        Rule    Servers Other types of internal server rely on the results of previ   ously constructed certificates  Servers like this correspond to rules in logical  systems and provide the key mechanism by which individual pieces of evidence  are combined  In general  when a certificate c is constructed by making use of  a previously constructed certificate c     we refer to c as a client of c     Of course  the resulting dependencies between certificates must be taken into account in  determining validity  For example  if the user changes  and hence invalidates a  certificate c     then every client c should also be invalidated  Notice that  by en   suring each certificate is constructed before its clients  we can at least be sure  that there are no circular dependencies   Examples of    rule    servers in the prototype include         Copy  The copy server will construct a certificate c by using another  pre   viously constructed certificate c     and will initialize the sequent for c with  a copy of the sequent for c 
16. ificate includes a flag that is set to true only when the certificate  is known to be valid  If either the certificate itself or a part of the source text  that it depends on is changed  then the flag will be set to false  This records the  fact that a subsequent validity check is required  and does not necessarily mean  that the certificate is  in fact  invalid    The actions needed to edit a certificate   such as modifying it so that its  validity can be established   will also depend on the type of the certificate  and  may  in some cases require significant user interaction  The screenshots in Fig 3  show the editors for three of the different kinds of certificate in our prototype   Clearly  there is some commonality in the editors   each of dialog boxes shows an  icon and a name for a particular type of certificate  and an indication of the given  certificate   s status  either valid or unknown   At the same time  there are also  some significant differences from one certificate type to the next  The leftmost  editor  for example  is for automated testing  and does not display a sequent  because all certificates of that type use the empty sequent  H  The rightmost  editor is used with certificates obtained by resolution  See Sec 4 2  and includes  several fields that are not present in the other examples  Where appropriate   the editor dialog for a certificate includes buttons allowing the user to invoke  associated external tools with appropriate settings for that certi
17. ionality for generating and combining evidence  In this section  we describe  some of the internal servers in our prototype  this is intended as an indication of  the kinds of functionality that can be supported  and not necessarily as examples  of servers that would be included in a full evidence management system        Axiom    Servers The simplest kinds of internal servers can directly generate  and validate certificates for sequents of a particular form  and are analogous to  axioms in a logical system  There are two examples of this in our prototype         Trivial Sequents  The trivial sequent server produces and validates certifi   cates for sequents of the form I    I     The server requests an initial value  for I when it is used to create a certificate of this type  Subsequently  the  left and right hand sides of the sequent may be edited independently  This   however  will invalidate the certificate  and the server will not allow it to be  revalidated unless the two sides are equal  which may require further edits        Monotonicity  The monotonicity server can be used to obtain certificates  with sequents of the form T      I     where I    C I     The current implementation  of this server does not prompt the user for I or I    when a new certificate  is created  but instead defaults to the empty sequent  H  which is valid  but    10 Mark P  Jones    not particularly useful  Subsequent edits can be used to set different values  for I and I     the modified cert
18. of certificate if the claim that they might support is judged to be either too  informal or too specific to be reflected as a formal judgment    The task of choosing a suitable logic for the formulae in certificates may  not be easy  and will depend on context  For instance  in Programatica  we are  experimenting with a logic of partial functions  while for Java we might adopt  the JML logic  15   In our prototype  we have so far avoided this issue by allowing  only atoms  i e   basic propositional variables  as the formulae in sequents     3 2 Validation and Editing    A certificate is valid if its sequent is consistent with the evidence it provides  For  example  a certificate with sequent   A is valid if it provides evidence for A  but  invalid if it contains either incomplete evidence or evidence for a different formula  B  In the latter case  there are at least two ways to make the certificate valid   either by changing its evidence to support A  or by changing its sequent tot B   In this way  validity provides an interface between the evidence from external  tools and the language of sequents that is used for evidence management    The actions needed to determine whether a given certificate is valid will  depend on the type of the certificate  and may  in some cases  involve significant  computation   Section 4 includes specific examples of the steps that are needed  to validate the certificate types used in our prototype   To permit a quick test of  validity  each cert
19. per  we will write sequents in the form of judgments I      I     where  the hypotheses in I and the conclusions in I    are lists of logical formulae over  some suitably chosen specification logic  In particular  the formulae in both  hypotheses and conclusions may include direct references to entities such as  variables and functions that are defined and used in the source text  The intuition      It is common to use strings of 128 bits as GUIDs  and to generate new GUIDs by  hashing time  date  and network address information with randomly generated data   the goal is to make it  practically  impossible for independent developers to pick the  same GUID for different components    3 Our use of the term    sequent    is consistent with its use in logic  and with the im   plementation used in our current prototype  It is  however  more specific than we  really need for a general evidence management system  and there are other forms of  sequent that could be used instead     Dealing with Evidence 7    for a sequent I H I    is that one or more of the formulae in I    can be guaranteed  to hold when all of the formulae in I    are satisfied  Thus sequents may be used  to state both facts with an empty set of hypotheses  for example  limits on  the possible values of a sensor reading  which might influence the selection of  a particular representation   and conditional statements with a non empty set  of hypotheses  The empty sequent  denoted F  can also be used for some types  
20. raction as a    1 nttp   www cse ogi edu PacSoft projects programatica     4 Mark P  Jones    way to capture evidence of validity  For further context  the screenshot in Fig 1  shows one possible user interface for Programatica  which consists of a main win   dow with two sub panes  The pane on the left is a tree based project browser     File Edit View Project Build Debug Tools Options Window Help  PT Standard Prenae mf      C3 Standard Libraries El read mem addr   mem addr  C  Ratio H  C complex i property ReadEmpty   ALL a  Addr  Ql  C  Numeric read empty a    0  Dy  C  Array writing to memory is function extension    C Random write i  Memory   gt  Addr   gt  Word   gt  Memory  ec Monad Transformers    CI Separation Model    CI Memory     C Types     Cf values property WriteWrite   All  a  Addr   F E           write mem addr val     addr    gt  if addr  addr  then val else mem addr                 C Properties ALL  w w     Word       y ReadEmp All  m  Memory    O Readwrite        writewrite       write  write maw   aw   write maw          Fig  1  A mockup of a possible graphical user interface for Programatica     The pane on the right shows a Programatica source document  including both  definitions of executable code and assertions of key properties  Certificates of  validity have been provided for some of these properties  these are indicated  by the presence of small certificate icons that are embedded in the source text   Although Programatica has been designed with H
21. reme  Programming     3   for example  encourages frequent use of testing as an integral  part of coding and refactoring  9   These ideas have stimulated the development  of tools to automate the testing process  but they do not attempt to deal with or  incorporate other kinds of evidence  Similarly  compilation tools  such as make   8   or the SML NJ compilation manager  5   track dependencies between source  code units to minimize the need for recompilation  but they do not attempt  to capture other kinds of dependencies or evidence  As a final example  some  systems support    external oracles    that allow users to mix different kinds of  evidence by integrating theorem proving with other validation tools such as  BDDs  10  or model checking  1   These tools  however  focus heavily on formal  validation and do not directly address evidence capture and management    Our work to date has been carried out in the context of the Programatica  project  at OGI  whose goal is to develop a new kind of program development  environment that encourages its users in stating  thinking about  and validat   ing key properties of the software they are writing  Programatica augments the  functional programming language Haskell  14  with a notation  and an associ   ated logic  for stating  and reasoning about  properties of executable code  it  provides mechanisms for exporting these properties in an appropriate form to  a variety of external validation tools  and it uses a certificate abst
22. rototype has been constructed to  validate the basic design and to provide a starting point for experimentation   Areas where further research will be particularly valuable are in the exploration  of techniques for building external servers  and in the development of mechanisms  that will help users to organize and understand collections of evidence more  effectively     Dealing with Evidence 15    Acknowledgments    The work described in this paper was carried out in the context of the Progra   matica project at OGI  It has benefited and been shaped by input from several  members of the Programatica team  from other members of PacSoft  and from  other colleagues in the Department of Computer Science     References    1     10     11     12     13     14     15     16     Mark D  Aagaard  Robert B  Jones  and Carl Johan H  Seger  Lifted FL  A prag   matic implementation of combined model checking and theorem proving  In The   orem Proving in Higher Order Logics  TPHOLs   July 1999       Automated Reasoning Group  University of Cambridge Computer Laboratory  The    HOL98 theorem prover  http   www cl cam ac uk Research HVG HOL     Kent Beck  Extreme Programming Explained  Embrace Change  Addison Wesley   1999    Abhay Bhorkar  A run time assertion checker for java using JML  Technical Report  TR  00 08  Department of Computer Science  Iowa State University  May 2000   Matthias Blume and Andrew W  Appel  Hierarchical modularity  ACM Transac   tions on Programming Languages and 
23. ssion with the external tool     To support such diversity  our tools will need to handle evidence using generic  interfaces  and they should also be extensible so that they can accommodate  new kinds of evidence as they are needed  There are also some less well defined  issues that our tools will need to address         How can we deal with differing levels of trust and confidence in the different  kinds of evidence that are used        What can a tool do to help users visualize and understand the evidence they  have assembled  to prioritize future validation tasks  and to identify areas in  which evidence is either lacking or weak     These are challenging problems  Certainly  some aspects of confidence and trust  can be quantified  For example  if one test suite includes all of the tests from  another  then the first should offer at least the same degree of assurance as the  second  But many other aspects are subjective and will require a flexible tool that  can adapt to individual preferences and biases  For example  while some users  might be satisfied with proofs from a theorem prover  others more skeptical     perhaps concerned about the possibility of errors or over simplification in the  formal model   may prefer careful and extensive testing    We are not aware of previous work to build tools for evidence management  with the same broad scope we have described here  but there are many more  specialized tools from which we can draw inspiration  The practice of    Ext
24. t challenge of evidence management is in being able to capture many dif   ferent kinds of evidence  and in collating that evidence with corresponding sec   tions of source code  To meet these needs  we take inspiration from the so called  compound document technologies of modern office application suites  which al   low users to embed spreadsheets  database tables  charts  and other objects in  word processed documents  From the user perspective  each document is stored  in a single file that can be copied  renamed  or deleted just like any other file   The internal file format  however  provides a structure more like a hierarchical  file system  For example  the main text might be stored in a    file    in the com   pound document   s root folder  while individual attachments of different types  are placed in separate subdirectories    The diagram in Fig 2 shows how these ideas are adapted to Programatica  documents  In this case  each compound document contains a program source                                       source    GePendency cert   info        UY    descriptor   Other files or folders  that are needed by    this certificate     Fig  2  A Programatica compound source document includes conventional program  source text  dependency information  and a collection of certificates                    text  cached information about dependencies between program elements and  certificates  to permit faster recompilation and validation   and a collection of  subdirectories r
25. ttp   www haskell org definition     E  Poll and B P F  Jacobs  A logic for the Java modeling language JML  Technical  Report CSI R0018  Computing Science Department Nijmegen  November 2000   J A G M  van der Berg and B P F  Jacobs  The LOOP compiler for Java and  JML  Technical Report CSI RO019  Computing Science Department Nijmegen   December 2000     
26. uments  registry objects  servers  and certificates  which are described by Java  classes called Doc  Registry  Server and Cert  respectively  The code fragments  below should not  however  be read as executable code  they have been been  edited for this presentation to reduce clutter  for example  eliminating modifiers  like public or abstract  and to elide less important implementation details    We start with the Doc class  which provides methods to construct an empty  document and to load or save a document in a specified file  It also provides  methods for adding  removing  and retrieving the certificates in a document    Note that certificates are referred to here by the name of the corresponding  folder in the compound document      Dealing with Evidence 13    class Doc    static Doc empty     static Doc load File file      boolean save File file     boolean add String name  Cert cert    void remove Cert cert     Cert getCert  String name      Cert    getCerts             As described in Sec 2  each different certificate type is identified by a globally  unique identifier  The server for a particular guid can be obtained by consult   ing an appropriate Registry  Each registry can also be queried for the set of  all servers that it supports and can be updated by installing new servers  or  uninstalling old ones      class Registry    Server getServer GUID guid    Server   getServers      void install GUID guid  Server server     void uninstall Server server            I
27. unction   ality that is built in to the evidence management tool  and provide a means for  combining different types of evidence  These two kinds of server are described  in Sec 4 1 and Sec 4 2  respectively     4 1 External Servers    External servers connect the evidence management system to the external tools  that are used to construct and maintain evidence  As such  external servers will  perhaps be most visible to users as the software plug ins that must be installed  before certificates of a particular type can be edited and validated    External servers are responsible for translating between the languages used  in source documents and sequents and the languages used by external tools  In  some cases  there will  inevitably  be mismatches that cannot easily be bridged   For example  an external satisfaction checker that provides a decision procedure  for first order formulae with quantifiers over booleans only will not accommodate  arbitrary formulae from an evidence management system   s high order predicate  logic  This does not mean  however  that the two tools cannot be used together     Dealing with Evidence 9    or that the evidence management system   s choice of logic must be reduced to  some    least common denominator    of all the external tools to which it may be  connected  Instead  we make it the responsibility of the external server to detect  cases where translation is not possible  Amongst other things  this motivates the  use of a rich and expressive
28. unction   ing correctly  The nature  quality  and quantity of this evidence will often vary  depending on factors such as the overall project goals  its stage of development   the needs of programmers and users  and the level of assurance that is required         In the early stages  when many questions about the basic design are yet  to be resolved  one might expect the developers to assemble evidence that  includes descriptions of basic requirements  assumptions about the environ   ment in which the system will be operated  manufacturer specifications for  components that might be used  and preliminary design documentation such  as rough sketches or simple  proof of concept prototypes        As the project begins to mature and a body of executable code starts to take  shape  evidence such as unit tests  or specific test data sets  may be collected   both to document expected behavior  and to ensure that previously detected  and corrected bugs are not inadvertently reintroduced  Detailed assumptions    2 Mark P  Jones    and intuitions about the way the code works   from high level architectural  perspectives to low level issues like the selection and implementation of data  structures   may be documented at this time  and the evolving system may  be subjected to code inspections and reviews  Diagnostics from compilers  and program analysis tools may also be used to identify problem areas and  construct to do lists of tasks that require further attention        Once the basi
29. ver  it suggests that we need new ways to allow evidence  to be reused  repeated  or replayed so that validity of an evolving system can be  checked without the need to reconstruct evidence from scratch at every step     1 1 This Paper    This paper summarizes our efforts to design new kinds of tools that facilitate  efficient and effective use of evidence throughout a project  More specifically   our goal is to build tools that allow users to capture evidence and collate it with  source materials  to exploit dependencies between evidence and the programs to  which it refers as a means of tracking change  to automate the process of combin   ing and reusing evidence  and  finally  to understand  manage  and guide further  development and validation efforts  In addition  we recognize that evidence may  come in many different forms  and that tools must be designed to address this   For example  each of the following may be useful as evidence         An assertion of validity  digitally signed by the person who makes the claim        A set of test data  including the expected output and the date when the  tests were last run        A citation  URL  or the full text of a document that provides the proof of a  theorem or the specifications of a component     Dealing with Evidence 3        An encapsulated session with some external proof tool containing a partially  completed attempt to prove some associated theorem  Such a proof might  be completed at a later date by resuming the se
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Manual de instalação  Hoover Deep Cleaner with Auto Rinse SteamVacuum User's Manual  Antec NP 90-EC Notebook Power Adapter  Kipp-Man-NR Lite  Descargar Documento  SoftWall Finishing Systems SW3223352083 Instructions / Assembly    bruel & kjaer 2240 sound level meter  s`emmêlent les pinceaux! - Cliniques universitaires Saint-Luc  Widex Mind 440 Micro CB    Copyright © All rights reserved. 
   Failed to retrieve file