[Música] Olá sejam bem-vindos ao canal engenharia de software com ênfase o ML sou professor GES Guedes eu já trabalho na área de modelagem há vários anos tenho quatro livros publicados sobre o assunto e já administrei diversas palestras e cursos técnicos sobre o ML na aula de hoje eu pretendo falar sobre a segunda parte do diagrama de caso de uso no vídeo anterior eu havia introduzido diagrama de caso de uso falado sobre atores sobre caso de uso e sobre como documentá-los hoje eu vou seguir com esse conteúdo a abordando alguns conteúdos mais avançados e dando exemplos
práticos do uso do diagrama Então vamos iniciar a aula Ok então vamos iniciar a parte dois sobre o diagrama de caso de uso Eu sempre faço uma pequena propaganda como eu falei eu tenho quatro livros publicados o meu primeiro livro foi o ML uma abordagem prática era sobre o mrl 1.5 mas que já abordava o ml2 no final do livro depois eu lancei um guia de consulta rápida exclusivo so m2 em seguida eu lancei o m2 guia prático e finalmente eu lancei o livro que eu considero mais completo mais atualizado e é o m2 uma
abordagem prática que se encontra na terceira Edição Mas eu estou trabalhando na quarta Edição Mas vamos deixar de propaganda e vamos ao conteúdo então eu vou falar hoje sobre associações então atores e casos de uso podem possuir associações entre si um ator pode estar associado a um ou mais casos de uso e os casos de uso eles podem e associar entre si também eh esse tipo de associação especial eh são chamadas de inclusão extensão e generalização entre outras bom vamos falar sobre associações entre atores e caso de uso uma associação entre um ator e um
caso de uso representa e aquele ator ele utiliza de alguma maneira Aquele caso de uso então uma associação ela é apresentada como uma uma linha ligando o ator ao caso de uso certo então aqui nós temos um ator cliente e nós temos o caso de uso Abrir conta comum Isso significa que esse cliente ele está utilizando esta funcionalidade de alguma maneira está interagindo com essa funcionalidade de alguma maneira nós sabemos que ele está utilizando essa funcionalidade por causa da linha que liga o ator ao caso de uso bom pode acontecer de uma funcionalidade um caso
de uso possuir associações com dois atores quando existe um ator primário e um ator secundário então Aqui nós temos Estamos vendo o mesmo processo abrir conta comum estando associado ao ator cliente e ao ator funcionário os leitores que assistiram o meu vídeo anterior eles vão lembrar que na documentação do processo de abrir conta comum o ator funcionário era o ator principal enquanto que o cliente era o ator secundário uma vez que ele fornecia algumas informações para processo então deste modo o o caso de uso Abrir conta comum ele possui uma associação tanto com o cliente
como com o funcionário bom falar um pouquinho sobre navegabilidade em associações ah a navegabilidade em associações o diagrama de caso de uso ela é representada por uma seta nas extremidades da associação essa seta ela demonstra que a informação trafega somente num sentido então Podem perceber que o ator cliente somente fornece informações para o processo representado por este caso de uso já a associação entre o funcionário caso de uso não possui setas Isso significa que a informação trafega nas duas direções vamos falar um pouquinho sobre associação de inclusão a associação de inclusão é uma associação que
ocorre entre casos de uso ela costuma ser utilizada quando existe um conjunto de passos e é comum a mais de um caso de uso então quando esse tipo de situação ocorre em geral esses Passos eles são colocados em um caso de uso separado e os outros casos de usos que precisam deles incluem esse caso de uso em seus comportamentos isso tem algumas vantagens porque dessa forma eu não tenho que descrever os mesmos Passos várias vezes em mais um caso de uso e também por uma questão de manutenção se aqueles Passos sofrer alguma mudança eu só
tenho que alterar eles no lugar só ah os relacionamentos de inclusão eles indicam uma obrigatoriedade o que isso quer dizer quer dizer que quando um existe um relacionamento de inclusão entre dois casos de uso quando o primeiro caso de uso for executado o segundo deverá Obrigatoriamente ser executado também a a hord a hora em que esse caso de uso será executado está definido na documentação do primeiro caso de uso eh o relacionamento de inclusão ele pode ser comparado de alguma maneira a chamada de uma subrotina uma vez que é feita a chamada um conjunto de
passos que podem ser eh executados por vários outros casos de uso então uma associação de inclusão ela é representada por uma seta tracejada contendo um texto include entre sinais de maior ou menor na verdade isso aqui se chama estereótipo mas nós não vamos falar de estereótipo por enquanto apenas que que isso ah nos passa informação que um componente ou Associação ele possui alguma característica especial que o diferencia de seus iguais mas basicamente neste momento isso serve para demonstrar que essa linha tracejada é uma associação de inclusão então a associação de inclusão ela aponta do caso
de uso que inclui para o caso de uso incluído então aqui eu tenho dois casos de uso o caso de uso Abrir conta comum e o caso de uso realizar depósito Como existe uma associação de inclusão entre o caso de uso Abrir conta comum e o caso de uso realizar depósito isso significa que a execução da funcionalidade Abrir conta comum obriga a execução da funcionalidade realizar depósito também bom agora Como nós sabemos Em que momento o comportamento do caso de uso incluído será acrescentado ao comportamento do caso de uso que inclui nós fazemos isso na
documentação do caso de uso Nós estudamos documentação de caso de uso na aula anterior então é necessário demonstrar Em que momento o comportamento do caso de uso que inclui será estendido pelo comportamento do caso de uso incluído então Aqui nós temos o cenário principal do do caso de uso abertura de conta comum então Eh vocês podem notar aqui em vermelho tá que o passo 10 manda executar o caso de uso o c08 realizar depósito isto aqui está feito tá colocado no cenário principal certo e não tem uma condição para que ele serja executado simplesmente é
um dos Passos a serem eh executados então é uma obrigatoriedade após abertura da conta com um após execução do Passo abrir a conta corrente eh é chamada a execução de um caso de uso no caso caso de uso realizar depósito que é um comportamento que está contido separado em um outro em outro caso de uso então eh ele vai ser incluído no comportamento da abertura de conta certo então é na documentação do caso de uso que eu demonstro em Em que momento o comportamento de um caso de uso pode ser incluído no comportamento de outro
caso de uso Ah aqui nós temos um outro exemplo de associação de inclusão onde eu tenho o ator cliente e ele está associado a duas outras funcionalidades a funcionalidade de realizar depósito e a funcionalidade de realizar saque e existe duas associações associações de inclusão com caso de uso registrar movimento bom sempre que eu fizer um depósito ou CPRE que fizeram um saque esse movimento precisa ser registrado então para não repetir esses Passos nesses dois casos de uso eu coloquei os passos Num caso de uso a parte e eu incluí esse comportamento no comportamento desses dois
casos de uso por meio de associações de inclusão então no na documentação do caso de US realizar depósito eu vou colocar em em um determinado momento que é necessário executar o caso de uso o c07 registrar movimento como está aqui em vermelho aqui representa a associação de inclusão da mesma forma na documentação do caso de uso realizar saque eu tenho também uma inclusão do caso de uso registrar movimento então no momento que for executado o passo 10 o comportamento do caso de uso registrar movimento vai ser inserido no comportamento do caso de uso realizar saque
então isso aqui é uma inclusão e nós temos as associações de extensão associações de extensão elas são utilizadas para descrever cenários opcionais cenários que podem ou não estender o comportamento de outro caso de uso isso não significa que eles sejam raros mas determina que uma condição precisa precisa ser satisfeita para que essa extensão ocorra H Aqui nós temos uma tela de realizar login a onde o caminho infeliz é aquele em que o usuário sabe seu login sabe a sua senha e pode se logar no sistema mas caso ele não saiba existe a opção de se
autorre registrar então isso aqui é um cenário alternativo que pode ocorrer ou não desde que o cliente não esteja cadastrado tá essa é a condição Então essa situação ela representada por meio de uma associação de extensão então eu tenho o caso de uso realizar login e eu tenho o caso de uso autor registrar e existe uma associação de extensão entre eles que é essa linha tracejada com o texto extend embaixo dela no caso diferente da associação de inclusão uma associação de extensão ela aponta do caso de uso estendido para o caso de uso existente e
ela só só será executada se uma condição for satisfeita Ah aqui nós temos um outro exemplo de associação de extensão onde eu tenho a o caso de uso Abrir conta comum e o caso de uso gerenciar clientes vamos supor que o cliente que quer abrir uma conta comum não terha cadastro no banco ou seu cadastro esteja desatualizado então eu tenho que dar manutenção nesse cadastro como isso é uma condição que pode ou não ser verdadeira existe uma situação de extensão Entre esses dois casos de uso da mesma maneira que a inclusão o momento em que
o comportamento de um caso de uso e irá estender poderá estender o comportamento de outro caso de uso deve estar definido no na documentação do caso de uso em questão em geral no cenário alternativo eventualmente num cenário de exceção então Aqui nós temos cenário alternativo manutenção do cadastro de cliente certo e aqui está a as informações relativas à ação do sistema caso o cliente não possua cadastro ou seu cadastro esteja desatualizado Então deve se executar o caso de uso c04 gerenciar clientes ISO aqui representa uma situação de extensão uma vez que está no cenário alternativo
que para ser executado uma condição precisa ser Satisfeita é diferente do cenário principal cenário principal é executado sempre cenários alternativos serão executados ou não Por isso normalmente a associações de extensão são representadas nesse tipo de cenário Aqui nós temos outros exemplos de associação de extensão relacionados ao caso de US encerrar conta para encerrar uma conta é necessário realizar um saque ou realizar um depósito dependendo do saldo da conta se ela estiver positiva Então se realiza um saque se ela estiver negativa Então se realiza um depósito mas não é possível encerrar a conta enquanto o saldo
dessa conta não for igual a zero Então como existe uma condição que satisfeita ou para realizar um saque ou para realizar depósito esses casos de uso foram associados ao casos de uso encerrar conta por meio de associações de extensão então Aqui nós temos a documentação do caso de uso C10 que é o processo de rar conta como toda a documentação ela possui uma identificação um código e uma descrição um resumo a descrição do ator principal que no caso é funcionário os atores secundários que são clientes a pré-condição é necessário existir uma contativa em nome do
cliente pós condições não existem e Aqui nós temos o cenário principal certo então no cenário principal que é dividido em ações deor do ator e ações do sistema é solicitado o encerramento de uma conta pelo funcionário o sistema em resposta vai solicitar o CPF do cliente o funcionário irá informar o CPF do cliente o sistema ir irá consultar este cliente por seu CPF vai solicitar o número da conta a encerrar o funcionário irá informar número da conta e Aqui nós temos uma situação de inclusão como eu falei antes de mais nada para encerrar uma conta
é necessário que o seu saldo esteja Zerado então nós temos que saber qual é o saldo da conta atual então executado o caso de uso o c08 emitir saldo então aqui é uma situação de inclusão tá dentro do cenário Municipal então simplesmente o a emissão de saldo será executada quando o processo de encerramento de conta for executado o momento de execut execução da emissão do saldo é o passo sete após isso é solicitada a senha da conta para confirmar se o cliente realmente deseja encerrar a conta o Cliente informa a senha como o cliente não
é o ator principal então é necessário especificar quando ele atua informando ã a senha no caso o sistema em resposta ele valida a senha e encerra a conta algumas regras de negócio restrições e validações a conta só pode ser encerrada pelo titular e a conta só pode ser encerrada se o saldo for igual a zero bom mas agora nós temos alguns cenários alternativos que representam situações de extensão então primeiro cenário alternativo se o saldo for positivo então é executado o caso de uso o c06 realizar saque o segundo cenário alternativo o saldo é negativo então
executado caso de uso o c05 realizar depósito e nós temos aí um terceiro cenário alternativo gerenciar cliente se for a única contativa do cliente então deve se atualizar o seu cadastro tornando Inativo então é executado o caso de uso o c04 gerenciar clientes nós temos ainda dois cenários de extensão um pro cliente não identificado onde o sistema deve comunicar ao cliente que não foi possível eh consultar ele por seu CPF e recusar o pedido de encerramento de conta e o cenário alternativo de o cenário de exceção dois que a conta não pertence ao cliente então
deve se comunicar ao cliente que a conta informada não lhe pertence e recusar o pedido de encerramento de conta bom fala um pouquinho sobre restrições restrições são muito utilizadas na uml elas são utilizadas no diagrama de caso de uso e em outros diagramas então elas são utilizadas para definir validações consistências e condições elas são representadas por um texto entre Chaves e elas se aplicam a um determinado componente ou situação então Aqui nós temos uma restrição eh colocada em sobre uma associação de extensão no caso ela serve para determinar Justamente a condição para que essa Associação
de extensão seja executada então aqui nós estamos estabelecendo caso o cliente ainda não esteja registrado Então essa é a condição autor registrar complemente o comportamento do caso de uso realizar login Aqui nós temos outros tipos de restrições tá aqui nós temos aquela mesma figura que representava o caso de uso encerrar conta e as suas associações de extensão com os casos vios realizar saque e realizar depósito e Aqui nós temos as condições para realizar um saque o saldo tem que estar positivo para realizar o depósito o saldo precisa estar negativo então elas servem para deixar claro
por exemplo Qual é a condição para que uma extensão seja executada falar um pouquinho sobre pontos de extensão Eles são um outro recurso diagrama de caso de uso eles identificam graficamente o ponto em um caso de uso e ele o o comportamento dele poderá ser estendido pelo comportamento de outro caso de uso Claro se a condição para para que isso ocorra estiver eh for verdadeira então Aqui nós temos o mesmo processo de encerrar conta mas dessa vez com os pontos extensão então que os pontos extensão é se o saldo for negativo se o saldo for
Positivo tá ã eu pessoalmente não gosto muito de ponto extensão mas eu estou explicando porque esse é um recurso que que existe no diagrama de caso de uso falar um pouquinho sobre a associação de especialização generalização ela pode ser utilizada no diagrama de caso de uso para eh derivar novos atores ou novos casos de uso a partir de atores ou casos de usos originais é mais comum ela ser aplicada a atores Mas pode eventualmente ser aplicado a caso de uso também mas isso deve ser feito com um pouco de cuidado porque pode deixar o diagrama
um pouco difícil de entender então vamos lá a vantagem de eu estender novos atores por exemplo é que pode me permitir representar níveis de permissão entre usuários e aproveitar as suas as associações já definidas então Aqui nós temos o exemplo de especialização geriz generalização aplicada a atores então nós temos o ator pessoa que foi especializado em pessoa física e pessoa jurídica então eu sei que todos os tipos de pessoa foram especificados bom ah Aqui nós temos um uma continuação Desse exemplo onde o ator pessoa está associado ao caso de uso preencher contrato eu não preciso
associar pessoa jurídica ou pessoa física ao caso de uso Prix contrato elas já herdam essa Associação por herança herança também vale para o diagrama de caso de uso da mesma forma como já foi explicado relacionado à introdução do diagrama de classes eh então basicamente nesse nessa situação pessoa física e pessoa jurídica eles elas estão associados ao caso de uso preencher contrato por er elas erdam essa Associação da do ator a partir do qual elas foram derivadas Aqui nós temos mais um exemplo de especialização generalização entre atores onde eu tenho três níveis de especialização eu tenho
usuário Juniors usuários sors e administrador o usuário Júnior está associado ao caso de uso ler arquivo usuário Senor é uma especialização do usuário Júnior e ele está associado ao caso de uso gravar arquivo mas ele pode ler e gravar arquivos mas como ele não está associado ao caso de uso ler arquivo não é necessário ele herdou essa Associação a partir do usuário Júnior por ter sido especializado a partir dele e nós temos o ator administrador que é uma especialização de usuário C O administrador está associado ao caso decir arquivo mas ele pode gravar e Ler
arquivos uma vez que ele herdou essas associações dos atores a partir do Qual dos quais ele foi derivado isso é útil para representar níveis de permissões por exemplo então o usuário Júnior ele só pode Ler arquivos usuário sor pode ler e gravar já administrador ele pode ler gravar e excluir arquivos também é possível especializar casos de uso certo emb isso não seja muito comum e a vantagem disso é que a documentação do caso de uso Geral caso de uso original é herdada pelos casos de uso especializados E aí eles só precisam acrescentar as novas etapas
para os para os cenários do comportamento herdado então a documentação dos casos de usos dos casos de usos especializados contém apenas as características novas então Aqui nós temos o exemplo de especialização generalização aplicada a caso de uso nós temos o caso de uso Abrir conta comum especializado em Abrir conta especial e abrir conta poupança que são processos bastante semelhantes ao processo de abertura de conta comum se diferenciando por alguns poucos detalhes por isso eles foram especializados então eles vão aar toda a documentação caso de uso Abrir conta comum e só vão detalhar as suas particularidades
nas suas entações bom falar um pouquinho sobre multiplicidade o que também pode ser utilizada no diagrama de caso de uso embora eu pessoalmente não costume utilizar com muita frequência a multiplicidade eh entre uma associação entre um ator em caso de uso em geral ela serve para especificar a quantidade de vezes que um ator pode utilizar um determinado caso de uso então aqui nós temos o ator cliente que está associado ao caso de US realizar login e Aqui nós temos a multiplicidade aqui eu estou dizendo que um cliente pode executar a funcionalidade de realizar login no
mínimo uma no máximo três vezes tá Depois da terceira tentativa se ele não conseguiu se logar ele não vai poder se logar mais no sistema por um determinado tempo quando não existe multiplicidade do outro lado quer dizer que não Existe limite para utilização daquele caso de uso tá então outros clientes um um o caso de uso realizar login pode ser utilizado por diversos clientes numa quantidade de vezes indeterminada mas um cliente só pode utilizar o caso de ras login uma ou no máximo três no mínimo uma no máximo três vezes depois disso ele vai ser
suspenso por um tempo eh e eu vou falar um pouquinho sobre a fronteira do sistema então a fronteira do sistema ela contém um conjunto de casos de uso ela permite determinar o que está dentro do sistema e o que está fora do sistema isso é útil por exemplo para estabelecer o escopo do software o que faz parte do objetivo do software e o que não faz parte do do Objetivo isso é muito interessante por questões de priorização para determinar quais requisitos não devem ser executados porque simplesmente não fazem parte do escopo do software Isso deve
ser explicado às partes interessadas o por que de não ser atendido porque está fora do escopo pertence ao outro software Ahã Aqui nós temos um exemplo de diagrama de caso de uso e eu tô já também ã demonstrando o que é uma fronteira do sistema tá então uma fronteira do sistema basicamente um retângulo tá contendo o título do sistema no caso aqui é um sistema de controle de biblioteca envolve o conjunto de funcionalidades ou seja os casos de uso que pertencem àquele software no caso Esse é um diagrama de caso de uso bastante simples vocês
vão ver que só existem associações simples entre atores cas de uso nós não estamos utilizando nenhum dos recursos mais avançados que nós ensinamos há pouco não tem inclusão não tem extensão não tem especialização porque não é necessário Apesar de eu ter explicar aqueles diversas recursos aqueles diversos mecanismos do diagrama de caso de uso ele só devem ser utilizados obviamente Quando forem necessários então Aqui nós temos um exemplo de de diagrama de caso de uso bastante simples para o sistema de controle de biblioteca Nós temos dois atores o ator sócio o ator bibliotecário Lembrando que um
ator não representa um usuário único mas sim um conjunto de usuários Então pode haver uma grande quantidade de sócios utilizando o sistema uma grande quantidade de bibliotecários utilizando o sistema então ah existem aqui como se trata do sistema simples existem aqui casos de usos primários e casos de usos secundários casos de usos primários são casos de uso que agregam valor ao software são processos importantes pro sistema e os casos de uso secundários são casos de usos periféricos pouco importantes no caso cadastros e relatórios Simples então Aqui nós temos os casos de uso gerenciar gêneros gerenciar
softwares gerenciar livros gerenciar autores emitir livros mais locados emitir autores mais solicitados todos esses são casos de usos secundários E a Rigor a Rigor nem precisariam ser representados mas como se trata de um sistema pequeno não tem problema colocar eles nesse diagrama os casos de usos primários são locar exemplares devolver exemplares renovar exemplares e reservar exemplares que são os casos de uso com um nível de complexidade um pouco maior E que agregam valor ao software vocês podem perceber que o ator sócio ele possui associações com navegabilidade Sócio ou associação entre o sócios e locais exemplares
ela tem uma seta apontando para locais exemplares Isso significa que o sócio somente fornece informações para esse processos o ator principal é bibliotecário e que ele que manipula esses processos apenas recebe informações para ã aplicá-las durante a execução desses casos de uso então Aqui nós temos o exemplo de Fronteira de sistema e de um caso de uso simples tá neste segundo exemplo nós temos um caso de uso mais complexo que se refere ao sistema de controle bancário nós temos atores clientes nós temos atores funcionários Alguém vai perguntar por que existem três atores com mesmo nome
no caso cliente e três atores e dois atores com mesmo nome no caso funcionário isso foi feito para evitar cruzamento de linhas e não tem nada impeça fazer esse tipo de coisa certo então para deixar o diagrama menos Riscado menos poluído com muitas linhas cruzando por ele e repetiu os atores Então isto aqui representa o Sistema de Controle bancário onde um cliente ele pode abrir uma conta comum ou uma conta especial ou uma conta poupança uma vez que é se o caso de uso Abrir conta comum ele foi especializado em Abrir conta especial e abrir
conta poupança Ah o cliente Ele Pode emitir extrato ele pode realizar saque ele pode realizar depósito ele pode encerrar uma conta Pode emitir o sal ptir saldo ah e o funcionário ele interage com vários desses casos de uso um funcionário ele interage com a abertura de conta comum na verdade ele é o ator principal é o que eu mais utilizo esse caso de uso o cliente ele somente fornece informações como demonstra seta o funcionário el pode gerenciar clientes o funcionário ele pode intermediar a realização de depósito e o funcionário ele pode intermediar a o encerramento
de uma conta agora percebam que o caso de uso Abrir conta comum ele possui uma associação de extensão com caso de uso gerenciar clientes por quê Porque se o cliente ele for o único Ah aquela conta que está en que está abrindo ele não tiver cadastro no sistema ou seu cadastro esver atualizado então é necessário executar o caso gerenciar clientes para atualizar o seu cadastro então como isso é uma condição isso é representado por uma solução de extensão ele também o processo de abertura de conta comum possui uma situação de inclusão com processo realizar depósito
por quê Porque existe uma regra de negócio que diz que quando o abertura de conta comum for executada deve-se realizar algum depósito como esse processo é um processo independente da abertura de conta comum ele foi incluído no processo de abertura de conta comum tá não ser necessário repetir aqueles passos a o processo de abertura de conta especial de aber conta poupança possui as mesmas associações que o processo de abertura de conta comum eles recebem essas mesmas associações por herança Então não é necessário eh repetir essas associações bom eh quando o cliente ele realizar um saque
ou ele realizar um depósito então ele tem que registrar aquele movimento eh e também no caso por isso isso é representado por associações de inclusão E também o processo de encerramento de conta ele tem associações de extensão com caso de realizar depósito gerenciar clientes eh e realizar saque isso pode ocorrer H caso o o saldo da conta for positiva ou negativa ou for a única conta do cliente então tem que marcar combinativo também o caso de uso encerrar conta ele tem um processo de inclusão umaação de inclusão o caso de uso emitir saldo uma vez
que eu necessito saber o saldo da conta para poder encerrá-la Então esse aqui é um exemplo um pouco mais complexo de um diagrama de caso de uso e é isso eu espero que você tenham gostado da aula e vocês acharam essa aula interessante Então eu peço que vocês curtam e vocês compartilhem esse vídeo Obrigado por assistir nós nos vemos na próxima no próximo vídeo