Scientific applications involve very large computations that strain the
resources of whatever computers are available. Such computations
implement sophisticated mathematics, require deep scientific knowledge,
depend on subtle interplay of different approximations, and may be
subject to instabilities and sensitivity to external input. Software
able to succeed in this domain invariably embeds significant domain
knowledge that should be tapped for future use. Unfortunately, most
existing scientific software is designed in an ad hoc way, resulting
in monolithic codes understood by only a few developers.
Software architecture refers to the way software is structured to
promote objectives such as reusability, maintainability, extensibility,
and feasibility of independent implementation. Such issues have become
increasingly important in the scientific domain, as software gets larger
and more complex, constructed by teams of people, and evolved over
decades. In the context of scientific computation, the challenge facing
mathematical software practitioners is to design, develop, and supply
computational components which deliver these objectives when embedded in
end-user application codes.
The Architecture of Scientific Software addresses emerging
methodologies and tools for the rational design of scientific software,
including component integration frameworks, network-based computing,
formal methods of abstraction, application programmer interface design,
and the role of object-oriented languages.
This book comprises the proceedings of the International Federation for
Information Processing (IFIP) Conference on the Architecture of
Scientific Software, which was held in Ottawa, Canada, in October 2000.
It will prove invaluable reading for developers of scientific software,
as well as for researchers in computational sciences and engineering.