Scientific software design: the object-oriented way
Gespeichert in:
Hauptverfasser: | , , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Cambridge
Cambridge Univ. Press
2011
|
Ausgabe: | 1. publ. |
Schlagworte: | |
Online-Zugang: | Cover image Inhaltsverzeichnis |
Beschreibung: | XXII, 382 S. Ill., graph. Darst. |
ISBN: | 9780521888134 9781107415331 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV039128260 | ||
003 | DE-604 | ||
005 | 20190806 | ||
007 | t | ||
008 | 110708s2011 xxkad|| |||| 00||| eng d | ||
010 | |a 2011007351 | ||
020 | |a 9780521888134 |c hardback |9 978-0-521-88813-4 | ||
020 | |a 9781107415331 |c pbk |9 978-1-107-41533-1 | ||
035 | |a (OCoLC)741863345 | ||
035 | |a (DE-599)BVBBV039128260 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
044 | |a xxk |c GB | ||
049 | |a DE-29T |a DE-83 |a DE-91G | ||
050 | 0 | |a Q183.9 | |
082 | 0 | |a 005.1 | |
084 | |a ST 231 |0 (DE-625)143618: |2 rvk | ||
084 | |a DAT 315f |2 stub | ||
100 | 1 | |a Rouson, Damian |d 1967- |e Verfasser |0 (DE-588)1013766881 |4 aut | |
245 | 1 | 0 | |a Scientific software design |b the object-oriented way |c Damian Rouson ; Jim Xia ; Xiaofeng Xu |
250 | |a 1. publ. | ||
264 | 1 | |a Cambridge |b Cambridge Univ. Press |c 2011 | |
300 | |a XXII, 382 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 4 | |a Datenverarbeitung | |
650 | 4 | |a Ingenieurwissenschaften | |
650 | 4 | |a Naturwissenschaft | |
650 | 4 | |a Science |x Data processing | |
650 | 4 | |a Engineering |x Data processing | |
650 | 4 | |a Software engineering | |
650 | 7 | |a TECHNOLOGY & ENGINEERING / Engineering (General) |2 bisacsh | |
650 | 0 | 7 | |a Objektorientierte Programmierung |0 (DE-588)4233947-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Softwareentwicklung |0 (DE-588)4116522-6 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Softwareentwicklung |0 (DE-588)4116522-6 |D s |
689 | 0 | 1 | |a Objektorientierte Programmierung |0 (DE-588)4233947-9 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Xia, Jim |d 1970- |e Verfasser |0 (DE-588)1013767055 |4 aut | |
700 | 1 | |a Xu, Xiaofeng |d 1972- |e Verfasser |0 (DE-588)1013767608 |4 aut | |
856 | 4 | |u http://assets.cambridge.org/97805218/88134/cover/9780521888134.jpg |3 Cover image | |
856 | 4 | 2 | |m HBZ Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024146659&sequence=000004&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-024146659 |
Datensatz im Suchindex
_version_ | 1804147962201243648 |
---|---|
adam_text | Titel: Scientific software design
Autor: Rouson, Damian
Jahr: 2011
Contents
List of Figures page xi
List of Tables xv
Preface xvii
Acknowledgments xxi
Disclaimer xxii
PART I THE TAO OF SCIENTIFIC OOP 1
1 Development Costs and Complexity............................ 3
1.1 Introduction 3
1.2 Conventional Scientific Programming Costs 7
1.3 Conventional Programming Complexity 11
1.4 Alternative Programming Paradigms 19
1.5 How Performance Informs Design 24
1.6 How Design Informs Performance 25
1.7 Elements of Style 27
2 The Object-Oriented Way .................................... 31
2.1 Nomenclature 31
2.2 Object-Oriented Analysis and Design 33
2.3 Encapsulation and Information Hiding 36
2.4 Wrapping Legacy Software 40
2.5 Composition, Aggregation, and Inheritance 48
2.6 Static and Dynamic Polymorphism 53
2.7 OOP Complexity 54
2.8 More on Style 55
3 Scientific OOP.............................................. 57
3.1 Abstract Data Type Calculus 57
3.2 Analysis-Driven Design 66
3.2.1 Design Metrics 69
3.2.2 Complexity Theory 71
3.2.3 Information Theory 73
viii Contents
3.3 Still More on Style 77
3.4 TheTaoofSOOP 79
PART II SOOP TO NUTS AND BOLTS 83
4 Design Patterns Basics........................................ 85
4.1 Essentials 85
4.2 Foundations 86
4.2.1 Building Architecture 87
4.2.2 Software Architecture 93
4.2.3 Scientific Software Architecture 98
4.3 Canonical Contexts 99
4.3.1 The Lorenz Equations: A Chaotic Dynamical System 100
4.3.2 Quantum Vortex Dynamics in a Superfluid 102
4.3.3 Burgers Equation: Shock Formation and Dissipation 104
5 the Object Pattern.......................................... 107
5.1 The Problem 107
5.2 The Solution 108
5.2.1 Fortran Implementation 110
5.2.2 C++Style and Tools 116
5.2.3 C++Implementation of Vortex 122
5.3 The Consequences 127
5.4 Related Patterns 127
6 The Abstract Calculus Pattern................................. 129
6.1 The Problem 129
6.2 The Solution 130
6.2.1 Fortran Implementation 131
6.2.2 C++Implementation 137
6.3 The Consequences 140
6.4 Related Patterns 141
7 The Strategy and Surrogate Patterns............................ 143
7.1 The Problem 143
7.2 The Solution 144
7.2.1 Fortran Implementation 146
7.2.2 C++Implementation 155
7.3 The Consequences 164
7.4 Related Patterns 164
8 The Puppeteer Pattern....................................... 167
8.1 The Problem 167
8.2 The Solution 169
8.2.1 Fortran Implementation 170
8.2.2 A C++Tool: 2D Allocatable Arrays 185
8.2.3 C++Implementation 191
Contents ix
8.3 The Consequences 199
8.4 Related Patterns 201
9 Factory Patterns............................................ 202
9.1 The Problem 202
9.2 The Solution 203
9.2.1 Fortran Implementation 205
9.2.2 C++ Implementation 216
9.3 The Consequences 226
9.4 Related Patterns 227
PART III GUMBO SOOP 229
10 Formal Constraints.......................................... 231
10.1 Why Be Formal? 231
10.2 Problem Statement 233
10.3 Side Effects in Abstract Calculus 237
10.4 Formal Specification 238
10.4.1 Modeling Arrays with OCL 238
10.4.2 Hermeticity 239
10.4.3 Economy 242
10.5 The Shell Pattern 244
10.6 An Assertion Utility for Fortran 245
10.7 Case Study: A Fluid Turbulence Solver 247
11 Mixed-Language Programming............................... 251
11.1 Automated Interoperability Tools 251
11.2 Manual Interoperability: C++/Fortran 95 254
11.3 Case Study: ForTrilinos and CTrilinos 259
11.3.1 C Interoperability in Fortran 2003 261
11.3.2 Method Invocation 269
11.3.3 Tabulation, Construction, and Destruction 273
11.3.4 Polymorphism and Hierarchy Mirroring 278
11.3.5 Discussion 281
12 Multiphysics Architectures................................... 285
12.1 Toward a Scalable Abstract Calculus 285
12.1.1 Amdahl s Law and Parallel Efficiency 286
12.1.2 Automatic Parallelization: Compiler Technology 292
12.1.3 Directive-Based Parallelization: OpenMP 295
12.1.4 Library-Based Parallelization: ForTrilinos and MPI 297
12.1.5 Intrinsic Parallelization: Fortran 2008 Coarrays 309
12.2 Case Studies: Multiphysics Modeling 317
12.2.1 Quantum Turbulence in Superfluid Liquid Helium 318
12.2.2 Lattice-Boltzman Biofluid Dynamics 320
Contents
12.2.3 Particle Dispersion in Magnetohydrodynamics 325
12.2.4 Radar Scattering in the Atmospheric Boundary Layer 326
12.3 The Morfeus Framework 330
ÄDDendix A Mathematical Background......................... 335
A.I Interpolation 335
A.I.I Lagrange Interpolation 335
A.2 Linear Solvers 337
A.2.1 Gaussian Elimination 337
A.2.2 LU Decomposition 342
A.3 Nonlinear Solvers 343
A.3.1 Newton s Method in ID 343
A.3.2 Newton s Method in Multiple Dimensions 344
A.4 Partial Differential Equations 345
A.4.1 The Heat Equation 345
A.4.2 The Burgers Equation 346
A.5 Numerical Analysis 347
A.5.1 Finite Differences 347
A.5.2 Numerical Methods for Differential Equations 350
Appendix B Unified Modeling Language Elements............... 357
B.I Use Case Diagrams 357
B.2 Class Diagrams 359
B.2.1 Classes 359
B.2.2 Relationships 362
B.3 Object Diagrams 366
B.4 Sequence Diagrams 367
B.4.1 Interactions and Messages 368
B.4.2 Sequence Diagrams 368
B.5 The Object Constraint Language 370
B.5.1 The Context of OCL Expression 370
B.5.2 Initial Value Rule 371
B.5.3 Specifying Object Invariants 371
B.5.4 Adding Pre- and Postconditions to Operations 371
Bibliography 373
Index 379
|
any_adam_object | 1 |
author | Rouson, Damian 1967- Xia, Jim 1970- Xu, Xiaofeng 1972- |
author_GND | (DE-588)1013766881 (DE-588)1013767055 (DE-588)1013767608 |
author_facet | Rouson, Damian 1967- Xia, Jim 1970- Xu, Xiaofeng 1972- |
author_role | aut aut aut |
author_sort | Rouson, Damian 1967- |
author_variant | d r dr j x jx x x xx |
building | Verbundindex |
bvnumber | BV039128260 |
callnumber-first | Q - Science |
callnumber-label | Q183 |
callnumber-raw | Q183.9 |
callnumber-search | Q183.9 |
callnumber-sort | Q 3183.9 |
callnumber-subject | Q - General Science |
classification_rvk | ST 231 |
classification_tum | DAT 315f |
ctrlnum | (OCoLC)741863345 (DE-599)BVBBV039128260 |
dewey-full | 005.1 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.1 |
dewey-search | 005.1 |
dewey-sort | 15.1 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 1. publ. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02160nam a2200541zc 4500</leader><controlfield tag="001">BV039128260</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20190806 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">110708s2011 xxkad|| |||| 00||| eng d</controlfield><datafield tag="010" ind1=" " ind2=" "><subfield code="a">2011007351</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780521888134</subfield><subfield code="c">hardback</subfield><subfield code="9">978-0-521-88813-4</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781107415331</subfield><subfield code="c">pbk</subfield><subfield code="9">978-1-107-41533-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)741863345</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV039128260</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxk</subfield><subfield code="c">GB</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-29T</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-91G</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">Q183.9</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.1</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 231</subfield><subfield code="0">(DE-625)143618:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 315f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Rouson, Damian</subfield><subfield code="d">1967-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1013766881</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Scientific software design</subfield><subfield code="b">the object-oriented way</subfield><subfield code="c">Damian Rouson ; Jim Xia ; Xiaofeng Xu</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1. publ.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Cambridge</subfield><subfield code="b">Cambridge Univ. Press</subfield><subfield code="c">2011</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXII, 382 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Datenverarbeitung</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Ingenieurwissenschaften</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Naturwissenschaft</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Science</subfield><subfield code="x">Data processing</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Engineering</subfield><subfield code="x">Data processing</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Software engineering</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">TECHNOLOGY & ENGINEERING / Engineering (General)</subfield><subfield code="2">bisacsh</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Objektorientierte Programmierung</subfield><subfield code="0">(DE-588)4233947-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Softwareentwicklung</subfield><subfield code="0">(DE-588)4116522-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Softwareentwicklung</subfield><subfield code="0">(DE-588)4116522-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Objektorientierte Programmierung</subfield><subfield code="0">(DE-588)4233947-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Xia, Jim</subfield><subfield code="d">1970-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1013767055</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Xu, Xiaofeng</subfield><subfield code="d">1972-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1013767608</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2=" "><subfield code="u">http://assets.cambridge.org/97805218/88134/cover/9780521888134.jpg</subfield><subfield code="3">Cover image</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HBZ Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024146659&sequence=000004&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-024146659</subfield></datafield></record></collection> |
id | DE-604.BV039128260 |
illustrated | Illustrated |
indexdate | 2024-07-09T23:59:34Z |
institution | BVB |
isbn | 9780521888134 9781107415331 |
language | English |
lccn | 2011007351 |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-024146659 |
oclc_num | 741863345 |
open_access_boolean | |
owner | DE-29T DE-83 DE-91G DE-BY-TUM |
owner_facet | DE-29T DE-83 DE-91G DE-BY-TUM |
physical | XXII, 382 S. Ill., graph. Darst. |
publishDate | 2011 |
publishDateSearch | 2011 |
publishDateSort | 2011 |
publisher | Cambridge Univ. Press |
record_format | marc |
spelling | Rouson, Damian 1967- Verfasser (DE-588)1013766881 aut Scientific software design the object-oriented way Damian Rouson ; Jim Xia ; Xiaofeng Xu 1. publ. Cambridge Cambridge Univ. Press 2011 XXII, 382 S. Ill., graph. Darst. txt rdacontent n rdamedia nc rdacarrier Datenverarbeitung Ingenieurwissenschaften Naturwissenschaft Science Data processing Engineering Data processing Software engineering TECHNOLOGY & ENGINEERING / Engineering (General) bisacsh Objektorientierte Programmierung (DE-588)4233947-9 gnd rswk-swf Softwareentwicklung (DE-588)4116522-6 gnd rswk-swf Softwareentwicklung (DE-588)4116522-6 s Objektorientierte Programmierung (DE-588)4233947-9 s DE-604 Xia, Jim 1970- Verfasser (DE-588)1013767055 aut Xu, Xiaofeng 1972- Verfasser (DE-588)1013767608 aut http://assets.cambridge.org/97805218/88134/cover/9780521888134.jpg Cover image HBZ Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024146659&sequence=000004&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Rouson, Damian 1967- Xia, Jim 1970- Xu, Xiaofeng 1972- Scientific software design the object-oriented way Datenverarbeitung Ingenieurwissenschaften Naturwissenschaft Science Data processing Engineering Data processing Software engineering TECHNOLOGY & ENGINEERING / Engineering (General) bisacsh Objektorientierte Programmierung (DE-588)4233947-9 gnd Softwareentwicklung (DE-588)4116522-6 gnd |
subject_GND | (DE-588)4233947-9 (DE-588)4116522-6 |
title | Scientific software design the object-oriented way |
title_auth | Scientific software design the object-oriented way |
title_exact_search | Scientific software design the object-oriented way |
title_full | Scientific software design the object-oriented way Damian Rouson ; Jim Xia ; Xiaofeng Xu |
title_fullStr | Scientific software design the object-oriented way Damian Rouson ; Jim Xia ; Xiaofeng Xu |
title_full_unstemmed | Scientific software design the object-oriented way Damian Rouson ; Jim Xia ; Xiaofeng Xu |
title_short | Scientific software design |
title_sort | scientific software design the object oriented way |
title_sub | the object-oriented way |
topic | Datenverarbeitung Ingenieurwissenschaften Naturwissenschaft Science Data processing Engineering Data processing Software engineering TECHNOLOGY & ENGINEERING / Engineering (General) bisacsh Objektorientierte Programmierung (DE-588)4233947-9 gnd Softwareentwicklung (DE-588)4116522-6 gnd |
topic_facet | Datenverarbeitung Ingenieurwissenschaften Naturwissenschaft Science Data processing Engineering Data processing Software engineering TECHNOLOGY & ENGINEERING / Engineering (General) Objektorientierte Programmierung Softwareentwicklung |
url | http://assets.cambridge.org/97805218/88134/cover/9780521888134.jpg http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024146659&sequence=000004&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT rousondamian scientificsoftwaredesigntheobjectorientedway AT xiajim scientificsoftwaredesigntheobjectorientedway AT xuxiaofeng scientificsoftwaredesigntheobjectorientedway |