top ten architectural design principles