SlideShare uma empresa Scribd logo
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

Gerenciamento de riscos em projetos de TI
Gerenciamento de riscos em projetos de TIGerenciamento de riscos em projetos de TI
Gerenciamento de riscos em projetos de TI
Osvaldo Pedra
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
Álvaro Farias Pinheiro
 
Aula 4 - PDCA
Aula 4 - PDCAAula 4 - PDCA
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
Leinylson Fontinele
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
Cloves da Rocha
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercícios
Guilherme
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
Fábio Nogueira de Lucena
 
Gestão Visual e Manutenção
Gestão Visual e ManutençãoGestão Visual e Manutenção
Gestão Visual e Manutenção
Luis Fernandes
 
1 slides - diagrama de causa e efeito (ishikawa)
1   slides - diagrama de causa e efeito (ishikawa)1   slides - diagrama de causa e efeito (ishikawa)
1 slides - diagrama de causa e efeito (ishikawa)
Caio Roberto de Souza Filho
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
Daniel Cukier
 
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMi
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMiTécnicas de Elicitação de Requisitos e sua Aderência ao CMMi
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMi
Daniel Ferreira
 
PDCA
PDCAPDCA
Definição e classificação dos requisitos
Definição e classificação dos requisitosDefinição e classificação dos requisitos
Definição e classificação dos requisitos
ETEIT - Escola Técnica da Univale
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
Leinylson Fontinele
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
Rudson Kiyoshi Souza Carvalho
 
Pseudoparalelismo
PseudoparalelismoPseudoparalelismo
Pseudoparalelismo
Ricardo Barbosa
 
Modelos de Engenharia de Software
Modelos de Engenharia de SoftwareModelos de Engenharia de Software
Modelos de Engenharia de Software
Nathalia Sautchuk Patricio
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Fernando Palma
 
Integrando Python e JavaScript
Integrando Python e JavaScriptIntegrando Python e JavaScript
Integrando Python e JavaScript
Luiz Cláudio Silva
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
Nécio de Lima Veras
 

Mais procurados (20)

Gerenciamento de riscos em projetos de TI
Gerenciamento de riscos em projetos de TIGerenciamento de riscos em projetos de TI
Gerenciamento de riscos em projetos de TI
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Aula 4 - PDCA
Aula 4 - PDCAAula 4 - PDCA
Aula 4 - PDCA
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercícios
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Gestão Visual e Manutenção
Gestão Visual e ManutençãoGestão Visual e Manutenção
Gestão Visual e Manutenção
 
1 slides - diagrama de causa e efeito (ishikawa)
1   slides - diagrama de causa e efeito (ishikawa)1   slides - diagrama de causa e efeito (ishikawa)
1 slides - diagrama de causa e efeito (ishikawa)
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMi
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMiTécnicas de Elicitação de Requisitos e sua Aderência ao CMMi
Técnicas de Elicitação de Requisitos e sua Aderência ao CMMi
 
PDCA
PDCAPDCA
PDCA
 
Definição e classificação dos requisitos
Definição e classificação dos requisitosDefinição e classificação dos requisitos
Definição e classificação dos requisitos
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
Pseudoparalelismo
PseudoparalelismoPseudoparalelismo
Pseudoparalelismo
 
Modelos de Engenharia de Software
Modelos de Engenharia de SoftwareModelos de Engenharia de Software
Modelos de Engenharia de Software
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Integrando Python e JavaScript
Integrando Python e JavaScriptIntegrando Python e JavaScript
Integrando Python e JavaScript
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 

Semelhante a Qualificação de Mestrado - PPGSC UFRN

Defesa de Mestrado - PPGSC UFRN
Defesa de Mestrado - PPGSC UFRNDefesa de Mestrado - PPGSC UFRN
Defesa de Mestrado - PPGSC UFRN
Frederico Pranto
 
Webinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcadoWebinar: Debugging em Linux embarcado
Webinar: Debugging em Linux embarcado
Embarcados
 
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
 
Manual
ManualManual
Manual
Jose Moniz
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
Diego Pacheco
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
Marcus Vinicius Leandro
 
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
 
Csharp
CsharpCsharp
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação
Carlos Santos
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
Eduardo Jorge
 
10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf
FernandoHenriquedaSi16
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
Glaucio Scheibel
 
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
Domingos Teruel
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
Marcio Pinto
 
Revisão de C# 4.0
Revisão de C# 4.0Revisão de C# 4.0
Revisão de C# 4.0
Mário Meyrelles
 
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
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
Karini Rodrigues Magalhaes
 
Tratamento de exceção em java
Tratamento de exceção em javaTratamento de exceção em java
Tratamento de exceção em java
Marques Amaro
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
eduardohabib
 
Testes de unidade - RP Tec Com
Testes de unidade - RP Tec ComTestes de unidade - RP Tec Com
Testes de unidade - RP Tec Com
Igor Rozani
 

Semelhante a Qualificação de Mestrado - PPGSC UFRN (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
 
(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
 
Testes de unidade - RP Tec Com
Testes de unidade - RP Tec ComTestes de unidade - RP Tec Com
Testes de unidade - RP Tec Com
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 

Último (7)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 

Qualificação de Mestrado - PPGSC UFRN

  • 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.