= Elciting Requirements = == Quality == * constraints on execution, response, or throughput? * how much data will flow through it? * how often will data be received and sent? == Usability == * any trainging required to use it? * how easy should it be for user to understand? == Security == * must access be controlled? * should user data be isolated from other users? * should user programs be isolated/sandboxed? == Relibaility == * must system detect and isolate faults? * what is mean time between failures? * is there a max time allowed for restarting the system after failure? * how often must backups be? * must back up copies be stored off site? == Things to do before programming == * Interview stakeholder * Review all available documentation on the problem * Observe current systems * Apprentice with users * interview end users and watch them use your product * use domain-sepcific strategies