Key:

        
To help sift through the data in this table, I've marked at most one entry in each row as the "key" characteristic that makes it interesting.

Single-Machine / Single-Process Applications

Method

Example

Name
Conflicts
Possible?

Interface
Documented?

Interface
Checked?

Data
Communicated?

Links
When?

App Programmer
Gets?

Extra End-User
Installs?

Error
Reporting?

Error
Containment?

Cut-and-paste

Sample programs

Yes

No

N/A

N/A

Code-edit time

Lines of source code

 

None

App crashes

(Static) libraries

- C runtime
- C++ runtime
- fltk

Yes

Maybe

Compiler checks against .h file.  Linker has only very primitive type info.

Language-dependent types

Build-time

-object code (as a library)

 

 

- return codes
- exceptions (C++)

App crashes

Dynamic libraries (DLL’s)

Typical Windows system

Language / linker dependent types

Run-time

object code (both a static library and a DLL)

DLL

App crashes. (Potential for many apps to crash if mis-used.)

Type-safe languages

- Java

- C#

No

Maybe:

- javadoc
- reflection

Yes – compiler checks, but linker also checks

Runtime system (e.g., jvm) dependent objects

Run-time

object code (possibly as a library (e.g., jar files))

Runtime system (e.g., java virtual machine)

Exceptions

Per-thread /  per-app

"Plugins"
acrobat reader in a browser
Unlikely
Probably
Like library code
Language dependent types
Run-time
- App executable
(plus some additional help, e.g., libraries)
Plug-in code
Depends on app
(return codes / exceptions)
Typically, app crashses




Single-Machine / Multi-Process Applications

Method Example Name
Conflicts
Possible?
Interface
Documented?
Interface
Checked?
Data
Communicated?
Links
When?
App Programmer
Gets?
Extra End-User
Installs?
Error
Reporting?
Error
Containment?
pipes

 

No

Probably not

No

Characters

Run-time

Existing executables

 

None

Per-executable

Multi-Machine Applications

Protocol

Example

Name
Conflicts
Possible?

Interface
Documented?

Interface
Checked?

Data
Communicated?

Links
When?

App Programmer
Gets?

Extra End-User
Installs?

Error
Reporting?

Error
Containment?

TCP
(Transmission Control Protocol)
low-level protocol
(telnet)
No
Maybe
No
Bits
Run-time

Must be online at runtime
Re

Named pipes

No
Probably not
No
Characters
Run-time
Existing executables
Must be online at runtime
None
Per-executable
HTTP
(Hyptertext Transfer Protocol)

Browser / Web server

No

Yes


- GET / PUT
- Mime types

Run-time



Must be online at runtime

Return codes

Client and server fail separately

SOAP
(Simple Object Access Protocol)

Web services:
http://www.xmethods.com/

No

Yes

Yes

- Remote procedure call (RPC)
- SOAP objects (using XML)

Run-time

Interface specification
(like a .h file)

Must be online at runtime

Exceptions