System and software design