Na Engenharia de Software, um caso de uso (do inglês use case) é um tipo de classificador representando uma unidade funcional coerente provida pelo sistema, subsistema, ou classe manifestada por sequências de mensagens intercambiáveis entre os sistemas e um ou mais atores.
Especificações de casos de uso são narrativas em texto, descrevendo a unidade funcional, e são amplamente utilizados para representar requisitos funcionais nos sistemas. Os diagramas de Casos de Uso são representações gráficas dos Casos de Uso e seus relacionamentos com outros casos de uso e atores. Neste diagrama um caso de uso é representado por uma elipse contendo, internamente, o nome do caso de uso e um ator é representado por um boneco palito. Opcionalmente o diagrama pode ter uma fronteira, que delimita o sistema, no qual os casos de usos estarão representados dentro da fronteira e os atores fora da mesma.[1]
O apelo visual dessa ferramenta permite literalmente desenhar o processo de execução do negócio e visualizar a responsabilidade de cada participante, quando ele entrará em cena, qual será sua interação, a amplitude e a sequência em que o seu trabalho precisa ser realizado em relação às responsabilidades e tarefas dos demais integrantes do processo.[2]
Um caso de uso representa uma unidade discreta da interação entre um usuário (humano ou máquina) e o sistema. Um caso de uso é uma unidade de um trabalho significante. Por exemplo: o "login para o sistema", "registrar no sistema" e "criar pedidos" são todos casos de uso. Cada caso de uso tem uma descrição da funcionalidade que será construída no sistema proposto. Um caso de uso pode "incluir" outra funcionalidade de caso de uso ou "estender" outro caso de uso com seu próprio comportamento.
Casos de uso são tipicamente relacionados a "atores". Um ator é um humano ou entidade máquina que interage com o sistema para executar um significante trabalho.
É importante notar que não descreve como o software deverá ser construído, mas sim como ele deverá se comportar quando estiver pronto. Um software frequentemente é um produto complexo, e sua descrição envolve a identificação e documentação de vários casos de uso, cada um deles descrevendo uma "fatia" do que o software ou uma de suas partes deverá oferecer.
Normalmente evitam o uso de termos técnicos, preferindo a linguagem do utilizador final, são empregados tanto por quem desenvolve o software quanto pelos utilizadores do software.