SlideShare uma empresa Scribd logo
1 de 50
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
Frederico Nunes do Pranto Filho
ECSFlow: Implementação de um modelo de
tratamento de exceção para C#
• 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
• 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
• 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
• 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
• 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
• 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
• 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
ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
Defeito, Erro, Falha
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.
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)
ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
Tratamento de Exceções
• 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
• 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
ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
Mecanismos de Tratamento de Exceções
• 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
• 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
• 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
• 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}
• 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 ");
}
}
ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
ECSFlow
• 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
• 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
• 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
• 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
ECSFlow – Na prática
ECC1
Canal Excepcional Explícito
( explicit exception channels )
ECSFlow – Na prática
ECC1
Local de Lançamento (raising site)
para a exceção ArgumentNullException
ECSFlow – Na prática
ECC1
Local de Lançamento (raising site)
para a exceção ArgumentNullException
ECSFlow – Na prática
ECC1
Local de Tratamento
( handling site )
ECSFlow – Na prática
ECC1
Local de Tratamento
( handling site )
Locais Intermediários
( intermediate sites )
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
ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
ECSFlow - Especificação
• 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
• É 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
• É 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
• 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
• 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
• 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
• 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
• 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
ECSFlow: Implementação de um modelo de tratamento de exceção para
C#
ECSFlow - Detalhes da implementação
• 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
• 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
• 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
• 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
• 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
Cronograma de Atividades
[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
Frederico Nunes do Pranto Filho
fredericopranto@ppgsc.ufrn.br
Obrigado!

Mais conteúdo relacionado

Mais procurados

Ensinar e aprender com TIC
Ensinar e aprender com TICEnsinar e aprender com TIC
Ensinar e aprender com TICCarlos Pinheiro
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Natanael Simões
 
Filo artrópodes 04 crustáceos - características e anatomia
Filo artrópodes 04   crustáceos - características e anatomiaFilo artrópodes 04   crustáceos - características e anatomia
Filo artrópodes 04 crustáceos - características e anatomiaprestao
 
Mercado de trabalho: oportunidades e desafios
Mercado de trabalho: oportunidades e desafiosMercado de trabalho: oportunidades e desafios
Mercado de trabalho: oportunidades e desafiosFernando Vilela
 
Etapas da Pesquisa Científica
Etapas da Pesquisa CientíficaEtapas da Pesquisa Científica
Etapas da Pesquisa CientíficaCassio Meira Jr.
 
Apresentação Oral de Trabalhos Científicos - Profa. Rilva Muñoz
Apresentação Oral de Trabalhos Científicos - Profa. Rilva MuñozApresentação Oral de Trabalhos Científicos - Profa. Rilva Muñoz
Apresentação Oral de Trabalhos Científicos - Profa. Rilva MuñozRilva Lopes de Sousa Muñoz
 
Plano de aula 04 sistema imunitário 2
Plano de aula 04 sistema imunitário 2Plano de aula 04 sistema imunitário 2
Plano de aula 04 sistema imunitário 2familiaestagio
 
Aula 04 - O Projeto de Pesquisa
Aula 04 - O Projeto de PesquisaAula 04 - O Projeto de Pesquisa
Aula 04 - O Projeto de PesquisaGhiordanno Bruno
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisguicabral6
 
Imaginação Criativa.pptx
Imaginação Criativa.pptxImaginação Criativa.pptx
Imaginação Criativa.pptxEtelvinaGomes2
 
Como redigir o projeto de pesquisa
Como redigir o projeto de pesquisaComo redigir o projeto de pesquisa
Como redigir o projeto de pesquisaLaércio Góes
 
Aula 1 ecologia conceitos fundamentaisok
Aula 1 ecologia conceitos fundamentaisokAula 1 ecologia conceitos fundamentaisok
Aula 1 ecologia conceitos fundamentaisokluanarodriguessh
 
Criatividade e Inovaçao
Criatividade e InovaçaoCriatividade e Inovaçao
Criatividade e InovaçaoJairo Siqueira
 
24 procedimentos didáticos e ténicas de pesquisa
24 procedimentos didáticos e ténicas de pesquisa24 procedimentos didáticos e ténicas de pesquisa
24 procedimentos didáticos e ténicas de pesquisaJoao Balbi
 
O Que é O Empreendedorismo
O Que é O EmpreendedorismoO Que é O Empreendedorismo
O Que é O Empreendedorismocastrofatima
 

Mais procurados (20)

Ensinar e aprender com TIC
Ensinar e aprender com TICEnsinar e aprender com TIC
Ensinar e aprender com TIC
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
 
Filo artrópodes 04 crustáceos - características e anatomia
Filo artrópodes 04   crustáceos - características e anatomiaFilo artrópodes 04   crustáceos - características e anatomia
Filo artrópodes 04 crustáceos - características e anatomia
 
Mercado de trabalho: oportunidades e desafios
Mercado de trabalho: oportunidades e desafiosMercado de trabalho: oportunidades e desafios
Mercado de trabalho: oportunidades e desafios
 
Etapas da Pesquisa Científica
Etapas da Pesquisa CientíficaEtapas da Pesquisa Científica
Etapas da Pesquisa Científica
 
Informatica basica
Informatica basicaInformatica basica
Informatica basica
 
Apresentação Oral de Trabalhos Científicos - Profa. Rilva Muñoz
Apresentação Oral de Trabalhos Científicos - Profa. Rilva MuñozApresentação Oral de Trabalhos Científicos - Profa. Rilva Muñoz
Apresentação Oral de Trabalhos Científicos - Profa. Rilva Muñoz
 
Plano de aula 04 sistema imunitário 2
Plano de aula 04 sistema imunitário 2Plano de aula 04 sistema imunitário 2
Plano de aula 04 sistema imunitário 2
 
Aula 04 - O Projeto de Pesquisa
Aula 04 - O Projeto de PesquisaAula 04 - O Projeto de Pesquisa
Aula 04 - O Projeto de Pesquisa
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Imaginação Criativa.pptx
Imaginação Criativa.pptxImaginação Criativa.pptx
Imaginação Criativa.pptx
 
Como redigir o projeto de pesquisa
Como redigir o projeto de pesquisaComo redigir o projeto de pesquisa
Como redigir o projeto de pesquisa
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Aula 1 ecologia conceitos fundamentaisok
Aula 1 ecologia conceitos fundamentaisokAula 1 ecologia conceitos fundamentaisok
Aula 1 ecologia conceitos fundamentaisok
 
Criatividade e Inovaçao
Criatividade e InovaçaoCriatividade e Inovaçao
Criatividade e Inovaçao
 
24 procedimentos didáticos e ténicas de pesquisa
24 procedimentos didáticos e ténicas de pesquisa24 procedimentos didáticos e ténicas de pesquisa
24 procedimentos didáticos e ténicas de pesquisa
 
Aprendizagem Por Projetos
Aprendizagem Por ProjetosAprendizagem Por Projetos
Aprendizagem Por Projetos
 
Aula 1 - Iniciando um projeto de pesquisa
Aula 1 - Iniciando um projeto de pesquisaAula 1 - Iniciando um projeto de pesquisa
Aula 1 - Iniciando um projeto de pesquisa
 
Neuroplasticidade
 Neuroplasticidade Neuroplasticidade
Neuroplasticidade
 
O Que é O Empreendedorismo
O Que é O EmpreendedorismoO Que é O Empreendedorismo
O Que é O Empreendedorismo
 

Semelhante a Exame de Qualificação em Sistemas e Computação

Defesa de Mestrado - PPGSC UFRN
Defesa de Mestrado - PPGSC UFRNDefesa de Mestrado - PPGSC UFRN
Defesa de Mestrado - PPGSC UFRNFrederico Pranto
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoEmbarcados
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosCloves da Rocha
 
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programaçãoCarlos Santos
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1Marcio Pinto
 
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...Miguel Xavier
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em javaMarques Amaro
 

Semelhante a Exame de Qualificação em Sistemas e Computação (20)

Defesa de Mestrado - PPGSC UFRN
Defesa de Mestrado - PPGSC UFRNDefesa de Mestrado - PPGSC UFRN
Defesa de Mestrado - PPGSC UFRN
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Manual
ManualManual
Manual
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Csharp
CsharpCsharp
Csharp
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Revisão de C# 4.0
Revisão de C# 4.0Revisão de C# 4.0
Revisão de C# 4.0
 
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...
Uma Arquitetura para Provisionamento de Ambientes de Alto Desempenho Customiz...
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 

Exame de Qualificação em Sistemas e Computação

  • 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
  • 10. ECSFlow: Implementação de um modelo de tratamento de exceção para C# Defeito, Erro, Falha
  • 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)
  • 13. ECSFlow: Implementação de um modelo de tratamento de exceção para C# Tratamento de Exceções
  • 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 "); } }
  • 22. ECSFlow: Implementação de um modelo de tratamento de exceção para C# ECSFlow
  • 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
  • 27. ECSFlow – Na prática ECC1 Canal Excepcional Explícito ( explicit exception channels )
  • 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
  • 33. ECSFlow: Implementação de um modelo de tratamento de exceção para C# ECSFlow - Especificação
  • 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
  • 50. Frederico Nunes do Pranto Filho fredericopranto@ppgsc.ufrn.br Obrigado!

Notas do Editor

  1. Lesson descriptions should be brief.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.