  A new behavior descriptive entity type called spec is proposed, which
combines the traditional interface with test rules and test cases, to
completely specify the desired behavior of each method, and to enforce the
behavior-wise correctness of all compiled units. Using spec, a new programming
paradigm is proposed, which allows the separation programming space into 1) a
behavior domain to aggregate all behavior programming in the format of specs,
2) a object domain to bind each concrete spec to its data representation in a
particular address space, and 3) a realization domain to connect the behavior
domain and the object domain. Such separation guarantees the strictness of
behavior satisfaction at compile time, while allows flexibility of dynamical
binding of actual implementation at runtime. A new convention call type
expressiveness to allow data exchange between different programming languages
and between different software environments is also proposed.
