- Engineering Complexity
- Birth of Murphy for Java
- People = Problems
- Education Through Pain Management
- The Twenty-Cent Solution
- Fraternal Clones
- "We Lost the Napkin"
- The Devil in Blue Jeans
- Jack and the Beanstalk
- The Slashdot Effect
- The Funhouse Microphone
- That "New Car" Smell
- If I Can See It, It Must Be Wrong
- The Ugly American
- Murphy's Law
- Use Egg Cartons
- Conclusion
The Funhouse Microphone
Law: If it talks, it can be misunderstood.
Q: Is the application client/server?
A client/server app is ripe for failure because there are two parts that must talk to each other. Three-tier systems isolate some of the problems by isolating server-specific functions from application-specific logic. Having three tiers has less risk in the end, but it also means another hunk of code to manage. Also, take into account the added infrastructure of routers, firewalls, and other equipment that could fail.
Low Risk
It's stand-alone (reduces the complexity of the communications infrastructure).
The system is multi-tier. The design and analysis includes information about the interfaces, system analysis, and prototypes have been built for critical and risky areas.
There are communication channels, but the application replaces only one part of a current client/server system (no need to start from scratch).
High Risk
Development of client and/or server from scratch.
Requires the integration of several systems.
The existing client/server system is to be rewritten from scratch.
Risk Management
If using an existing server, create a middle tier to isolate the client from directly depending upon a specific server implementation.
If replacing a current client and server, replace one side at a time.
Keep communication simple. There's no reason to create a complex system for the future when a simple one works for the present. Odds are that you'll totally rewrite the application in the future anyway.