O documento descreve a implementação do modelo ECSFlow para tratamento de exceções na linguagem C#. O ECSFlow fornece canais excepcionais explícitos e tratadores conectáveis para melhorar a robustez, manutenibilidade e modularização do código. A especificação do ECSFlow define os componentes desse modelo, como canais excepcionais, locais de lançamento e tratamento de exceções.
1. O documento apresenta Paulo Furtado como professor e fornece informações sobre suas disciplinas de levantamento de requisitos. 2. É discutido o que a disciplina ensina e não ensina, com foco em questionar a forma atual de identificação de requisitos e priorizar a priorização. 3. A primeira aula trata de conceitos iniciais como visão de produto, evolução, processos cognitivos e aprendizado.
Qualidade de Software: Modelos e normasAlex Camargo
O documento discute modelos e normas de qualidade de software, como CMMI, MPS.BR e ISO 9126-1. Apresenta os objetivos, níveis de maturidade e requisitos de cada um, além de realizar uma análise comparativa entre eles. Inclui também exercícios sobre os tópicos apresentados.
O documento discute a metodologia de desenvolvimento de software Extreme Programming (XP). XP envolve o desenvolvimento incremental em pequenas iterações com feedback frequente do cliente, simplicidade, comunicação, coragem e respeito. O documento explica os princípios, práticas e ciclo de vida da metodologia XP.
Este documento discute os principais tópicos da engenharia de requisitos, incluindo a importância da engenharia de requisitos, o que são requisitos, classificação de requisitos funcionais e não funcionais, documento e especificação de requisitos, processos de engenharia de requisitos como elicitação e análise de requisitos. O documento também aborda técnicas para obter requisitos como entrevistas e casos de uso.
O documento descreve o Rational Unified Process (RUP), um processo de engenharia de software que utiliza uma abordagem iterativa e orientada a objetos. O RUP é dividido em quatro fases principais (concepção, elaboração, construção e transição) e nove disciplinas agrupadas em disciplinas de engenharia e disciplinas de apoio. A disciplina de modelagem de negócios é a primeira das seis disciplinas de engenharia e tem como objetivo estabelecer uma compreensão do negócio e dos requisitos do cliente.
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
Existem diversas formas de se representar um algoritmo, neste slide estaremos falando sobre a Descritiva Narrativa onde descrevemos o passo-a-passo de um algoritmo.[Aula para curso técnico]
1. O documento apresenta Paulo Furtado como professor e fornece informações sobre suas disciplinas de levantamento de requisitos. 2. É discutido o que a disciplina ensina e não ensina, com foco em questionar a forma atual de identificação de requisitos e priorizar a priorização. 3. A primeira aula trata de conceitos iniciais como visão de produto, evolução, processos cognitivos e aprendizado.
Qualidade de Software: Modelos e normasAlex Camargo
O documento discute modelos e normas de qualidade de software, como CMMI, MPS.BR e ISO 9126-1. Apresenta os objetivos, níveis de maturidade e requisitos de cada um, além de realizar uma análise comparativa entre eles. Inclui também exercícios sobre os tópicos apresentados.
O documento discute a metodologia de desenvolvimento de software Extreme Programming (XP). XP envolve o desenvolvimento incremental em pequenas iterações com feedback frequente do cliente, simplicidade, comunicação, coragem e respeito. O documento explica os princípios, práticas e ciclo de vida da metodologia XP.
Este documento discute os principais tópicos da engenharia de requisitos, incluindo a importância da engenharia de requisitos, o que são requisitos, classificação de requisitos funcionais e não funcionais, documento e especificação de requisitos, processos de engenharia de requisitos como elicitação e análise de requisitos. O documento também aborda técnicas para obter requisitos como entrevistas e casos de uso.
O documento descreve o Rational Unified Process (RUP), um processo de engenharia de software que utiliza uma abordagem iterativa e orientada a objetos. O RUP é dividido em quatro fases principais (concepção, elaboração, construção e transição) e nove disciplinas agrupadas em disciplinas de engenharia e disciplinas de apoio. A disciplina de modelagem de negócios é a primeira das seis disciplinas de engenharia e tem como objetivo estabelecer uma compreensão do negócio e dos requisitos do cliente.
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
Existem diversas formas de se representar um algoritmo, neste slide estaremos falando sobre a Descritiva Narrativa onde descrevemos o passo-a-passo de um algoritmo.[Aula para curso técnico]
Gerenciamento de riscos em projetos de TIOsvaldo Pedra
O objetivo do material é apresentar a importância do gerenciamento de riscos em projetos de Tecnologia da Informação por meio de uma abordagem conceitual com exemplos práticos.
O documento discute metodologias de desenvolvimento de software, enfatizando que deve ser realizado em equipe, seguir um processo e usar metodologias como a cascata, prototipação, ciclo de vida ou incremental. Também menciona modelos ágeis como Scrum e eXtreme Programming e a importância de seguir um processo para garantir qualidade e reduzir custos.
O documento descreve o ciclo PDCA (Planejar, Executar, Verificar, Agir), uma metodologia estratégica para gestão de processos baseada na melhoria contínua, onde os resultados de cada ciclo servem como entrada para o próximo ciclo, que deve ser mais ambicioso. O PDCA é aplicado nos processos intermediários de projetos de planejamento, execução e controle.
O documento introduz conceitos básicos de engenharia de software, abordando:
1) A definição de software e sua classificação em diferentes categorias;
2) Os principais problemas que levaram à "crise do software" e a evolução da área ao longo das décadas;
3) Os papéis e disciplinas associados ao desenvolvimento de software.
O documento apresenta uma introdução à engenharia de requisitos, discutindo seus objetivos, tipos de requisitos, problemas comuns, e a importância do processo. Também explica como a engenharia de requisitos se encaixa no processo maior da engenharia de sistemas.
O documento é uma lista de exercícios sobre Análise e Projeto de Sistemas para a disciplina ministrada pelo professor José Luiz em outubro de 2011. A lista contém 10 questões sobre conceitos como análise de sistemas, ciclo de vida de projetos, modelagem e problemas que podem surgir sem o uso de modelagem.
Arquitetura de software é o nível de projeto que especifica a estrutura global de um sistema, incluindo subsistemas, camadas e elementos essenciais. O documento discute como produzir uma arquitetura de software inicial, incluindo análise de casos de uso, definição de organização de subsistemas e identificação de abstrações principais.
Este documento resume um congresso sobre gestão visual e manutenção. Apresenta os cinco passos dos 5S (classificar, organizar, limpar, padronizar e respeitar) para melhorar a gestão visual e produtividade. Inclui exemplos de como aplicar cada passo para arrumar e limpar uma área de trabalho de forma organizada.
Slides Aula
Tema da Aula: Diagrama de Causa e Efeito (Ishikawa)
Matéria: Qualidade aplicada à Logística
Curso: Logística (Pronatec)
Faculdade: MaxPlank Indaiatuba
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareDaniel Cukier
O documento apresenta brevemente os palestrantes Daniel Cukier e Rafael Prikladnicki, seus contextos acadêmicos e experiências com métodos ágeis. Também traz a agenda da apresentação "Introdução a Métodos Ágeis de Desenvolvimento de Software" com tópicos como princípios, problemas com abordagens tradicionais e alguns métodos ágeis.
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMiDaniel Ferreira
Este documento discute métodos e técnicas de elicitação de requisitos e sua aderência ao CMMi. Ele apresenta introdução à engenharia de requisitos, principais técnicas de elicitação tradicionais, colaborativas e cognitivas, abordagem contextual, áreas de processo do CMMi e conclusões.
O documento descreve o método PDCA (Plan, Do, Check, Act) de melhoria contínua, introduzido por Walter Shewhart e popularizado por W. Edwards Deming. O PDCA é um ciclo iterativo de planejamento, execução, verificação e padronização utilizado para controlar e melhorar processos de produção e resolução de problemas. O documento explica cada etapa do ciclo PDCA e como ele pode ser aplicado para estabelecer metas de melhoria e resolver problemas críticos.
Este documento apresenta uma aula sobre levantamento e análise de requisitos, cobrindo tópicos como:
- Definição de requisitos e seus objetivos
- Classificação de requisitos em funcionais, não funcionais, de domínio, do usuário e do sistema
- Exemplos de cada tipo de requisito
1) O documento discute processos, threads e suas relações no sistema operacional. Processos podem ter vários threads executando simultaneamente compartilhando o mesmo espaço de memória.
2) É explicada a estrutura de um processo incluindo contexto de hardware, software e espaço de endereçamento. Processos podem estar em diferentes estados como executando, pronto ou espera.
3) Threads são partes de um processo que executam concorrentemente, proporcionando paralelismo dentro do mesmo processo. Isso traz vantagens de desempenho em compara
O documento discute processos de engenharia de software, incluindo modelos como cascata e incremental. O modelo em cascata é composto por sequências de atividades como análise de requisitos, design, implementação e testes. Já o desenvolvimento incremental envolve o desenvolvimento inicial e versões sucessivas com base em comentários. A engenharia de software orientada a reuso busca incorporar códigos e sistemas semelhantes ao projeto.
O documento discute o conceito de pseudoparalelismo, onde um CPU troca entre processos para dar a ilusão de que eles estão sendo executados em paralelo, embora na verdade apenas um processo esteja sendo executado de cada vez. Processos filhos podem ser executados dentro de um processo pai, e processos precisam ser concluídos em ordem hierárquica, com filhos antes do pai. Processos podem estar nos estados de pronto, executando ou bloqueado durante a troca entre processos no CPU.
O documento descreve modelos tradicionais e ágeis de engenharia de software, incluindo Cascata, Espiral, Processo Unificado, Crystal, Scrum e Programação Extrema. Os modelos tradicionais têm dificuldade em lidar com mudanças, enquanto os modelos ágeis enfatizam adaptação, colaboração com o cliente e entregas frequentes.
Python é uma linguagem de programação interpretada, de tipagem dinâmica e forte, criada por Guido van Rossum em 1991. JavaScript é uma linguagem interpretada, de tipagem dinâmica e fraca, criada por Brendan Eich em 1995 e usada principalmente em navegadores. Existem diversas bibliotecas e frameworks que permitem integrar Python e JavaScript, como PyV8, PyExecJS, PyJaco e Brython.
O documento apresenta e descreve vários modelos de processos de desenvolvimento de software, incluindo o modelo em cascata, evolucionário, de desenvolvimento incremental, espiral e prototipação. Cada modelo é explicado com seus principais estágios, vantagens e desvantagens. O documento fornece uma visão geral dos paradigmas e abordagens de processos de software.
Frederico Nunes do Pranto Filho está defendendo seu mestrado sobre a implementação de um modelo de tratamento de exceção chamado ECSFlow para a linguagem C#. O ECSFlow visa melhorar a manutenibilidade e robustez dos sistemas ao separar explicitamente o código normal do código excepcional. A avaliação do ECSFlow é realizada por meio de métricas e análise de impacto de mudanças em versões de uma aplicação real chamada AscGenerator.
Resumo do Webinar
Encontrar bugs em software não é fácil, mas é uma habilidade que todo desenvolvedor(a) deve procurar melhorar. Muitos(as) utilizam apenas o “print no código” para encontrar problemas, mas diversas outras técnicas e ferramentas estão disponíveis e são muito mais eficientes em determinadas situações. Diferentes tipos de problemas como travamentos, crashes, erros de lógica, vazamentos de recursos e problemas de desempenho exigirão diferentes ferramentas e técnicas, incluindo análise de core dump, tracing, profiling, depuração interativa, etc. Neste webinar, os participantes aprenderão a aplicar diferentes técnicas e utilizar diferentes ferramentas para depurar sistemas com Linux embarcado, incluindo GDB, addr2line, strace, ltrace, perf, valgrind, gprof, ftrace, etc!
Convidado: Sergio Prado
Tech Lead na Toradex, Professor na Embedded Labworks
Gerenciamento de riscos em projetos de TIOsvaldo Pedra
O objetivo do material é apresentar a importância do gerenciamento de riscos em projetos de Tecnologia da Informação por meio de uma abordagem conceitual com exemplos práticos.
O documento discute metodologias de desenvolvimento de software, enfatizando que deve ser realizado em equipe, seguir um processo e usar metodologias como a cascata, prototipação, ciclo de vida ou incremental. Também menciona modelos ágeis como Scrum e eXtreme Programming e a importância de seguir um processo para garantir qualidade e reduzir custos.
O documento descreve o ciclo PDCA (Planejar, Executar, Verificar, Agir), uma metodologia estratégica para gestão de processos baseada na melhoria contínua, onde os resultados de cada ciclo servem como entrada para o próximo ciclo, que deve ser mais ambicioso. O PDCA é aplicado nos processos intermediários de projetos de planejamento, execução e controle.
O documento introduz conceitos básicos de engenharia de software, abordando:
1) A definição de software e sua classificação em diferentes categorias;
2) Os principais problemas que levaram à "crise do software" e a evolução da área ao longo das décadas;
3) Os papéis e disciplinas associados ao desenvolvimento de software.
O documento apresenta uma introdução à engenharia de requisitos, discutindo seus objetivos, tipos de requisitos, problemas comuns, e a importância do processo. Também explica como a engenharia de requisitos se encaixa no processo maior da engenharia de sistemas.
O documento é uma lista de exercícios sobre Análise e Projeto de Sistemas para a disciplina ministrada pelo professor José Luiz em outubro de 2011. A lista contém 10 questões sobre conceitos como análise de sistemas, ciclo de vida de projetos, modelagem e problemas que podem surgir sem o uso de modelagem.
Arquitetura de software é o nível de projeto que especifica a estrutura global de um sistema, incluindo subsistemas, camadas e elementos essenciais. O documento discute como produzir uma arquitetura de software inicial, incluindo análise de casos de uso, definição de organização de subsistemas e identificação de abstrações principais.
Este documento resume um congresso sobre gestão visual e manutenção. Apresenta os cinco passos dos 5S (classificar, organizar, limpar, padronizar e respeitar) para melhorar a gestão visual e produtividade. Inclui exemplos de como aplicar cada passo para arrumar e limpar uma área de trabalho de forma organizada.
Slides Aula
Tema da Aula: Diagrama de Causa e Efeito (Ishikawa)
Matéria: Qualidade aplicada à Logística
Curso: Logística (Pronatec)
Faculdade: MaxPlank Indaiatuba
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareDaniel Cukier
O documento apresenta brevemente os palestrantes Daniel Cukier e Rafael Prikladnicki, seus contextos acadêmicos e experiências com métodos ágeis. Também traz a agenda da apresentação "Introdução a Métodos Ágeis de Desenvolvimento de Software" com tópicos como princípios, problemas com abordagens tradicionais e alguns métodos ágeis.
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMiDaniel Ferreira
Este documento discute métodos e técnicas de elicitação de requisitos e sua aderência ao CMMi. Ele apresenta introdução à engenharia de requisitos, principais técnicas de elicitação tradicionais, colaborativas e cognitivas, abordagem contextual, áreas de processo do CMMi e conclusões.
O documento descreve o método PDCA (Plan, Do, Check, Act) de melhoria contínua, introduzido por Walter Shewhart e popularizado por W. Edwards Deming. O PDCA é um ciclo iterativo de planejamento, execução, verificação e padronização utilizado para controlar e melhorar processos de produção e resolução de problemas. O documento explica cada etapa do ciclo PDCA e como ele pode ser aplicado para estabelecer metas de melhoria e resolver problemas críticos.
Este documento apresenta uma aula sobre levantamento e análise de requisitos, cobrindo tópicos como:
- Definição de requisitos e seus objetivos
- Classificação de requisitos em funcionais, não funcionais, de domínio, do usuário e do sistema
- Exemplos de cada tipo de requisito
1) O documento discute processos, threads e suas relações no sistema operacional. Processos podem ter vários threads executando simultaneamente compartilhando o mesmo espaço de memória.
2) É explicada a estrutura de um processo incluindo contexto de hardware, software e espaço de endereçamento. Processos podem estar em diferentes estados como executando, pronto ou espera.
3) Threads são partes de um processo que executam concorrentemente, proporcionando paralelismo dentro do mesmo processo. Isso traz vantagens de desempenho em compara
O documento discute processos de engenharia de software, incluindo modelos como cascata e incremental. O modelo em cascata é composto por sequências de atividades como análise de requisitos, design, implementação e testes. Já o desenvolvimento incremental envolve o desenvolvimento inicial e versões sucessivas com base em comentários. A engenharia de software orientada a reuso busca incorporar códigos e sistemas semelhantes ao projeto.
O documento discute o conceito de pseudoparalelismo, onde um CPU troca entre processos para dar a ilusão de que eles estão sendo executados em paralelo, embora na verdade apenas um processo esteja sendo executado de cada vez. Processos filhos podem ser executados dentro de um processo pai, e processos precisam ser concluídos em ordem hierárquica, com filhos antes do pai. Processos podem estar nos estados de pronto, executando ou bloqueado durante a troca entre processos no CPU.
O documento descreve modelos tradicionais e ágeis de engenharia de software, incluindo Cascata, Espiral, Processo Unificado, Crystal, Scrum e Programação Extrema. Os modelos tradicionais têm dificuldade em lidar com mudanças, enquanto os modelos ágeis enfatizam adaptação, colaboração com o cliente e entregas frequentes.
Python é uma linguagem de programação interpretada, de tipagem dinâmica e forte, criada por Guido van Rossum em 1991. JavaScript é uma linguagem interpretada, de tipagem dinâmica e fraca, criada por Brendan Eich em 1995 e usada principalmente em navegadores. Existem diversas bibliotecas e frameworks que permitem integrar Python e JavaScript, como PyV8, PyExecJS, PyJaco e Brython.
O documento apresenta e descreve vários modelos de processos de desenvolvimento de software, incluindo o modelo em cascata, evolucionário, de desenvolvimento incremental, espiral e prototipação. Cada modelo é explicado com seus principais estágios, vantagens e desvantagens. O documento fornece uma visão geral dos paradigmas e abordagens de processos de software.
Frederico Nunes do Pranto Filho está defendendo seu mestrado sobre a implementação de um modelo de tratamento de exceção chamado ECSFlow para a linguagem C#. O ECSFlow visa melhorar a manutenibilidade e robustez dos sistemas ao separar explicitamente o código normal do código excepcional. A avaliação do ECSFlow é realizada por meio de métricas e análise de impacto de mudanças em versões de uma aplicação real chamada AscGenerator.
Resumo do Webinar
Encontrar bugs em software não é fácil, mas é uma habilidade que todo desenvolvedor(a) deve procurar melhorar. Muitos(as) utilizam apenas o “print no código” para encontrar problemas, mas diversas outras técnicas e ferramentas estão disponíveis e são muito mais eficientes em determinadas situações. Diferentes tipos de problemas como travamentos, crashes, erros de lógica, vazamentos de recursos e problemas de desempenho exigirão diferentes ferramentas e técnicas, incluindo análise de core dump, tracing, profiling, depuração interativa, etc. Neste webinar, os participantes aprenderão a aplicar diferentes técnicas e utilizar diferentes ferramentas para depurar sistemas com Linux embarcado, incluindo GDB, addr2line, strace, ltrace, perf, valgrind, gprof, ftrace, etc!
Convidado: Sergio Prado
Tech Lead na Toradex, Professor na Embedded Labworks
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
A importância de testes de software já deveriam ser um consenso entre times de desenvolvimento. Contudo ainda há profissionais que não compreendem o valor deles, um dos motivos é que de fato muitos softwares possuem testes mas continuam a apresentar bugs a cada entrega. Isso ocorre porque é comum os testes garantirem o funcionamento do código, mas não das funcionalidades como um todo. Na apresentação será abordado como equilibrar testes unitários, de componentes e de integração organizando-os através de uma visão mais direcionada ao negócio, features e histórias do que apenas ao código implementado.
O documento fornece uma introdução à linguagem de programação Java, abordando tópicos como:
1) O que é Java e suas principais características como máquina virtual e garbage collection
2) Sintaxe básica da linguagem como variáveis, tipos, operadores e fluxo de controle
3) Conceitos de programação orientada a objetos como classes, métodos, herança e polimorfismo
O documento discute como o AOP/AspectJ pode ser usado para reduzir a complexidade de aplicações Java, maximizando a modularização através da separação de conceitos e centralização de implementações transversais. O AspectJ fornece mecanismos como pointcuts, advices e declare para implementar aspectos de forma não invasiva. Isso permite tratar requisitos crosscutting de forma isolada, diminuindo acoplamento e aumentando a manutenibilidade do código.
Este documento apresenta um especialista em PHP que fornece dicas sobre programação em PHP, incluindo boas práticas de programação, noções de MVC e OO, e dicas de performance. O documento também discute programação orientada a objetos, padrões de código e referências úteis.
Apresentação do Coderage Brasil 2018 sobre TDD com Código Legado com Delphi usando Spring.Testing e TestInsight.
Dicas de Refactory, como identificar Code Smell e Antipatterns e Hands on do refactory do exemplo GettingStarted do FireDAC.
"Apresentação atualizada, pois o SlideShare não permite re-upload."
Vídeo da primeira parte - Apresentação
https://youtu.be/ZWQO0bLB8gU
O documento fornece uma introdução à linguagem de programação C#, descrevendo sua história, características, comparando-a com C, C++ e Java, e apresentando exemplos de projetos e códigos desenvolvidos com C#.
(A02) LabMM3 - Introdução à programaçãoCarlos Santos
O documento discute o que é um programa e o processo de programação. Explica que um programa é um conjunto de instruções escritas em uma linguagem de programação para resolver problemas e que programar envolve ordenar instruções logicamente para atingir um objetivo. Também descreve os principais passos no processo de programação, incluindo definir o problema, escolher uma estratégia, desenvolver um algoritmo e codificar as instruções.
O documento discute padrões de projeto para software orientado a objetos. Ele explica que padrões de projeto podem ajudar desenvolvedores a criar software mais flexível e reutilizável, definindo soluções comuns para problemas recorrentes de projeto. O documento também descreve alguns padrões específicos como Singleton, Facade e Abstract Factory.
O documento apresenta uma agenda para discussão de tópicos relacionados a desenvolvimento de software, incluindo legibilidade de código, comentários, formatação, funções, código externo, testes de unidade e classes.
O documento apresenta boas práticas de programação defensiva em Java, como: documentar o código, seguir convenções de nomes, tratar erros com exceções, usar asserções para validar entradas, liberar recursos alocados, dividir métodos com muitos parâmetros e testar o código. Também discute sobre precisão versus robustez e como depurar erros no código.
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
O documento discute testes de software e desenvolvimento orientado a testes (TDD) usando PHPUnit. Ele introduz TDD, testes unitários, e PHPUnit, e enfatiza a importância da qualidade de software e dos testes para prevenir erros.
O documento discute conceitos básicos de algoritmos e programação, como:
- Definição de algoritmos, variáveis, tipos de dados, expressões e comandos;
- A linguagem Visualg para representação de algoritmos no ambiente de programação do mesmo nome;
- Operações básicas de entrada e saída de dados em Visualg.
Este documento apresenta conceitos avançados de C# e .NET, incluindo:
1) Design de classes, interfaces, delegates e coleções;
2) Elementos como métodos anônimos, delegates genéricos e interfaces genéricas.
3) O foco é no uso de boas práticas de programação orientada a objetos.
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...Miguel Xavier
Este documento apresenta uma arquitetura proposta para provisionamento de ambientes de alto desempenho customizados em três frases: propõe o uso de workspaces baseados em contêineres LXC para fornecer ambientes personalizados de forma eficiente, define técnicas como sincronização incremental e API de gerenciamento, e avalia a arquitetura mostrando baixo impacto no desempenho de aplicações e rápido provisionamento em comparação com soluções existentes.
O documento apresenta uma palestra sobre DevOps. Aborda tópicos como a história do DevOps, suas definições e princípios-chave, o ciclo DevOps, práticas iniciais e avançadas, níveis de maturidade e ferramentas. O objetivo é fornecer uma visão geral do que é DevOps e como iniciar sua implementação de forma gradual.
O documento discute tratamento de exceções em Java, incluindo o que são exceções, a estrutura try-catch-finally para tratá-las, e a importância de tratar exceções na camada correta da aplicação.
O documento discute os principais paradigmas de programação, incluindo estruturado, orientado a objetos, paralelo e distribuído, e funcional. Ele define cada paradigma, explica suas características, vantagens e desvantagens, e fornece exemplos de linguagens que suportam cada paradigma.
O documento discute testes de unidade, definindo-os como testes de componentes individuais de software para validar se cada um está funcionando conforme projetado. Ele explica por que os testes são importantes, estruturas comuns de testes como Arrange-Act-Assert, boas práticas de testes e frameworks para auxiliar no desenvolvimento de testes.
Semelhante a Qualificação de Mestrado - PPGSC UFRN (20)
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
1. Frederico Nunes do Pranto Filho
Exame de Qualificação
PPgSC - Programa de Pós-graduação em Sistemas e Computação
Banca Examinadora:
Prof. Dr. Nélio Alessandro Azevedo Cacho
Prof. Dr. Fernando Figueira Filho
Prof. Dr. Carlos Eduardo da Silva
2. Frederico Nunes do Pranto Filho
ECSFlow: Implementação de um modelo de
tratamento de exceção para C#
3. • Introdução
▫ Problema
▫ Objetivo
• Defeito, Erro, Falha
• Tratamento de Exceções
• Mecanismos de tratamento
de exceção
• Abordagens de tratamento
de exceção
Roteiro
• ECSFlow
▫ Apresentação
▫ Objetivos
▫ Especificação
▫ Detalhes da implementação
Plataforma .NET
Análise estática
Ferramentas utilizadas
4. • Um sistema confiável precisa garantir que seus serviços continuarão
executando corretamente mesmo na presença de situações errôneas
• Confiabilidade
▫ Confiabilidade diz respeito à capacidade de um sistema de software entregar as
suas funcionalidades sob condições normais e errôneas [1].
▫ Robustez
Caracteriza a capacidade de um sistema para reagir a falhas de componentes [2]
▫ Manutenabilidade
Refere-se à facilidade com a qual um produto de software pode ser modicado para
correção de defeitos, para atender novos requisitos, para tornar mais fácil futuras
manutenções, ou adaptação para mudanças de ambiente [3]
Introdução
5. • Técnicas de tolerância a falhas visam manter o sistema em
funcionamento mesmo diante da ocorrência de falhas
▫ Implementadas através de mecanismos de tratamento de exceções
• Mecanismos de tratamento de exceção foram originalmente concebidos
para, principalmente, incorporar uma clara separação entre
comportamento excepcional e comportamento normal
Problema
6. • Linguagens de programação como C#, C++, Ruby e Python, têm
defendido mecanismos de tratamento de exceção cada vez menos
rígidos, que tem por objetivo, facilitar a modificação e reutilização do
comportamento normal.
▫ Mecanismos de tratamento de exceções dirigidos à manutenção
• Esses mecanismos não impõem declarações de interfaces excepcionais
nas assinaturas de métodos.
▫ Mecanismos de tratamento de exceções dirigidos à robustez
Problema
7. • Mesmo assim, o uso de mecanismos de tratamento de exceção dirigidos
à manutenção, como em C#, mostra-se frágil e frequentemente leva a
um decréscimo na robustez dos programas. Conforme (CACHO, N. et al,
2014) :
▫ (i) a maioria das falhas são introduzidas durante o aprimoramento do
código normal;
▫ (ii) falhas são introduzidas durante o aprimoramento do código
excepcional;
▫ (iii) falhas são introduzidas devido a flexibilidade do mecanismo de
tratamento de exceção dirigido à manutenção;
Problema
8. • Há um forte acoplamento entre o código normal e excepcional no
tratamento de exceção da linguagem C#.
• Este relacionamento é dificil de ser observado sintaticamente pelos
programadores.
• Além do forte acoplamento, a falta de checagem estática colabora na
introdução de falhas no código de tratamento de exceção.
• O suporte ao tratamento de exceção dos modelos dirigidos à
manutenção, como em C#, precisa ser aprimorado.
Problema
9. • Apresentar uma implementação do modelo de tratamento de exceção,
chamado ECSFlow, para a linguagem C#, que promova o aumento da
robustez, da manutenibilidade e da modularização.
▫ Definir mecanismos para representar canais excepcionais globais
▫ Definir mecanismos para fornecer suporte ao reuso do código excepcional
e que permitam a separação explícita entre os códigos normal e
excepcional.
• ECSFlow é uma concretização do modelo EFlow [5]
Objetivos
11. Defeito, Erro, Falha
• Um sistema de software consiste de um conjunto de componentes que
interagem de acordo com o especificado em um projeto de software
• O sistema de software tem como objetivo entregar o serviço de acordo
com as especificações do projeto, mantendo-se em um estado
consistente.
• Caso na entrega do serviço, o estado sofra alguma alteração que o torne
inconsistente, ocorreu um erro.
12. Defeito, Erro, Falha
• Uma falha é a manifestação de um ou mais erros e é de percepção
externa.
• Defeito é o problema ou causa hipotética que pode ter originado o erro.
Um defeito pode ser originado internamente pelo sistema ou algum de
seus componentes (código-fonte), ou de forma externa ao sistema
(falha de hardware)
14. • Torna as aplicações mais robustas e confiáveis
▫ Um tratamento de exceções deve permitir que o sistema seja capaz de
reagir apropriadamente diante de condições excepcionais, garantindo a
integridade do estado atual dos sistema
• A atividade de um sistema pode ser dividida em: normal e excepcional
Tratamento de Exceções
15. • Se o sistema não conseguir
responder uma requisição
de serviço, ele irá retornar
uma exceção.
• Classificação de exceções
• Exceções de interface
• Exceções de falha
• Exceções internas
Tratamento de Exceções
16. ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
Mecanismos de Tratamento de Exceções
17. • Fornece meios de detecção, sinalização e tratamento de erros [6]
▫ (i) detecção de uma ocorrência de exceção
▫ (ii) desvio do fluxo normal do programa para o fluxo excepcional
▫ (iii) localização do código de tratamento da exceção
▫ (iv) execução do código que irá lidar com a exceção.
• Elementos dos mecanismos de tratamento de exceção
▫ sinalizador de exceção (exception signaler)
▫ tratador de exceção (exception handler)
▫ contexto de tratamento de exceções (exception handling contexts - EHC)
Mecanismos de Tratamento de Exceções
18. • Hieraquia de classes
▫ Na maioria das linguagens de programação,
uma exceção é um objeto que herda de um
tipo excepcional, por exemplo, em .NET as
exceções são subtipos de System.Exception
em Java as exceções são subtipos
de java.lang.Throwable
• Subsumption
▫ Quando uma exceção é sinalizada e não
existe um tratador específico, ela pode
ser capturada por um tratador que é um
supertipo da mesma
Mecanismos de Tratamento de Exceções
19. • Interface de Exceção
▫ A interface de exceção é utilizada em algumas linguagens de programação
para explicitar quais exceções podem ser lançadas por um método
▫ As exceções são divididas em
(i) exceções checadas
(ii) exceções não-checadas
▫ A linguagem C# não possui
interface excepcional
Documentação
Mecanismos de Tratamento de Exceções
20. • Vinculação de Tratadores
▫ Há vários tipos de contexto de tratamento de exceções:
instrução, bloco,
método, objeto, classe
e exceção
Mecanismos de Tratamento de Exceções
try {S}
catch (E1 x) {T}
catch (E2 x) {T}
21. • Ligação de Tratador
▫ Determina como o mecanismo de tratamento de exceções procura o
tratador
▫ Filtros de exceção
Mecanismos de Tratamento de Exceções
static void Main ()
{
try {
Foo.DoSomethingThatMightFail ( null );
} catch ( MyException mex) when (mex. Code == 42) {
Console . WriteLine (" Error 42 occurred ");
} catch (Exception ex) {
Console . WriteLine (" Error occurred ");
}
}
23. • Os mecanismos de tratamento de exceção existentes tornam difícil a
implementação de um tratamento de erro robusto, manutenível e
modular na presença de mudanças.
• interface excepcional
• separação de responsabilidades (comportamento normal e excepcional)
• espalhamento do código excepcional
• dependência entre módulos
• reuso do comportamento normal e excepcional
• Neste contexto, este trabalho apresenta uma implementação de um modelo
de tratamento de exceção para a linguagem C#
ECSFlow
24. • O ECSFlow apresenta duas principais abstrações :
▫ Canais Excepcionais Explícitos ( explicit exception channels )
Locais de Lançamento ( raising sites )
Locais intermediários (intermediate sites)
Locais dos Tratadores de Exceções ( handlers )
▫ Tratadores Conectáveis ( pluggable handlers )
ECSFlow
25. • Objetivos
▫ fornecer suporte completo para canais excepcionais explícitos e tratadores
conectáveis em uma linguagem de programação (C#);
▫ abordar as limitações do modelo tradicional de tratamento de exceção da
linguagem de programação C#.
• Especificação do ECSFlow
▫ definição dos canais excepcionais explícitos;
▫ definição dos tratadores conectáveis dos canais excepcionais;
▫ especificação das interfaces dos canais excepcionais;
▫ resolução de possíveis conflitos na definição de canais excepcionais;
ECSFlow
26. • Exemplo de um fluxo de controle de
exceção de uma aplicação open source
chamada Emby [7], um servidor de
mídia que converte e disponibiliza, via
streaming, vários tipos de mídia para
vários tipos de dispositivos
ECSFlow – Na prática
28. ECSFlow – Na prática
ECC1
Local de Lançamento (raising site)
para a exceção ArgumentNullException
29. ECSFlow – Na prática
ECC1
Local de Lançamento (raising site)
para a exceção ArgumentNullException
30. ECSFlow – Na prática
ECC1
Local de Tratamento
( handling site )
31. ECSFlow – Na prática
ECC1
Local de Tratamento
( handling site )
Locais Intermediários
( intermediate sites )
32. ECSFlow – Na prática
ECC1
Local de Tratamento
( handling site )
Tratadores Conectáveis
(pluggable handlers)
• Reusabilidade do tratamento de exceção
• Evita a dispersão do código excepcional em toda
a cadeia de chamada dos métodos
• Contextos de tratamento de exceção (exception
handling contexts)
▫ Componentes, métodos, classes, namespaces e
instruções
34. • Determinam como as exceções podem fluir através dos Locais de
Lançamentos, Locais Intermediários e Locais de Tratamento.
• Especificação ECSFlow
▫ ExceptionChannel
• Exemplos
▫ [assembly : ExceptionChannel ("EEC1", "ArgumentNullException")]
▫ [assembly : ExceptionChannel ("EEC1", new string []
{"ArgumentNullException","OperationCanceledException","Exception"})]
▫ [assembly : ExceptionChannel("EEC1", "SystemException", true)]
ECSFlow – Definindo Canais Excepcionais Explícitos
35. • É possível realizar a composição de vários canais excepcionais em uma
representação de canal excepcional simples, tendo cada especificação um
único local de lançamento
• Especificação ECSFlow
▫ ExceptionChannelComposite
• Exemplos:
▫ [ assembly : ExceptionChannelComposite ("EECComposite", new string []
{"EEC1"," EEC2"})]
ECSFlow – Composição de Canais
36. • É possível especificar o Local de Lançamento do canal excepcional
explícito
• Especificação ECSFlow
▫ ExceptionRaiseSite
• Exemplos:
▫ [assembly : ExceptionRaiseSite ("rSite1","MediaBrowser . Model .*")]
▫ [assembly : ExceptionChannel ("EEC1"," SystemException",true ,"rSite1")]
ECSFlow – Definindo Local de Lançamento
37. • O componente ExceptionRaiseSiteExclude representa o Local de
Lançamento que deve ser excluídos do canal excepcional
• Especificação ECSFlow
▫ ExceptionRaiseSiteExclude
• Exemplos:
▫ [ assembly : ExceptionRaiseSite ("rSite1 "," MediaBrowser . Model .*")]
▫ [ assembly : ExceptionRaiseSiteExclude ("iSite1","Post ()")]
▫ [ assembly : ExceptionChannel ("EEC1",new string [] {"SystemException"},
• true , new string [] {"rSite1","iSite1"})]
ECSFlow - Excluindo Local de Lançamento
38. • Este componente encapsula o código de tratamento de exceções que é
executado quando um determinado ponto em um canal excepcional explícito é
atingido. Especifica o Local de Tratamento.
• Especificação ECSFlow
▫ ExceptionHandler
• Exemplo:
▫ [assembly: ExceptionHandler("EEC1","ArgumentNullException","Save()",
handlerEEC1)]
ECSFlow – Definindo Tratadores Conectáveis
39. • O componente ExceptionInterface trata todas as exceções que fluem
através de um canal excepcional explícito
• Especificação ECSFlow
▫ ExceptionInterface
• Exemplos:
▫ [assembly : ExceptionInterface (" EEC2 ", " MediaBrowser . Controller .*",
typeof ( ControllerException ))]
▫ [assembly : ExceptionInterface (" EEC1 ", " MediaBrowser . Model .*")]
ECSFlow - Especificando Interfaces Excepcionais
40. • Dois canais diferentes podem, eventualmente, compartilhar o mesmo
tipo de exceção, o mesmo local lançamento e o mesmo local de
tratamento.
• O conflito é descrito pela necessidade de definir qual tratador deverá ser
executado pela primeira vez
• Especificação ECSFlow
▫ ExceptionChannelPrecedence
ECSFlow - Resolvendo Conflitos entre Canais
41. • Exemplos:
//---- Arquivo de Configuração 1 ----
[assembly: ExceptionRaiseSite("rSite1", "SaveDisplayPreferences()")]
[assembly: ExceptionChannel("EEC1", new string[] { "ArgumentNullException"}, true, "rSite1")]
[assembly: ExceptionHandler("EEC1","Save()", ...)]
[assembly: ExceptionHandler("EEC1","GetDisplayPreferences()", ...)]
//---- Arquivo de Configuração 2 ----
[assembly: ExceptionRaiseSite("rSite2", "SaveDisplayPreferences()")]
[assembly: ExceptionChannel("EEC2", new string[] { "ArgumentNullException"}, false, "rSite2")]
[assembly: ExceptionHandler("EEC2","Save()", ...)]
[assembly: ExceptionHandler("EEC2","GetDisplayPreferences()", ...)]
▫ [assembly: ExceptionChannelPrecedence("GetDisplayPreferences()", new string[] { "EEC2","EEC1"})]
▫ [assembly: ExceptionChannelPrecedence("Save()", new string[] { "EEC1","EEC2"})]
ECSFlow - Resolvendo Conflitos entre Canais
42. ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
ECSFlow - Detalhes da implementação
43. • Um ambiente é composto de ferramentas, framework para execução,
linguagens de programação e biblioteca de classes que suportam a
construção de aplicações desktop, mobile, sistemas distribuídos,
componentes, páginas dinâmicas para Web e XML Web Services.
• A plataforma .NET foi construída para suportar o paradigma multi-linguagem
• O código é compilado para uma linguagem intermediaria (Intermediate
Language – IL)
Plataforma .NET
44. • Componentes da arquitetura .NET:
• Linguagem de programação;
• VB.NET, C#, F#, J#
• Metadata;
• Definições internas
• Assembly;
• unidade de código resultante (.exe, .dll)
• CLR - Common Language Runtime;
• máquina virtual, gerencia recursos
• Biblioteca de classes (Base Class Library)
• classes básicas
Plataforma .NET
45. • Análise estática consiste no processo de extração de informação sobre a
semântica do código em tempo de compilação.
• A extração pode ser feita diretamente no código-fonte ou no código objeto
(ILCode)
• Tipos de análise estática:
• Análise de código;
• Verificação estrutural;
• Análise de dados;
• Verificação de sequência
Análise Estática
46. • Ferramentas utilizadas
▫ Fody - uma ferramenta open source para modicar o IL dos assemblies .NET
em tempo de compilação.
▫ Mono.Cecil - uma biblioteca para gerar e inspecionar bibliotecas .NET
▫ Custom Attributes (anotações) – são metadados que podem ser associados a
estruturas no código e posteriormente avaliadas em tempo de compilação ou
execução do programa.
▫ ILMerge – é um utilitário que pode ser usado para realizar a união (merge) de
múltiplos assemblies em um único assembly.
ECSFlow - Detalhes da implementação
47. • Code weaving – é o processo de injetar código em uma aplicação
existente.
▫ (i) ler as informações de metadados dos módulos .NET;
▫ (ii) decodica as instruções IL em um formato mais amigável;
▫ (iii) detecta os pontos onde as novas instruções que serão injetadas;
▫ (iv) reestrutura os métodos em que o tratamento excepcional será alterado;
(v) injeta as novas instruções IL;
▫ (vi) reescreve o assembly em memória para uma representação em arquivo
binário.
▫ (vii) reescreve o assembly em disco
ECSFlow - Detalhes da implementação
49. [1] RANDELL, B.; LEE, P.; TRELEAVEN, P. C. Reliability Issues in Computing System Design. ACM Computing Surveys, v. 10, n. 2, p. 123165, 1978.
ISSN 03600300.
[2] LEE, P.; ANDERSON, T. Dependable computing and fault-tolerant systems, vol. 3. Fault Tolerance: Principles and Practice. Springer Verlag,
New York, v. 753, 1990.
[3] RADATZ, J.; GERACI, A.; KATKI, F. Ieee standard glossary of software engineering terminology. IEEE Std, v. 610121990, n. 121990, p. 3, 1990.
[4] CACHO, N. et al. Trading robustness for maintainability: an empirical study of evolving C# programs. Proceedings of the 36th International
Conference on Software Engineering - ICSE 2014, n. iii, p. 584595, 2014.
[5] CACHO, N. A. A. Supporting Maintainable Exception Handling with Explicit Exception Channels. Tese (Doutorado) Lancaster University,
2008.
[6] GOODENOUGH, J. B. Exception handling: issues and a proposed notation. Communications of the ACM, ACM, v. 18, n. 12, p. 683 696,
1975.
[7] PULVERENTI, L. Emby. jun. 2016. Disponível em: <https://github.com/MediaBrowser/Emby>. Acesso em Junho 21, 2016.
Referências
Example objectives
At the end of this lesson, you will be able to:
Save files to the team Web server.
Move files to different locations on the team Web server.
Share files on the team Web server.
Example objectives
At the end of this lesson, you will be able to:
Save files to the team Web server.
Move files to different locations on the team Web server.
Share files on the team Web server.
Example objectives
At the end of this lesson, you will be able to:
Save files to the team Web server.
Move files to different locations on the team Web server.
Share files on the team Web server.
Example objectives
At the end of this lesson, you will be able to:
Save files to the team Web server.
Move files to different locations on the team Web server.
Share files on the team Web server.
Example objectives
At the end of this lesson, you will be able to:
Save files to the team Web server.
Move files to different locations on the team Web server.
Share files on the team Web server.