Davis sugiere un conjunto de principios de diseño de software que han sido adaptados y extendidos en la siguiente lista: