
Background of this illustration produced with Cichlid software
for depicting network behavior, developed by the National Laboratory
for Applied Network Research (NLANR) with NSF support
Representative FY 2002 agency activities
NSF: Empirical software engineering research to address
problems of software productivity and product quality
DARPA: Deeply networked systems research using model-based integration
of distributed software for integrating information processing and
physical process demands, and highly complex systems that may be composed
of systems of sensors or systems of systems
NIH: The NCI Advanced Biomedical Computing Center continues to develop
high-end computational methods to support cancer research
NASA: Establish and develop High Dependability Software Consortium
with leading universities and industry for proving methods and techniques
to achieve very high reliability in mission-critical software
NIST: Research in techniques for self-integration of manufacturing
system components to enable full or partial interoperability in a
world where standards are changing quickly; automated or partially
automated creation of software using combinations of formal methods,
machine learning, and knowledge-based techniques
NOAA: Advanced scalable computation research to develop the Flexible
Modeling System for climate and atmospheric scientists working on
highly parallel scalable systems
ODUSD (S&T): University-based research in data fusion in large
arrays of microsensors (SENSORWEB), learning technologies, solitonic
information processing, and adaptive mobile wireless networks for
highly dynamic environments
EPA: Research and development in component-based methods for environmental
modeling
|
The well documented, widely experienced effects of inadequate
software quality and productivity jeopardize U.S. security and economic
viability. A conspicuous example of the enormous research challenges
before us is embedded software - that is, software operating with
and controlling the physical world. Embedded software is extremely
hard to build because its design cannot be based on an idealized model
of the real world. While the primary stakeholder is DoD (embedded
software is the main reason for significant time and cost overruns
in major weapon programs and presents a profound technical challenge
for developers), embedded software has tremendous commercial significance.
Examples of this may be found in automotive electronics (where it
is predicted that the cost of the embedded computers and software
will exceed that of the drive train and body by early 2003), consumer
electronics such as personal digital assistants (PDAs), cell phones,
television sets and other household devices, and industrial process
control systems.
Given the staggering impact of the software industry on both the private
sector - where personnel costs have reached $400 billion a year -
and the Federal government, the NITRD agencies are sponsoring fundamental
research that will lead to more cost-efficient, productive software
development methods. This will result in higher-quality software with
predictable characteristics, as well as support the construction of
advanced applications that stress and evaluate current and evolving
best practices.
Tiny embedded processors lie at one end of the continuum of software
research needs, but at the other lie the largest digital systems in
existence. The National Research Council, in its Fall 2000 report
"Making IT Better," argues that the single greatest challenge
in IT research today is presented by large-scale systems, which now
power society's most complex and critical infrastructures but which
have not been the IT research community's primary focus. Citing the
growing complexity, heterogeneity, distribution, and integration of
these vast interconnected systems, the report urges that research
to improve their design, development, and operation be made a national
priority.
In large-scale systems, the validity of theoretical approaches is
drastically challenged by scalability pressures and by the inherent
heterogeneity of components. We cannot achieve improvements without
evaluating the practical applicability of methods and techniques and
actually testing them in large-scale application platforms.
The NITRD agencies' research program addresses the scientific foundations
of software design and investigates the related engineering process,
including substantial experimental evaluations. In FY 2002, agency-sponsored
research will focus on developing mathematical, computer science,
and engineering models to test fundamental new directions for cost-efficient
development of very high-quality software in the emerging world of
interconnectivity among heterogeneous devices, from embedded processors
to massive systems of systems.
- Science of software and system design:
|
- Languages and compilers - e.g., domain-specific languages
to make software specification and development easy for
end users and languages that are easier to use and harder
to abuse
- Effective methods for composing software and systems
- better techniques for composing, analyzing, and verifying
complex systems, and making them interoperable on widely
distributed heterogeneous systems
- Foundations for advanced frameworks and middleware -
adaptive and reflexive components, composition frameworks
and middleware, theoretical basis for the construction
of scalable distributed software systems
|
- Automating the engineering process:
|
- Methods for putting together software "components"
to reduce development time and increase reliability, including
technologies for developing distributed, autonomous and/or
embedded software; software development automation
- Integrated software and systems development process,
including methods for specifying, analyzing, testing,
and verifying software and physical systems
- Interoperability of network applications running concurrently
- Integrated configurable tool environments that enable
rapid composition and customization of integrated domain-specific
development environments
|
- Pilot applications and empirical evaluation:
|
- Technologies for embedded software applications and
other complex applications
- Empirical studies of software and systems development
projects
|
|