Service discovery is an essential technique to provide applications with appropriate resources. However, user mobility and
heterogeneous environments make the discovery of appropriate resources difficult. The execution environments will be rapidly
changed, so developers cannot predict available resources exactly in design time. Thus, service discovery frameworks for pervasive
computing must guarantee transparent development environments to application developers. In this paper, we introduce how to
semantically describe and discover a variety of services in different environments. This approach helps applications to find
appropriate services even though the required ones are not available or not found. For this, we propose a fine-grained effect
ontology which is used to reasonably evaluate functional similarity among different services, and a policy-based query coordination
which is used to dynamically apply different resource constraints according to human activities. Finally, we show with a feasible
scenario how to find appropriate services in different environments. Our approach helps applications to seamlessly perform
their tasks across a dynamic range of environments.