  Prognostic and Health Management (PHM) has been widely applied to hardware
systems in the electronics and non-electronics domains but has not been
explored for software. While software does not decay over time, it can degrade
over release cycles. Software health management is confined to diagnostic
assessments that identify problems, whereas prognostic assessment potentially
indicates when in the future a problem will become detrimental. Relevant
research areas such as software defect prediction, software reliability
prediction, predictive maintenance of software, software degradation, and
software performance prediction, exist, but all of these represent diagnostic
models built upon historical data, none of which can predict an RUL for
software. This paper addresses the application of PHM concepts to software
systems for fault predictions and RUL estimation. Specifically, this paper
addresses how PHM can be used to make decisions for software systems such as
version update and upgrade, module changes, system reengineering, rejuvenation,
maintenance scheduling, budgeting, and total abandonment. This paper presents a
method to prognostically and continuously predict the RUL of a software system
based on usage parameters (e.g., the numbers and categories of releases) and
performance parameters (e.g., response time). The model developed has been
validated by comparing actual data, with the results that were generated by
predictive models. Statistical validation (regression validation, and k-fold
cross validation) has also been carried out. A case study, based on publicly
available data for the Bugzilla application is presented. This case study
demonstrates that PHM concepts can be applied to software systems and RUL can
be calculated to make system management decisions.
