This paper studies 2 models for communicating recovery blocks (RB) with sta
tistically-independently failing software versions where versions are execu
ted sequentially. Model #1 considers 2 RB: RB-1 & RB-2, where RB-2 receives
some data from RB-1. Thus, if a version in RB-2 fails then RB-1 has to rol
lback to its initial state. Model #2 considers 2 RB in conversation: both b
locks must satisfy their respective acceptance tests before any of the bloc
ks are allowed to exit from the conversation. Simple expressions for the re
liability of the system are derived for models #1 & #2, and it is proved fo
r them that the reliability of a RB consisting of versions ordered from sma
llest to largest based on failure probability is as reliable as any other l
ist of the versions. Optimization models are developed for models #1 & #2.
The paper presents efficient branch & bound procedures to solve the optimiz
ation models.