Abstract

Cutting-edge scientific computing software is complex, increasingly involving the coupling of multiple packages to combine advanced algorithms or simulations at multiple physical scales. Component-based software engineering (CBSE) has been advanced as a technique for managing this complexity, and complex component applications have been created in the quantum chemistry domain, as well as several other simulation areas, using the component model advocated by the Common Component Architecture (CCA) Forum. While programming models do indeed enable sound software engineering practices, the selection of programming model is just one building block in a comprehensive approach to large-scale collaborative development which must also address interface and data standardization, and language and package interoperability. We provide an overview of the development approach utilized within the Quantum Chemistry Science Application Partnership, identifying design challenges, describing the techniques which we have adopted to address these challenges and highlighting the advantages which the CCA approach offers for collaborative development.

Highlights

  • Fueled by the progress of simulation in many scientific domains and the ever increasing availability of hardware resources, cutting edge scientific computing increasingly involves the coupling of multiple packages

  • In this work we provide an overview of our component development approach, identifying the design patterns which have proved useful in both our component and packaging architectures and highlighting the advantages which the Common Component Architecture (CCA) middleware and engineering approach offer for large-scale collaborative software development

  • Our work has demonstrated that the overhead due to integral reordering, as large as 12%, is comparable to the overhead due to the component interface layer

Read more

Summary

Introduction

Fueled by the progress of simulation in many scientific domains and the ever increasing availability of hardware resources, cutting edge scientific computing increasingly involves the coupling of multiple packages. The software required for such studies is gaining complexity to the extent that large amounts of effort are required just to interface packages, requiring a team uniquely capable of understanding the multiple scientific domains involved and the technical issues arising in such complicated software. While programming paradigms can go a long way to encourage and enable good development practices, we have found that complex software projects require careful design and an engineering approach which addresses both technical issues and the practicalities of human interaction, regardless of programming paradigm. In this work we provide an overview of our component development approach, identifying the design patterns which have proved useful in both our component and packaging architectures and highlighting the advantages which the CCA middleware and engineering approach offer for large-scale collaborative software development

Uniform interfaces
Implementation-specific interfaces
Packaging
Conclusions
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call