Baixe o app para aproveitar ainda mais
Prévia do material em texto
3ºAula Diagramas UML – parte 1 Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: Olá, pessoal, Como estão indo seus estudos? Esperamos que você tenha gostado das duas primeiras aulas. Nas duas próximas aulas, vamos apresentar a você a Unified Modeling Language, a popular UML, que consiste em apresentar padrões de diagramas para Análise Orientada a Objetos. Nosso estudo de UML se dividirá em duas aulas. Na primeira aula, você vai aprender a história da UML e os diagramas mais usados desse padrão. Se você tiver qualquer dúvida, entre em contato via quadro de avisos, certo? A sua participação é muito importante para nós. Bons estudos! 161 18Met. para de Desenvolvimento de Software Seções de estudo 1 - Introdução à Unified Modeling Language – UML 1 – Introdução à Unified Modeling Language – UML 2 – Diagrama de Classes 3 – Diagrama de Casos de Uso 4 – Diagrama de Atividades A Unified Modeling Language (ou em Português: Linguagem de Modelagem Unificada), é uma sintaxe geral para criar um modelo lógico de um sistema. Para os autores, Booch, Rumbaugh e Jacobson, a UML é uma linguagem destinada a visualizar, especificar, construir e documentar os artefatos de um sistema complexo de software. A UML foi criada por James Rumbaugh, Grady Booch e Ivar Jacobson, durante o tempo em que trabalhavam na Rational Corporation, a criadora da Rational Unified Process – RUP. A UML teve como base a fusão das metodologias que os próprios autores haviam criado anteriormente: Método de Booch, a Engenharia de Software Orientada a Objetos (OOSE, criado por Jacobson), e a Técnica de Modelagem de Objetos (OMT, de Rumbaugh). Isso é comentado pelos próprios autores em seu livro “UML: Guia do Usuário” (2012): Como principais autores dos métodos Booch, OOSE e OMT, nos sentimos motivados a por três motivos. Primeiro, nossos métodos já estavam evoluindo um em direção ao outro de maneira independente. Fazia sentido continuar essa evolução em conjunto e não separadamente, eliminando a possibilidade de diferenças casuais e desnecessárias que apenas confundiriam os usuários. Segundo, estabilidade ao mercado orientado a objetos, permitindo que os projetos tivessem como base uma linguagem madura de modelagem e que os produtores de ferramentas fornecessem recursos mais úteis. Terceiro, esperávamos que nossa colaboração proporcionasse aprimoramentos para os três métodos anteriores, auxiliando-nos a captar as lições aprendidas e a lidar com problemas que nenhum de nossos métodos conseguira manipular de maneira adequada até então. A primeira versão da UML foi a 0.8, criada em outubro de 1995. Daí em diante, a linguagem passou a receber contribuições de diversos especialistas e pesquisadores. Em 1997, a Object Management Group – entidade que reúne empresas, agências do governo, usuários e instituições de ensino para definir padrões de tecnologia – acatou a UML como padrão, e passou a fazer o trabalho de revisão e manutenção da UML. Em 2005, foi lançada a UML 2.0. Segundo Lee e Tepfenhart, a UML tem como objetivos: A UML é uma linguagem composta de itens, relacionamentos entre esses itens e diagramas que abrigam esses itens e seus respectivos relacionamentos. Nas duas próximas aulas, vamos abordar esses diagramas e os itens que podem conter nesses diagramas, como determina a especificação UML. Mas, antes aprendermos esses diagramas, vamos saber do estudo de caso da Locadora LocaPlus, que vai servir de contexto para todos os diagramas que apresentaremos aqui nas duas próximas aulas. Você foi contratado pela locadora de veículos LocaPlus para construir um sistema que gerenciasse as locações da empresa. Assim, você fez a etapa de elicitação de requisitos, e extraiu os seguintes requisitos RG, seu nome, seu endereço, seu CPF e seu número de dependentes; o nome, a marca, o modelo, o valor do seguro, o valor da locação e a sua cor. Sendo que o valor da locação do carro pode ser atualizado a qualquer momento. pode ainda ser admitido ou demitido, para isso são registradas suas datas de admissão - contratação - e demissão. de veículos. No momento da locação, a locadora registra o número do cliente e a placa do carro, além de atribuir a data da locação para o dia atual. No ato da devolução, o funcionário registra a data de devolução e a quilometragem percorrida, para que seja informada o preço a pagar pela locação. o funcionário na condição de supervisor é o único que tem a permissão de registrar e demitir funcionários - além de pode fazer o que um funcionário comum pode fazer. demissão; cor. 162 19 O primeiro diagrama que veremos é o Diagrama de Classes, que trataremos a seguir: 2 - Diagrama de Classes De longe, o Diagrama de Classes é um dos mais utilizados da UML. Ele define as classes que estarão no sistema, além da estrutura dos dados (atributos) e serviços (métodos) de cada classe, e dos seus relacionamentos entre essas classes que estão nesse sistema. É uma evolução do diagrama de Entidade-Relacionamento, que você viu na primeira aula. Um diagrama de classes contém os seguintes elementos: 2.1 - Classes Como você viu, uma classe é um conjunto de objetos que possuem características semelhantes. A UML define a representação de uma classe como um retângulo dividido em três partes, como é apresentado na figura abaixo: No primeiro retângulo, temos o nome da classe. Esse nome deve ser iniciado com letra maiúscula, escrito no singular, negrito e centralizado. Adicionalmente, podemos colocar a versão da classe (ex. {versão 1.0}), o autor dessa classe (ex. {autor = Fulano de Tal}), e estereótipos, que explicaremos a seguir: Na UML, . É aplicado a diversos itens, como veremos nas próximas aulas. É precedido por dois Além disso, podemos definir através do nome da classe se uma classe é abstrata ou não. Uma classe é denominada abstrata se ela não pode ser instanciada, ou seja, não se pode criar objetos a partir dessa classe. Para definirmos que uma classe é abstrata, devemos indicar colocando o nome da classe em itálico. No segundo retângulo, colocamos os atributos da classe, que são indicados em formato de uma lista, onde cada linha é um atributo. Cada linha respeita a seguinte sintaxe: <visibilidade> <nome do atributo>:<tipo> [<multiplicidade>]:<valor padrão> No início de cada linha, é indicada a visibilidade desse atributo, como indicado nesta tabela: e métodos. . é um dos conceitos que sustentam a característica do encapsulamento, muito importante na Orientação a Objetos. acessado por qualquer classe; ou seja, só pode ser acessível ou dentro da classe ou por classes que descendem dessa classe, ou seja, aqueles que herdam essa classe; só pode ser acessado exclusivamente pela própria classe; é do tipo pacote, marcando esse elemento como acessível por qualquer outra classe que esteja dentro do mesmo pacote em que essa classe está inserida. Nem todas as linguagens orientadas a objeto implementam isso. Não existe na UML valor padrão para a visibilidade. Assim, não declarar a visibilidade não indicará absolutamente nada. Mas vale lembrar que existem várias linguagens de programação orientadas a objeto que exigem explicitamente que a visibilidade do elemento seja declarada. Após a identificação da visibilidade, devemos colocar o nome do atributo - separado por um espaço. Esse nome deve iniciar-se com uma letra minúscula. Recomenda-se que em casos de nomes compostos, seja seguido o padrão camelCase, que consiste em colocar a primeira letra de cada nova palavra como letra maiúscula. Por exemplo: nomeDoDependente. Ao lado do nome, colocamos um sinal de dois-pontos (:) e o tipo que será esse atributo. A UML define quatro tipos de dados primitivos, que são: Boolean String Integer UnlimitedNatural - representa números naturais. Mesmo que a UML defina tipos padrões, nada impede que o programador use os tipos que estejam disponíveis na linguagem de programação escolhida para implementaro programa ou no sistema gerenciador de banco de dados que foi escolhido para armazenar os dados. Opcionalmente, podemos definir, entre colchetes, a multiplicidade do atributo, que determina o número mínimo e o número máximo de valores que um atributo pode conter. Ele segue a notação: [<Número mínimo>..<Número Máximo>]. Vejamos alguns exemplos: máximo um valor. Esse é o valor que é deduzido se não for valor e no máximo vários valores. 163 20Met. para de Desenvolvimento de Software Também de forma opcional, podemos definir um valor padrão para esse atributo. Vejamos alguns exemplos de atributos: protegido de nome emailCliente, do tipo String, que para cada objeto, pode ter no mínimo nenhum valor associado a esse nome saldo, do tipo Float, cujo valor padrão é zero. Nota: Wilson Moraes Góes (2014) afirma que não é necessário colocar chaves ou identificadores para diferenciar um objeto a outro. No modelo de classes, isso é implícito, pois as chaves são criadas em função das limitações dos programas existentes. Por fim, no último retângulo, colocamos uma lista de métodos que estarão na classe. Essa lista é composta por linhas, onde em cada linha, definimos a sua visibilidade (da mesma forma que nos atributos) e o nome do método, seguido por um abre e fecha parênteses - “()”. Podemos ainda detalhar os parâmetros desse método, dentro dos parênteses, e o tipo do retorno do método. Porém, isso não é obrigatório, pois pode alongar demasiadamente o diagrama, devido à quantidade de parâmetros a serem colocados. A figura que mostraremos a seguir é um exemplo de classe, segundo a notação UML. 2.2 - Associação entre as classes Indica que os objetos das classes envolvidas se relacionam. Podem envolver objetos de classes diferentes ou da mesma classe - nesse caso, se chama associação reflexiva. É representada por meio de uma linha reta ligando as classes envolvidas no relacionamento. Além dessa linha reta, informações adicionais a essa relação podem ser incluídas, como: Nome (opcional) Indica alguma informação em relação a essa associação. Normalmente é um verbo que expressa à ação entre os dois objetos. Junto a esse nome, é colocada uma seta que indica a direção em que esse nome deve ser lido. No diagrama que mostraremos a seguir, temos uma relação entre as classes Paciente e Remédio. Sabemos que um paciente toma medicamentos para tratar ou prevenir diversas doenças. Assim, podemos dizer que um paciente toma um ou vários remédios. Podemos representar isso na UML, através desse diagrama: Navegabilidade (opcional) Indica como será o sentido de acesso aos dados entre os participantes da relação. Assim, podemos definir se uma classe pode acessar a outra classe ou não. É indicada por meio de setas e xis na linha que liga as classes, mas isso não é obrigatório. Para sabermos como representar isso, vejamos esses diagramas abaixo: Através dos diagramas representados acima, podemos deduzir que: nenhum outro indicador. Isso afirma que a navegabilidade não está especificada. extremidade do sentido entre K3 para K4. Isso significa que os objetos de K3 podem ter referências de K4. No sentido inverso, a navegabilidade não está especificada. da reta entre K5 para K6. Isso significa que os objetos de K5 podem acessar objetos de K6. Mas a diferença fica pelo fato que há um X no final do sentido de K6 a K5, indicando que os objetos de K6 não podem conter referências a K5, isso se chama navegabilidade excluída. da associação, isso significa que a navegabilidade é bidirecional, onde uma classe pode ter referências a outra classe e vice-versa. Multiplicidade Indica quantos objetos podem estar envolvidos nesse relacionamento. É representada por dois números, separados por dois sinais de ponto final entre eles. O primeiro número indica o número de objetos mínimo que podem estar envolvidos nessa relação e o segundo número indica o número máximo de objetos que podem estar envolvidos nessa classe. Esses dois números ficam nas extremidades da reta. Para ler uma multiplicidade, devemos começar da classe a ter a quantidade de objetos que pode e, depois, ler o número 164 21 que está na extremidade oposta dessa classe. Assim, para este diagrama: Podemos ler que um objeto da classe X pode ter no mínimo A objetos da classe Y e no máximo B objetos da classe Y. E um objeto da classe Y pode ter no mínimo N objetos da classe X e no máximo M objetos da classe X. Normalmente, uma multiplicidade que pode ser entendida como cardinalidade pode ser expressa de cinco formas: relacionar com no mínimo zero e no máximo um objeto da relacionar com no mínimo e no máximo um objeto. Esse é o valor que é deduzido se não for informada a multiplicidade do relacionar com um objeto da outra classe e pode se relacionar com muitos objetos. Além disso, uma associação pode ter uma classe atrelada a essa relação, chamada de classe associativa. É comum em relações a multiplicidade muitos para muitos, que normalmente possui atributos que sejam inerentes à relação, não pertencendo a nenhuma das classes participantes. Essa classe pode se relacionar com qualquer outra classe do sistema, independentemente se participa ou não da relação. Para ilustrarmos, observe o diagrama da figura 6. Ele mostra uma relação entre um Artigo e seu Revisor. Duas informações, que são a data da revisão e a sua descrição, são inerentes ao ato da revisão, não sendo de nenhum dos participantes da relação. Assim, criamos uma nova classe, chamada de Revisão, e incluímos essas informações. Além da associação comum, uma associação pode receber outros nomes, dependendo dos papéis das classes nesta relação. Veremos, a seguir, essas situações. pode ter sobre a outra, ela pode ter outros dois nomes diferentes que Indica um relacionamento todo-parte entre as classes participantes da relação, porém, as classes podem viver de forma independente. Por exemplo, um time pode conter vários jogadores, um jogador pode estar em um time. Indica uma relação mais forte que a agregação. Ela indica uma relação todo-parte entre os participantes, porém, um objeto-parte não faz sentido se o objeto-todo não existir. Por exemplo, uma revista é composta por artigos, mas um artigo tem como sua única razão de existir, compor a revista. Na UML, essas duas situações são representadas com um diamante o todo. Na agregação, o diamante não é preenchido. Já, na composição, o diamante é preenchido. relação envolvendo duas classes, A e B, precisamos fazer as seguintes 1. Se um objeto da classe A for excluído, terei que excluir o objeto da Se a resposta for Sim, use a composição. Se Não vá à pergunta 2. Se a resposta for Sim, utilize uma associação comum. Caso contrário, use um relacionamento de agregação, sendo que a classe A fará o papel do todo e a classe B fará o papel da parte. Agora veremos mais um integrante do diagrama de classes, o relacionamento de Herança. 2.3 Como você viu na aula 2, a Herança é um conceito onde uma classe filha herda todas as características da classe pai, além de ter as suas próprias características. Na UML a relação de herança - chamada também de generalização/ especialização, é representada com uma linha reta, partindo da classe específica até a classe base (a classe pai). No lado da classe pai terá uma seta fechada e sem preenchimento. Na figura abaixo, as classes Gato, Cachorro e Rato herdam características da classe Animal. 165 22Met. para de Desenvolvimento de Software Você também viu na segunda aula sobre o conceito de polimorfismo, que consiste em duas ou mais classes derivadas de uma mesma classe pai chamar métodos de mesmos nomes e parâmetros, mas com comportamentos distintos. Para isso, você pode colocar o mesmo nome do método nas classes derivadas. 2.4 - Exemplo de Diagrama de Classes Nesta seção, mostraremos o diagrama de classes para o estudo de caso da locadora de veículos. Ele está reproduzido na figura abaixo. Nesse diagrama,percebemos que: características comuns entre Funcionário e Cliente. As classes Funcionário e Cliente possuem as características que são exclusivas dessas classes, como as datas de admissão e demissão de um Funcionário, o número da CNH e o número e serviços que foram identificados na etapa de análise. Além disso, percebeu-se a necessidade de colocar um atributo que e Carro, onde um cliente pode locar de nenhum a muitos colocados como parte de uma classe associativa chamada de e seleção das classes do sistema, colocamos os métodos manter() e selecionar() em todas as classes. Chegamos ao fim da seção que explica o Diagrama de Classes. A seguir, você estudará o Diagrama de Casos de Uso. 3 - Diagrama de Casos de Uso O Diagrama de Casos de Uso é uma forma de representar o sistema de informação na visão do usuário, representando os módulos que compõem o sistema, o usuário e seus papéis nesse sistema. É uma forma de mostrar os requisitos que deverão conter no sistema. Desenvolvido por Ivar Jacobson na década de 1970, demonstra de forma visual o que o sistema fará, e quem o fará, sem se preocupar com os detalhes de implementação. É uma forma importante e consolidada para documentar os requisitos funcionais do sistema. Um diagrama de casos de uso normalmente contém Atores, Casos de Uso, Iterações e Relacionamentos. Veremos sobre eles a seguir. 3.1 - Caso de Uso Reproduz um componente do sistema (serviços, tarefas ou funções) que pode ser manipulado por um ou mais atores. É representado por uma elipse, contendo no seu interior uma descrição do que é feito, normalmente composto por verbos no infinitivo - por exemplo: Calcular Média do Aluno, Gerar Pedido de Exame, Emitir Nota Fiscal etc. No diagrama, um Caso de Uso apenas é apresentado pelo seu nome. Mas, pode-se colocar uma especificação funcional desse caso de uso. Ele representa de forma escrita o que será feito nesse caso de uso, descrevendo as etapas que serão executadas. A UML não define um padrão para fazer essa especificação. 3.2 - Ator Representa alguém externo ao sistema que interage ou utiliza os casos de uso. Pode ser uma pessoa, outro sistema de informação, uma empresa etc. Na UML, um ator é representado por um boneco-palito (stick man), junto com o nome que identifica esse ator. Góes (2014) recomenda que o nome do ator deve representar o papel que o ator desempenha no sistema - por exemplo: Professor, Gerente, Funcionário etc., evitando usar nome de pessoas reais como nome de ator, para evitar que a saída de pessoas inicialmente envolvidas com o sistema não deixe a documentação desatualizada rapidamente. 166 23 Um ator não precisa ser obrigatoriamente representado por um boneco-palito, ele pode ser exibido por um retângulo identificado com o seu nome e o estereótipo <<Actor>> ou por outros ícones como, por exemplo, de um microcomputador. 3.3 - Iterações ou Associações Uma iteração indica que um ator utiliza um determinado caso de uso. Para representar uma iteração, ligamos uma linha reta entre o ator e o respectivo caso de uso. Opcionalmente, podemos colocar multiplicidades para indicar quantas vezes um ator pode executar esse caso de uso e quantos atores podem executar um caso de uso. Essa multiplicidade é exatamente igual ao que você viu na seção 2.2 desta aula. No exemplo abaixo, um ator só pode executar o caso de uso “Submeter Trabalho Científico” apenas uma vez, enquanto que esse caso de uso pode ser executado por diversos atores diferentes. 3.4 - Relacionamentos Essa é a parte mais interessante de um Diagrama de Casos de Uso, podendo demonstrar relações, inclusão, exclusão e herança. Vejamos sobre eles a seguir: de uso A e B. Se A tiver uma relação de inclusão com B, significa que toda vez que o caso de uso A for executado, o caso de uso B também será executado. É representado por uma flecha com uma reta tracejada, partindo do caso de uso que chamará o caso de uso a ser incluído (o caso de uso A) até o caso de uso a ser incluído (o caso de uso B). Essa reta deverá ter o estereótipo <<include>>. inclusão, porém, o caso de uso a ser usado nem sempre será executado, dependendo das condições impostas pelo caso de uso. Assim, se um caso de uso A tiver uma relação de extensão com o caso de uso B, o caso de uso B nem sempre será executado se A for executado. É representado por meio de uma seta tracejada, partindo do caso de uso a ser usado até o caso de uso que usará ele (ou seja, no sentido contrário à inclusão), junto com o estereótipo <<extends>>. Pode ser acompanhado por uma linha tracejada com uma nota explicativa sobre qual seria essa condição. herança indica uma passagem de características de um item mais geral, para um ou mais itens filhos. Nesse diagrama, ele pode ocorrer entre atores (um ator pode herdar os casos de uso que o ator geral interage) e casos de uso de um sistema. É representado da mesma forma que uma herança de classes, por meio de uma linha reta ligando o item base ao item a ser herdado, com um triângulo apontando para o item base. 2.5 - Exemplo de Diagrama de Caso de Uso Vamos mostrar agora o Diagrama de Caso de Uso Geral para o sistema da Locadora. Neste diagrama procuramos agrupar as operações comuns de dados (que são criar, editar, ler e apagar) de uma classe como um caso de uso único, que é nomeado de cadastro. Um caso de uso geral pode abrigar um conjunto de casos de uso específicos. No nosso exemplo, o analista descobriu cinco casos de uso usando este critério de agrupamento: Cadastro de Veículo, Cadastro de Locação, Cadastro de Cliente, Encerrar Locação e Cadastro de Funcionários. Todos os casos de uso podem ser executados por um usuário comum, exceto o cadastro de funcionários, onde já declaramos como uma atribuição exclusiva dos funcionários com o status de supervisor. Como um funcionário supervisor tem acesso a todos os cadastros que um funcionário comum tem, foi acertado o uso da herança, onde o funcionário supervisor herda todos os casos de uso que um funcionário comum pode acessar. O diagrama final você observa na figura abaixo: 167 24Met. para de Desenvolvimento de Software Para finalizar a aula, vamos apresentar o Diagrama de Atividades. 4 - Diagrama de Atividades É um diagrama que consiste em representar os aspectos dinâmicos do sistema. Pode ser usado para documentar de uma pequena parte de um código até um sistema inteiro, como também para documentar as atividades de um caso de uso. Góes (2014) afirma que o Diagrama de Atividades pode ser entendido como uma evolução do Fluxograma, e que a grande diferença entre os dois é que o Diagrama de Atividades pode documentar fluxos de controle concorrentes, o que não é possível em um Fluxograma comum. Podemos encontrar os seguintes elementos em um Diagrama de Atividades: : Indica o início de um fluxo quando uma sequência de ações tem início. É representado por um círculo totalmente preenchido, podendo ter mais de um nó inicial por diagrama. : Indica o ponto de saída de um processamento ou processo. É representado por um círculo preenchido dentro de um círculo vazado, podendo ter mais de um ponto final por diagrama. : É a unidade elementar que existe nesse tipo de diagrama. Ela indica a transformação dos dados por meio de um processamento ou mostra algum passo ou alguma rotina sendo executados em um processo. Podem ser coisas feitas pelo usuário ou pelo sistema. Ele é indicado por meio de um retângulo com bordas arredondadas, contendo o nome da ação, que normalmente é um verbo no infinitivo. : Sua serventia é indicar uma conexão entre as ações, mostrando qual a ordem de execução entre elas, ou seja, indica qual será a próxima ação a ser executada após a conclusão da ação anterior. É indicada por meio de uma seta que começa da ação anterior, apontando para a próxima ação. : Indica que há uma escolha de fluxo a ser feita por meio de uma decisão. É representada por meio de um losango vazado, podendoter vários fluxos partindo dele. Em cada fluxo é indicada qual a condição que deve ser satisfeita para seguir esse fluxo. : Os dois nós são usados para simbolizar paralelismo. O nó de bifurcação abre uma série de fluxos de controle que são executados paralelamente. Já o nó de união indica a união de fluxos de controle paralelos, finalizando o paralelismo. Ambos os nós são indicados por uma barra. : Indica uma união de vários fluxos de controle, com uma só saída do fluxo de controle. É representada por meio de um losango recebendo os fluxos a serem unidos e servindo de ponto de partida do fluxo seguinte. : Dividem o fluxo de processo entre os atores que interagem com as ações do diagrama, podendo estar na horizontal ou na vertical. Para ilustrar o Diagrama de Atividades, vamos mostrar um diagrama que fizemos para representar um cadastro de uma locação. Nesse ato, estão dois atores: o funcionário que realiza o cadastro e o sistema que processa as informações dadas. Por isso as atividades foram divididas em duas raias, cada uma representando um ator. Veja abaixo o diagrama: Observe que as tarefas de validação são realizadas em paralelo, com o uso das barras de sincronização. Perceba que após a validação, há uma condição de guarda que determina se uma locação deve ser registrada ou se o sistema deve pedir os dados novamente. Com isso, finalizamos a primeira parte da aula de UML. Na próxima aula, veremos mais diagramas importantes da UML. Retomando a aula Parece que estamos indo bem. Então, para encerrar 1 – Introdução à Unified Modeling Language – UML A Unified Modeling Language (ou em Português: Linguagem de Modelagem Unificada), é uma sintaxe geral 168 25 para criar um modelo lógico de um sistema. É uma linguagem que serve para documentar, especificar, construir e visualizar artefatos de um software. Ela possui um conjunto de diagramas compostos por itens e relacionamentos. 2 – Diagrama de Classes O Diagrama de Classes define as classes que estarão no sistema, além da estrutura dos dados (atributos) e serviços (métodos) de cada classe, e dos seus relacionamentos entre essas classes que estão nesse sistema. É considerado uma evolução do diagrama de Entidade-Relacionamento e contém basicamente representações de Classes, Associações e Herança. 3 – Diagrama de Casos de Uso O Diagrama de Casos de Uso é uma forma de reproduzir o sistema de informação na visão do usuário, representando os módulos que compõem o sistema, o usuário e seus papéis nesse sistema. É uma forma de mostrar os requisitos que deverão conter no sistema. Ele contém representações de atores e casos de uso, sendo que os atores interagem com os casos de uso. 4 - Diagrama de Atividades É um diagrama que consiste em representar os aspectos dinâmicos do sistema. Pode ser usado para documentar uma pequena parte de um código até um sistema inteiro, como também para documentar as atividades de um caso de uso. Ele contém uma série de atividades que devem ser executadas em um caso de uso. PRESSMAN, Roger. Engenharia de Software. São Paulo- SP: Makron Books, 2006. SOMMERVILLE, I. Engenharia de Software. 8ª Edição. Addison Wesley, 2007. James. UML – guia do usuário. Rio de Janeiro: Elsevier, 2012. UML e C++-Guia prático de desenvolvimento orientado a objeto. São Paulo: Makron, 2002. ENGHOLM JR, Hélio. Engenharia de Software na prática. São Paulo: Novatec Editora, 2010. GÓES, Wilson Moraes. Aprenda UML por meio de estudos de caso. São Paulo: Novatec Editora, 2014. BALZERT, Heide. UML 2: compacto. Rio de Janeiro: Elsevier, 2007. LIMA, Adilson da Silva. UML 2.5 : do requisito à BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. 2. ed. Rio de Janeiro: Campus, 2007. Vale a pena Vale a pena ler Vale a pena acessar OMG. About. [S.l.:] OMG, [s.d.] Disponível em <http://www.omg.org/about/index.htm>. Acesso em 30 set. 2017. OMG. Unified Modeling Language™ (UML®). [S.l.:] OMG, [s.d.]. Disponível em: <http://www.omg.org/spec/ UML/>. Acesso em 02 out. 2017. Minhas anotações 169
Compartilhar