Four Better Rules for Software Design