large scale cpp software design
google