A vexing question is why systematic quality assurance and formal methods, despite all their advantages, are not used routinely in software development. Other engineering disciplines use their systematic quality assurance and formal methods in producing routinely reliable products. Perhaps the difference between the other engineerings and software engineers lie in the warranties producers must give for the products and the liabilities suffered by the producers for malfunctioning products. It is argued that software engineers would be more likely to use formal methods routinely if they or they employers had to guarantee their software and could be sued for damages caused by their malfunctioning software.