- Paperback: 442 pages
- Publisher: Cambridge University Press (1 Dec. 2011)
- Language: English
- ISBN-10: 0521716179
- ISBN-13: 978-0521716178
- Package Dimensions: 24.3 x 16.8 x 1.9 cm
- See Complete Table of Contents
Scientific Software Design: The Object-Oriented Way Paperback – 1 Dec 2011
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
If you are a seller for this product, would you like to suggest updates through seller support?
'… it's one of those books that I wish I'd read earlier in my programming career. I found many design patterns familiar simply because I'd seen them before in my own code. I'll likely turn to this book in the future whenever I suspect a program design problem might be solved already.' Computing in Science and Engineering
'Scientific software must be consciously designed to grow with a research program and the hardware that supports the research program. And how to do that is precisely what these authors in this book have shown.' Scientific Programming
This book concerns software design, focusing on scalable design. The authors analyze how the structure of a package determines its developmental complexity according to such measures as bug search times and documentation information content. The final chapter explores the question of scalable execution.See all Product description
Most Helpful Customer Reviews on Amazon.com (beta) (May include reviews from Early Reviewer Rewards Program)
This book assumes that you are familiar with Fortran (90 through 2003) and C++ templates. It also assumes that you are familiar with numerical methods. The book makes frequent use of UML. The authors make an attempt to ease the reader into the subject and bridge the gap between the older Fortran styles. Don't try to use this book for more than OOP patterns and an approach to software engineering in the scientific fields. However, there are better books that cover OOP and patterns in a generic sense that could easily be used in the sciences.
read the entire text to do so.
_Scientific Software Design_ is an excellent text aimed towards
scientific programmers. The thrust of the text is how to manage
scientific software in an environment where the code is growing
in complexity, and the team developing it has diverging areas
of expertise. Object-oriented techniques are motivated as the means
to do so.
Terminology varies, and the text compares and contrasts terms
from C++, Fortran and UML. Getting the concepts right
is the important part, which the text does. The examples
show design patterns used to solve differential equations numerically
in a variety of circumstances, including parallel processing.
This book is valuable to anyone who has a large scientific code
developed over time and who is seeking a scheme for moving
the code into the future. It's also useful for someone who
wants to see complete examples in C++ and Fortran side-by-side.
I would quibble with the coding style (but I usually do).
1. The text is not very clearly written.
2. The book claims to be accessible to people from a C++ background, but it really is not. At a minimum, the book should have included an appendix on the syntax of modern Fortran (probably at the level of Fortran 95).
3. The book acknowledges that the widely used Fortran compilers are not consistent with the 2008 standard, but the authors said that they "hoped" this would be fixed by the publication date. The compiler we have, gfortran, still is not 100% compliant with Fortran 2003.
4. The programming style is abominable. For example, the authors use the class element T%t, which is meant to be the time (little t) derivative of the temperature (big T). Never mind the fact that Fortran is case insensitive! One of the big things I tell students is to use descriptive variable names, even if they are long. (Another example is "fin", which I think is either an input function, maybe an input file, or perhaps finalizes something. I always have search for the definition on some previous page when I come across "fin" in their code.)
All these faults are apparent in the first few chapters, which is as far as I got before realizing that correcting them would make the book too time- and labor-intensive to be useful as a textbook for a class I am planning to teach.
Look for similar items by category
- Books > Computing & Internet > Programming > Languages & Tools
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Design Patterns
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Functional Programming
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Software Architecture
- Books > Computing & Internet > Programming > Software Design, Testing & Engineering > Software Design
- Books > Science & Nature > Engineering & Technology
- Books > Scientific, Technical & Medical > Engineering