analyzing-software-tradeoffs