Prévia do material em texto
https://t.me/kakashi_copiador ENGENHARIA DE SOFTWARE: CONCEITOS BÁSICOS E MODELOS DE CICLO DE VIDA Prof. Fernando Pedrosa https://t.me/kakashi_copiador Bibliografia ❏ Pressman, Roger S. Software Engineering: A Practiotioner’s Approach. Editora: McGraw-Hill. ❏ Sommerville, Ian. Software Engineering. Editora: Addison Wesley https://t.me/kakashi_copiador Engenharia de Software: O que é ❏ Disciplina de engenharia preocupada com todos os aspectos sobre a produção de software, incluindo: ❏ Processos • Racionalizam o desenvolvimento de Software ❏ Métodos • Conhecimento técnico; “Como” fazer ❏ Ferramentas • Suporte automatizado para processos e métodos Desenvolver software não é só programar! https://t.me/kakashi_copiador Camadas da Engenharia de Software https://t.me/kakashi_copiador Objetivos ❏ Obter software de qualidade ❏ Com produtividade no seu desenvolvimento, operação e manutenção ❏ Dentro de custos, prazos e níveis de qualidade controlados ❏ Com o melhor custo-benefício entre Qualidade e Produtividade https://t.me/kakashi_copiador ESW vs. Eng. de Sistemas ❏ Engenharia de Sistemas é algo maior: preocupa-se com todos os aspectos de sistemas baseados em computador • Software • Hardware • Processos • Pessoas e outros sistemas, etc. ❏ Engenharia de Software é apenas parte deste processo https://t.me/kakashi_copiador Exercícios (TRE/BA – CESPE 2010) A engenharia de software está relacionada com todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até sua manutenção, depois que este entrar em operação. A engenharia de sistemas diz respeito aos aspectos do desenvolvimento e da evolução de sistemas complexos, nos quais o software desempenha um papel importante. (CESPE - 2013 - TRT - 10ª REGIÃO (DF e TO) - Analista Judiciário - Tecnologia da Informação) A engenharia de software engloba processos, métodos e ferramentas. Um de seus focos é a produção de software de alta qualidade a custos adequados. https://t.me/kakashi_copiador Exercícios (IBGE – CONSULPLAN 2009) Segundo Pressman (1995), Engenharia de Software é o estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais, abrangendo um conjunto de três elementos fundamentais (métodos, ferramentas e procedimentos). Assinale a alternativa INCORRETA: A) Métodos de Engenharia de Software proporcionam os detalhes de “como fazer” para construir o software. B) As ferramentas proporcionam apoio automatizado ou semi-automatizado aos métodos. https://t.me/kakashi_copiador Exercícios C) Procedimentos constituem o elo de ligação dos métodos e das ferramentas e possibilitam o desenvolvimento racional e oportuno de software. D) Métodos envolvem um amplo conjunto de tarefas que incluem: planejamento e estimativa de projeto, análise de requisitos de software e sistemas, projeto de estrutura de dados, arquitetura de programa e algoritmo de processamento, codificação, teste e manutenção. E) Ferramentas são roteiros para o desenvolvimento de software https://t.me/kakashi_copiador https://t.me/kakashi_copiador Histórico (60s e 70s) ❏ Década de 60: a chamada “Crise do Software” • Desenvolvimento fora de controle • Iniciou como um problema de Custo e Produtividade. • Mais importante: era um problema de Qualidade ❏ Década de 70 • Programação Estruturada • Projeto Estruturado https://t.me/kakashi_copiador Histórico (80s e 90s) ❏ Década de 80 • Análise Estruturada (DFDs, Dicionário de Dados, Diagrama ER, de Estados, etc.) • Ferramentas CASE ❏ Década de 90 • Análise e Projeto OO. • Java, UML, Processo Unificado https://t.me/kakashi_copiador Histórico (anos 2000) ❏ Anos 2000 • Metodologias Ágeis • Novos paradigmas: SOA, Aspectos, Model-Driven Architecture, etc. • Cloud Computing https://t.me/kakashi_copiador Terminologia Software ❏ Programa de computador e documentação associada ❏ Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral ❏ Novos softwares podem ser criados desenvolvendo-se novos programas ou reusando softwares existentes https://t.me/kakashi_copiador Terminologia (cont.) Processo ❏ Uma série conectada de ações, com a intenção de satisfazer um objetivo ❏ Define quem está fazendo o quê, quando e como para atingir um certo objetivo Entrada Processo (atividades e sub-processos) Saída https://t.me/kakashi_copiador Terminologia (cont.) Processo de Software ❏ Um conjunto estruturado de atividades para desenvolver um sistema de software • Especificação • Projeto • Validação • Evolução https://t.me/kakashi_copiador Exercícios (CESPE - 2016 – TCE/PR – Analista de Sistemas – E) O conceito de software se restringe ao desenvolvimento do código em determinada linguagem e seu armazenamento em arquivos https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelos de Ciclo de Vida ❏ “São uma representação abstrata e simplificada do processo de desenvolvimento software, apresentada a partir de uma perspectiva específica” ❏ Tipicamente contêm: • “Esqueleto do processo” • Ordem de precedência das atividades • Principais artefatos e produtos gerados https://t.me/kakashi_copiador Conceitos https://t.me/kakashi_copiador Conceitos (cont.) https://t.me/kakashi_copiador Fases do Desenvolvimento de Software ❏ Planejamento • Esboçar escopo e requisitos • Fazer estimativas razoáveis sobre recursos, custos e prazos ❏ Análise e Especificação de Requisitos • Refinar requisitos e escopo • Entender o domínio do problema, com comportamento e funcionalidades esperados https://t.me/kakashi_copiador Fases do Desenvolvimento de Software ❏ Projeto • Incorporar requisitos tecnológicos aos requisitos essenciais do sistema • Projetar a arquitetura do sistema ❏ Implementação • Traduzir o projeto em uma forma passível de execução pela máquina • Codificação https://t.me/kakashi_copiador Fases do Desenvolvimento de Software ❏ Testes • Realizar diversos níveis de teste, de forma a fazer a verificação do software. ❏ Implantação, Operação e Manutenção • Colocar o software em produção • Treinar pessoas • Manter o software • Gerenciar os serviços https://t.me/kakashi_copiador Exercícios (Quadrix - 2021 - CRP - MG - Analista de Desenvolvimento de Sistemas e Informação) No que se refere à engenharia de software, assinale a alternativa que apresenta o estágio do modelo em cascata em que o projeto do software é desenvolvido como um conjunto de programas ou de unidades de programa e há a verificação de que cada unidade atende a sua especificação. A análise e definição de requisitos B implementação e teste unitário C projeto de sistema e software D integração e teste de sistema E operação e manutenção https://t.me/kakashi_copiador https://t.me/kakashi_copiador Principais Modelos https://t.me/kakashi_copiador Modelo em Cascata ❏ Modelo “Clássico”, teve origem na indústria de manufatura e construção ❏ Sua estrutura é composta por várias etapas que são executadas de forma sistemática e sequencial ❏ Na falta de uma abordagem estruturada, foi a primeira tentativa de formalizar uma metodologia de desenvolvimento de software https://t.me/kakashi_copiador Modelo em Cascata (Pressman) https://t.me/kakashi_copiador Modelo em Cascata (Sommerville) https://t.me/kakashi_copiador Características (Cascata) ❏ Minimiza o planejamento, organiza as atividades em uma sequência com entregas bem definidas ❏ Funciona bem para requisitos estáveis e bem compreendidos • O modelo pressupõe que os requisitos ficarão estáveis ao longo do projeto ❏ É facilmente aplicável em equipes inexperientes Porém, atrasa a redução de riscos! https://t.me/kakashi_copiador Cascata atrasa a resolução de riscos https://t.me/kakashi_copiador Vantagens e Desvantagens VANTAGENSDESVANTAGENS É simples de entender e fácil de aplicar, facilitando o planejamento. Divisão inflexível do projeto em estágios distintos. Fixa pontos específicos para a entrega de artefatos. Dificuldade em incorporar mudanças de requisitos. Funciona bem para equipes tecnicamente fracas. Clientes só visualizam resultados próximos ao final do projeto. É fácil de gerenciar, devido a sua rigidez. Atrasa a redução de riscos. Realiza documentação extensa por cada fase ou estágio. Apenas a fase final produz um artefato de software entregável. Possibilita boa aderência a outros modelos de processo. Cliente deve saber todos os requisitos no início do projeto. Funciona bem com projetos pequenos e com requisitos bem conhecidos. Modelo inicial (Royce) não permitia feedback entre as fases do projeto. Pressupõe que os requisitos ficarão estáveis ao longo do tempo. Não funciona bem com projetos complexos e OO, apesar de compatível. https://t.me/kakashi_copiador Resumo Esquemático https://t.me/kakashi_copiador Exercícios (CESPE / CEBRASPE - 2022 - Petrobras - Analista de Sistemas – Processos de negócio) No modelo de desenvolvimento Waterfall, a partir da coleta de requisitos e da elaboração do projeto desenvolve-se uma implementação inicial, que é apresentada para a apreciação dos usuários; esse ciclo continua com a criação de várias versões, até que o sistema final seja desenvolvido por meio da execução das etapas de desenvolvimento e testes de forma intercalada. https://t.me/kakashi_copiador Exercícios (IDECAN - 2021 - IF-CE - Analista de Tecnologia da Informação) No contexto da Engenharia de Software, um modelo de processo é visualizado como um ciclo de vida constituído da especificação, do desenvolvimento, da validação e da evolução. Nesse modelo, as fases são representadas separadas umas das outras, tais como especificação de requisitos, projeto de software, implementação e testes. Esse modelo de processo é denominado modelo em A cascata. B espiral. C eventos. D módulos. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelos Iterativos ❏ Motivação: requisitos de sistema sempre evoluem durante o projeto ❏ Deve-se dividir para conquistar https://t.me/kakashi_copiador Desenvolvimento Incremental ❏ A ideia é de desenvolver e entregar o software em incrementos, com cada incremento entregando parte da funcionalidade requerida ❏ Requisitos são definidos antes do desenvolvimento do incremento, sendo os mais críticos priorizados https://t.me/kakashi_copiador Desenvolvimento Incremental (cont.) ❏ Um “mini projeto em cascata” é executado em cada iteração, progredindo até a entrega final do produto https://t.me/kakashi_copiador Iterativo vs. Incremental Incremental: são adicionados “pedaços completos” Iterativo: esboços ou pedaços incompletos do produto são adicionados a cada iteração https://t.me/kakashi_copiador Exercícios (CESGRANRIO - 2019 - UNIRIO - Analista de Tecnologia da Informação) O modelo de processo incremental é iterativo por natureza e produz a cada incremento uma versão operacional do produto, diferente de outros modelos, como, por exemplo, a prototipagem. Esse modelo incremental A) gera incrementos logo nas primeiras etapas, mas estes não podem ser entregues ao cliente. B) possui unicamente atividades de codificação e teste nos seus incrementos. C) deve ter, no máximo, 1 a 5 sprints quando planejados e gerenciados com métodos ágeis. D) possui atividades de teste fora do incremento, realizadas por outra equipe que vai integrando incrementalmente o produto a cada etapa do teste. E) combina elementos do modelo cascata, aplicado de maneira iterativa, sendo também essa filosofia incremental usada em processos ágeis. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelo RAD ❏ Rapid Application Development ❏ Modelo de desenvolvimento iterativo e incremental que enfatiza ciclo de desenvolvimento curto (60 a 90 dias) ❏ Utiliza reuso de componentes à exaustão https://t.me/kakashi_copiador RAD - Fases ❏ Modelagem de Negócio • Qual informação é gerada, por quem, para onde vai e quem processa? ❏ Modelagem de Dados • O fluxo de informação é refinado em um modelo de dados que suporta o negócio • Atributos e relacionamentos são definidos https://t.me/kakashi_copiador RAD - Fases ❏ Modelagem de Processo • Descreve o processamento necessário para adicionar, modificar, deletar ou buscar objetos de dados ❏ Geração da Aplicação • Utiliza ferramentas automatizadas para facilitar a construção do software https://t.me/kakashi_copiador RAD - Fases ❏ Teste e Modificação • Novos componentes são testados e integrados • Como o modelo enfatiza o reuso, muitos componentes já estão testados e isso reduz o tempo necessário para testes https://t.me/kakashi_copiador Quando usar RAD? ❏ A aplicação não necessita de softwares auxiliares (standalone); ❏ É possível fazer uso de classes pré-existentes; ❏ A performance não é o mais importante; ❏ O risco técnico é reduzido; ❏ A distribuição do produto no mercado é pequena; ❏ O escopo do projeto é restrito; ❏ O sistema pode ser dividido em vários módulos; ❏ O risco de mudança tecnológica é baixo. https://t.me/kakashi_copiador Vantagens ❏ Permite o desenvolvimento rápido e/ou a prototipagem de aplicações ❏ Reutiliza componentes ❏ Desenvolvimento em alto nível de abstração ❏ Redução na codificação manual (wizards) ❏ Envolvimento maior do usuário ❏ Etc... https://t.me/kakashi_copiador Desvantagens ❏ Custo alto do conjunto de ferramentas ❏ Perda de precisão científica ❏ Pode levar ao retorno de práticas caóticas de desenvolvimento ❏ Pode construir funções desnecessárias https://t.me/kakashi_copiador Exercícios (CESPE – 2008 – TST - Analista Judiciário - Análise de Sistemas) O modelo RAD (Rapid Application Development) consiste em uma forma de prototipação para esclarecer dúvidas da especificação do software. (CESPE – 2004 – BASA – Analista de Sistemas) O modelo embasado em prototipagem é um modelo de processo incremental que enfatiza um ciclo de desenvolvimento extremamente curto. A primeira fase do processo é a modelagem de negócio e a última é a fase de teste e entrega. (CESPE – 2005 – MPE/AM – Analista Judiciário – Analista de Sistemas) O modelo RAD (rapid application development) é específico para projetos de software que empregam linguagens de programação de terceira geração. https://t.me/kakashi_copiador Exercícios (CESPE – 2011 – AL/ES – Analista de Sistemas – C) O ciclo de vida RAD (Rapid Application Development), por privilegiar a rapidez do desenvolvimento, não possui etapa de modelagem. (CESPE – 2005 – IGEPREV – Analista de Sistemas – B) O modelo Rapid Application Development (RAD) é apropriado para projetos que envolvem grandes riscos técnicos. (CESPE – 2003 – IPEA – Analista de Sistemas) O RAD (Rapid Application Development) é um modelo de processo de software incremental que assume um ciclo de desenvolvimento curto e utiliza uma abordagem de construção com base em componentes. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelos Evolucionários ❏ São baseados na ideia de uma implementação inicial que evolui por meio de várias versões ❏ Lida bem com mudanças e permite o feedback rápido entre as atividades ❏ Cada versão incorpora as mudanças necessárias e refina a versão anterior ❏ Podem ser considerados modelos iterativos https://t.me/kakashi_copiador Desvantagens de Modelos Evolucionários ❏ O processo não é visível: se os sistemas são desenvolvidos rapidamente, não é viável economicamente produzir documentos para cada versão do sistema. ❏ Os sistemas são frequentemente mal estruturados: mudanças contínuas tendem a corromper a estrutura do software e tornar mudanças difíceis e caras. https://t.me/kakashi_copiador Prototipagem Evolucionária ❏ O objetivo é trabalhar junto aos clientes para evoluir o sistemaa partir de uma especificação inicial resumida • Entregar resultado o mais rápido possível ❏ Deve começar com requisitos bem compreendidos ❏ Novas funcionalidades são adicionadas à medida que o cliente as propõem ❏ Aplicável em sistemas pequenos ou médios com curto tempo de vida https://t.me/kakashi_copiador Problemas da Prototipagem Evolucionária ❏ Falta de visibilidade do progresso • O sistema está sempre evoluindo, nunca está “terminado” ❏ Os sistemas acabam tornando-se pobremente estruturados ❏ A documentação pode ser esquecida ❏ Os padrões de qualidade podem ser “relaxados” https://t.me/kakashi_copiador Prototipagem Descartável ❏ Assim como na prototipagem evolucionária, pequenas versões prototípicas são disponibilizadas ao clientes para avaliação ❏ Porém, o objetivo aqui é entender e clarificar os requisitos do sistema ❏ Deve-se começar com os requisitos mais difíceis e menos compreendidos ❏ Ao final, descarta-se o protótipo e a implementação do software continua https://t.me/kakashi_copiador Prototipagem Descartável ❏ É útil para sistemas grandes e complicados, e quando o cliente não sabe exatamente o que quer ❏ Protótipos descartáveis podem ser aplicados no contexto de qualquer modelo de processo • Cascata • Espiral • Iterativo/Incremental, etc. https://t.me/kakashi_copiador Exercícios (INSTITUTO AOCP - 2021 - FUNPRESP-JUD - Analista de Tecnologia da Informação - Desenvolvimento de Sistemas) O modelo de processo evolucionário é uma variação no modelo cascata. Esse modelo descreve a relação entre as ações de garantia da qualidade e as ações relacionadas à comunicação, à modelagem e às atividades de construção iniciais. (CESPE – 2008 – TJ/DF – Analista de Sistemas) A prototipação evolucionária não gera problemas de manutenção de sistema porque o desenvolvimento é rápido e não sofre grandes mudanças. https://t.me/kakashi_copiador Exercícios (CETAP - 2021 - SEPLAD - PA - Técnico em Gestão Pública - Informática) Algumas vezes, a engenharia de software necessita de um processo que possa acondicionar um produto que evolui ao longo do tempo, devido à constante atualização dos requisitos, ou o tempo para implantação é curto para entrega do sistema completo. Para este tipo de situação, qual modelo se adequa melhor? A) Cascata. B) Evolutivo (como o espiral). C) De Métodos Formais. D) Modelo em “V”. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelo em Espiral ❏ O processo é representado como uma espiral em vez de uma sequência de atividades ❏ Cada volta na espiral representa uma fase no processo ❏ Os loops na espiral são escolhidos dependendo do que for necessário https://t.me/kakashi_copiador Modelo em Espiral https://t.me/kakashi_copiador Modelo em Espiral (Pressman) https://t.me/kakashi_copiador Setores do Modelo em Espiral ❏ Planejamento • Qual é o objetivo? (aumentar performance, corrigir bugs, melhorar qualidade, etc.) • Quais são as alternativas? (comprar pronto, reutilizar componentes, etc.) • Quais são as restrições? (custo, cronograma, etc.) https://t.me/kakashi_copiador Setores do Modelo em Espiral ❏ Análise de Riscos • Pode ser construído um protótipo para analisar os riscos envolvidos • Quais são as incertezas ? (custo excessivo, falta de recursos, etc.) ❏ Engenharia • O software é desenvolvido e testado https://t.me/kakashi_copiador Setores do Modelo em Espiral ❏ Avaliação do Cliente e Feedback • Revisa-se o projeto e se obtém feedback do cliente quanto à entrega realizada para as próximas fases https://t.me/kakashi_copiador Modelo em Espiral ❏ Acrescenta aspectos gerenciais ao desenvolvimento de software • Planejamento, tomada de decisão • Análise de Riscos Porém, é complexo e requer experiência na avaliação de riscos! https://t.me/kakashi_copiador Exercícios (CESPE - 2018 - FUB - Técnico de Tecnologia da Informação) O modelo espiral é um tipo de modelo iterativo de desenvolvimento em que cada ciclo se encerra com a entrega de uma versão final do software. (CESPE - 2018 - IPHAN - Analista I - Área 7) Situação hipotética: Uma organização implantou o framework de processo de software dirigido a riscos proposto por Boehm (modelo espiral), seguindo as atividades descritas pelo framework, em que a espiral é dividida em quatro setores. As atividades de criação do protótipo operacional, assim como os testes de integração e unitário, foram inseridas no setor de avaliação e redução de riscos. Assertiva: Nessa situação, foi correta a inserção da atividade de protótipo no setor de avaliação e redução de riscos, porém as atividades de testes não poderiam ter sido inseridas, pois essas não são abrangidas por esse framework. https://t.me/kakashi_copiador Exercícios (FURB - 2019 - Prefeitura de Porto Belo - SC - Analista de Sistemas II) Em engenharia de software, uma das metodologias de desenvolvimento mais conhecidas é o Modelo em Espiral, proposto por Barry Bohem, em 1988, e que combina as iterações do modelo de prototipagem com o controle e sistematização do modelo em cascata. O Modelo em Espiral é dividido em: A) Projeto, Análise, Codificação e Implantação. B) Planejamento, Engenharia, Testes e Atualização. C) Planejamento, Análise dos Riscos, Engenharia e Atualização. D) Planejamento, Modelagem, Engenharia e Implantação. E) Projeto, Análise de Riscos, Engenharia e Implantação. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelo Baseado em Componentes ❏ Abordagem para desenvolvimento de software que utiliza o reuso como peça principal ❏ Depende de uma grande base de componentes reusáveis e algum framework de integração ❏ Propicia redução de custos, entregas mais rápidas e aumento de qualidade (componentes já são previamente testados) https://t.me/kakashi_copiador O que é um Componente? ❏ É um “bloco de construção modular” ❏ Executável ❏ Independente ❏ Padronizado ❏ Reutilizável ❏ Expõe um conjunto de interfaces https://t.me/kakashi_copiador Processo genérico baseado em componentes https://t.me/kakashi_copiador Exercícios (CESPE – 2010 – TRE/BA – Técnico Judiciário – Programação de Sistemas) Na engenharia de software baseada em componentes, na qual se supõe que partes do sistema já existam, o processo de desenvolvimento concentra-se mais na integração dessas partes que no seu desenvolvimento a partir do início. Essa abordagem é baseada em reúso para o desenvolvimento de sistemas de software. (CESPE – 2004 – SERPRO – Analista de Sistemas) O grande objetivo do uso de engenharia de software por componentes é a produção de software de alta qualidade e baixo custo. (CESPE – 2008 – SERPRO – Analista de Sistemas) O modelo orientado a reúso parte de um software existente para que se crie outro, no todo ou apenas em parte de seus componentes. https://t.me/kakashi_copiador Exercícios (UFBA - 2009 - UFBA - Analista de Tecnologia da Informação) No processo de software baseado em componentes, cada componente projetado para reuso é uma entidade executável independente, que deve manipular exceções. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Métodos Formais ❏ Modelo baseado em técnicas matemáticas para especificar, desenvolver e verificar software ❏ O software é especificado usando técnicas formais (matemáticas), e após a “prova” da especificação é transformado em código esp. 2esp. 1 imple ment. https://t.me/kakashi_copiador Vantagens de Métodos Formais ❏ O próprio processo de desenvolvimento garante que o programa faz exatamente o que foi especificado ❏ É possível gerar programas corretos e completos por construção https://t.me/kakashi_copiador Desvantagens de Métodos Formais ❏ São bastante lentos e dispendiosos ❏ Exigem treinamento intensivo e uma equipe de especialistas ❏ Normalmente são usados apenas em ambientes muito complexos • A “indústria” não considera que métodos formais têm um bom custo-benefício https://t.me/kakashi_copiadorExercícios (CESPE – 2008 – SERPRO – Analista de Sistemas) Para a especificação de software e verificação de sistemas, uma alternativa que se fundamenta na matemática discreta e na lógica é o modelo incremental. https://t.me/kakashi_copiador https://t.me/kakashi_copiador Modelo Orientado a Aspectos ❏ Programação orientada a aspectos é um paradigma que separa responsabilidades, requisitos e interesses de um sistema ❏ A modularização dos aspectos produz uma arquitetura fácil de projetar e manter ❏ É um complemento à Programação Orientada a Objetos https://t.me/kakashi_copiador Separação de Interesses Há dois tipos de interesses (concerns) de acordo com o modelo em aspectos: ❏ Interesses Principais (Core Concerns) • Capturam as funcionalidades principais de um módulo ❏ Interesses Ortogonais (Crosscutting Concerns) • Capturam funcionalidades periféricas https://t.me/kakashi_copiador O que são Aspectos? ❏ Propriedades de um sistema que envolvem diversos componentes funcionais ❏ Não podem ser expressos utilizando linguagens convencionais de maneira precisa ❏ Exemplos: sincronização, persistência, distribuição, logging, etc. https://t.me/kakashi_copiador O que são Aspectos? (cont.) ❏ Ao contrário de Componentes, que normalmente tratam uma única funcionalidade, Aspectos envolvem diversas unidades de um sistema https://t.me/kakashi_copiador Exemplo Código com o aspecto “anotado” Aspecto https://t.me/kakashi_copiador Exercícios (CESPE - 2017 - SEDF - Analista de Gestão Educacional - Tecnologia da Informação) Normalmente, aspectos (aspects) são utilizados no nível de análise, enquanto preocupação (concern) é mais utilizado no nível de implementação https://t.me/kakashi_copiador Exercícios (VUNESP - 2016 - Prefeitura de Presidente Prudente - SP - Analista de Sistema Web) Há diversos conceitos específicos quando se considera a análise e o projeto orientados a aspectos. Um desses conceitos está no fato de que um “interesse” pode estar implementado em diversos métodos. O conceito descrito corresponde a um “interesse” A de alerta. B de componente. C interno. D concentrado. E transversal. https://t.me/kakashi_copiador OBRIGADO Prof. Fernando Pedrosa https://t.me/kakashi_copiador https://t.me/kakashi_copiador