proof of concept definition software