Design with reuse has been accepted as a cost-effective way to software development. Software reuse covers the process of identification, representation, retrieval, adaptation, and integration of reusable software components. In this paper, we propose a semi-formal approach to software reuse. The approach consists of the following major steps: (1) software components are annotated with formal information, (2) the software components are then translated into predicate transition nets, and (3) consistency checking of the reusable and new components is carried out using the reachability analysis technique of predicate transition (PrT) nets. The approach is demonstrated through an example.