software logic