Automated selection of software components based on cost/reliability tradeoff