In software development, to obtain a precise specification of the software system's functional requirements is significant to ensure the software quality as well as to automate the development. Use cases are an effective way to capture functional requirements, however, the use of ambiguous or vague language in the use case can lead to imprecision. It is essential to ensure that use case specifications are clear, concise, and complete to avoid imprecision in requirements. This paper aims to develop a domain specific language called FRSL to precisely specify use cases and to provide a basis for transformations to generate software artifacts from the use case specification. We define a FRSL metamodel to capture the technical domain of use cases for FRSL's abstract syntax, and then provides a textual concrete syntax for this language. We also define a formal operational semantics for FRSL by characterizing the execution of a FRSL specification as sequences of system snapshot transitions. This formal semantics on the one hand allows us to precisely explain the meaning of use cases and their relationships, on the other hand provides a basis for transformations from the use case specification. We implement a tool support for this language and perform an evaluation of its expressiveness in comparison with current use case specification languages. This work brings out (1)~a DSL to specify use cases that is defined based on a formal semantics of use cases; and (2)~a tool support realized as an Eclipse plugin for this DSL. The use case specification language FRSL would help precisely specify the system's functional requirements and bring more automation in the software development.