OPUS Research Group
LES | DI |PUC-Rio - Brazil
Benjamin Jakobus – benjamin.jakobus@les.inf.puc-rio.br
benjamin.jakobus@les.inf.puc-rio.br
Teoria
Quanto mais complexo for um sistema, mais potencial que
existe para a ocorrência de eventos inesperados.
Estes acontecimentos excepcionais e inesperados em tempo
de execução são conhecidos como exceções.
Lidar com exceções pode ser muito difícil e complexo.
2
benjamin.jakobus@les.inf.puc-rio.br
Teoria
Existem muitos tipos de dependências de exceção.
Uma vez levantada, os efeitos da uma exceção pode cascata
em todo o sistema.
Os desenvolvedores devem argumentar com os efeitos e
implicações das exceções.
3 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Teoria
Muitos desenvolvedores tendem a prestar pouca atenção ao
tratamento de exceções, ou até mesmo ignorá-lo por completo [1] [2]
“Exception handling negligence due to intra-individual goal conflicts,”
CHASE, 2009.
“Understanding Exception Handling: Viewpoints of Novices and Experts,”
IEEE Trans. Softw. Eng., Mar. 2010
4 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Teoria
Linguistic relativity
“the structure of a language affects the ways in which its respective
speakers conceptualize their world”
Sapir–Whorf hypothesis: “language determines thought” If we can’t express something, how can we reason about it?
5 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Teoria
Eiji Barbosa e Alessandro Garcia propôs uma linguagem de
domínio específico (EPL) para permitir que os
desenvolvedores / arquitetos expressar suas intenções de
manipulação de exceção.
“A Domain-Specific Language to Support Verifiable Exception
Handling Policies”, Barbosa, Garcia, Robillard, Jakobus -
Submitted to IEEE Transaction on Reliability
6 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Pensamentos…
Como "expressivo" é EPL?
O número de dependências não expressas?
O número de conceitos que são requeridas para serem
descritos em relação ao número real de conceitos que precisam de ser descritos e compreendidos?
Regras EPL pode ser executada dentro de um ambiente CI?
Há indicações de que a EPL é útil dentro do "mundo real"?
Caso EPL se preocupar apenas com dependências hein?
7 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Expressividade
Métricas Expressividade
Largura (EPL pode expressar toda a "amplitude" das políticas
de tratamento de exceções?)
Dados
Gitlab vs Bitbucket
8 Sept - 2014
Github vs Bitbucket
Github tem mais repositórios públicos que utilizam Git.
O conjunto de dados é muito mais fácil de analisar, uma vez
que está disponível no Google bigdata e não necessita de chamadas para a API web-service / REST.
Github hospeda muito mais projetos Java que Bitbucket:
cerca de 24 milhões vs 39 mil. Em outras palavras 'Github é mais popular entre os desenvolvedores Java e, portanto,
oferece uma população muito maior do que a amostra.
…digressing…
…digressing…
11 0 12500000 25000000 37500000 50000000Github - Most popular languages (>= 2000000)
benjamin.jakobus@les.inf.puc-rio.br
Hipótese
H1: EPL pode representar todos os elementos de dependência.
H2: EPL pode representar todos os elementos de fluxo.
H3: EPL pode representar todos os elementos de efeito.
H4: É possível a utilização EPL dentro de um ambiente CI.
H5: Existe pelo menos um caso de uso de um sistema de
indústria-força em que o EPL uso poderia ter salvo os custos de produção consideráveis, tempo e / ou esforço.
12 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Exemplo Motivador
Relevância no mundo real IBM Connections Toolkit
https://developer.ibm.com/social/
Open source. Código disponível no Github.
Abrange muitos produtos como IBM Connections, IBM
Notes/Domino, IBM Sametime.
Suporte para Java, JavaScript, XPages, Objective-C and PHP.
13 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Exemplo Motivador
Muitos serviços diferentes para Connections de apoiar
sozinho: ProfileService BlogService BookmarkService FileService etc
Base service: ClientService
14 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Exemplo Motivador
Problem: Duplicação Exception. Cada serviço duplica
exceções. e.g. BlogService implements BlogServiceException.
Isto leva a manipuladores complicadas Introduz o código duplicado
Bloats a base de código
15 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Exemplo Motivador
Podemos expressar isso usando EPL? Sim, sim, nós podemos!
CONNECTION_SERVICES must remap from
BlogServiceException to ClientServicesException
Mas não podemos expressar tudo: Fluxo de exceção …
What else?
16 Sept - 2014
benjamin.jakobus@les.inf.puc-rio.br
Exemplo Motivador
Podemos expressar isso ... e daí? Considere o fluxo de trabalho ...
17 Sept - 2014 Fork repo Create branch Commit change Push to fork Pull origin master Pull request Travis Review Merge
benjamin.jakobus@les.inf.puc-rio.br
Executoriedade e "relevância no mundo real"
Exigibilidade é atômica - um mecanismo não pode "um
pouco" violar a política
Um teste dada por violação irá passar ou falhar
18 Sept - 2014
OPUS Research Group
LES | DI |PUC-Rio - Brazil