Conceitos de Riscos e Modelagem UML para Projeto
Aula 1
Riscos de Projeto
Riscos de projeto
Estudante, esta videoaula foi preparada especialmente para você. Nela, você irá aprender conteúdos importantes para a sua formação profissional. Vamos assisti-la?
Bons estudos!
Ponto de Partida
Olá, estudante!
Iniciamos nossa última etapa no contexto de implementação de projetos e agora vamos falar sobre os riscos de projetos.
No ambiente dinâmico dos projetos modernos, os gestores enfrentam a constante ameaça dos riscos que podem comprometer prazos, orçamentos e a qualidade das entregas. Imagine um projeto de desenvolvimento de software destinado a automatizar processos críticos em uma grande empresa. A pressão para adotar novas tecnologias, atender às expectativas dos stakeholders e cumprir um cronograma agressivo intensifica a complexidade do projeto. No entanto, a falta de um plano de gerenciamento de riscos adequado resulta em falhas tecnológicas imprevistas, requisitos mal definidos e atrasos significativos.
Um dos grandes pontos relacionados a riscos no contexto de projetos reside na incapacidade de antecipar e mitigar esses riscos, que frequentemente resultam em desperdício de recursos, insatisfação do cliente e falhas no alcance dos objetivos do projeto. Para enfrentar esse desafio, é essencial implementar um robusto processo de gestão de riscos. Reflita ao longo de nossa aula sobre esse tema e pense: qual o procedimento ideal para a implementação da gestão de riscos?
Vamos abraçar mais um conjunto incrível de conhecimentos?
Bons estudos!
Vamos Começar!
Riscos de projeto
Por definição, risco de projeto é um evento ou condição incerta que, se ocorrer, terá um efeito positivo ou negativo sobre, pelo menos, um objetivo do projeto, como prazo, custo, escopo ou qualidade (Cavalcanti & Silveira, 2016). Um bom exemplo da importância da gestão de risco está na complexidade de um projeto.
Imagine, no desenvolvimento de um sistema de TI para uma instituição financeira, a multiplicidade de riscos que torna sua gestão essencial para o sucesso do projeto em questão. Riscos técnicos, como falhas em novas tecnologias ou integrações, são comuns e podem causar atrasos significativos. A falha em definir claramente os requisitos do projeto, muitas vezes resultante de comunicação inadequada entre as partes interessadas, leva a revisões dispendiosas e retrabalho.
Riscos de cronograma surgem de estimativas de tempo imprecisas e podem ser exacerbados por problemas imprevistos, como a indisponibilidade de recursos humanos especializados. Exceder o orçamento, um risco financeiro crítico, frequentemente resulta da subestimação inicial dos custos ou de mudanças no escopo do projeto. A rotatividade de pessoal também representa um grande risco, especialmente quando membros-chave da equipe saem, levando consigo conhecimento vital.
Para mitigar esses riscos, é fundamental implementar um processo estruturado de gestão de riscos que inclua a identificação, análise, priorização e o planejamento de respostas a riscos. Ferramentas como matrizes de probabilidade e impacto ajudam a visualizar e priorizar riscos. Veja uma sugestão dos autores Keeling & Branco (2019, p. 265) do que deve ser armazenado de informações sobre os riscos:
- Caracterização do risco: Deve ter um campo para registrar a estrutura do risco, de forma a respeitar a recomendação “se_____”, “então______”.
- Probabilidade do evento: Campo para registrar a probabilidade de ocorrência do risco, de acordo com os critérios preestabelecidos.
- Impacto do evento: Campo para registrar o impacto que será consequência da eventual manifestação do risco. O impacto deverá ser avaliado de acordo com os critérios preestabelecidos.
- Cálculo da combinação de probabilidade e impacto: Geralmente, as ferramentas já calculam automaticamente a combinação da probabilidade com o impacto, resultando na recomendação de ação para o risco analisado.
- Plano de ação: Campo para registro de um plano de ação para resposta ao risco, na tentativa de minimizar ou eliminar a probabilidade de ocorrência ou de diminuir o impacto associado ao risco. Pode também conter ações de contingência.
- Informações complementares ao plano de ação: Espaço reservado para outras informações relacionadas ao plano de ação, como responsável, prazo e custo.
- Observações: Espaço livre para registrar outras informações pertinentes ao risco em questão.
Planejamento e mitigação de riscos de projeto
O planejamento e a mitigação de riscos são elementos essenciais no gerenciamento de projetos. Para garantir o sucesso do projeto, é fundamental implementar um processo estruturado de gestão de riscos. Essa gestão é baseada na probabilidade de ocorrência de um evento e no impacto que esse evento vai causar caso ocorra (Boostel, 2019).
O primeiro passo é a identificação dos riscos, em que são listados todos os possíveis eventos que podem impactar o projeto. Ferramentas como brainstorming, checklists e análises SWOT, que visam à identificação de forças, fraquezas, oportunidades e ameaças (Keeling, 2019), são frequentemente usadas nessa fase. Em seguida, realiza-se a análise qualitativa e quantitativa dos riscos. A análise qualitativa avalia a probabilidade e o impacto de cada risco, geralmente usando uma matriz de probabilidade e impacto (Menezes, 2018). A análise quantitativa, por outro lado, utiliza métodos numéricos para estimar o efeito dos riscos nos objetivos do projeto. Cavalcanti & Silveira (2016) apresentam o ciclo para gerenciamento de risco, confirme imagem a seguir:
Após a análise, os riscos são priorizados com base na sua probabilidade e impacto, permitindo que a equipe se concentre nos riscos mais significativos. Em seguida, são desenvolvidos planos de respostas aos riscos, que incluem estratégias de mitigação, aceitação, transferência ou evitação dos riscos. A mitigação, em particular, envolve ações proativas para reduzir a probabilidade ou o impacto dos riscos.
Siga em Frente...
Gerenciamento de riscos de projeto
Inicialmente, é importante mencionar que deve ser elaborado um documento que concentrará todas as informações relacionadas à gestão dos riscos. Esse documento se chama Plano de Gerenciamento de Riscos e deve ser terminado já no início do planejamento do projeto, pois ele é essencial para executar com sucesso as outras atividades de planejamento. Além disso, em muitos projetos, a maior parte dos custos é fixada já na fase de iniciação do CVGP, quando macrodecisões a respeito de escopo, recursos, prazo e níveis de qualidade são tomadas (Cavalcanti & Silveira, 2016). O gerenciamento de riscos de projeto é um processo essencial para assegurar o sucesso de qualquer empreendimento. Ele envolve a identificação, análise, priorização e o planejamento de respostas a eventos incertos que podem impactar os objetivos do projeto, como prazo, custo, escopo ou qualidade. Como já visto, os riscos devem ser analisados qualitativamente e quantitativamente para avaliar suas probabilidades e impactos e, com base nessa análise, é feita a priorização dos riscos. Desenvolvem-se, então, planos de resposta, que podem incluir estratégias de mitigação, aceitação, transferência ou evitação dos riscos. A implementação de ferramentas como matrizes de probabilidade e impacto facilita a visualização e priorização dos riscos.
Finalmente, o monitoramento e controle dos riscos são contínuos ao longo do projeto, garantindo que os planos de resposta sejam eficazes e ajustados conforme necessário. Ferramentas de software de gestão de projetos podem auxiliar no acompanhamento dos riscos e na comunicação entre as partes interessadas.
Vamos Exercitar?
Como vimos ao longo de nossos estudos, o gerenciamento dos riscos é elemento decisivo para assegurar o sucesso do projeto em questão. Existem várias técnicas e ferramentas que auxiliam na tarefa de controle e mitigação dos riscos.
Para implementar um robusto processo de gestão de riscos, cabe começar identificando sistematicamente os riscos potenciais por meio de sessões de brainstorming e análise de dados históricos. Note que o brainstorming é uma técnica que você já conhece e que pode e deve ser usada em várias etapas de um projeto. Posteriormente, cada risco deve ser avaliado quanto à sua probabilidade e impacto, permitindo a priorização eficaz.
Um plano de resposta aos riscos deve ser elaborado (Keeling & Branco, 2019), incluindo estratégias de mitigação, transferência, aceitação ou bloqueio de riscos.
Alocar um gerente de riscos dedicado pode garantir que o monitoramento contínuo e o controle sejam mantidos ao longo do ciclo de vida do projeto, pode ser uma boa estratégia, a depender do porte e complexidade do projeto. Com essas práticas, a equipe do projeto pode minimizar os impactos negativos, assegurar a alocação eficiente de recursos e aumentar significativamente as chances de sucesso, entregando um produto de alta qualidade dentro do prazo e do orçamento previstos.
Saiba Mais
Realize a leitura do capítulo “Gestão dos riscos” e saiba mais sobre esse tema tão importante no contexto de projetos, no livro Fundamentos de gestão de projetos.
Para compreender melhor a gestão de riscos, leia o capítulo de mesmo nome, disponível no livro Gestão de custos, riscos e perdas.
Aprofunde-se nos estudos de plano de gerenciamento de riscos, com o livro Fundamentos de gestão de projetos.
Referências Bibliográficas
BOOSTEL, I.; REIS, Z. C. Gestão de custos, riscos e perdas. Porto Alegre: Sagah, 2019.
CAVALCANTI, F. R. P.; SILVEIRA, J. A. N. Fundamentos de gestão de projetos. São Paulo: Atlas, 2016.
KEELING, R.; BRANCO, R. H. F. Gestão de projetos. 4. ed. São Paulo: Saraiva Educação, 2019.
MENEZES, L. C. de M. Gestão de projetos. 4. ed. São Paulo: Atlas, 2018.
Aula 2
Linguagem de Modelagem Unificada - UML
Linguagem de modelagem unificada – UML
Estudante, esta videoaula foi preparada especialmente para você. Nela, você irá aprender conteúdos importantes para a sua formação profissional. Vamos assisti-la?
Bons estudos!
Ponto de Partida
Olá, estudante!
Vamos iniciar nossa aula para falar sobre a Linguagem de Modelagem Unificada (UML), que é uma linguagem padrão amplamente utilizada na engenharia de software para especificar, visualizar, construir e documentar os artefatos de sistemas complexos. Ela oferece uma variedade de diagramas que abordam diferentes aspectos do sistema, como estrutura, comportamento e interação. Entre os diagramas mais comuns estão os diagramas de classe, de caso de uso, de sequência e de atividades. UML facilita a comunicação entre os membros da equipe de desenvolvimento e stakeholders, proporcionando uma compreensão clara e compartilhada dos requisitos e do design do sistema.
A UML costuma ser um tema que causa certa confusão. Por esse motivo, para auxiliar nos seus estudos de aprofundamento sobre o tema, considere, apesar de sua utilidade, que é comum aos profissionais enfrentarem dificuldades em utilizar UML de forma eficaz, principalmente devido à complexidade e à diversidade de diagramas. Isso pode levar a uma documentação incompleta ou incorreta, comprometendo a clareza e a eficiência no desenvolvimento de software. Que tal refletir um pouco sobre como lidar com esse problema no contexto profissional?
Vamos iniciar mais um aprofundamento!
Vamos Começar!
Conceitos de UML
A Linguagem de Modelagem Unificada (UML) é uma linguagem de modelagem padronizada amplamente utilizada na engenharia de software para representar a estrutura, o comportamento e a interação de sistemas, e serve para documentar o projeto de software (Pressman & Maxim, 2021). Desenvolvida por Grady Booch, Ivar Jacobson e James Rumbaugh, a UML originou-se a partir de diversas metodologias de análise e projeto orientados a objetos (Fowler, 2011) e fornece um conjunto de notações gráficas para criar modelos de sistemas complexos.
Entre os principais conceitos da UML estão os diagramas estruturais, que incluem diagramas de classes, objetos e componentes, usados para representar a arquitetura estática do sistema. Os diagramas comportamentais, como diagramas de caso de uso, sequência e atividades, capturam a dinâmica do sistema, mostrando como ele responde a eventos e interage com os usuários e outros sistemas. Além disso, os diagramas de interação, como diagramas de comunicação e de tempo, detalham a troca de mensagens entre os componentes do sistema.
A UML também incorpora conceitos de orientação a objetos (Larman, 2007), como classes, objetos, herança e polimorfismo, facilitando a transição do design para a implementação. Outro conceito-chave é a abstração, que permite a modelagem de sistemas complexos em diferentes níveis de detalhe, tornando mais fácil a compreensão e o gerenciamento. A UML é uma ferramenta essencial para a documentação, análise e o design de sistemas, promovendo a comunicação clara e precisa entre os membros da equipe de desenvolvimento e os stakeholders.
Elementos que compõem a UML
A Linguagem de Modelagem Unificada (UML) é composta por vários elementos essenciais que permitem a representação detalhada e precisa de sistemas de software. Entre esses elementos, destacam-se classes, objetos, relacionamentos, diagramas, atributos, operações e pacotes.
Classes: As classes são elementos fundamentais da UML que representam conceitos ou entidades com características comuns. Elas definem a estrutura e o comportamento dos objetos, como atributos e operações (Larman, 2007).
Objetos: Os objetos são instâncias das classes. Eles representam entidades concretas no sistema com valores específicos para os atributos definidos pela classe e são utilizados para demonstrar como as classes interagem em tempo real (Fowler, 2011).
Relacionamentos: Os relacionamentos descrevem como os elementos da UML, como classes e objetos, se conectam e interagem. Como exemplos de tipos comuns de relacionamentos podemos citar associações, generalizações e dependências, que ajudam a ilustrar a estrutura e as conexões dentro do sistema (Fowler, 2011).
Diagramas: Os diagramas são representações gráficas que utilizam os elementos da UML para modelar diferentes aspectos do sistema. Os principais diagramas incluem diagramas de classes, diagramas de casos de uso, diagramas de sequência, diagramas de atividades, diagramas de estados, diagramas de componentes e diagramas de implantação (Fowler, 2011).
Atributos: Os atributos são propriedades das classes que definem suas características. Eles representam dados que as instâncias da classe (objetos) podem possuir, como nome, idade ou estado (Fowler, 2011).
Operações: As operações são funções ou métodos definidos dentro das classes que descrevem o comportamento dos objetos. Elas especificam as ações que um objeto pode realizar ou que podem ser realizadas sobre ele (Fowler, 2011).
Pacotes: Os pacotes são agrupamentos de elementos relacionados, como classes, objetos e diagramas, que ajudam a organizar e gerenciar a complexidade do sistema. Eles permitem uma melhor estruturação e modularização dos modelos UML.
Esses elementos trabalham em conjunto para fornecer uma visão abrangente e detalhada do sistema, desde sua estrutura estática até seu comportamento dinâmico, facilitando a compreensão e a comunicação entre todos os envolvidos no desenvolvimento do software.
Siga em Frente...
Tipos de diagramas da UML
A Linguagem de Modelagem Unificada (UML) é composta por diversos elementos que permitem a representação detalhada e precisa de sistemas de software. Esses elementos são divididos em três categorias principais: diagramas estruturais, diagramas comportamentais e diagramas de interação (Wazlawick, 2015).
- Diagramas estruturais
Diagrama de classes: Mostra as classes do sistema, seus atributos, métodos e os relacionamentos entre elas.
Diagrama de objetos: Representa instâncias específicas de classes em determinado momento.
Diagrama de componentes: Descreve a organização e as dependências dos componentes físicos do sistema.
Diagrama de estrutura composta: Detalha a estrutura interna das classes, incluindo os relacionamentos entre seus componentes internos.
Diagrama de pacotes: Organiza os elementos do modelo em grupos ou pacotes, facilitando a gestão da complexidade.
Diagrama de implantação: Mostra a distribuição de componentes de software em nós de hardware. - Diagramas comportamentais
Diagrama de casos de uso: Representa as interações entre os usuários (atores) e o sistema, mostrando os diferentes casos de uso.
Diagrama de atividades: Captura o fluxo de atividades e decisões dentro de um processo ou operação.
Diagrama de estados: Descreve os estados pelos quais um objeto passa durante seu ciclo de vida, incluindo transições e eventos desencadeadores. - Diagramas de interação
Diagrama de sequência: Mostra a interação entre objetos ao longo do tempo, especificando a ordem das mensagens trocadas.
Diagrama de comunicação: Foca as interações entre objetos e os links entre eles.
Diagrama de tempo: Detalha o comportamento dos objetos ao longo de uma linha do tempo.
Diagrama de visão geral da interação: Combina elementos de diagramas de atividades e diagramas de sequência para proporcionar uma visão geral das interações dentro de um sistema.
Esses elementos combinam-se para fornecer uma visão abrangente e detalhada do sistema, desde sua arquitetura estática até seu comportamento dinâmico, facilitando o entendimento e a comunicação entre os envolvidos no desenvolvimento do software.
Vamos Exercitar?
Como você deve ter notado, a UML é uma ferramenta indispensável na área de projeto de software. Com sua correta utilização é possível, entre outras várias vantagens, reduzir gastos, otimizar o tempo e assegurar, sobretudo, a clareza entre os envolvidos no projeto. Vários são os diagramas que conhecemos hoje e agora, é preciso praticar sua elaboração. Existem várias ferramentas, mas uma das mais completas é o Atah. Vale ressaltar que a versão community oferece muitos recursos e, com ela, já é possível ter uma noção muito interessante de utilização da UML. Que tal praticar um pouco?
No início de nosso conteúdo, você viu que há ainda uma dificuldade muito grande em se adotar a UML. Ainda presente em muitas organizações, adotar a UML como linguagem de documentação em projetos de aplicações é fundamental e, para isso, é preciso investir em treinamento adequado e contínuo para a equipe de desenvolvimento. Workshops, cursos e recursos on-line podem ajudar a familiarizar os profissionais com os diversos tipos de diagramas e suas aplicações. Além disso, a utilização de ferramentas de modelagem que ofereçam suporte intuitivo para a criação e manutenção dos diagramas pode simplificar o processo.
Estabelecer práticas de revisão e validação de diagramas com a equipe e os stakeholders assegura que a documentação seja precisa e compreensível. Dessa forma, é possível maximizar os benefícios de UML, garantindo uma comunicação clara e uma base sólida para o desenvolvimento do sistema.
Saiba Mais
Recomendamos que você faça a leitura de Introdução à UML, no livro Engenharia de software.
Sugerimos também a leitura do capítulo 3 “Diagramas de classe: os elementos básicos”, do livro UML essencial.
Descubra os detalhes relacionados aos tipos de diagramas disponíveis na UML lendo o capítulo “Linguagem de Modelagem Unificada (UML)”, do livro Análise e design orientados a objetos para sistemas de informação: modelagem com UML, OCL e IFML.
Referências Bibliográficas
FOWLER, M. UML essencial. 3. ed. Porto Alegre: Bookman, 2011.
LARMAN, C. Utilizando UML e padrões. Porto Alegre: Bookman, 2007.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. 9. ed. Porto Alegre: AMGH, 2021.
WAZLAWICK, R. S. Análise e design orientados a objetos para sistemas de informação: modelagem com UML, OCL e IFML. 3. ed. Rio de Janeiro: Elsevier, 2015.
Aula 3
Ferramenta de Linguagem de Modelagem Unificada - UML
Ferramenta de linguagem de modelagem unificada – UML
Estudante, esta videoaula foi preparada especialmente para você. Nela, você irá aprender conteúdos importantes para a sua formação profissional. Vamos assisti-la?
Bons estudos!
Ponto de Partida
Saudações, estudante!
A Linguagem de Modelagem Unificada (UML) é uma ferramenta padronizada amplamente utilizada na engenharia de software para representar a estrutura, o comportamento e as interações de sistemas complexos. Como já visto anteriormente, foi desenvolvida por Grady Booch, Ivar Jacobson e James Rumbaugh, e tem por objetivo fornecer um conjunto de notações gráficas para criar modelos detalhados de sistemas de software. Entre os principais diagramas da UML estão os diagramas de classes, objetos, casos de uso, sequência, atividades e estados, que ajudam a visualizar diferentes aspectos de um sistema. Como esse tema é um tanto quanto abstrato para quem está iniciando, vale considerar a seguinte situação:
Uma equipe de desenvolvimento está criando uma aplicação web complexa para um cliente. No entanto, eles enfrentam dificuldades para comunicar claramente a arquitetura do sistema e o fluxo de interações entre os componentes da aplicação. Os membros da equipe têm diferentes entendimentos dos requisitos e das funcionalidades a serem implementadas, resultando em retrabalho e atrasos no projeto. O que você imagina que pode ser feito para lidar com isso?
Aqui, você encontrará informações importantes que o ajudarão a compreender melhor a UML e muito mais!
Vamos começar?
Vamos Começar!
Ferramentas para modelagem UML
Existem diversas ferramentas disponíveis que podem ser utilizadas na modelam UML. Ferramentas para esse fim, são essenciais para a criação, visualização e análise de modelos de sistemas complexos, facilitando o trabalho de desenvolvedores e analistas de software. Entre as principais ferramentas estão o Rational Rose, Enterprise Architect e Visual Paradigm.
Rational Rose: Desenvolvida pela IBM, é uma das ferramentas pioneiras em modelagem UML. Ela permite a criação de diagramas UML de forma intuitiva, integrando-se bem com outras ferramentas de desenvolvimento (Hirama, 2011).
Enterprise Architect: Produzida pela Sparx Systems, é uma ferramenta abrangente que suporta não apenas a modelagem UML, mas também outras metodologias e padrões. Ela oferece funcionalidades avançadas de análise e design, além de permitir a colaboração entre equipes.
Visual Paradigm: Conhecida por sua interface amigável e recursos robustos, essa ferramenta suporta UML e outras notações de modelagem. Ela é amplamente utilizada para design de software, engenharia de requisitos e gestão de projetos (Wazlawick, 2015).
Astah: Uma ferramenta leve e fácil de usar, que oferece suporte para diversos diagramas UML, além de integrações com outras ferramentas e linguagens de programação (Morais & Zanin, 2017).
Essas ferramentas ajudam a documentar e comunicar a estrutura e o comportamento de sistemas, tornando o processo de desenvolvimento mais eficiente e colaborativo. Ao escolher uma ferramenta de modelagem UML, é importante considerar as necessidades específicas do projeto e da equipe, bem como a compatibilidade com outras ferramentas utilizadas no processo de desenvolvimento. A seguir, você pode ver uma tela do Astah UML, com um diagrama de caso de uso:
Tipos de ferramentas de modelagem UML
As ferramentas de modelagem UML (Unified Modeling Language) são cruciais para projetar, visualizar e documentar sistemas de software. Existem diferentes tipos de ferramentas disponíveis, cada uma com características específicas para atender às diversas necessidades dos desenvolvedores e analistas.
Ferramentas de design e diagramas: Ferramentas como Enterprise Architect, Visual Paradigm e Astah permitem a criação de uma ampla variedade de diagramas UML, como diagramas de classes, casos de uso, sequências e atividades. Elas facilitam a visualização da estrutura e do comportamento dos sistemas.
Ferramentas de código-fonte: Algumas ferramentas, como Rational Rose (Hirama, 2011) e Modelio, oferecem integração com ambientes de desenvolvimento integrado (IDEs), permitindo a geração automática de código a partir dos modelos UML e a engenharia reversa, em que o código existente pode ser transformado em diagramas UML.
Ferramentas de simulação e análise: Ferramentas como Simulink e MagicDraw permitem simular o comportamento dos sistemas modelados, ajudando a validar e verificar o design antes da implementação.
Ferramentas colaborativas: Ferramentas como Lucidchart e Creately são baseadas na web e facilitam a colaboração em tempo real, permitindo que equipes distribuídas trabalhem juntas na criação e edição de diagramas UML.
Ferramentas open source: Ferramentas como ArgoUML (HIRAMA, 2011) e Umbrello oferecem funcionalidades básicas de modelagem UML gratuitamente, sendo ideais para pequenas equipes ou projetos individuais.
Cada tipo de ferramenta atende a diferentes aspectos do ciclo de desenvolvimento de software, desde a concepção até a implementação e manutenção, promovendo a eficiência e a clareza no processo de desenvolvimento.
Siga em Frente...
Conceito de Orientação Objeto utilizando UML
Para Wazlawick (2015), a orientação a objetos (OO) é um paradigma de programação que organiza o software em unidades chamadas objetos, que são instâncias de classes. Cada objeto possui atributos (dados) e métodos (comportamentos), e a UML (Unified Modeling Language) é uma linguagem padronizada para modelar esses conceitos e estruturas.
Na UML, uma classe é representada por um retângulo dividido em três partes: o nome da classe, seus atributos e seus métodos. As classes são os principais componentes no design OO e servem como blueprints para criar objetos. Por exemplo, uma classe "Carro" pode ter atributos como "cor" e "modelo", e métodos como "acelerar" e "frear".
Os objetos são instâncias de classes, e na UML, eles são representados como retângulos com sublinhado. Eles mostram a aplicação concreta das classes no sistema, exemplificando como a abstração das classes se materializa em entidades reais.
Herança é um dos pilares da OO, em que uma classe derivada (ou subclasse) herda atributos e métodos de uma classe base (ou superclasse). Na UML, a herança é representada por uma linha com um triângulo vazio apontando para a superclasse. Por exemplo, a classe "Carro Esportivo" pode herdar de "Carro", reutilizando atributos e métodos, mas também adicionando ou modificando funcionalidades específicas.
Polimorfismo permite que diferentes classes respondam a uma mesma interface de maneira específica. Na UML, isso pode ser visualizado por meio de diagramas de classes e diagramas de sequência que mostram como diferentes objetos podem interagir com mensagens comuns.
Encapsulamento é o princípio de restringir o acesso direto a alguns dos componentes de um objeto, normalmente por meio de modificadores de acesso (como privado ou público). Na UML, isso é indicado com sinais de mais (+) para público e menos (-) para privado nos diagramas de classes.
Os relacionamentos entre objetos, como associações, agregações e composições, são fundamentais para representar a estrutura e as interações do sistema.
Associações são representadas por linhas simples, agregações por linhas com losangos vazios e composições por losangos preenchidos.
Vamos Exercitar?
Como vimos ao longo de nossos estudos, compreender a linguagem UML e as principais ferramentas disponíveis no mercado para se trabalhar com essa tecnologia é de suma importância e necessário no contexto de desenvolvimento de aplicações web. Isso porque esse tipo de linguagem de notação contribui indiscutivelmente no processo de desenvolvimento de aplicações web, entregando agilidade e produtividade à equipe que o utiliza. Agora, diante de tudo que vimos ao longo desta aula, considere pensar na situação previamente estabelecida, em que uma equipe está desenvolvendo uma aplicação e precisa comunicar claramente a arquitetura do sistema com o fluxo de interações entre os seus componentes. Para resolver esses problemas, a equipe pode e deve utilizar a UML para modelar a aplicação web.
Eles começam criando um diagrama de casos de uso para mapear as interações entre os usuários e o sistema, identificando todas as funcionalidades necessárias. Em seguida, elaboram diagramas de classes para definir a estrutura do sistema e os relacionamentos entre os objetos. Diagramas de sequência e de atividades são usados para detalhar o fluxo de operações e a lógica de negócios. Com os modelos UML, a equipe consegue alinhar seus entendimentos, melhorar a comunicação, reduzir ambiguidades e garantir que todos os requisitos do cliente sejam atendidos de maneira eficiente e organizada.
Saiba Mais
Sugerimos que você faça a leitura do capítulo 9 sobre ferramentas case, para conhecer melhor recursos e as ferramentas disponíveis no mercado, disponível no livro Engenharia de Software.
Conheça algumas ferramentas disponíveis no mercado para utilização da UML. Acesse o site: UML.
Leia também o artigo Avaliação de ferramentas para desenvolvimento orientado a objetos com UML, para assegurar o aprofundamento de ferramentas UML.
A aplicação da orientação a objetos no contexto da UML é extremamente importante, por isso, leia o artigo O paradigma da orientação a objetos, a linguagem unificada de modelagem (UML) e a organização e representação do conhecimento: um estudo de caso de um sistema para bibliotecas.
Para que você entenda melhor como se dá a utilização da UML na criação de projetos orientado a objeto, é importante realizar a leitura do capítulo 9, do livro
Análise e design orientados a objetos para sistemas de informação: modelagem com UML, OCL e IFML.
Referências Bibliográficas
HIRAMA, K. Engenharia de software. Rio de Janeiro: Elsevier, 2011.
MORAIS, I. S.; ZANIN, A. Engenharia de software. Porto Alegre: Sagah, 2017.
WAZLAWICK, R. S. Análise e design orientados a objetos para sistemas de informação: Modelagem com UML, OCL e IFML. 3. ed. Rio de Janeiro: Elsevier, 2015.
Aula 4
O uso da UML na Modelagem de Sistema
O uso da UML na modelagem de sistema
Estudante, esta videoaula foi preparada especialmente para você. Nela, você irá aprender conteúdos importantes para a sua formação profissional. Vamos assisti-la?
Bons estudos!
Ponto de Partida
Olá, estudante!
Com o que estudamos até agora, é clara a importância da UML em um projeto de software. A Unified Modeling Language (UML) tornou-se uma ferramenta essencial na engenharia de software para modelagem de sistemas complexos. Desde sua concepção, a UML tem proporcionado um padrão visual e semântico para descrever a arquitetura, estrutura, comportamento e interações de sistemas de software. No entanto, apesar de sua ampla adoção e benefícios reconhecidos, surgem desafios na sua aplicação efetiva e na maximização de seus benefícios.
Um dos principais desafios enfrentados na utilização da UML é a discrepância entre o modelo teórico representado pelos diagramas UML e a implementação prática do sistema de software. Muitas vezes, diagramas UML detalhados e complexos podem não se traduzir diretamente em uma implementação eficiente e sem falhas. Além disso, a manutenção dos modelos ao longo do ciclo de vida do software pode se tornar onerosa e desafiadora, especialmente em projetos de grande escala e complexidade. E então, o que você acredita ser possível fazer para lidar com esse tipo de problema?
Estamos caminhando para o final de nossa disciplina.
Bons estudos!
Vamos Começar!
A UML na modelagem de sistemas
A Unified Modeling Language (UML) desempenha um papel fundamental na modelagem de sistemas de software, fornecendo uma linguagem visual padronizada e poderosa para representar arquiteturas, estruturas e comportamentos complexos, tornando-a útil em projetos de software (Pressman & Maxim, 2021). Por meio de diagramas como classes, sequências, casos de uso e atividades, a UML permite aos desenvolvedores e analistas descrever detalhadamente as interações entre componentes do sistema e os requisitos funcionais e não funcionais. Essa abordagem facilita a comunicação entre equipes multidisciplinares, melhorando a compreensão dos stakeholders do projeto e garantindo que todos tenham uma visão clara e compartilhada do sistema em desenvolvimento.
Além de ser uma ferramenta poderosa para a visualização e comunicação de conceitos complexos, a UML também ajuda na detecção precoce de problemas de design, permitindo ajustes antes da implementação (Prikladnicki et al., 20214). Ao fornecer uma representação visual precisa do sistema, os desenvolvedores podem identificar inconsistências ou requisitos mal compreendidos, evitando retrabalhos dispendiosos no futuro, além de promover a comunicação entre equipes multidisciplinares, melhorando a compreensão dos stakeholders do projeto e garantindo que todos tenham uma visão clara e compartilhada do sistema em desenvolvimento.
Recursos de modelagem conceitual com UML
A UML oferece diversos recursos para modelagem conceitual que são fundamentais na representação de sistemas de software complexos. Entre esses recursos, destacam-se a agregação, a composição, o relacionamento e a herança, que permitem aos desenvolvedores descreverem de maneira precisa a estrutura e o comportamento dos sistemas.
A agregação e a composição são mecanismos para representar a relação todo-parte entre classes. Na agregação, uma classe (todo) pode ser composta por outras classes (partes), mas essas partes podem existir de forma independente do todo. Já na composição, as partes são completamente dependentes do todo, ou seja, se o todo for destruído, as partes também o serão (Fowler, 2011).
Os relacionamentos na UML, representados por linhas simples entre classes, permitem especificar como classes interagem entre si, seja por meio de associações simples ou de relacionamentos mais complexos, como dependências e associações direcionais (Hirama, 2011).
A herança, por sua vez, permite que uma classe (subclasse) herde características de outra classe (superclasse), promovendo a reutilização de código e a estruturação hierárquica do sistema. Esse mecanismo é representado por uma linha com um triângulo vazio apontando para a superclasse na UML.
Esses recursos não apenas facilitam a modelagem conceitual de sistemas, mas também contribuem para a compreensão e documentação dos sistemas de software, promovendo uma implementação mais eficiente e alinhada com os requisitos e expectativas dos stakeholders.
Siga em Frente...
Caso de uso de UML
Os casos de uso na UML são uma técnica fundamental para capturar e descrever os requisitos funcionais de um sistema de software de maneira clara e organizada. Em outras palavras, casos de uso são narrativas em texto, amplamente utilizadas para descobrir e registrar requisitos (Larman, 2007). Um caso de uso representa uma interação específica entre atores (usuários ou sistemas externos) e o sistema em questão, focando as funcionalidades que o sistema deve oferecer para alcançar determinados objetivos dos usuários.
Cada caso de uso é representado graficamente por meio de um diagrama de casos de uso, em que os atores são identificados e as interações são descritas por meio de elipses (atores) e elipses conectadas por linhas (casos de uso) (Morais & Zanin, 2017). Esses diagramas não apenas ajudam na comunicação entre stakeholders, como também servem como base para o desenvolvimento do sistema, orientando o design e a implementação de suas funcionalidades de forma alinhada com as expectativas dos usuários finais.
Vamos Exercitar?
A Unified Modeling Language (UML) tornou-se uma ferramenta essencial na engenharia de software para modelagem de sistemas complexos. Desde sua concepção, a UML tem proporcionado um padrão visual e semântico para descrever a arquitetura, estrutura, o comportamento e as interações de sistemas de software. No entanto, apesar de sua ampla adoção e benefícios reconhecidos, surgem desafios na sua aplicação efetiva e na maximização de seus benefícios.
Considerando desafios na utilização da UML, como a discrepância entre o modelo teórico representado pelos diagramas UML e a implementação prática do sistema de software, é um tipo de contexto que se apresenta em diversas situações em que diagramas UML detalhados e complexos podem não se traduzir diretamente em uma implementação eficiente e sem falhas. Uma outra questão que aparece diversas vezes é a manutenção dos modelos ao longo do ciclo de vida do software que se torna onerosa e desafiadora. Para lidar com questões como as mencionadas até agora, é preciso buscar estratégias que possibilitem mitigar tais problemas. Uma possibilidade é adotar práticas ágeis de modelagem, que promovem a criação de modelos UML mais enxutos e focados nos aspectos essenciais do sistema. Isso envolve iterativamente revisar e refinar os modelos conforme o sistema é desenvolvido, mantendo uma comunicação contínua entre todos os stakeholders do projeto (Fowler, 2011). Além disso, a utilização de ferramentas colaborativas de modelagem UML e a integração desses modelos com o ambiente de desenvolvimento podem facilitar a transição suave do design para a implementação.
Ao adotar uma abordagem ágil e pragmática na utilização da UML, os desenvolvedores podem maximizar os benefícios da modelagem visual enquanto mitigam os desafios associados à implementação e manutenção de sistemas de software robustos e eficientes.
Saiba Mais
A UML é robusta e completa, o que exige constante atualização. Por isso, recomendamos que você faça a leitura do capítulo de introdução, do livro UML essencial.
Para entender a diferença entre Agregação e Composição, leia o capítulo de mesmo nome disponível no livro UML essencial.
Em outra obra, é possível encontrar informações complementares sobre UML no Apêndice 1, do livro Engenharia de software.
Entenda os elementos presentes em um diagrama de caso de uso, lendo Engenharia de software.
Referências Bibliográficas
FOWLER, M. UML essencial. 3 ed. Porto Alegre: Bookman, 2011.
HIRAMA, K. Engenharia de software. Rio de Janeiro: Elsevier, 2011.
LARMAN, C. Utilizando UML e padrões. Porto Alegre: Bookman, 2007.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. 9. ed. Porto Alegre: AMGH, 2021.
PRIKLADNICKI, R.; WILLI, R.; MILANI, F. Métodos ágeis para desenvolvimento de software. Porto Alegre: Bookman, 2014.
MORAIS, I. S.; ZANIN, A. Engenharia de software. Porto Alegre: Sagah, 2017.
Encerramento da Unidade
Conceitos de Riscos e Modelagem UML para Projeto
Videoaula de Encerramento
Saudações, estudante!
Nesta videoaula você compreenderá a importância da utilização da UML como instrumento condutor das práticas de desenvolvimento de aplicações web em um contexto de projeto. Entenderá ainda como a UML pode ser significativa em fases do projeto, sobretudo aquelas responsáveis por identificar e mitigar riscos.
Considere que o conteúdo aqui apresentado é extremamente importante para desenvolver suas habilidades de planejamento, projeto e execução de aplicações web, considerando elementos como identificação dos riscos e práticas baseadas em UML para assegurar o alinhamento entre o produto entregue e as expectativas do cliente.
Mergulhe sem medo nesse rio de conhecimento relacionado aos riscos e às práticas baseadas em UML.
Bons estudos!
Ponto de Chegada
Considerando a competência desta unidade, que é utilizar técnicas de gerenciamento de riscos e modelagem UML em projetos web, é indispensável você compreenda bem o conceito de riscos no contexto de projeto de software. Além disso, o estudo da UML é indispensável em nossa disciplina, já que é uma das técnicas mais utilizadas no mundo todo. Por esse motivo, é preciso saber utilizar ferramentas UML que, sem dúvida, auxiliarão na redução de riscos. Com estratégias bem definidas, baseadas na UML, é possível realizar a gestão de riscos.
É Hora de Praticar!
Imagine a seguinte situação:
A empresa Alpha está desenvolvendo uma nova plataforma de e-commerce, denominada ShopEase. O projeto envolve a criação de uma aplicação web complexa que deve ser lançada em um prazo de seis meses. A equipe de desenvolvimento, composta por desenvolvedores, analistas de negócios, designers e gerentes de projeto, identificou vários riscos potenciais que poderiam afetar o sucesso do projeto. A equipe decidiu utilizar técnicas de gerenciamento de riscos e modelagem UML para mitigar esses riscos e garantir uma entrega bem-sucedida.
Os principais riscos identificados são:
Risco técnico: Dificuldade na integração com sistemas de pagamento externos.
Risco de cronograma: Atrasos devido a requisitos não bem definidos.
Risco de recursos: Falta de desenvolvedores experientes em tecnologias específicas necessárias para o projeto.
Os riscos podem ser levantados com aplicação de técnicas simples, como a aplicação de checklists (Wazlawick, 2015).
Para lidar com essa situação, devem-se utilizar técnicas de gerenciamento de riscos e modelagem UML para identificar, analisar e mitigar riscos, assegurando a entrega pontual e funcional da plataforma ShopEase. Como é possível resolver esse problema?
Reflita
- Como a identificação e análise de riscos em projetos de software podem ser aprimoradas por meio do uso de diagramas de UML?
- Quais são os benefícios de utilizar a modelagem UML para documentar e comunicar estratégias de mitigação de riscos em projetos de software?
- De que maneira a herança e a agregação, como representadas em diagramas UML, podem influenciar a identificação de riscos em projetos de desenvolvimento de software?
Resolução do estudo de caso
Para lidar com a situação apresentada, é preciso organizar os passos que precisam ser adotados. Para lidar com isso, a figura do gerente de projetos será essencial, pois ele criará o plano adequado ao contexto dessa demanda. De certa forma, é possível visualizar a solução da seguinte maneira:
Aplicação de modelagem UML e gerenciamento de riscos
Passo 1: Diagrama de casos de uso
Objetivo: Identificar e mapear todas as funcionalidades principais do sistema, envolvendo todos os atores (usuários, administradores, sistemas externos) (Pressman & Maxim, 2021).
(Diagrama de casos de uso representando funcionalidades como cadastro de usuários, processamento de pagamentos, e gerenciamento de produtos)
Passo 2: Diagrama de classes
Objetivo: Modelar a estrutura do sistema, detalhando as classes principais e suas interações (Morais & Zanin, 2017), focando especialmente os pontos de integração com sistemas externos (exemplo: sistemas de pagamento).
(Diagrama de classes mostrando as principais classes como usuário, pedido, produto, e integração com a classe PagamentoExterno).
Passo 3: Diagrama de sequência
Objetivo: Visualizar o fluxo de interação entre diferentes objetos durante o processo de pagamento (Pressman & Maxim, 2021), identificando pontos críticos que possam apresentar riscos técnicos.
(Diagrama de sequência detalhando o processo de um usuário fazendo um pedido e o sistema interagindo com o sistema de pagamento externo).
Gerenciamento de riscos
Passo 4: Análise e priorização de riscos
Objetivo: Analisar a probabilidade e impacto dos riscos identificados, priorizando aqueles que necessitam de atenção imediata.
Risco técnico: Alta probabilidade, alto impacto.
Risco de cronograma: Média probabilidade, alto impacto.
Risco de recursos: Alta probabilidade, médio impacto.
Passo 5: Plano de mitigação
Os riscos podem ser identificados por meio da utilização de técnicas como Delphi, SWOT e diagramas (Cavalcanti & Silveira, 2016).
Risco técnico
Ação: Prototipar a integração com sistemas de pagamento nos primeiros sprints para identificar e resolver problemas técnicos antecipadamente.
Responsável: líder técnico.
Risco de cronograma
Ação: Realizar sessões de definição de requisitos com todas as partes interessadas e criar protótipos de alta fidelidade para validação antecipada.
Responsável: gerente de projeto.
Risco de recursos
Ação: Contratar consultores externos com experiência nas tecnologias necessárias para preencher lacunas de conhecimento na equipe.
Responsável: recursos humanos.
Resolução do estudo de caso
A equipe de desenvolvimento da Alpha seguiu os passos descritos para identificar, modelar e mitigar os riscos utilizando UML. Por meio da criação dos diagramas de casos de uso, classes e sequência, eles conseguiram visualizar claramente as interações e dependências críticas do sistema. O plano de mitigação de riscos foi implementado conforme priorizado, resultando em:
Risco técnico: A integração com sistemas de pagamento externos foi bem-sucedida devido à prototipagem antecipada.
Risco de cronograma: Requisitos foram bem definidos e validados, minimizando atrasos.
Risco de recursos: A contratação de consultores externos ajudou a preencher as lacunas de conhecimento, mantendo o cronograma no caminho certo.
Como resultado da solução proposta a esse estudo de caso, a plataforma ShopEase poderá ser lançada com sucesso dentro do prazo e com as funcionalidades esperadas, já que foi demonstrada a eficácia do uso da modelagem UML e técnicas de gerenciamento de riscos no projeto.
Dê o play!
Assimile
Referências
CAVALCANTI, F. R. P.; SILVEIRA, J. A. N. Fundamentos de gestão de projetos. São Paulo: Atlas, 2016.
MORAIS, I. S.; ZANIN, A. Engenharia de software. Porto Alegre: Sagah, 2017.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. 9. ed. Porto Alegre: AMGH, 2021.
WAZLAWICK, R. S. Análise e design orientados a objetos para sistemas de informação: modelagem com UML, OCL e IFML. 3. ed. Rio de Janeiro: Elsevier, 2015.