Muutke küpsiste eelistusi

E-raamat: Scientific Software Design: The Object-Oriented Way

  • Formaat: PDF+DRM
  • Ilmumisaeg: 29-Apr-2011
  • Kirjastus: Cambridge University Press
  • Keel: eng
  • ISBN-13: 9781139064446
  • Formaat - PDF+DRM
  • Hind: 87,68 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: PDF+DRM
  • Ilmumisaeg: 29-Apr-2011
  • Kirjastus: Cambridge University Press
  • Keel: eng
  • ISBN-13: 9781139064446

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

"This book concerns software design. Although many current discussions of scientific programming focus on scalable performance, this book focuses 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 work presents arguments for why these issues impact solution cost and time more than does scalable performance. The final chapter explores the question of scalable execution and it shows how scalable design relates to scalable execution. The book's focus is on program organization, which has received considerable attention in the broader software engineering community, where graphical description standards for modeling software structure and behavior have been developed by computer scientists. These discussions might be enriched by engineers who write scientific codes. This book aims to bring such scientific programmers into discussion with computer scientists. The authors do so by introducing object-oriented software design patterns in the context of scientific simulation"--

Provided by publisher.

Arvustused

' 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

Muu info

This book concerns software design, focusing on scalable design. It is designed for engineers who write scientific programs.
List of Figures xi
List of Tables xv
Preface xvii
Acknowledgments xxi
Disclaimer xxii
Part I The Tao Of Scientific OOP 1(82)
1 Development Costs and Complexity
3(28)
1.1 Introduction
3(4)
1.2 Conventional Scientific Programming Costs
7(4)
1.3 Conventional Programming Complexity
11(8)
1.4 Alternative Programming Paradigms
19(5)
1.5 How Performance Informs Design
24(1)
1.6 How Design Informs Performance
25(2)
1.7 Elements of Style
27(4)
2 The Object-Oriented Way
31(26)
2.1 Nomenclature
31(2)
2.2 Object-Oriented Analysis and Design
33(3)
2.3 Encapsulation and Information Hiding
36(4)
2.4 Wrapping Legacy Software
40(8)
2.5 Composition, Aggregation, and Inheritance
48(5)
2.6 Static and Dynamic Polymorphism
53(1)
2.7 OOP Complexity
54(1)
2.8 More on Style
55(2)
3 Scientific OOP
57(26)
3.1 Abstract Data Type Calculus
57(9)
3.2 Analysis-Driven Design
66(11)
3.2.1 Design Metrics
69(2)
3.2.2 Complexity Theory
71(2)
3.2.3 Information Theory
73(4)
3.3 Still More on Style
77(2)
3.4 The Tao of SOOP
79(4)
Part II SOOP To Nuts And Bolts 83(146)
4 Design Patterns Basics
85(22)
4.1 Essentials
85(1)
4.2 Foundations
86(13)
4.2.1 Building Architecture
87(6)
4.2.2 Software Architecture
93(5)
4.2.3 Scientific Software Architecture
98(1)
4.3 Canonical Contexts
99(8)
4.3.1 The Lorenz Equations: A Chaotic Dynamical System
100(2)
4.3.2 Quantum Vortex Dynamics in a Superfluid
102(2)
4.3.3 Burgers' Equation: Shock Formation and Dissipation
104(3)
5 The Object Pattern
107(22)
5.1 The Problem
107(1)
5.2 The Solution
108(19)
5.2.1 Fortran Implementation
110(6)
5.2.2 C++ Style and Tools
116(6)
5.2.3 C++ Implementation of Vortex
122(5)
5.3 The Consequences
127(1)
5.4 Related Patterns
127(2)
6 The Abstract Calculus Pattern
129(14)
6.1 The Problem
129(1)
6.2 The Solution
130(10)
6.2.1 Fortran Implementation
131(6)
6.2.2 C++ Implementation
137(3)
6.3 The Consequences
140(1)
6.4 Related Patterns
141(2)
7 The Strategy and Surrogate Patterns
143(24)
7.1 The Problem
143(1)
7.2 The Solution
144(20)
7.2.1 Fortran Implementation
146(9)
7.2.2 C++ Implementation
155(9)
7.3 The Consequences
164(1)
7.4 Related Patterns
164(3)
8 The Puppeteer Pattern
167(35)
8.1 The Problem
167(2)
8.2 The Solution
169(30)
8.2.1 Fortran Implementation
170(15)
8.2.2 A C++ Tool: 2D Allocatable Arrays
185(6)
8.2.3 C++ Implementation
191(8)
8.3 The Consequences
199(2)
8.4 Related Patterns
201(1)
9 Factory Patterns
202(27)
9.1 The Problem
202(1)
9.2 The Solution
203(23)
9.2.1 Fortran Implementation
205(11)
9.2.2 C++ Implementation
216(10)
9.3 The Consequences
226(1)
9.4 Related Patterns
227(2)
Part III Gumbo SOOP 229(106)
10 Formal Constraints
231(20)
10.1 Why Be Formal?
231(2)
10.2 Problem Statement
233(4)
10.3 Side Effects in Abstract Calculus
237(1)
10.4 Formal Specification
238(6)
10.4.1 Modeling Arrays with OCL
238(1)
10.4.2 Hermeticity
239(3)
10.4.3 Economy
242(2)
10.5 The Shell Pattern
244(1)
10.6 An Assertion Utility for Fortran
245(2)
10.7 Case Study: A Fluid Turbulence Solver
247(4)
11 Mixed-Language Programming
251(34)
11.1 Automated Interoperability Tools
251(3)
11.2 Manual Interoperability: C++/Fortran 95
254(5)
11.3 Case Study: ForTrilinos and CTrilinos
259(26)
11.3.1 C Interoperability in Fortran 2003
261(8)
11.3.2 Method Invocation
269(4)
11.3.3 Tabulation, Construction, and Destruction
273(5)
11.3.4 Polymorphism and Hierarchy Mirroring
278(3)
11.3.5 Discussion
281(4)
12 Multiphysics Architectures
285(50)
12.1 Toward a Scalable Abstract Calculus
285(32)
12.1.1 Amdahl's Law and Parallel Efficiency
286(6)
12.1.2 Automatic Parallelization: Compiler Technology
292(3)
12.1.3 Directive-Based Parallelization: OpenMP
295(2)
12.1.4 Library-Based Parallelization: ForTrilinos and MPI
297(12)
12.1.5 Intrinsic Parallelization: Fortran 2008 Coarrays
309(8)
12.2 Case Studies: Multiphysics Modeling
317(13)
12.2.1 Quantum Turbulence in Superfluid Liquid Helium
318(2)
12.2.2 Lattice-Boltzman Biofluid Dynamics
320(5)
12.2.3 Particle Dispersion in Magnetohydrodynamics
325(1)
12.2.4 Radar Scattering in the Atmospheric Boundary Layer
326(4)
12.3 The Morfeus Framework
330(5)
Appendix A Mathematical Background 335(22)
A.1 Interpolation
335(2)
A.1.1 Lagrange Interpolation
335(2)
A.2 Linear Solvers
337(6)
A.2.1 Gaussian Elimination
337(5)
A.2.2 LU Decomposition
342(1)
A.3 Nonlinear Solvers
343(2)
A.3.1 Newton's Method in 1D
343(1)
A.3.2 Newton's Method in Multiple Dimensions
344(1)
A.4 Partial Differential Equations
345(2)
A.4.1 The Heat Equation
345(1)
A.4.2 The Burgers Equation
346(1)
A.5 Numerical Analysis
347(10)
A.5.1 Finite Differences
347(3)
A.5.2 Numerical Methods for Differential Equations
350(7)
Appendix B Unified Modeling Language Elements 357(16)
B.1 Use Case Diagrams
357(2)
B.2 Class Diagrams
359(7)
B.2.1 Classes
359(3)
B.2.2 Relationships
362(4)
B.3 Object Diagrams
366(1)
B.4 Sequence Diagrams
367(3)
B.4.1 Interactions and Messages
368(1)
B.4.2 Sequence Diagrams
368(2)
B.5 The Object Constraint Language
370(3)
B.5.1 The Context of OCL Expression
370(1)
B.5.2 Initial Value Rule
371(1)
B.5.3 Specifying Object Invariants
371(1)
B.5.4 Adding Pre- and Postconditions to Operations
371(2)
Bibliography 373(6)
Index 379
Damian Rouson is currently the manager of the Reacting Flow Research Department at Sandia National Laboratories. He was formerly Section Head of the US Navy Research Laboratory Division of Combustion Science and Modeling. He was Assistant Professor of Engineering at the City University of New York and Visiting Assistant Professor at the University of Maryland. Damian Rouson received his Masters and Ph.D. in Mechanical Engineering from Stanford University. Dr Jim Xia is currently a software designer and tester at the IBM Test Laboratory in Markham, Ontario, Canada. He received his Ph.D. in Physics from the University of Western Ontario in 1997. Dr Xiaofeng Xu is currently a Software Analyst at General Motors Corp. in Pontiac, Michigan. In this job, he performs airflow and combustion CFD analysis to support base engine designs. He received his Ph.D. in Mechanical Engineering (2003) from Iowa State University in Ames, IA and is the author or co-author of 39 refereed publications.