Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIVERSIDADE DE FORTALEZA
CENTRO DE CIÊNCIAS TECNOLÓGICAS
MESTRADO EM INFORMÁTICA APLICADA
FORTALEZA
2017
SAMANTHA KELLY SOARES DE ALMEIDA
FORTALEZA
2017
ALMEIDA, SAMANTHA KELLY SOARES DE.
UMA ABORDAGEM PARA O DESENVOLVIMENTO DE SOFTWARES QUE
UTILIZAM BLOCKCHAIN / SAMANTHA KELLY SOARES DE ALMEIDA. - 2017 118
f.
RESUMO
ABSTRACT
Lately Blockchain technology has been gaining market visibility. The popularization of this
concept can be attributed to the exponential success of the Bitcoin cryptocurrency, launched
in 2008 by Satoshi Nakamoto. The disruptive vision of this technology and the diverse
possibilities of application in different businesses have been generating a series of changes
and investments in the market, especially the financial sector. The emergence of several
Fintechs (Startups in the financial sector) focused on software using Blockchain demonstrates
the investments made to advance this technology. In this work, a bibliographical research was
carried out in order to understand the state of the art of Blockchain and an experience of use
was developed, where an application was developed using this technology, being source of
information for the detailed definition of a software development process, based on Lean
Startup, to support startups working with projects involving Blockchain.
Figura 18– Registrar voto – Exibição do candidato cadastrado para ser votado. ..................... 56
1 INTRODUÇÃO ..................................................................................................................... 15
1.2 MOTIVAÇÃO ................................................................................................................ 15
1.3 OBJETIVOS ................................................................................................................... 18
1.4 METODOLOGIA ........................................................................................................... 19
1.5 ESTRUTURA DO TRABALHO ................................................................................... 19
1.6 TRABALHOS RELACIONADOS ................................................................................ 20
1.7 CONCLUSÃO DO CAPÍTULO .................................................................................... 20
2 FUNDAMENTAÇÃO TEÓRICA ........................................................................................ 21
2.1 ENGENHARIA DE SOFTWARE ................................................................................. 21
1 INTRODUÇÃO
1.2 MOTIVAÇÃO
Nos últimos anos, muita atenção vem sendo dada aos conceitos emergentes de Cadeia
de Blocos (Blockchain) e Contratos Inteligentes, principalmente após a popularização da
moeda virtual Bitcoin lançada em 2008 por um desconhecido sob o pseudônimo de Satoshi
Nakamoto (NAKAMOTO, 2009).
Com a concretização da moeda virtual Bitcoin e os conceitos inovadores que essa ação
trouxe ao mercado financeiro, organizações como instituições bancárias, financeiras e órgãos
públicos reguladores começaram a discutir explicitamente sobre a importância dessas novas
tecnologias de cadeia de blocos (Blockchain) e contratos inteligentes. Alguns observadores
falam até do amanhecer de uma nova era, declarando que “[...] deve-se pensar sobre a Cadeia
de blocos (Blockchain) como outra classe de coisa como a Internet [...]” (PORRU et al.,
2017).
A cadeia de blocos (Blockchain) é um sistema de livro-razão público que usa um
consenso de rede para gravar e executar transações. De forma mais técnica, é também
conhecida como um protocolo de confiança, onde através de uma rede peer-to-peer (P2P)
funciona como um banco de dados distribuído e descentralizado que armazena cadeias de
blocos de informações interligados e acessíveis via hash, sendo o primeiro bloco de cada
cadeia conhecido como Gênese. Por manter todo o histórico das transações desde o
nascimento da cadeia e não permitir alterações dessas informações de forma desordenada, a
cadeia de blocos (Blockchain) é considerada como a solução para transações seguras e
confiáveis via Internet, gerando pensamento disruptivo em muitos universos de negócio
conhecidos atualmente. (TAPSCOTT; TAPSCOTT,2016).
Esta tecnologia recentemente vem chamando atenção de um
número crescente de líderes empresariais que reconhecem que a tecnologia subjacente
desta arquitetura transformacional pode ser aplicada a quase qualquer indústria.
A característica mais relevante da cadeia de blocos (Blockchain) é que nenhum agente único
16
1.3 OBJETIVOS
1.4 METODOLOGIA
Para cumprir com os anseios e objetivos propostos, a realização deste trabalho foi
dividida em 5 etapas:
2 FUNDAMENTAÇÃO TEÓRICA
Ainda conforme Pressman, novos desafios vêm surgindo aos engenheiros de software,
sendo eles: (1) Computação mundial aberta – com o crescimento exponencial das redes sem
fio, brevemente será necessário desenvolver aplicativos de software que possam se comunicar
de forma pervasiva e distribuída através de extensas redes; (2) Netsoursing (recursos via
internet) – a internet está se tornando um provedor de conteúdo e o desafio é desenvolver
aplicações simples e sofisticadas que forneçam benefícios aos usuários finais em massa,
possibilitando a geração e evolução de novos mercados; e (3) Software aberto – tendência de
mercado que consta na distribuição de códigos-fonte para aplicações de sistemas. O desafio é
23
entregue ao cliente. Por esses fatores, o foco na qualidade é camada inicial e de suporte de
toda a Engenharia de Software, como demonstrado na Figura 1.
É possível observar também que a camada de Processos está diretamente ligada ao
Foco na Qualidade, permitindo que esta seja alcançada através da relação com a camada de
Métodos, que, por sua vez, se apoia na camada de Ferramentas com o mesmo objetivo de
obter recursos que minorem o esforço de execução do processo. A junção dessas três camadas
permite repetitividade, identificação de melhorias continuamente, caracterização de gargalos,
reuso de práticas e artefatos, e, ainda, uma aplicação sistemática para obtenção de um
determinado padrão de qualidade esperado e definido pelo nível de maturidade
organizacional.
Conforme Pressman (2011), entende-se por princípios de Engenharia de Software:
Neste contexto, o foco deste trabalho é contribuir com a minimização desses desafios a
partir da proposição de instrumentos e ativos, estruturados em um processo de
26
Pinheiro (2008) defende que um processo de software pode ser entendido como um
framework para as tarefas que são necessárias à construção de um software de alta qualidade.
Como objeto deste trabalho, buscamos desenvolver uma abordagem de processos que
minorem os esforços e favoreçam o desenvolvimento de produtos de software que utilizem
Cadeia de blocos (Blockchain). Entendemos que não existe processo ideal, principalmente a
diferentes contextos e necessidades a serem atendidas; sendo assim, as organizações devem
criar e adaptar seus métodos, técnicas e ferramentas à sua realidade produtiva. (CMMI,2013).
Temos como foco, através de uma experiência de uso prático, mapear as dificuldades
de desenvolver softwares utilizando Cadeia de blocos – SOB – e propor um arcabouço de
processo que possa ser adaptado e utilizado como base para desenvolvimento e validação de
ideias de produtos de software até a definição do mínimo produto viável no cenário de
empresas startups.
e) Pivô: Um pivô é uma “[...] correção de curso estruturado para testar uma nova
hipótese fundamental sobre o produto, estratégia ou motor de crescimento”. É
extremamente importante saber mudar de curso quando necessário. (RIES, 2012,
p. 67)
Esses princípios são usados para enquadrar a discussão sobre quais práticas de
desenvolvimento de produtos de software podem ser apropriadas, dependendo da situação
única de cada organização. Neste trabalho, buscamos observá-los no contexto restrito de
empresas startups do ramo de desenvolvimento de software, analisando como poderiam
contribuir para o sucesso dessas organizações respeitando seus limites, características e
restrições.
Proposta por Satoshi Nakamoto como solução para o problema de gasto duplo ao se
utilizar a criptomoeda Bitcoin, a cadeia de blocos (Blockchain) é um sistema de livro-razão
descentralizado que usa um consenso de rede para gravar e executar transações. É mais
34
conhecida como a plataforma para a web moeda bitcoin, que atualmente está revolucionando
os serviços financeiros.
No entanto, a cadeia de blocos (Blockchain) recentemente chamou a atenção de um
número crescente de líderes empresariais, reconhecendo que a tecnologia subjacente desta
arquitetura transformacional pode ser aplicada a quase qualquer indústria. (CONLLINS,
2017)
Essa arquitetura de sistemas provavelmente revolucionará a maneira como
construímos sistemas de TI e tem o potencial de minimizar algumas atividades de pirataria e
fraude. Essa ideia simples e elegante, através de sua capacidade inovadora, tem a
possibilidade de mudar nossa noção inteira da empresa, da economia e toda a sociedade.
(CONLLINS, 2017; MURRAY, 2015)
A tecnologia Blockchain pode ser entendida das mais variadas formas. Em geral,
podemos dizer que se trata de um sistema distribuído de base de dados em log, mantido e
gerido de forma compartilhada e descentralizada (através de uma rede peer-to-peer: P2P), na
qual todos os participantes são responsáveis por armazenar e manter a base de dados, sendo
eles responsáveis por toda a informação aceita como verdadeira que gera um novo bloco em
cadeia. (CPQD, 2017)
Um banco de dados de blocos consiste em dois tipos de registro: transações e
blocos. Os blocos possuem lotes de transações válidas que são esmagadas e codificadas em
uma árvore Merkle. https://en.wikipedia.org/wiki/Blockchain - cite_note-te20151031-1Cada
bloco inclui o hash do bloco anterior na cadeia de blocos, ligando os dois. Os blocos ligados
formam uma cadeia. Este processo iterativo confirma a integridade do bloco anterior, todo o
caminho de volta ao bloqueio original da gênese. Algumas cadeias de bloqueio criam um
novo bloco a cada cinco segundos.
A Figura 6 ilustra o funcionamento padrão de uma transação ocorrida em uma rede de
cadeia de blocos (Blockchain). (CUCCURU,2017)
35
2.2.1.1 Características
entre as partes, onde devem ser documentadas as sanções a serem aplicadas em caso de não
cumprimento das regras do contrato. (MAGAZZENI; MCBURNEY; NASH, 2017).
2.2.3 Bitcoin
também não são ligadas à identidade dos usuários. Desse modo, desde que um minerador
inclua a transação na cadeia de blocos, qualquer pessoa pode transferir Bitcoins de forma
eficaz a partir de qualquer endereço que controle a chave (privada) para qualquer outro
endereço, sem a necessidade de revelar quaisquer dados pessoais. Semelhante ao dinheiro
físico, nem mesmo o destinatário precisa saber a identidade do remetente. (ZIEGELDORF et
al.,2016)
Como podemos ver na Figura 9, uma transação Bitcoin possui um ciclo de vida,
conforme ilustrado no exemplo abaixo:
O protocolo Bitcoin processa transações sobre uma rede distribuída usando tecnologia
criptográfica de chaves público-privadas. Quando um remetente transfere fundos para um
destinatário usando o cliente Bitcoin em uma transação, o pedido é gerado. O remetente
confirma o acesso para que os fundos sejam enviados com sua chave privada e identifica o
destinatário por sua chave pública. Por sua vez, o pedido de transação é assinado com a chave
privada de um remetente, e qualquer pessoa na rede pode usar a chave pública do remetente
43
2.3 STARTUP
dispositivos móveis, o mercado possui suporte técnico para uma proliferação contínua de
empreendimentos de software. (GIARDINO, 2016).
De fato, o acesso fácil a mercados potenciais e o baixo custo de distribuição de
serviços são condições atraentes para empresários modernos. Inspiradas em histórias de
sucesso, um grande número de empresas de software é criado todos os dias, sendo
denominadas no contexto empresarial como Startups. Contudo, a grande maioria dessas
empresas falha dentro de dois anos a partir de sua criação. (GIARDINO, 2016).
As startups de software enfrentam intensa pressão do tempo do mercado e estão
expostas a competições (Hacktons) operando em um contexto caótico, em rápida evolução e
incerto. A escolha dos recursos corretos para construir e se adaptar rapidamente a novos
pedidos, ao serem desafiadas pela realidade de limitação de recursos, é crucial para o sucesso
neste ambiente. (RIES, 2012). Startups compartilham características em comum com outros
contextos empresariais, como pequenas empresas, e apresentam uma combinação de
diferentes fatores que tornam o ambiente de desenvolvimento de software diferente das
demais empresas estabelecidas. (GIARDINO, 2016).
Sutton (2017) fornece uma caracterização das Startups de software definidas pelos
desafios que enfrentam:
Nesta pesquisa, atuaremos apenas nas etapas práticas, pressupondo que a startup já
existe e possui modelo de negócio desenhado. Para a etapa de descoberta de clientes,
utilizaremos o suporte da técnica de personas e cenários, e a validação do cliente será apoiada
pelo processo a ser proposto e acompanhado por indicadores.
No contexto de Startups, a engenharia de software enfrenta desafios complexos e
obstáculos multifacetados na compreensão de como gerenciar o desenvolvimento de software
nesse contexto. As Startups são criativas e flexíveis na natureza e relutam em introduzir
medidas processuais ou burocráticas que podem dificultar os seus atributos naturais. Além
disso, startups têm recursos muito limitados e normalmente desejam usá-los para
desenvolvimento de produtos em vez de estabelecer processos. Algumas tentativas de adaptar
processos leves a startups tiveram relatos de falha básica de sua aplicação. Rejeitando a noção
de processos repetitivos e controlados, startups buscam obter vantagem através do contexto de
46
construção rápida e validação breve e contínua; por isso, muitas utilizam o jargão de mercado
“Erre cedo e aprenda rápido”. (GIARDINO, 2016).
As práticas orientadas a produto ajudam as operações iniciais a terem uma equipe,
com fluxos de trabalho que lhes trazem a capacidade de mudar rapidamente a direção de
acordo com o mercado-alvo. Assim sendo, muitas empresas startups se concentram na
produtividade da equipe, buscando mais controle dos funcionários em vez de fornecer-lhes
orientações rígidas. (GIARDINO, 2016).
Outro aspecto peculiar que influencia o desenvolvimento de software no contexto
orientado para o mercado (Startups) está relacionado aos requisitos do produto, que são
relatados como sendo frequentemente inventados pelos desenvolvedores de software, e
validados somente depois que o produto é lançado no mercado. Sob estas circunstâncias, a
falha no lançamento de produtos deve-se principalmente a produtos que não satisfaçam as
necessidades dos clientes. (GIARDINO, 2016).
Neste capítulo, apresentamos as bases metodológicas que serviram como pilar para
abordagem do processo. Citamos, ainda, as iniciativas de difusão da tecnologia Cadeia de
blocos (Blockchain) que possuem objetivo relacionado a este trabalho.
47
3.1.1 Motivação
3.2.1 Equipe
Para construção do protótipo que serviu como base para esta experiência de uso, a
equipe participante foi composta conforme descrito no Quadro 1.
Para a construção deste protótipo, foi desenvolvida uma versão inicial do processo
proposto composta das seguintes atividades:
a) Teóricos:
b) Tecnológicos:
3.3.2 Requisitos
3.3.2.2 Personas
Existem várias redes de Cadeia de blocos (Blockchain) ativas no mercado hoje. Além
da rede do Bitcoin, existem a Ethereum, HyperLedger, Ripple etc., e todas elas funcionam
paralelamente. Para este trabalho selecionamos a rede Ethereum. A escolha se deu como
resultado de pesquisa bibliográfica, onde a rede é citada como uma plataforma bastante
indicada para execução de contratos inteligentes no contexto da cadeia de blocos
(Blockchain). Ela possui uma máquina virtual descentralizada denominada Turing
completude, a Ethereum Virtual Machine (EVM), que pode executar scripts usando uma rede
internacional de nós públicos. Deste modo, é possível desenvolver aplicações que funcionam
exatamente como programadas sem qualquer possibilidade de censura, fraude ou interferência
de terceiros, isso porque o contrato é imutável. (BUTERIN, 2014).
A Figura 20 representa os componentes que foram necessários para a construção desta
experiência de uso.
58
informação, ou seja, não altere o estado da cadeia de blocos (Blockchain), não é necessária a
autorização do usuário, o que torna o processo mais performático.
Chrome. Através do Metamask, o usuário final pode criar uma conta na cadeia de blocos
(Blockchain) e interagir com aplicações descentralizadas “Dapp” que consistem em duas
partes: um frontend, escrito em HTML, e um backend, da mesma maneira como se possuísse
um nó da cadeia de blocos (Blockchain) instalado localmente, o que não é interessante para
um usuário final. Internamente, a aplicação cliente também utiliza a mesma API do Web3
para interagir com a Cadeia de blocos (Blockchain) através do Metamask.
Para agilizar o desenvolvimento e teste de aplicações que interagem com a cadeia de
blocos (Blockchain), a plataforma Ethereum desenvolveu uma aplicação baseada em NodeJS
chamada de “testrpc” (https://github.com/ethereumjs/testrpc). A testrpc simula uma cadeia de
blocos (Blockchain) em memória, possibilitando o desenvolvimento e testes ágeis de
aplicações que interagem com a cadeia de blocos (Blockchain). Ao iniciar essa cadeia de
blocos (Blockchain) de desenvolvimento, são criadas automaticamente dez contas fictícias
para uso nessa cadeia de blocos (Blockchain).
A estruturação deste ambiente de desenvolvimento contou com dois cenários de
plataforma de cadeia de blocos (Blockchain), um de teste e outra real. Essa necessidade se
justifica por conta da indispensabilidade de investimento financeiro para realização de
transações na Blockchain real. Esse custo é necessário para maior controle de transações
ocorridas na cadeia de blocos, devido a toda transação ocorrida necessitar ser validada pelos
mineradores da cadeia. Os mineradores são recompensados pelo esforço com o gas.
De acordo com Pavanatti (2017), o “gas” é uma medida de esforço computacional.
Para cada operação, uma quantidade fixa de gas é atribuída (por exemplo, adicionar dois
números custa 3 gas, o cálculo de um hash custa 30 gas, o envio de uma transação custa
21.000 gas). Uma vez que a computação é dispendiosa (é importante que seja feito por cada
nó completo da rede), o consumo excessivo de gas normalmente é desencorajado. Portanto,
cada unidade de gas deve ser paga pelo remetente da transação que desencadeou a
computação de passos computacionais em uma transação ou mensagem para acionar a
execução de um contrato inteligente. Ou seja, um limite de gas maior implica que possa haver
mais transações.
No contexto deste estudo, o gas é medido em Ether, moeda digital transacionada na
plataforma Ethereum que foi selecionada como plataforma de cadeia de blocos (Blockchain)
para realização da experiência de uso.
A saída da execução dos testes automatizados com sucesso pode ser verificada na
figura abaixo:
Caso algum teste falhe, o erro é exibido no log da execução, onde é descrito o caso de
teste com falha e a descrição do erro.
No exemplo de execução abaixo ocorreram dois erros: um no caso de teste de
contagem de votos de um candidato específico, onde era esperado o valor 7 e foi obtido o
valor 3, e outro na contagem de votos gerais, onde era esperado o valor 3 e foi obtido o valor
5.
68
Entrada:
Saída:
Política de Desenvolvimento de SW
Checklist de adequação Blockchain
Blockchain
Canvas do projeto
Modelo de negócio
Passos:
1. Analisar necessidades do cliente
O gerente de projeto recebe e analisa as necessidades do cliente. Caso necessário, consulta o
modelo de negócio da Startup.
Entrada: Saída:
Política de desenvolvimento de SW
Blockchain Canvas do projeto atualizado
Canvas do Projeto
16
Passos:
1. Apresentar problema
O gerente de projeto apresenta o problema a ser resolvido com blockchain ao time através do
canvas do projeto na reunião inicial do projeto.
2. Definir o produto
O gerente de projeto e o time discutem o escopo, os objetivos e limites do produto a ser gerado.
1. Identificar personas
O time deverá levantar, através da técnica de personas, os potenciais clientes a utilizarem e seus
perfis para melhor prever os cenários de uso.
2. Identificar cenários
O time deverá levantar, através da técnica de cenários, os potenciais cenários de uso do sistema.
Entrada: Saída:
Canvas do projeto
Insumos adicionais relacionados ao Lista de requisitos
17
Passos:
Entrada: Saída:
Arquitetura de referência
blockchain Diagrama arquitetural comentado
Lista de requisitos
Guia de plataformas Blockchain
Passos:
Entrada: Saída:
Diagrama arquitetural comentado Ambiente configurado
Passos:
1. Criar a conta de acesso
Um membro do time realiza criação da conta na plataforma blockchain escolhida para o projeto.
Entrada: Saída:
Arquitetura definida para o projeto Ambiente configurado
Passos:
Os passos para execução desta tarefa não são o escopo deste estudo. Eles irão variar de acordo
com as tecnologias selecionadas pela startup para a aplicação web.
Passos:
1. Priorizar requisitos
Os times, juntamente com o gerente de projetos, realizam reunião com o cliente para priorizar os
requisitos listados por valor agregado ao cliente.
Entrada: Saída:
Requisitos priorizados Kanban do projeto
Passos:
1. Selecionar atividades
As atividades da iteração devem ser selecionadas com base no escopo a ser atendido. Deve-se
evitar atividades não relacionadas aos objetivos da iteração.
Passos:
1. Identificar cenários
O time deverá levantar, através da técnica de cenários, os potenciais cenários de uso do sistema.
Entrada: Saída:
Personas documentadas
Histórias de usuários Classes de testes implementadas.
Passos:
Entrada: Saída:
Personas documentadas Versão de código das histórias do projeto.
Histórias de usuários
Passos:
1. Analisar documentação e planejar componentes
O time deverá levantar os componentes a serem desenvolvidos através dos requisitos
documentados.
3. Disponibilizar codificação
O time deverá realizar o salvamento dos códigos produzidos no repositório definido para o
projeto.
Entrada: Saída:
Versão de código das histórias do Versão de código das histórias do projeto
projeto. integrada à blockchain de testes.
Passos:
1. Selecionar Blockchain
O membro do time deverá selecionar o usuário e a plataforma de blockchain para testes através
da ferramenta de simulação de plataforma blockchain para envio do contrato sem consumo de
criptomoeda.
2. Disponibilizar codificação
O membro deverá utilizar a função disponível no framework selecionado para envio do código
construído para a blockchain.
22
Entrada: Saída:
Versão de código das histórias do Versão de código testada.
projeto integrada à blockchain de Relatório de corretude do Jasmine. (Q. A.)
testes.
Classes de testes implementadas.
Passos:
1. Executar testes
Após o término da codificação, um membro do time deve executar os testes implementados
através da ferramenta selecionada.
2. Registrar defeitos
Após o término da execução, devem ser registrados os defeitos apontados pela ferramenta ou
observados por algum membro do time.
Entrada: Saída:
Versão de código testada. Versão de código corrigida.
Relatório de corretude do Jasmine.
(Q. A.)
Passos:
1. Analisar defeitos
Os defeitos registrados para aquela iteração devem ser analisados para correção.
2. Realizar correções
23
A correção dos defeitos deve ser feita por um ou mais membros do time, com foco na corretude
do produto gerado.
Entrada: Saída:
Versão de código das histórias do Versão de código das histórias do projeto
projeto. integrada à blockchain real.
Passos:
1. Selecionar Blockchain
O membro do time deverá selecionar o usuário e a plataforma de blockchain real através da
ferramenta de integração com a blockchain para envio do contrato com consumo de gás.
2. Disponibilizar codificação
O membro deverá utilizar a função disponível no framework selecionado para envio de código
construído para a blockchain.
Entrada: Saída:
Versão de código disponibilizada Relatório de satisfação do cliente
para avaliação.
Passos:
1. Apresentar produto ao cliente
O gerente do projeto deverá realizar a apresentação das funcionalidades prontas do produto ao
cliente.
Passos:
1. Coletar medições
As medições devem ser coletadas pelo gerente de projeto conforme procedimento definido na
especificação das medições.
2. Documentar resultados
Os resultados das coletas devem ser documentados pelo gerente de projetos da forma mais
adequada ao cenário da startup.
Entrada: Saída:
Relatório de medições Ata de retrospectiva
Relatório de satisfação do cliente Ações (Q.A.)
Kanban do projeto
25
Passos:
3. Analisar indicadores
O gerente de projetos deverá analisar e apresentar o resultado dos indicadores ao time do projeto.
4. Documentar reunião
O gerente de projetos deverá documentar os resultados da reunião na ata de retrospectiva do
projeto.
A metodologia selecionada para a validação do processo foi a revisão por pares (Peer-
Review), que consiste na inspeção de produtos de trabalho por um par, ou seja, um
colaborador com habilidades semelhantes ao autor dos artefatos. Essa revisão geralmente é
conduzida de forma estruturada, de modo a que se alcance o máximo de proveito desse
processo. O foco principal desta técnica é conseguir uma exposição do produto construído e
obter os benefícios oriundos de pontos de vista divergentes. A análise deve estar voltada para
o produto inspecionado e não para a pessoa que o produziu. (BEIZER; BEIZER, 1984)
Segundo Cuenca, Buchalla e França (2017), as características gerais da revisão por
pares são:
a) Predominantemente anônimo;
b) Revisores protegidos pelo anonimato têm poder absoluto;
c) Sistema imperfeito com validade desconhecida e confiabilidade abaixo do ponto
ótimo.
29
uso de blockchain, tornando o processo um guia inicial para apoiar empreendedores que
desejam iniciar sua jornada de construção de produtos de software que utilizem esta
tecnologia e seu conjunto de conceitos independente do seu nível de experiência no contexto.
Deste modo, os dados coletados foram avaliados em único conjunto universo.
Os pontos observados na caracterização dos entrevistados foram: 1 – Perfil
desenvolvido pelos profissionais em suas equipes de trabalho; 2 – Tempo de experiência; 3 –
Conhecimento prévio em blockchain; 4 – Nível de escolaridade; e 5 – Vivência em empresas
startups.
Em relação ao perfil dos profissionais, podemos observar os seguintes resultados: 20%
dos entrevistados desenvolvem o papel de Gerente de Projeto, 40% exercem o papel de
Projetista/Desenvolvedor (Programador), 20% atuam como Analistas de Teste, e os demais 20%
desempenham a função de Analista de Requisitos/Negócios. A Figura 35 exibe o resultado do
levantamento de perfil técnico realizado com os entrevistados.
4.5.3 Resultados
Analisando os dados coletados, podemos perceber que o processo está adequado para
uso, sendo de fácil compreensão, possuindo atividades que possibilitam a criação de um
produto de software, documentação de suporte ao processo, leveza para ser utilizado em uma
startup e características específicas voltadas à tecnologia blockchain.
principalmente no contexto de empresas startups que precisam lidar muitas vezes com
restrições e incertezas de mercado.
Percebeu-se também que alguns conceitos da Engenharia de Software tradicional
precisam ser evoluídos para atender à demanda oriunda desta nova tecnologia. Profissionais
com visão integradora que façam o elo entre os profissionais da tecnologia e o cliente
necessitam ser agregados ao processo de construção para uma boa elaboração das regras e
nuances do contrato inteligente. Identificou-se, ainda, a necessidade de evolução de propostas
arquiteturais que apoiem melhor a tomada de decisão durante o processo de construção de
softwares. Faz-se necessário também o desenvolvimento de ferramentas que possibilitem uma
maior automação e um melhor aproveitamento da disciplina de testes de software, buscando
avanços na disciplina de testes de software orientados à cadeia de blocos (Blockchain).
5.3 LIMITAÇÕES
O trabalho produziu um processo que não pôde ser validado em ambiente real por
questões de tempo e financeiras. Para este contexto, seria necessário o envolvimento de
empresas startups interessadas em desenvolver produtos na tecnologia e dispostas a investir
para utilizar e validar o processo.
40
Outro ponto relevante foi que devido à natureza inovadora da tecnologia pesquisada, o
universo de pessoas especialistas em blockchain, entrevistadas na validação do processo foi
inferior ao desejado, onde quanto ao conhecimento prévio da tecnologia pelos avaliadores
apenas 10% dos entrevistados já trabalhou com a tecnologia anteriormente, 60% conheciam o
conceito, mas nunca atuaram diretamente com blockchain e 30% se quer conheciam.
REFERÊNCIAS
ASTAR LABS. O ciclo de vida de uma transação bitcoin. 2017. Disponível em:
<https://www.astarlabs.com/o-ciclo-de-vida-de-uma-transacao-bitcoin/>. Acesso em: 05 dez.
2017.
BAMFORD, David et al. Partial and iterative lean implementation: two case studies.
International Journal of Operations & Production Management, v. 35, n. 5, p. 702-727,
2015.
BEIZER, B. Software system testing and quality assurance. Van Nostrand Reinhold Co.,
New York, 1984.
BLOG DO NEI. Lean Startup – Para iniciar uma empresa enxuta e ágil. 2012. Disponível
em: <https://neigrando.wordpress.com/2012/05/23/lean-startup-para-iniciar-uma-empresa-
enxuta-e-agil/>. Acesso em: 05 dez. 2017.
COLLINS, Rod. A new architecture for digital content. 2016. Disponível em:
<http://www.econtentmag.com/Articles/Editorial/Commentary/Blockchain-A-New-
Architecture-for-Digital-Content-114161.htm>. Acesso em 28 out. 2017.
HENDRICKSON, Joshua R.; HOGAN, Thomas L.; LUTHER, William J. The political
economy of bitcoin. Economic Inquiry, v. 54, n. 2, p. 925-939, 2016.
INSIDER PRO. Contratos inteligentes: guia para principiantes. 2017. Disponível em:
<https://pt.insider.pro/tutorials/2017-08-02/contratos-inteligentes-guia-para-principiantes/>.
Acesso em: 05 dez. 2017.
<http://www.fee.unicamp.br/sites/default/files/departamentos/dca/eadca/eadcaix/artigos/lucen
a_henriques.pdf>. Acesso em: 05 nov. 2017.
MARVIN, R. Blockchain in 2017: the year of smart contracts. 2016. PC MAG. Disponível
em: <http://www.pcmag.com/article/350088/blockchain-in-2017-the-year-of-smart-
contracts>. Acesso em: 05 nov. 2017.
MURRAY, Art. All aboard the block chain express. KM World Magazine. 2015. Disponível
em: <http://www.kmworld.com/Articles/Column/The-Future-of-the-Future/All-aboard-the-
blockchain-express-102652.aspx>. Acesso em: 06 dez. 2017.
NAKAMOTO, Satoshi. Bitcoin: a peer-to-peer electronic cash system. 2009. Disponível em:
<https://bitcoin.org/bitcoin.pdf>. Acesso em: 5 maio 2017.
______. Engenharia de software: um enfoque prático. New York: Mc Graw Hill, 2005. p.
21-22.
RIBEIRO, G. Lean startup: análise exploratória sobre sua utilização por novas empresas
brasileiras. 2014. Dissertação de mestrado. FGV. Disponível em:
<http://bibliotecadigital.fgv.br/dspace/handle/10438/13114>. Acesso em: 10 nov. 2017.
RIES, Eric. A startup enxuta: como os empreendedores atuais utilizam a inovação contínua
para criar empresas extremamente bem-sucedidas. In. RIES, Eric. [tradução Texto Editores].
– São Paulo: Lua de Papel, 2012. ISBN 9788581780139
SMART, John Ferguson. BDD in Action: Behavior-driven development for the whole
software lifecycle. Manning, 2015.
SUTTON, Garrett. The 7 most common legal mistakes startups make. 2017. Disponível
em: <https://www.linkedin.com/pulse/7-most-common-legal-mistakes-startups-make-garrett-
sutton-1/>. Acesso em: 15 set. 2017.
TAPSCOTT, Don; TAPSCOTT, Alex. The blockchain revolution: how the technology
behind bitcoin is changing money, business, and the world. London: Penguin Books,
2016. ISBN 978-0670069972
YAGIMA, Fernanda Yukari. Lean startup: uma aplicação ao projeto neo time touch.
Universidade Estadual de Campinas – UNICAMP, Limeira, 2012. Disponível em:
<http://www.ft.unicamp.br/liag/leanit/wp-
content/uploads/sites/8/2017/05/ST865_Lean_Startup_final_Corre%C3%A7%C3%A3o_v2.p
df>. Acesso em: 05 nov. 2017.
ANEXOS
Registro de Voto
Encerrar votação
Fonte: http://www.internetparaempreendedores.com.br/modelo-de-negocios-canvas/
51
Fonte: https://br.pinterest.com/pin/388857749058638342/
56
Como coletar:
Como coletar: Como coletar:
Observar a quantidade de tarefas em andamento
Valor apresentado como saldo do GAS Observar as notas informadas e
Procedimento de coleta e durante a reunião diária.
no site do plugin metamask realizar a media de todos os valores.
armazenamento Armazenamento:
Armazenamento: Armazenamento:
Para este indicador não é necessário
Relatório do projeto Relatório do projeto
armazenamento.
Periodicidade de coleta Diário Semanal Diário
Responsável pela coleta e
Gerente do Projeto Gerente do Projeto Gerente do Projeto
armazenamento
Informações para Análise de Dados
Não aceita variação. Só podem existir atividades
Não aceita variação. Abaixo de 1000 Não aceita variação. Abaixo de 3 deve
Parâmetros de análise em andamento que correspondam a quantidade de
unidades deve ser tomada ação. ser tomada ação.
pessoas disponíveis para fazer.
Como analisar: Como analisar:
Analisar através do quadro kanban, verificando a Analisar através do relatório Como analisar:
ocorrência de atividades excedentes. metamask do projeto. Analisar através do relatório do
Procedimento de análise Ações corretivas: Ações corretivas: projeto.
Revisar a prioridade das tarefas e mover para Decidir pela compra de mais GAS ou a Ações corretivas:
Pendende as excedentes que tiveram menor redução de atividades de alteração na Revisar a estratégia e definir o Pivô.
prioridade. Blockchain real ou de testes.
Periodicidade da análise Diário Semanal Ao termino da iteração
Responsável pela análise Gerente do Projeto Gerente do Projeto Gerente do Projeto
Relatórios Não se Aplica. Relatório do Projeto Relatório do Projeto
Informações para Divulgação
O Gerente do Projeto deverá
O Gerente do Projeto deverá
O Gerente do Projeto deverá apresentar o resultado apresentar o resultado do indicador a
Procedimento de divulgação apresentar o resultado do indicador a
do indicador a equipe na reunião diária. equipe na reunião diária e encaminhar
equipe na reunião diária.
as ações necessárias aos envolvidos.
__________________________________________________________________________________________
__________________________________________________________________________________________
____________________________________________________________________________________
09. O processo possui características de leveza que favorecem a aplicação no âmbito de uma Startup.
( ) Discordo fortemente ( ) Discordo ( ) Nem concordo nem discordo ( ) Concordo ( ) Concordo fortemente
Sugestões de Melhorias / Comentários:
__________________________________________________________________________________________
__________________________________________________________________________________________
____________________________________________________________________________________
10. O processo possui características específicas que abordam a teconologia Blockchain.
( ) Discordo fortemente ( ) Discordo ( ) Nem concordo nem discordo ( ) Concordo ( ) Concordo fortemente
Sugestões de Melhorias / Comentários:
__________________________________________________________________________________________
__________________________________________________________________________________________
____________________________________________________________________________________
Caso possível, realize a análise do processo destacando pontos fortes, pontos fracos e oportunidades de melhoria
que foram identificados para o processo.
Pontos Fortes: ______________________________________________________________________________
__________________________________________________________________________________________
Pontos Fracos: ______________________________________________________________________________
__________________________________________________________________________________________
Oportunidades de Melhoria:___________________________________________________________________
__________________________________________________________________________________________
Agradecemos sua participação.
MIA – Mestrado em Informática Aplicada Unifor – Engenharia de Software
Aluna: Samantha Kelly Soares de Almeida e Professor Orientador: Dr. Adriano Bessa