Timothy High is a software architect with more than 15 years’ experience with web, multitiered client-server, and application-integration technologies. He is currently working as a software architect for Sakonnet Technologies, a leader in Energy Trading and Risk Management (ETRM) software.
WETHERN’S LAW OF SUSPENDED JUDGMENT STATES (in a rather tongue-in-cheek fashion) that “Assumption is the mother of all screw-ups.” A more popular take on this would be, “Don’t assume—it makes an ‘ass’ of ‘u’ and ‘me’.” But when you are dealing with assumptions that could cost thousands, if not millions, of dollars it’s not always a laughing matter.
Best practices in software architecture state that you should document the rationale behind each decision that is made, especially when that decision involves a tradeoff (performance versus maintainability, cost versus time-to-market, and so on). In more formal approaches, it is common to record along with each decision the context of that decision, including the “factors” that contributed to the final judgment. Factors may be functional or nonfunctional requirements, but they also may just be “facts” (or factoids...) that the decision-makers found important (technology constraints, available skill sets, the political environment, etc.).
This practice is valuable because listing these factors ...