Baixe o app para aproveitar ainda mais
Prévia do material em texto
20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 1/27 Modelagem Utilizando a UML 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 2/27 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Apresentação Fonte: https://goo.gl/bTYwhL Nesta aula, serão revistos alguns assuntos que estudou na disciplina de Engenharia de Software. Um deles é a modelagem utilizando a UML – Unified Modeling Language. Ela é composta de um conjunto de diagramas que permitirá a você representar e modelar os diversos contextos que envolvem o desenvolvimento de um sistema. Cada um dos componentes deve ser detalhado, em conformidade com as reais necessidades do cliente. Portanto, para que um implementador possa construir os componentes, é muito importante detalhá-los com a maior riqueza de informações possível. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 3/27 Serão revistos também alguns conceitos importantes de Orientação a Objetos, para que os mesmos, conciliados com a UML, possam permitir a você analisar e projetar o software que o cliente necessita. Bons estudos! Áudio 0:000:00 / 1:21/ 1:21 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 4/27 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Conteúdo Introdução Conforme estudou na disciplina de Engenharia de Software, a UML – Unified Modeling Language é uma especificação que foi criada por Grady Booch, James Rumbaugh e Ivar Jacobson, que a definem como uma linguagem-padrão, que pode ser utilizada na elaboração da estrutura dos projetos que envolvem software, representando visualmente o seu funcionamento, especificando a construção por meio de artefatos documentados que tenham foco em sistemas mais complexos de software a serem desenvolvidos. Atenção, a UML é uma linguagem de modelagem, e não uma metodologia de desenvolvimento. Isso significa que ela não dirá para você "o que fazer" ou "como projetar um sistema", mas o ajudará a visualizar seu projeto e a comunicação entre os objetos que o compõem. Basicamente, a UML permite que os desenvolvedores visualizem o seu produto em diagramas padronizados. Como a UML é uma linguagem, ela possui símbolos próprios, vocabulário e permite a comunicação de informações, sentidos, ideias úteis, de forma gráfica e textual. É de fácil acepção e possui um padrão de comunicação, na qual todos aqueles que se dispõem a aprendê-la são capazes de se comunicar de forma eficaz. A utilização dessa linguagem-padrão economiza tempo, dinheiro e diminui riscos, pois a concepção de um projeto se torna mais eficiente, em vez de partir diretamente para o código. A correta conjunção desses aspectos permite medição e controle eficiente do projeto. Portanto, veja que compreender a UML é de suma importância para a indústria de desenvolvimento de software! A UML permite a visualização de modelos por parte dos envolvidos no projeto, estimula a interação de novos membros com outros já participantes do desenvolvimento, além de ser capaz de reter o conhecimento, quando alguém deixa o projeto. A utilização da modelagem facilita a comunicação entre os envolvidos, na medida em que os símbolos da UML possuem uma semântica própria, bem definida e de fácil compreensão. Assim, os analistas de requisitos, projetistas de software, programadores e gerentes de projetos conseguem dirimir as diferenças de entendimento do domínio do problema por 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 5/27 meio dos modelos existentes na UML. Com ela, conseguimos especificar modelos de forma precisa, com todas as informações necessárias para um completo entendimento, sem espaço para duplicidade de conceitos. As ferramentas UML trabalham de maneira padronizada, de acordo com o que é definido na linguagem. Isso permite a utilização dos mesmos modelos em várias ferramentas CASE diferentes. Essas ferramentas geram códigos em diversas linguagens de programação, como Java, C++, e até tabelas de banco de dados, por meio de mapeamento. Elas também permitem a engenharia de produção, que consiste em transformar modelo UML em código-fonte e também a engenharia reversa. O que deve ficar claro é que a engenharia reversa não leva a implementação para dentro do modelo, mas apenas as declarações. É muito importante que a equipe de desenvolvimento tenha como manter seus artefatos (modelos), para que eles possam servir de base para a medição do software, controle e também comunicação, mesmo depois da implantação do sistema. A UML também facilita esse processo de documentação. Em julho de 2017, a versão disponível da UML era a 2.5, que pode ser baixada na página da OMG – Object Management Group. A OMG é um grupo formado por membros ao redor do mundo, uma comunidade interessada em desenvolver e integrar padronizações empresariais a respeito das especificações UML, além de CORBA e BPMN, entre outras. Por fim, devemos lembrar que a UML é uma linguagem independente de processo de desenvolvimento. Além disso, não é restrita à modelagem de software. Durante algum tempo, ela pode, inclusive, ser utilizada em outros domínios, como por exemplo, a modelagem de processos de negócio, embora atualmente já exista uma linguagem específica para isso. A seguir, a Figura 1 contém uma visão dos diagramas que compõem a UML 2.5. Observe com atenção! Figura 1 – Taxonomia da Estrutura dos Diagramas da UML. http://www.omg.org/spec/UML/2.5/ 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 6/27 Fonte: OMG Unified Modeling Language – versão 2.5 (disponível em: http://www.omg.org/spec/UML/2.5/ ) Os diagramas que compõem a versão 2.5 da UML são: Diagrama de Casos de Uso Diagrama de Atividades Diagrama de Classes Diagrama de Comunicação Diagrama de Componentes Diagrama de Estrutura Composta Diagrama de Implantação Diagrama de Visão Geral de Interação Diagrama de Objetos Diagrama de Pacotes Diagrama de Perfil Diagrama de Máquina de Estados Diagrama de Sequência Diagrama de Tempo Nesta disciplina, esses diagramas não serão abordados em detalhes, visto que você já os estudou na disciplina de Engenharia de Software. Os componentes do diagrama de caso de uso são os atores, os casos de uso, os seus relacionamentos e a fronteira do sistema, portanto, ele representará os casos de uso e atores. Já, o diagrama de classes tem como componentes as classes com seus Para Refletir Conforme abordado anteriormente, existem vários diagramas que podem ser utilizados para representar diversas etapas do desenvolvimento de sistemas. Quando estamos projetando um sistema, as funcionalidades são representadas por casos de uso e os atores que os utilizam. Na sequência, temos as classes, com os seus atributos e métodos, que são utilizadas para representar os cenários dos casos de uso e suas operações. Qual é o diagrama que deve ser utilizado para representar esse cenário? http://www.omg.org/spec/UML/2.5/ 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK…7/27 atributos e métodos e os relacionamentos entre as classes. Ela representará os objetos que estão agrupados em classes que pertencem ao sistema que está sendo desenvolvido. Princípios Fundamentais de Modelagem Para que você seja capaz de compreender conceitos sobre abstração e níveis de abstração, revisaremos também os blocos que compõem a UML, envolvendo itens, relacionamentos e diagramas. A seguir, são abordados itens estruturais (classe, objeto, atributos, operações, visibilidade, encapsulamento, interface, casos de uso e artefato), itens comportamentais (interação, a máquina de estado e a atividade), itens anotacionais e itens de agrupamento. Abstração A abstração é um conceito inerente ao desenvolvimento do software como um todo. Ela é amplamente utilizada e não restrita apenas ao paradigma de Orientação a Objetos. É uma habilidade que a maioria dos stakeholders aplica em algum momento do desenvolvimento do sistema, mesmo de maneira intuitiva. Em linhas gerais, no âmbito do desenvolvimento de software, abstração consiste na capacidade de se concentrar nos itens essenciais a respeito de um problema, deixando de lado os detalhes, a fim de encontrar a melhor solução para resolver aquele problema. Começamos a aplicar a abstração no momento em que o cliente/usuário começa a expor seu problema. Ele fala de suas dificuldades e de como o sistema poderia ajudá-lo a melhorar o seu trabalho. Estamos empregando a abstração enquanto pensamos, em alto nível, em como resolver aquele determinado problema. Neste momento, a nossa preocupação está destinada apenas aos quesitos essenciais que auxiliariam na resolução do problema relatado pelo usuário. Níveis de Abstração O processo de abstração continua à medida que aprofundamos o nosso conhecimento sobre a realidade do usuário. Começamos em um plano mais geral e depois vamos aprofundando o nível de abstração, pois vamos acrescentando mais detalhes específicos, a cada vez que pensamos sobre aquele problema. Este processo de refinamento faz com que o nosso entendimento sobre aquele assunto evolua com o passar do tempo. Assim, dependendo do nível de abstração, conseguimos caracterizar o problema inicial com mais ou menos detalhes, aumentando nossa capacidade de encontrar a melhor solução para a satisfação do usuário. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 8/27 Elementos da UML Agora que aprendemos o que é abstração, podemos aplicar esse conhecimento para compreender melhor a UML. Segundo Booch, Rumbaugh e Jacobson (2005), para que tenhamos capacidade de formar um modelo conceitual, precisamos compreender inicialmente quais são os blocos de construção básicos da UML. Esses blocos de construção envolvem os itens, os relacionamentos e os diagramas. A seguir iremos nos aprofundar nos itens. Itens Os itens equivalem às abstrações do domínio de um problema. Essas abstrações devem ser identificadas pela equipe de projeto, para que sejam colocadas no modelo UML. Veremos a existência de quatro tipos de itens que podem ser usadas na UML: itens estruturais, itens comportamentais, itens de agrupamentos, e itens anotacionais. Itens Estruturais Itens estruturais são aqueles que dizem respeito à estrutura do sistema. São as partes estáticas, representam aqueles elementos fundamentais, conceituais, que podem ser representados fisicamente. Os itens estruturais são chamados de classificadores. a) Classe O primeiro item estrutural que veremos é a classe. As classes são os itens mais importantes de um sistema orientado a objetos. Ela pode ser encarada como uma descrição, um modelo, em que podem ser criados vários objetos. Essas classes são possuidoras de atributos, operações e relacionamentos semelhantes, e que detêm uma mesma semântica. Em um primeiro momento, na análise, toda entidade que for relevante para o domínio do problema é uma classe em potencial, inclusive atores que interagem com o sistema. No decorrer do desenvolvimento, são descobertas várias outras classes. A gama de classes de um sistema não está restrita a entidades. Podemos utilizar, como exemplo de classe, um carro. A classe Carro possui características comuns como cor, marca e modelo que podem ser classificados como atributos. Também possui operações comuns, como ligar, desligar, trocar marchas, entre outras. Graficamente, podemos representar uma classe como um retângulo apenas com seu nome dentro, desta maneira: Figura 2 – Classe carro 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJK… 9/27 Outra maneira, mais completa, de representar uma classe na notação UML, é por meio de um retângulo dividido em três partes. Na parte de cima está localizado o nome da classe, no centro da classe estão relacionados os atributos e na parte inferior da classe estão listadas as operações (métodos). Uma classe tem maior significância na UML se estiver conforme apresentada na Figura 3, diferentemente do primeiro exemplo, no qual estão suprimidos os nomes dos atributos e métodos. Figura 3 – Classe Carro Os nomes são os identificadores das classes. Para não haver conflitos, seu nome deve ser único em um pacote – o conceito de pacote será visto mais à frente. Preferencialmente, um sistema não deve possuir classes com nomes repetidos, mesmo que estejam em pacotes diferentes. Isso porque pode haver problema de entendimento por parte dos desenvolvedores usuários das classes. Os nomes das classes podem ser classificados como nomes simples e nomes qualificados. São simples quando são apresentados de forma única, e qualificados quando apresentados antecedidos dos nomes dos pacotes. Geralmente, os nomes de classe são sequências de caracteres, substantivos ou expressões breves, oriundos do domínio do problema. São documentadas com o primeiro caractere maiúsculo seguido dos outros em minúsculos. Quando são nomes compostos, a primeira letra dos nomes subsequentes também é maiúscula, seguida das outras letras minúsculas. Observe os exemplos a seguir: b) Objeto Nome simples: Carro Nome qualificado: veículo:Carro Carro, Automovel, CarroPasseio, AutomovelCarga 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 10/27 O objeto é a representação física de uma classe na memória do computador. Podemos dizer que um objeto é a instância de uma classe. Enquanto a classe é uma abstração, uma descrição responsável por agrupar atributos e comportamentos, o objeto é a expressão concreta, manifestação tangível dessa classe na memória. Por meio do objeto, temos condição de acessar os atributos e métodos definidos na classe. Caso o objeto não tenha sido criado na memória, não é possível acessar os comportamentos e as características definidas na classe, a não ser que esses sejam definidos como estáticos, o que estudará mais adiante, quando se tratar especificamente de atributos e métodos. Para visualizar o uso dos objetos, podemos utilizar, por exemplo, a classe Carro. Vamos supor que essa classe possua um atributo denominado chassi. Quando criarmos um objeto da classe Carro, podemos preencher o atributo chassi, por exemplo, com o valor 9GXZ06; assim, podemos identificar aquele objeto específico, enquanto que a classe continuará sendo a descrição. c) Atributos Um atributo pode ser entendido como uma variável da classe, uma propriedade, um lugar capaz de reter valores. Ali você consegue verificar o estado do objeto, por meio dos seus respectivos valores. Não há limites para o número de atributos de uma classe, ela pode possuir vários, ou mesmo não ter nenhum. Um atributo pode ser declarado juntamente com o seu tipo. Isso significa que ele só conseguirá armazenarvalores daquele tipo. Por exemplo, não será possível armazenar valores String em um atributo que seja do tipo inteiro. Se voltarmos à figura da classe Carro, no compartimento do meio, poderemos observar os atributos cor, marca e modelo. No primeiro momento, quando iniciamos a análise, o nível de abstração ainda é alto; assim, podemos optar por não colocar os tipos dos atributos e deixar nosso modelo mais genérico. Podemos colocar os tipos depois. Na medida em que aprofundamos a análise, o entendimento sobre o domínio do problema vai aumentado, o nível de abstração vai diminuindo e então podemos realizar refinamentos sucessivos em nossos modelos, para deixá-los cada vez mais completos. Os atributos são declarados na classe, mas, em regra, para colocarmos valores neles, é necessário que tenhamos uma instância da classe, ou seja, isso deve ser feito por meio de um objeto. Assim, atributos da mesma classe terão valores diferentes quando forem de objetos diferentes. Cada instância de atributo pertence a uma determinada instância da classe. Em determinado momento podemos observar o estado do objeto, que consiste em visualizarmos quais são os valores que ele possui em seus atributos naquele momento. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 11/27 Os atributos podem ser definidos como estáticos. Diferentemente da regra explanada acima, um atributo estático pertence à classe. Assim, todos os objetos daquela classe compartilham o valor daquele atributo e não é necessário que se tenha uma instância da classe – objeto em memória – para podermos acessar o valor desse atributo. Podemos citar como exemplo uma classe aluno, que contém os atributos matrícula, nome, endereço e telefone. Todos os objetos que pertencem a essa classe sempre terão esses atributos, portanto, eles são estáticos. O que modifica é quando instanciamos diferentes objetos. Na primeira instanciação, temos um aluno que possui os seguintes valores: matrícula= 12345, nome-Paula, endereço=SQN 705, bloco A apto 701 e telefone=998761234. Na segunda instanciação, teremos os mesmos atributos com valores diferentes, como apresentado a seguir: matrícula= 135432, nome-Roberto, endereço=SHS 307, casa 12 e telefone=981237131. d) Métodos/Operações Operações também são conhecidas como métodos ou mensagens. Depois de definirmos a regra de negócio e o correto fluxo dos acontecimentos, devemos modelar as operações nas classes. Os algoritmos, códigos-fonte propriamente ditos, serão, obviamente, colocados apenas na programação efetiva. Mas, na modelagem, conseguimos expor as definições e a dinâmica do funcionamento. Nela somos capazes de prever os comportamentos das operações, definir o fluxo das informações e, assim, melhoramos o entendimento, possibilitando que a solução seja discutida com outros projetistas. Desta forma, enviaremos ao programador algo já definido, sendo necessário apenas preparar efetivamente os códigos. A vantagem dessa abordagem é que documentamos a solução em um lugar diferente da implementação, possibilitando o acesso mais rápido a uma solução que será mais difundida entre os envolvidos no projeto. As operações podem, ou não, retornar algum valor. Essa questão deverá estar explícita na declaração do método, implementado em uma linguagem de programação orientada a objetos. Essa prática também deve ser levada em consideração ao definir se a operação terá ou não parâmetros, que são as variáveis existentes apenas no escopo do método. Quanto mais detalhes um modelo possuir, melhor será para a equipe de implementação. Na Figura 3, referente à classe Carro, é possível observar, no compartimento inferior do retângulo, os métodos ligar(), desligar() e trocarMarchas(). Repare que o projetista, ao modelar, já previu alguns comportamentos da classe Carro. O projetista será capaz de pensar em novas operações com o processo de refinamento sucessivo da análise, bem como os tipos de retorno e também os parâmetros. Os métodos também podem ser estáticos e seu funcionamento é semelhante ao atributo estático no que concerne a sua utilização. Não é necessário que tenhamos uma instância da classe para conseguirmos acessar um método estático. Isso porque ele 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 12/27 será um método da classe; assim, não é preciso um objeto na memória para chamarmos este método. Da mesma forma como mostramos os atributos de uma classe, vamos supor que em uma classe exista o método inserir-aluno(), quando for necessário persistir os dados de um aluno acionamos esse método passando os seguintes valores inserir-aluno(12345, Paula, SQN 705, bloco A apto 701, 998761234). Os valores apresentados entre os parênteses indicam os atributos que ele manipulará para realizar aquilo que foi definido para o método, ou seja, criar um objeto aluno dentro da base de dados, persistindo essa informação para que ela esteja disponível quando necessária. e) Visibilidade Outro conceito importante quando falamos de classes é o de modificador de visibilidade. Geralmente, essa definição vale para os classificadores que contêm instâncias. Serve para definirmos qual será a política de visualização, principalmente dos atributos e métodos. Utilizamos um modificador com frequência em classes e interfaces. Eles estão divididos em quatro níveis. Public (público): significa dizer que os itens classificados com esse modificador são visíveis por todas as classes do sistema. O modificador public utiliza o símbolo +. Protected (protegido): itens com modificadores protegidos são aqueles que podem ser visualizados por suas subclasses. O modificador de visibilidade protected utiliza o símbolo #. Private (privado): o modificador privado restringe a visualização dos itens apenas à própria classe. O visualizador private é representado pelo símbolo –. Package (pacote): a visibilidade package faz com que os itens classificados com esse modificador sejam visualizados apenas dentro do pacote em que a classe, detentora desses classificadores, está localizada. A visibilidade pacote é representada pelo símbolo ~. Observe, na Figura 4, uma classe modelada com a definição dos tipos de atributos, tipos de retornos dos métodos e modificadores de visibilidade. Figura 4 – Classe carro. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 13/27 f) Encapsulamento Agora, que já falamos sobre classes, métodos e atributos, temos condições de entender melhor sobre este importante conceito. O encapsulamento consiste na habilidade de esconder os detalhes. A classe encapsula outros itens fundamentais para o seu funcionamento: os atributos e os métodos. Em termos gerais, atributos são as características da classe e as operações ou métodos ditam o comportamento da classe. No mundo Orientado a Objetos, um sistema funciona com a interação de diversas classes. A comunicação é feita por meio de classes que requerem serviços oferecidos por outras classes. A correta conjunção dessas chamadas possibilita ao sistema atender ao seu propósito. O encapsulamento é responsável por fazer a classe possuir fronteiras específicas para a sua interconexão com as outras classes. Assim, uma classe não tem acesso direto às características de outra classe, ela apenas solicita ou oferece um serviço específico, a fim de fazer uso do seu comportamento. Segundo Pressman (2006), o encapsulamento oferece algumas vantagens ao desenvolvimento de sistemas, conforme exposto a seguir: Os detalhes internos, a implementação das características e comportamentos ficam escondidos do mundo exterior. Com isso, há uma redução dos efeitos colaterais devidoa ocorrências de modificações. A estrutura de dados, atributos e as operações, métodos, são alocados em uma única entidade denominada classe. Essa prática facilita bastante a reutilização da classe. As fronteiras existentes entre os objetos são simplificadas. Um objeto que solicita um serviço não precisa conhecer como aquela operação foi implementada. O acoplamento entre as classes tende a ser reduzido. g) Interface As interfaces são itens de estrutura em que é estabelecida uma espécie de contrato entre elas e as classes. São tipos abstratos de dados que apenas definem comportamentos; portanto, são compostas por declarações de métodos. Pode ser visualizada como uma classe totalmente abstrata. Diferentemente das classes normais, não é possível colocar implementações concretas dentro das interfaces. O fato é que as classes implementam as interfaces. Significa dizer que uma classe vai colocar os algoritmos dentro das operações definidas nas interfaces. Essas classes também podem ter outras operações, não definidas nas interfaces, o importante é que todos os métodos definidos nas interfaces devem possuir escopo na classe implementadora. Algumas dessas classes podem representar entrada ou saída de informações no sistema, sendo consideradas como abstratas. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 14/27 Outra característica importante das interfaces é que elas não possuem atributos, com exceção de esses atributos serem constantes. Uma constante é um atributo com um valor que não é possível modificar. Por exemplo, se você tem em seu sistema um valor de sequência de caracteres, ou inteiro, ou outro tipo qualquer que é utilizado em vários locais e não dá ao usuário a possibilidade de ele ser alterado, você pode colocar esse valor em uma constante e, para utilizá-la, basta chamar a referência da constante. Essa prática evita que valores absolutos fiquem espalhados pelo código, facilitando o controle e a manutenção do sistema. Uma interface é caracterizada na UML, da mesma forma que uma classe, porém, acrescida do estereótipo de interface. Estereótipo é um mecanismo para estender a UML. Por meio dele, é possível classificar elementos semelhantes. Assim, os criadores da UML entendem que também é possível a utilização desta notação em outros contextos diferentes da engenharia de software. O estereótipo pode ser identificado por meio dos sinais duplicados de maior e menor: <<nome_do_estereótipo>>. Figura 5 – Interface. Na Figura 5 você observou uma interface representada por um retângulo, semelhante à classe, e com o estereótipo <<interface>>. Porém, a interface também pode ser representada de outra forma. Na Figura 6, observe como representar uma classe que implementa uma interface, vista em forma de círculo, usando a UML. Figura 6 – Interface. h) Casos de Uso 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 15/27 Um caso de uso é uma descrição, de maneira sequencial, das ações a serem realizadas em uma determinada funcionalidade. Na UML, um caso de uso é representado por uma elipse com um nome, conforme a Figura 7. Figura 7 – Caso de uso. Perceba que um caso de uso é iniciado por um ator, alguém ou outro sistema que interage com o caso de uso. Observe, na Figura 8, como representar uma interação de um ator com um caso de uso. Figura 8 – Caso de uso. Na Figura 8, temos a representação de um ator com o papel de Funcionário que interage com o caso de uso Cadastrar Cliente. Neste momento, vale a pena falar de dois relacionamentos importantes para o contexto de casos de uso. São os relacionamentos de inclusão e extensão de caso de uso. Inclusão de Caso de Uso O relacionamento de inclusão de caso de uso consiste em executar um caso de uso diferente, no momento em que um primeiro está sendo executado. Uma determinada condição é atingida durante a realização de um caso de uso. Quando essa condição exige a realização de outro comportamento, definido em outro caso de uso, o primeiro caso de uso não prossegue, enquanto essa condição não for satisfeita, caracterizando um relacionamento obrigatório. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 16/27 Por exemplo, suponhamos que faremos um sistema de controle de estoque, no qual, entre outras coisas, são efetuadas vendas de produtos. No momento de realização da venda, o sistema deve abrir uma opção de pesquisa para encontrar o cliente que deve estar previamente cadastrado. Esse comportamento de localizar o cliente não é particularmente descrito no caso de uso realizar venda, mas, sim, em um caso de uso particular. No entanto, sempre que uma venda precisar ser efetuada, a funcionalidade de localizar cliente, descrita em outro caso de uso, será executada. A notação do relacionamento de inclusão de caso de uso é parecida com a de relação de dependência, ou seja, caracteriza-se por uma linha pontilhada com uma seta aberta na extremidade. O sentido parte do caso de uso base para o caso de uso que está sendo incluído, conforme pode observar na Figura 9. Figura 9 – Inclusão de Caso de uso. Extensão de Caso de Uso Enquanto o relacionamento de inclusão de caso de uso, anteriormente abordado, caracteriza-se por ser obrigatório, a extensão de caso de uso caracteriza-se por ser evitável. É um caso de uso que chama ou não, dependendo do caso, a funcionalidade de outro caso de uso, e isso não é obrigatório. Levando em consideração o exemplo anterior, suponha que o cliente não exista no cadastro. A opção de cadastrar o cliente é disponibilizada para o vendedor. Ele pode chamar a funcionalidade dali, ou pode cancelar a venda, ir até a funcionalidade referente ao cadastro do cliente, e depois voltar para a opção de realizar a venda. Repare que, de qualquer forma, o vendedor precisará pesquisar o cliente para realizar a venda. O relacionamento de extensão é caracterizado por uma seta pontilhada e tem o sentido contrário ao de inclusão, ou seja, o sentido é do caso de uso estendido para o caso de uso base, conforme a Figura 10. Figura 10 – Extensão de Caso de uso. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 17/27 i) Artefato O artefato também é um item estrutural. Artefato é qualquer elemento físico com informações a respeito do sistema gerado pelos envolvidos no projeto. Por conta disso, um artefato pode ser um modelo, um documento de caso de uso, código-fonte, um arquivo com scripts de banco de dados, ou seja, qualquer fonte de informações que seja relevante para o sistema. Figura 11 – Artefato. Existem ainda outros itens estruturais, não menos importantes, como as colaborações, classes ativas, componentes e nós. Os três últimos são semelhantes a classes e, provavelmente, você os verá com uma frequência muito menor do que os itens abordados anteriormente. Por isso, não serão abordados com detalhes. Itens Comportamentais Agora que já conhece os itens estruturais, conhecerá os comportamentais. Como o próprio nome diz, esses itens são responsáveis pelo comportamento do sistema. Podemos chamá-los de partes dinâmicas do modelo. Eles indicam ações, por isso seus nomes são representados pelos verbos. Os principais itens comportamentais são a interação, a máquina de estados e a atividade. A interação consiste nas mensagens trocadas entre os objetos de um determinado assunto para atingir um objetivo. É onde especificamos o comportamento de um objeto. Na UML, uma interação tem o formato de uma linha contínua com uma seta na extremidadejunto com o nome da operação, conforme a Figura 12. Figura 12 – Interação. A máquina de estados especifica os estados os quais um objeto passa durante a sua vivência, bem como as respostas aos eventos transcorridos por ele. O 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 18/27 comportamento de uma determinada classe, bem como seu ciclo de vida, pode ser modelado utilizando a máquina de estados. Graficamente, na UML um estado é representado por um retângulo de cantos arredondados e seu respectivo nome dentro do retângulo, conforme a Figura 13. Figura 13 – Máquina de Estados. Outro item importante é a atividade. Ela dita a sequência, o fluxo de trabalho executado por um determinado processo. Um processo pode ser mapeado pelas suas atividades. Uma atividade pode ser encarada como uma ação. Na UML, uma atividade é simbolizada por um retângulo de cantos arredondados com seu respectivo nome dentro do retângulo, semelhante a um estado. O que os diferencia é o contexto em que cada um atua. Figura 14 – Atividade. Itens de Agrupamento Os itens de agrupamento são úteis para conseguimos manter a organização de nosso sistema. A rigor, o principal item de agrupamento usado pelos projetistas de software é o pacote. Na medida em que o sistema cresce, há a necessidade de organizá-lo de maneira eficiente, para manter um bom entendimento e conseguir facilidade de manutenção. Sob a ótica da execução propriamente dita, os pacotes não têm influência, pois os objetos existem e são executados na memória do computador, independentemente de como foram organizados os pacotes. Além dos pacotes, podemos citar, como itens de agrupamento: os modelos, subsistemas e frameworks, que não deixam de ser variações de pacote. Observe na Figura 15 o exemplo de representação de pacote. Figura 15 – Pacote. 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 19/27 Itens Anotacionais Esses itens existem somente para deixar registrada uma anotação. Frequentemente, os projetistas necessitam explicar alguma coisa em formato de texto, fazer uma ponderação, descrever o funcionamento de um determinado componente, ou mesmo realizar um tipo qualquer de anotação. Isso deve ser colocado em uma nota. Esse é um símbolo que deve ser utilizado para breves explicações. A forma gráfica de uma nota é definida como a Figura 16. Figura 16 – Anotação. Para fazer a modelagem, podemos utilizar uma ferramenta CASE de modelagem. Sugerimos o Astah Community, pelo simples fato de ser free. Em julho de 2017, a versão disponível era a 7.1.0 (Professional) ou a 6.4.4 (Community). Para que você consiga baixar a versão Professional como estudante basta informar o seu e-mail acadêmico. Já, a versão Community não necessita dessa informação. Acesse e adquira o software: Astah Community 6.4.4 Astah Professional 7.1 (com licença para estudante) http://astah.net/download http://members.change-vision.com/entry/license/download/39312dc7-5794-4f2c-9b48-3ddaa341a6f6.html 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 20/27 Levando em consideração os conceitos estudados até o momento em relação à orientação a objetos, a transcrição dos objetos do mundo real para classes existentes no mundo computacional, teríamos a Figura 18. Figura 18 – Classe Veículo. Para Refletir Nesta aula, você estudou o conceito de abstração, que tem como foco principal olhar para um determinado contexto, entendendo e imaginando tudo o que compõe aquela situação, e transcrevê-la do mundo real para o contexto computacional. Observe os veículos apresentados a seguir. Como você irá transcrevê-los do contexto do mundo real para o contexto computacional? Figura 17 – Classe Veículo. Fonte: Adaptado de Sobrecarga e sobreposição de métodos . http://arquivo.devmedia.com.br/artigos/Juliano_shimiguel/sobrecarga/image001.jpg 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 21/27 Fonte: Adaptado de Sobrecarga e sobreposição de métodos . Percebe-se que temos uma superclasse Veículo com dois métodos e as subclasses Carro e Avião, que herdam os métodos da superclasse. Esse assunto será aprofundado nas próximas aulas, nas quais trabalhará efetivamente a transcrição das classes do mundo real de um sistema solicitado pelo cliente para o mundo computacional. Finalizando... Nesta aula, você fez uma revisão de conceitos e modelos que serão importantíssimos para que consiga Analisar e Projetar corretamente o software que foi detalhado nos Requisitos de Software. Na próxima aula, compreenderá o que compõem as visões estáticas e dinâmicas de um software. Até lá! http://arquivo.devmedia.com.br/artigos/Juliano_shimiguel/sobrecarga/image001.jpg 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 22/27 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Na Prática "Prezado(a) estudante, Esta seção é composta por atividades que objetivam consolidar a sua aprendizagem quanto aos conteúdos estudados e discutidos. Caso alguma dessas atividades seja avaliativa, seu (sua) professor (a) indicará no Plano de Ensino e lhe orientará quanto aos critérios e formas de apresentação e de envio." Bom Trabalho! 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 23/27 Para trabalhar na fase de Análise e Projeto de Software, é muito importante que você entenda qual é o ferramental que estará disponível para você trabalhar a modelagem do sistema. Para isso, contamos com a UML. A versão 2.5 conta com 14 diagramas que podem ser utilizados durante todo o ciclo de vida de desenvolvimento de software. A figura a seguir apresenta a Taxonomia da Estrutura dos Diagramas da UML. Fonte: OMG Unified Modeling Language – versão 2.5 (disponível no link: http://www.omg.org/spec/UML/2.5/ ) Perceba que nessa figura temos Diagramas de Estrutura, Diagramas Comportamentais e Diagramas de Interação. Para exercitar os assuntos abordados, é sugerido que inicialmente, faça uma pesquisa e identifique o porquê de serem chamados dessa forma. Em seguida, monte em seu caderno um quadro, separando quais são os diagramas que podem ser utilizados em cada um desses três contextos. Atividade 01 http://www.omg.org/spec/UML/2.5/ 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 24/27 A abstração é uma forma de entender um determinado contexto do mundo real, traduzindo-o para o mundo computacional, que é o nosso foco específico. Observe a figura a seguir, com diversos tipos de veículos motorizados. Fonte: http://files.sorocabairros.webnode.com/200001102-2a7fe2c73f/veiculos.png Faça a transcrição, via abstração da representação dos componentes dessa figura para o mundo computacional, conforme exemplos que foram apresentados a você nessa aula. Atividade 02 http://files.sorocabairros.webnode.com/200001102-2a7fe2c73f/veiculos.png 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ…25/27 Em seu caderno, complete a tabela a seguir, para fazer uma revisão dos principais elementos que você tem à disposição para modelar a análise e projeto de software utilizando a UML. ELEMENTO DESCRIÇÃO Classe Objeto Atributos Métodos/Operações Visibilidade Encapsulamento Interface Polimorfismo Interface Caso de Uso Atividade 03 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 26/27 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Saiba Mais Para ampliar seu conhecimento a respeito desse assunto, veja abaixo a(s) sugestão(ões) do professor: Para conhecer um pouco mais a respeito da UML, leia o artigo: A aplicação da linguagem de Modelagem Unificada (UML) para o suporte ao Projeto de Sistemas Computacionais dentro de um Modelo de Referência, de Carlos Alberto Costa. Para conhecer um pouco mais a respeito da UML, assista ao vídeo Introdução à UML – 1ª parte, do Prof. Kleber Veloso. Leia as explicações sobre os assuntos abordados na especificação da UML, que pode ser baixada do site da OMG. Amplie seus conhecimentos sobre os conceitos de orientação a objetos, assistindo ao vídeo Conceito orientado a objeto. http://www.scielo.br/pdf/gp/v8n1/v8n1a02 https://www.youtube.com/watch?v=hfN6n5fJfLc https://www.omg.org/spec/UML/About-UML/#specification-metadata https://www.youtube.com/watch?v=q89G3m5-Q-g 20/09/2021 20:32 Versão para impressão - Modelagem Utilizando a UML https://conteudo.catolica.edu.br/conteudos/nbt_cursos/pp_analise_projeto_software/tema_02/index.html?print=1&access_token=eyJ0eXAiOiJ… 27/27 ©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da Universidade Católica de Brasília Referências BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML:guia do usuário. 2. ed. Rio de Janeiro: Campus, 2005. COAD, Peter; YOURDON, Edward. Projeto baseado em objetos. Rio de Janeiro: Campus, 1993. GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, Johnson. Padrões de projeto: soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2000. GARLAN, David; SHAW, Mari. An Introduction to Software Architecture, School of Computer Science Carnegie Mellon University, 1994. Disponível em: <https://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf>. Acesso em: 25 jul. 2017. KRUTCHEN, Philippe. Introdução ao RUP: Tational Unified Process. Rio de Janeiro: Editora Ciência Moderna, 2003. PRESSMAN, Roger S. Engenharia de software. 6. ed. Rio de Janeiro: McGrawHill, 2006. PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional. 7. ed. São Paulo: McGraw-Hill, 2011. SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Addison Wesley, 2011.
Compartilhar