Introduction and Software Reliability Growth Model (Goel-Okumoto) in PyMC v5

Hi PyMC community!

I’m an undergraduate studying B.Tech in Mathematics and Scientific Computing and an active Python developer. I’m currently preparing for Google Summer of Code (GSoC) and wanted to introduce myself to the community.

Following the advice often shared here to use PyMC for a problem I am curious about, I wanted to share something I’ve built using PyMC v5.

In my coursework on Software Reliability, SRGMs are taught using classical MLE, which struggles on sparse failure logs (\hat{N} \to \infty) and cannot quantify release risk under uncertainty.


The Model: Goel-Okumoto NHPP in PyMC v5

I implemented the classic Goel-Okumoto Non-Homogeneous Poisson Process (NHPP) on the historical Musa System 1 benchmark (136 failures over 24.6 CPU hours):

  • Mean value function & interval counts:
    m(t) = a\left(1 - e^{-bt}\right), \quad \mu_i = a\left(e^{-bt_{i-1}} - e^{-bt_i}\right), \quad y_i \sim \text{Poisson}(\mu_i)
  • Priors: a \sim \text{LogNormal}(\ln(150), 0.4), b \sim \text{Exponential}(10.0)
  • Sampling: NUTS (4 chains, 1,000 draws) converged in under 2s (\hat{R} = 1.00, \text{ESS} > 3{,}400, 0 divergences).
    • Inferred total bugs a: 143.7 \pm 11.9
    • Detection rate b: 0.123 \pm 0.015 / CPU hour

Answering Practical Release Questions

From the posterior, we can directly answer:

  1. Remaining Bugs: Using N_{\text{remaining}}(T) = a \cdot e^{-bT} (strictly > 0), at T = 25 CPU hours:
    • Mean remaining bugs: 7.2 (94% HDI: [3.1, 14.3])
  2. Operational Reliability: Probability of zero failures over mission duration \Delta t:
    R(T, \Delta t) = \exp\left[-a \cdot e^{-bT} \cdot \left(1 - e^{-b\Delta t}\right)\right]
    • Surviving next 1 CPU hour: 46.3% (94% HDI: [27.2%, 64.7%]).
  3. PPC Validation: Posterior predictive check confirms that simulated trajectories envelope the observed 136-failure curve.

You can view the full notebook and plots here: Link to Notebook


Questions

  1. Would the maintainers be open to having this as a tutorial notebook in pymc-devs/pymc-examples (with suggestions if any)? I’d be glad to open an issue and PR!
  2. I’d love feedback on model specification and prior choices.
  3. As I prepare for GSoC, I’m eager to get involved, contribute to open issues, and collaborate.