Scientific Software Design : The Object-Oriented Way - Damian Rouson; Jim Xia; Xiaofeng Xu (2011)