[comp.lang.c] ARTEWG Ada Questionnaire

beser@tron.UUCP (Eric Beser) (06/22/89)

The following questionnaire is posted both to Comp.Lang.Ada and
to Comp.Lang.C because of the fact that it questions the needs for
runtime services based on a users application. We would like answers
even if the application is *NOT* being written in Ada. There is 
a language choice question. We need a broad varity of answers for
statistical purposes. Please take the time to fill out this
questionnaire and mail the responses back via email. To do that, while
under news, use the option to respond including the article in the
mailer. Simple as that. Even if the language is pure assembly, we need
to know the applications requirements. This questionnaire is being 
distributed to the broad user community, and the responses will be
published in Ada letters and in a document report from the Ada Runtime
Environment Working Group. Thank you for your support.



          SIGAda ARTEWG Applications Subgroup
              Applications Questionnaire 
 
   Implementing certain types of software using the Ada language
is raising concerns.  The Application Subgroup Committee of the
Ada RunTime Environment Working Group (ARTEWG), is responsible
for expressing these application oriented issues to the ARTEWG,
and for providing direction for the resolution of these issues. 
 
  In order to better understand your software requirements from
an applications point of view, we have prepared the following
"Applications Questionnaire". This questionnaire is designed to
help us understand your software requirements, so that we can
evaluate the corresponding runtime requirements.  We are not just
interested in Ada software, but in any software that might be
implemented in Ada in the future.  If your software is currently
written in assembler, for example, we still want to know about
it. 
 
   The survey should take between 15 and 45 minutes to complete.
Your inputs will be used to recommend improvements to Ada
products. 

     We will not show your questionnaire to anyone outside the
principal members of ARTEWG and our support staff. 

   Please limit your answers to one application or project.  If
you have knowledge about more than one project or application,
either pick a single one or fill out multiple questionnaires. 
 
   For each of these questions, select the single answer that
MOST closely describes your project or application, unless the
question indicates that more than one answer is permitted. If you
are unable to answer a question, please leave it blank. 
 
   If your project is not far enough along to answer some
questions, mark them as N/A. Past experience on similar projects
can be used, if you are sure it applies. 
 
   We understand that you may have to omit information which is
classified, or proprietary. 
 
Please send your completed questionnaire(s) to:
 
   Eric Beser
   Westinghouse
   MS 657
   PO Box 1897
   Baltimore,  MD  21203
 
If you would prefer to answer over the ARPANET, please send your
request to ebeser@ajpo.sei.cmu.edu and we'll send you an
electronic copy. 


     BACKGROUND QUESTIONS
 
1.  The primary customer for this project is (select one): 
 
    __Military 
    __Non-military gov't.
    __Commercial / Other (internal)
 
2.  The type of project is (select one):
 
    __Research & Development
    __Demonstration & Evaluation (including fly-off competition
      between 2 teams) 
    __Production (including Full-scale Engineering Development) 
 
3.  The most advanced stage which the project has reached is
    (select one): 
 
    __pre-proposal / proposal / planning
    __requirements analysis
    __system design
    __software design
    __software development
    __fielded (delivered)
    __other (please specify) 
 
 
4.  Your primary role in the project is (select one):
 
    __Customer
    __system engineer
    __hardware designer
    __software designer
    __programmer
    __manager
    __contractor program office
    __other (please specify) 
 
 
5.  The category that best describes the system is (select one):
      (if the system involves more than one type or platform, pick 
      one platform to use for this questionnaire)

    __space station 
    __space platform other than space station (e.g. satellite)
    __aircraft
    __surface naval platform (ship board)
    __undersea naval platform (submarine)
    __mobile ground system (tank, etc.)
    __ground based
    __missiles / munitions
    __other (please specify)


     BACKGROUND QUESTIONS (CON'T)
 
6.  Please indicate the primary implementation language for 
    the software (select one).
 
    __Assembler 
    __Ada 
    __other Higher Order language (such as Pascal, JOVIAL, or FORTRAN)
    __not yet defined
 
7.  Your knowledge of the software requirements (circle one): 
 
     little                moderate                    expert
     knowledge             knowledge                   knowledge
 
       1          2          3           4        5       6
 
8.  Please rank the following from least difficult (1) to most
    difficult (6) with respect to which requirements are most
    difficult to meet.  Use each number only once.  
 
    ___ performance (throughput)
    ___ response time (latency) 
    ___ memory budget           
    ___ reliability / fault tolerance
    ___ cost                         
    ___ schedule                     
 
9.  What class(es) of processor(s) will the software execute on?
    (select all that apply)
 
     ___ don't know

     8-bit micro (e.g. 8088)
     ___ Yes ___ No
     16-bit micro (e.g. 80286, 1750A, 68000)
     ___ Yes ___ No
     32-bit micro (e.g. 80386, 68020, RISC)
     ___ Yes ___ No
     mini (e.g. MicroVax)
     ___ Yes ___ No
     mainframe (e.g. IBM 3090)
     ___ Yes ___ No
     proprietary (e.g. special purpose, such as a signal processor)
     ___ Yes ___ No
 


     BACKGROUND QUESTIONS (CON'T)
 
10. How much memory will be available for the software (select one)?
      For multi-processors, indicate total memory available in the 
      system.
      Indicate only memory available for use by the software; do 
      not include spare or reserve memory.
 
     __don't know
     __less than 16K bytes
     __16 - 127K bytes
     __128 - 255K bytes
     __256K - 511K bytes
     __512K - 2M bytes
     __more than 2M bytes

11.  What is the system architecture (select one)?
 
     __single processor
     __tightly coupled (shared memory between processors)
     __loosely coupled (bus or network connecting processors)
     __tightly and loosely coupled processors
     __geographically distributed processors
     __software must be able to run on a variety of architectures
 
IF YOU ARE NOT USING ADA, MARK QUESTION 12 N/A

12.   How much modification to the vendor-supplied Ada runtime 
      environment is / will be required (select all that apply):

     __N/A

     __don't know
     __none
     __trivial tailoring (such as modifying the address of the 
       real time clock)
     __addition of device drivers, interrupt handlers, etc
     __minor modifications (such as replacing FIFO scheduling of 
       tasks of equal prioroty with round robin scheduling)
     __major modifications
     __replacement with another runtime environment
 


     BACKGROUND QUESTIONS (CON'T)
  
13.  The software is (select one):
 
     __an operating system or system-level service (such as an 
       I/O driver or communications package)
     __a run-time executive or an Ada runtime environment
     __an application (e.g. navigation, signal processing, C3I)
     __a tool (e.g. debugger, compiler, etc)
     __software to test hardware
     __other (please specify)





14.  Your knowledge of the software design is (circle one):
  
     little                moderate                   expert
     knowledge             knowledge                  knowledge
 
       1         2          3           4        5       6
 


     FAULT TOLERANCE REQUIREMENTS
 
15.  The software must tolerate (customer imposed requirement) the 
     following types of faults (select all that apply): 
 
     hardware faults
     __Yes __No __Do__No __Don't know
     software faults (undiscovered bugs, design errors)
     __Yes __No __Don't know
     faulty input data (including bad operator inputs, faulty 
     device inputs, and bad data from other software)
     __Yes __No __Don't know
 
IF YOUR SOFTWARE DOES NOT HAVE CUSTOMER-IMPOSED FAULT TOLERANCE 
REQUIREMENTS, MARK QUESTIONS 16 THROUGH 18 N/A
 
16.  How much functionality must the software provide after 
     a fault (select one):
 
     ___N/A

     ___don't know
     ___software is not required to continue after a fault
     ___full functionality 
     ___partial functionality (i.e. some system services 
        can be lost)
 
17.  What level of performance must the software provide after 
     a fault (select one):
 
     ___N/A

     ___don't know
     ___software is not required to continue after a fault
     ___full performance (e.g., by using spare hardware)
     ___partial performance (i.e. some system services 
        can be slowed down)
   


     FAULT TOLERANCE REQUIREMENTS (CON'T)
 
18.  What fault tolerance techniques will you use (select all 
     that apply)?
 
     ___N/A

     N-modular redundant hardware (multiple active components with 
     voting)
     ___Yes  ___No  ___Don't know
     dual-modular redundant hardware (self checking pairs)
     ___Yes  ___No  ___Don't know
     recovery blocks (acceptance test at the end of a block)
     ___Yes  ___No  ___Don't know
     multi-version programming (separate designs of the software 
     with voting)
     ___Yes  ___No  ___Don't know
     checkpoint / rollback
     ___Yes  ___No  ___Don't know
     audit trails
     ___Yes  ___No  ___Don't know
     watchdog or programmable timers
     ___Yes  ___No  ___Don't know
     transactions (atomic actions)
     ___Yes  ___No  ___Don't know
     fault monitoring and logging
     ___Yes  ___No  ___Don't know
     exception handlers
     ___Yes  ___No  ___Don't know
     restart
     ___Yes  ___No  ___Don't know
     assertion checks (such as range checks, state 
     consistency checks)
     ___Yes  ___No  ___Don't know
     other (please specify)
     ___Yes  ___No  ___Don't know
      


     REQUIREMENTS FOR SYSTEMS WITH MULTIPLE PROCESSORS

 
IF YOUR SOFTWARE RUNS ON A SINGLE PROCESSOR SYSTEM, MARK QUESTIONS
19 THROUGH 24 N/A
 
19.  What is the primary reason for having more than one 
     processor in the architecture (select one)?

     __N/A
 
     __don't know
     __for fault tolerance
     __for performance
     __to get more memory
     __hardware already exists
     __platform layout necessitates distribution (for example, processors
       must be close to sensors and controllers)
     __problem domain has inherent parallelism
     __other (please specify)



20.  How are processors connected (select all that apply)?
 
     __N/A
 
     shared memory
     ___Yes  ___No  ___Don't know
     bus system
     ___Yes  ___No  ___Don't know
     local area network
     ___Yes  ___No  ___Don't know
     wide area network
     ___Yes  ___No  ___Don't know
     other (please specify) 
     ___Yes  ___No  ___Don't know
 

 


     REQUIREMENTS FOR SYSTEMS WITH MULTIPLE PROCESSORS (CON'T)
 
21. At what levels do software entities running in different 
    processors interact (select all that apply)?

     __N/A
 
     explicit communications routines (i.e. software calls a
     communication service to access software in another processor,
     or data which is not in local memory)
     ___Yes  ___No  ___Don't know
     remote calls to procedures (i.e. software can call a 
     procedure that executes on another processor)
     ___Yes  ___No  ___Don't know
     remote rendezvous between tasks / processes
     ___Yes  ___No  ___Don't know
     remote references to data structures
     ___Yes  ___No  ___Don't know
     remote execution of HOL statements 
     ___Yes  ___No  ___Don't know
     other (please specify)
     ___Yes  ___No  ___Don't know



22. when will binding to CPUs occur (select all that apply)?
 
     __N/A
 
     before loading (at compile time, link time, etc.)
     ___Yes  ___No  ___Don't know
     when the software is loaded
     ___Yes  ___No  ___Don't know
     when reconfiguring after a fault
     ___Yes  ___No  ___Don't know
     dynamically, not limited to reconfigurations
     ___Yes  ___No  ___Don't know
 
23. is it desirable that the distributed nature of the system be
    transparent to the software (select one)?
 
     __N/A
 
     __yes (distribution should be transparent)
     __no  (distribution should NOT be transparent)
     __don't care
 


     REQUIREMENTS FOR SYSTEMS WITH MULTIPLE PROCESSORS (CON'T)

24. if reconfiguration is performed, how is the new 
    configuration determined (select all that apply)?
 
     __N/A
 
     determined by something external to the system, such as
        an operator
     ___Yes  ___No  ___Don't know
     based on a pre-defined set of possible reconfigurations
     ___Yes  ___No  ___Don't know
     determined by the onboard application software
     ___Yes  ___No  ___Don't know
     determined by the onboard operating system or executive software
     ___Yes  ___No  ___Don't know
 


     MULTI-PROGRAMMING REQUIREMENTS
 
25.  Will there be more than one active program in a 
     processor (i.e. multiprogramming - select one)?
 
     __Yes
     __No
     __Don't know
 
IF YOU ARE NOT USING MULTI-PROGRAMMING, MARK QUESTIONS 26 THROUGH 28 N/A
 
26. Will programs exert control over one another (such as start, stop,
    suspend - select one)?
 
     __N/A
 
     __Yes
     __No
     __Don't know
 
27. The programs will interact through (select all that 
    apply):
 
     __N/A
 
     shared memory
     ___ Yes ___ No ___ Don't know
     I/O (such as a bus or network)
     ___ Yes ___ No ___ Don't know
     secondary storage (such as files)
     ___ Yes ___ No ___ Don't know
     no interaction
     ___ Yes ___ No ___ Don't know
     other (please specify)
     ___ Yes ___ No ___ Don't know
  


28. What is the primary  reason for multi-programming 
    (select one)?
 
     __N/A
 
    __development at different sites or by different 
      organizations
    __development at different times
    __fault tolerance
    __as an alternative to Ada tasking
    __different software components have unrelated requirements
    __other (please specify)




     CONCURRENCY REQUIREMENTS
 
29. Will the software use concurrency (some form of tasking,
    multiple processes, etc - select one)
 
    __Yes
    __No
    __Don't know
 
IF YOUR SOFTWARE WILL NOT USE CONCURRENCY, MARK QUESTIONS 30
THROUGH 35 N/A
 
30. how will tasks / processes be synchronized (select all 
    that apply)?
 
    __ N/A

    no synchronization is required
    ___ Yes ___ No ___ Don't know
    rendezvous mechanism
    ___ Yes ___ No ___ Don't know
    non-rendezvous mechanism (please describe)
    ___ Yes ___ No ___ Don't know



    
 
31. how will tasks / processes communicate (select all that 
    apply)?
 
    __N/A

    rendezvous mechanism
     ___Yes  ___No  ___Don't know
    global structures only when absolutely necessary
     ___Yes  ___No  ___Don't know
    global structures with no restrictions
     ___Yes  ___No  ___Don't know
    mail boxes, messages, or similar methods
     ___Yes  ___No  ___Don't know
    other (please specify)
     ___Yes  ___No  ___Don't know
 
 


     CONCURRENCY REQUIREMENTS (CON'T)
 
32. how many priority levels are needed (select one)?
 
    __N/A

    __don't know
    __priorities are not needed
    __4 or less 
    __5-16
    __17-64
    __65-128
    __more than 128

33. what is the maximum number of active tasks / processes 
    (select one)?
 
    __N/A

    __don't know
    __4 or less 
    __5-16
    __17-64
    __65-128
    __129-256
    __more than 256

34. will tasks / processes be created dynamically (i.e. access types
    or pointers will be used to address tasks / processes - select one)
 
    __N/A

    __yes
    __no
    __don't know
 


     CONCURRENCY REQUIREMENTS (CON'T)
 
35.  What concurrency models do you require (select all that 
     apply)?
 
     __N/A

     Ada tasking
     ___Yes  ___No  ___Don't know
     cyclic exec
     ___Yes  ___No  ___Don't know
     asynchronous tasks / processes (e.g. mailboxes)
     ___Yes  ___No  ___Don't know
     foreground-background tasks / processes
     ___Yes  ___No  ___Don't know
     communicating sequential processes
     ___Yes  ___No  ___Don't know
     monitor (guard) tasks / processes
     ___Yes  ___No  ___Don't know
     server tasks / processes
     ___Yes  ___No  ___Don't know
     other (please specify)
     ___Yes  ___No  ___Don't know

 


     OTHER REQUIREMENTS
 
36. Is there a requirement to update or upgrade some part of
    the software without stopping the system (select one)? 
 
     __yes
     __no
     __don't know
 
37.  Will there be dynamic (runtime) creation of data 
     objects (select one)?
 
     __Yes
     __No
     __don't know
 
38.  Will array sizes be determined dynamically (at 
     runtime - select one)?
 
     __Yes
     __No
     __don't know
 
39. What is the maximum interrupt latency time that is tolerable
    to your software (from the time that an interrupt-generating event 
    occurs to the time that an interrupt routine starts execution)? 
    (Select one)
 
    __N/A
    __don't know
    __10 microseconds
    __between 10and 50 microseconds
    __between 50 and 100 microseconds
    __between 100 and 200 microseconds
    __between 200 and 500 microseconds
    __between 500 microseconds and 1 millisecond
    __more than 1 millisecond
 


     OTHER REQUIREMENTS (CON'T)
 
40.  Please rate the following RTE (runtime environment) features
     in terms of your need for them on this project:
       (these features are included in, or are being considered 
       for, the ARTEWG Catalogue of Interface Features and Options)
 
                                          don't  don't    need     must
                                          know   need              have
 
     pre-elaboration of program units      0     1    2    3    4    5
         (i.e. minimize runtime 
         initialization)

     standard way of dealing with          0     1    2    3    4    5
         interrupts

     non-preemptable sections (critical    0     1    2    3    4    5
         regions)

     delays with upper and lower limits    0     1    2    3    4    5

     timeout of tasks/processes            0     1    2    3    4    5

     control over when a task/process      0     1    2    3    4    5
         executes (such as periodic
         scheduling or deadline scheduling)

     dynamically assigned task/process     0     1    2    3    4    5
         priorities

     asynchronous task/process             0     1    2    3    4    5
         communication, such as mail boxes

     deadlock detection and reporting      0     1    2    3    4    5

     fault monitoring and logging          0     1    2    3    4    5

     support for checkpoints               0     1    2    3    4    5

     notify the application that memory is 0     1    2    3    4    5
         nearly exhausted

     provide memory status to the          0     1    2    3    4    5
         application on request

     perform garbage collection            0     1    2    3    4    5

     controlled access to shared data      0     1    2    3    4    5

     support for multi-programming         0     1    2    3    4    5
     
 


     OTHER REQUIREMENTS (CON'T)
 
41.  If you need periodic scheduling, what is the shortest period 
     (select one)?
 
     __N/A (don't need periodic scheduling)
     __don't know
     __less than 1 millisecond (1000  Hz or faster)
     __more than 1, less than 5 miliseconds (200 to 1000 Hz)
     __more than 5, less than 10 miliseconds (100 to 200 Hz)
     __more than 10 , less than 100 miliseconds (10 to 100 Hz)
     __more than 100 miliseconds, less than 1 second (1 to 10 Hz)
     __more than 1 second  (1 Hz or slower)

42.  Which of the following safety/security requirements does the 
     software have  (select all that apply)?
 
     no military/commercial safety or security standards are imposed
     ___Yes  ___No  ___don't know
     National Computer Security Center multi-level security (orange book)
     ___Yes  ___No  ___don't know
     FAA flight safety
     ___Yes  ___No  ___don't know
     nuclear safety cross check analysis
     ___Yes  ___No  ___don't know
     other military or commercial safety/security standard (please 
     specify)
     ___Yes  ___No  ___don't know


 
43. Please rate the following in important to your project.
 
                                                don't     need      must
                                                need                have
 
    a stable, controlled interface between      1    2    3     4    5
    the compiler and the runtime environment

    well documented interface between the       1    2    3     4    5
    compiler and the runtime environment

    a common or standard interface between      1    2    3     4    5
    the compiler and the runtime environment
 


     OTHER REQUIREMENTS (CON'T)
 
44.  Will the software have to be compiled by more than one compiler
     during its life cycle (select one)?
 
     __yes
     __no
     __don't know
 
IF THE SOFTWARE IS NOT ALREADY FIELDED AND CODED IN ADA, PLEASE 
MARK QUESTION 45 N/A

45.  If the software is coded in Ada, which of the following
     language features are used in the fielded system (select all
     that apply)?
 
     __N/A

     explicit dynamic storage allocation
     ___Yes  ___No  ___don't know
     explicit dynamic storage deallocation
     ___Yes  ___No  ___don't know
     exception handlers
     ___Yes  ___No  ___don't know
     generics
     ___Yes  ___No  ___don't know
     Ada tasking
     ___Yes  ___No  ___don't know
     interrupt handlers (using Ada tasks)
     ___Yes  ___No  ___don't know
     task abort
     ___Yes  ___No  ___don't know
     text-io
     ___Yes  ___No  ___don't know
     unchecked conversion
     ___Yes  ___No  ___don't know
 


     GENERAL ADA COMMENTS AND CONCERNS
 
46.  Your knowledge of the Ada language is (circle one):
 
     none    little                moderate             expert
             knowledge             knowledge            knowledge
 
      0        1          2          3           4        5
 
47. How concerned are you about the performance of this software if/when
    it is written in Ada?
 
    no opinion  not concerned     somewhat concerned    very concerned
 
         0         1          2          3           4         5
 
48. How concerned are you about the amount of memory needed for this
    software if/when it is written in Ada?
 
    no opinion  not concerned     somewhat concerned    very concerned
 
         0         1          2          3           4         5
 
49. If you used Ada on this project, please describe any critical 
    software which you could not do in Ada, and why (e.g. couldn't
    figure out how to do it, performance was too slow, took too
    much memory).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50. In the context of this project, what Ada runtime issue concerns 
    you most and why?
 
 
 
 
 
 
 


     ARTEWG INFORMATION
 
51.  Which of the following ARTEWG documents have you read?
 
     A Framework for Describing Ada Runtime Environments
     ___Yes  ___No  
     A Catalogue of Ada Runtime Implementation Dependencies (CRID)
     ___Yes  ___No  
     First Annual Survey of Ada Application Runtime Requirements
     ___Yes  ___No  
     A Catalog of Ada Runtime Interface Features and Options (CIFO)
     ___Yes  ___No  
 


    FEEDBACK ON THIS QUESTIONNAIRE
 
52. Please write any comments you have on this questionnaire.
 
 
 
 
 
 
 



   The following information is optional, but would be appreciated
in case we have questions about any of your answers.  
 
NAME___________________________________________________________
COMPANY OR ORGANIZATION________________________________________
ADDRESS________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
PHONE NUMBER___________________________________________________
ARPANET / MILNET ADDRESS_______________________________________
 
   May we contact you for followup information on this 
questionnaire?
 
    ___Yes
    ___No
 
   Occasionally, we need to contact people for information to help
guide the ARTEWG activities. This is usually in the form of a few
questions. May we contact you, should the need arise? 
 
    ___Yes
    ___No
 
   If yes, in what areas do you feel qualified to provide
   input? 
 
      ___Real time application requirements
      ___Fault tolerance
      ___Distributed Processing
      ___Trusted Software 
      ___Multi-programming
      ___Other (please specify)
 
 
 
 
We thank for your time.
 

------- End of Forwarded Message