Sample Projects
An introduction tutorial on software safety will be provided at the beginning of the summer program. It covers the basic definitions and concepts of software safety, techniques for hazard identification and analysis (e.g., FTA Fault Tree Analysis), design for safety via hazard elimination, reduction, and control, etc. A series of training seminars will also be provided to help less experienced students establish necessary background knowledge and improve their technical and research skills before working on assigned research projects. Additional seminars by experts from Raytheon Network Centric Systems, Lockheed Martin Aeronautics Company, and EDS, an HP Company will be scheduled as well to help the students better understand how software safety is verified and validated in practice for real-life applications. Follow-up meetings will be organized for students to discuss with invited speakers how to address the gap between the current "state-of-practice" and "state-of-art" with respect to software safety.
Listed below are the descriptions of two sample projects.
1) Foundational Requirements for Competency in Software Safety
For software-dependent systems in which failures can result in significant
property damage, injury, or death, software safety must be a principal consideration.
Software engineers involved with such projects in both the government and private
industry require an understanding of existing software safety standards and practices,
as well as an awareness of emerging trends and developments in the area. To facilitate
this, we will create a set of instructional materials appropriate for software
engineers no matter what their previous level of experience with software safety.
There are four major parts. The first is to survey existing procedures and techniques,
including software hazard analysis, fault tree analysis (FTA), failure modes and effects
analysis (FMEA). Approaches to estimate the cost of including safety in software
requirements will also be examined. The second is to review and analyze software-related
accidents. Examples are the crash of a Korean jet (1997) and an American Airlines jet
(1995), explosion of the Ariane 5 launcher (1996), loss of the Mars Climate Orbiter (1999),
destruction of the Mars Polar Lander (2000), and the power outage across the Northeastern
U.S. and Canada (2003). The role of software in these accidents will be examined, and ways
to avoid these problems in the future will be suggested. The third is to understand the
limitations and problems of software safety standards such as NASA-STD-8719.13A, Military
Standard MIL-STD-882D, DO-178B, and others. We will document lessons learned from these standards
as a repository of the "state of the art." We also report pragmatic issues of applying such
standards in practice. The fourth is to apply the instructional materials as the basis for a
series of training seminars to prepare engineers at our industry partners, including Raytheon
Network Centric Systems and the Lockheed Martin Aeronautics Company. The feedback on the training
will be used to help further improve the materials.
2) Testing for Software Safety
Testing for consistency between implementation and functional specifications does not
provide safety assurance. It is difficult to generate tests for safety testing by only
using the hazard analysis results presented in the fault tree models, because of the
lack of an explicit and common description of the relationship between a fault tree and
the corresponding functional specifications and safety requirements. We will develop an
efficient method for test generation using both functional specifications and safety
requirements. In addition to testing software under normal conditions, tests so generated
can also verify whether the implementation has properly handled all the hazardous conditions
identified by the fault tree analysis on safety requirements.
We need to examine not only the relationship between the inputs and outputs of a
software system but also that between the inputs and the impact of the outputs on system
behavior. Traditional testing in general is success oriented. The focus is on testing
what software should do; less emphasis is placed on what it is not supposed to do or on
the effects of failures and errors on safety-related behavior. This implies that invalid
inputs are often not used and responses to failures or omission errors are seldom tested.
As a result, even if software behaves according to its functional specifications, it can
still be unsafe. To overcome this problem, software should be tested against the safety
constraints and safety-related functional requirements derived from a hazard analysis.
Although hazard analysis by itself cannot ensure safety, it is a necessary step before
hazards can be eliminated or properly controlled. In other words, we can make a system
design safer via appropriate hazard analysis and subsequent testing of the design to ensure
that it meets the required level of safety. One significant challenge in performing such
analysis is selecting a good model that matches the projects goals, tasks, and skills. In
this research, we propose to use fault tree analysis (FTA), which has been widely used as a
way to analyze causes of hazards.
Our research objectives are twofold: to integrate functional specifications with fault tree
models for testable safety analysis and to generate safety tests from the integrated
specifications. The first objective allows potential components and system failures to be
specified explicitly together with the intended behaviors of a system. The second objective
aims at detection of potential failures through systematic safety-driven testing. We note
that this research focuses on testing whether or not the hazardous conditions identified by
design-level fault tree analysis will occur in the target implementation. Functional
specifications often focus on intended behaviors of a system and are intrinsically incomplete.
If complete interactions between hazardous conditions and intended behaviors are specified,
they can be used to generate safety tests. Research along this line remains to be seen,
however, due to the heterogeneity of functional specifications and fault models (e.g.,
statecharts versus fault trees). A critical problem is that some basic events in a fault
tree may have no counterpart in the corresponding functional specifications.
The proposed approach consists of three major parts.
a)
Integration of fault tree models into functional specifications so as to identify
testable interactions between intended behaviors and hazardous conditions.
b)
A test generator that produces not only functional tests but also safety tests
for a target implementation. The generated safety tests cover all the failure paths in a
given fault tree model.
c)
A testing environment for executing generated functional and safety tests and
evaluating test results against expected behaviors or hazardous conditions. It includes
a test harness as well as an environment simulation of external events and conditions.








