Solar Software Design