The Wabe → Personal Notebook → First principles in Software Engineering
(From a personal communication with James W. Earhart.)
When designing any large-scale software system, there are three objectives to keep in mind:
With scalability, one must be willing to set arbitrary limits that can be changed at a moment’s notice. Setting compile-time limitations—such as limiting the number of users because the algorithms involved are of exponential order—is OK, because these limits can be changed as the hardware evolves.
The best way to achieve scalability is to remove all fixed numbers from your design. Make relationships many-to-many when possible, even if it is a “rare case” where a many-to-many will be needed (cf. ASCNet and the phones-per-order debate).
Last Modified: 2005/03/27 04:38:55 GMT
(Send problems to Rob Menke)
Page style: Classic | Cyan | Dark