|
|
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. |
|
Method |
Example |
Name |
Interface |
Interface |
Data |
Links |
App Programmer |
Extra End-User |
Error |
Error |
| 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 |
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 |
App crashes |
| Dynamic libraries (DLL’s) |
“ |
“ |
“ |
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 |
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 |
| 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 |
|
Protocol |
Example |
Name |
Interface |
Interface |
Data |
Links |
App Programmer |
Extra End-User |
Error |
Error |
| 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
|
Run-time |
|
Must be online at runtime |
Return codes |
Client and server fail separately |
| SOAP (Simple Object Access Protocol) |
Web services: |
No |
Yes |
Yes |
- Remote procedure call (RPC)
|
Run-time |
Interface specification |
Must be online at runtime |
Exceptions |
“ |