A method of operating a computer system includes providing a program in
memory, verifying the program prior to an installation of the program and
generating a program fault signal when the verification fails. The
program includes at least one program unit, and each program unit
includes an Application Programming Interface (API) definition file and
an implementation. Each API definition file defines items in its
associated program unit that are made accessible to one or more other
program units and each implementation includes executable code
corresponding to the API definition file. The executable code includes
type specific instructions and data. Verification includes determining
whether a first program unit implementation is internally consistent,
determining whether the first program unit implementation is consistent
with a first program unit API definition file associated with the first
program unit implementation and generating a program fault signal when
the verifying fails. A resource-constrained device includes a memory for
providing a remotely verified application software program that includes
at least one program unit, each program unit comprising type specific
instructions and data. The resource-constrained device also includes a
virtual machine that is capable of executing instructions included within
the application software program. The remote verification uses an API
definition file for each implementation to determine whether a first
program unit implementation is internally consistent and to determine
whether the first program unit implementation is consistent with a first
program unit API definition file associated with the first program unit
implementation.