Critical software development

Our software development experience spans multiple industries from safety-critical military and defense applications to commercial applications. We have developed turn-key products for our customers, and also have augmented our customer’s teams with engineers working under their direction.

Our pedigree in reliability means that our engineers are practiced in developing fault-tolerant software systems. Our software development processes are adaptable, and centered on producing clear, maintainable code quickly that meet the customer's needs. We code using a variety of methodologies including agile scrum and traditional waterfall.

Safety-Critical Systems are essential for detecting and mitigating abnormal hazards. Examples include x-ray control software, fire detection systems, and train signaling systems.
Mission-Critical Systems are essential to executing and completing a major objective. Examples include propulsion systems, defibrillators, and power grid control systems.

Appling skills to every part of the software life cycle

  • Requirements analysis
  • System Design (architecture, hardware/software partitioning, timing and sizing)
  • Top level design (systems, units, components)
  • Detailed design (object oriented design capture, algorithms)
  • Code (real time, multi-tasking, input data driven, event driven)
  • Independent audits and reviews
  • Integration, test, and debug
  • Verification and validation
  • Documentation

Analyzing critical software to improve products

A critical system performs essential operations and must therefore be designed and built to provide highly reliable service. Even if a failure occurs, a critical system must still operate in some fashion so that essential operations can continue until repairs can be completed. To minimize occurrence of failures and their effects on system operations, we perform several kinds of analyses on critical system software, to determine:

  • System-level consequences of each possible kind of failure (Functional Hazard Analysis)
  • Potential underlying causes and likelihoods of such failures (Fault Tree Analysis)
  • System-level effects and consequences of software failures (Software Failure Modes, Effects, and Criticality Analysis)
  • Methods and effectiveness for ensuring continued operations in the event of critical system failures. Examples include design for operation in degraded modes, design to allow human takeover, and use of backup systems

Free Whitepaper Download
The Role of Software Failure Mode and Effects Analysis for Interfaces in Safety and Mission Critical Systems

What's inside: Complex systems are often developed by independent design teams whose boundaries are defined by interface design documents. Software interface documents, in particular, can be incomplete and ambiguous without ayone realizing it. Such weaknesses can lead to inadequate and incomplete testing prior to system integration, prolonged integration problems, and expensive last-minute design changes. An important line of defense against interface errors and ambiguities in a safety- or mission-critical system is a software failure mode and effects analysis (SFMEA). This paper explains SFMEA and its use to help identify and correct interface problems.