To make use of available system resources and obtain higher reliability optimum, a heuristic greedy replication algorithm is designed. This algorithm is based on the increased reliability optimum of each unit's bandwidth OB and memory OM. It uses the greedy idea to select two sets of software components that may be replicated. The software components of the set with higher reliability optimum are selected to replicate by the algorithm. Given the limited available system resource, comparing with greedy replication algorithm, this algorithm can obtain higher reliability optimum and higher service reliabilities. Therefore, when the available system resource is constrained, the heuristic greedy replication algorithm is a good method of selecting software components to replicate.