General Responsibility Assignment Software Principles