Principles of Software Design Project