Gestão de Riscos em Projetos de Sistemas de Informações Geográficas Utilizando Metodologia Híbrida PMBOK e SCRUM

Monografia elaborada e defendida em 2016 para conclusão da pós graduação em Gerenciamento estratégico de projetos.

Download: Gestão de Riscos – SCRUM + PMBOK

RESUMO

Todo projeto está sujeito a acontecimentos inesperados, que podem
influenciar o projeto negativamente ou positivamente. Quando falamos sobre
projetos de sistemas de informações, este apresenta uma forte exposição a
riscos, geralmente apresentam um grande número de incertezas, principalmente
quando se trata de projetos inovadores.
Em projetos de sistemas de informações é cada vez mais comum o uso
de metodologias ágeis, onde a interação com o cliente é mais frequente, assim
como as entregas e flexibilidade na definição do escopo, seja de forma
homogênea ou híbrida, fundindo com metodologias tradicionais.
Um problema encontrado ao utilizar metodologia ágil é a falta de um
processo de gerenciamento de risco explícita, o que leva a alta exposição desses
projetos aos riscos, sendo assim, um dos principais fatores de desvio de custo e
prazo e até mesmo fracasso do projeto.
Este estudo analisou as ferramentas e métodos existentes na literatura,
além de uma pesquisa de campo, a fim de avaliar o cenário atual nas empresas
de desenvolvimento de sistemas de informações geográficas da região, além de
avaliar as melhores ações para tratar os riscos, em quais momentos gerenciálos
e também quais os principais riscos.
Como resultado, esse estudo propõe um processo de gerenciamento de
riscos para projetos que utilizam metodologia híbrida com escopo aberto e banco
de horas.
Palavras chave: Gerenciamento de riscos, gestão de riscos, Scrum, metodologia ágil, sistemas de informações geográficas, metodologia hibrida, PMBOK , .

Anúncios

Startup Brasil – Tendencias de Investimento no Brasil

Olá pessoal, hoje fui a um encontro como tema Tendencias de Investimentos no Brazil e gostaria de compartilhar com vocês e motiva-los tambem.

Vou citar alguns pontos aqui sobre dados de pesquisas que eu pude pegar.

  • Investimentos no Brasil cresceram 26,5% de 2011($5,9 Bi) para 2012($7,4 Bi)
  • Investimentos em TI no Brasil cresceram aproximadamente 66% de 2011(0,3 Bi) para 2012(0,5 Bi)

Estamos vendo a grande ascenção de investidores no país, e esse número só tende a crescer, agora com o crescimento de startups no Brasil está atraindo cada vez mais investidores, cada vez mais o povo ta se encorajando no mundo do empreendedorismo.

  • Tendencia de outsorcing em TI

Grandes empresas de TI estão cada vez mais terceirizando a mão de obra de desenvolvimento. Então se você se simpatiza com essa área do mercado com certeza está sendo cada vez mais requisitada, infelizmente para outsourcing internacional, nosso país esta em ULTIMO lugar no ranking de custos, sendo mais caro que o proprio EUA, principalmente devido aos impostos e a educação, cada vez mais se torna mais inviável fazer outsourcing para o brasil, ainda mais tendo em vista a concorrencia como India, China entre outros países onde a mão de obra é extremamente barata. Porem não é um mercado impossivel, muitas empresas podem se interessar ao outsourcing brasileiro por outros fatores que vão alem de custos, como cultura adaptiva, fuso-horario, entre outros. (Mais info http://www.sourcingline.com/outsourcing-location/brazil)

Objetivos do governo Brasileiro para telecomunicações para 2014.

  • Extensão da banda larga para 68% da população.
  • Serviço 4G em 80% das áreas metropolitanas.
  • Cobertura telefonica em 100% das áreas rurais.

Como todos nós sabemos bilhões estão sendo investido na Copa e nas Olimpiadas, so assim pro governo acordar e forçar um melhoramento nas telecomunicações. Com essas melhorias o acesso a Internet está sendo viável para a população, a inclusão social está em crescimento, então estamos atigindo cada vez mais publicos alvos que antes não seriam possivel atingir.

  • Atuais leveis de penetração tecnológica: 60%(computadores), 92%(TV), 156%(Mobile).

Epa, como assim 156% de mobile ? É muito comum, e diferente de outros paises, o brasileiro ter 2 ou 3 celulares, para poder ligar de operadora para operadora com desconto, entre outros motivos. Então pode se esperar que possivelmente alguns terão uma mesma app instalada em mais de um dispositivo.

  • Em 3 anos o numero total de computadores é experado alcançar 200 milhões.
  • O Brasil é o 4º maior mercado para celulares no MUNDO, de acordo com o ranking da Teleco.
  • Usuários de Smartphones doblaram de 9% em 2012 para 18% em 2012. Considerando brasileiros que tem acesso a internet, usuários de smartphones somaram 44% em 2012.
  • Crescimento de usuários de Tablet no Brasil: de 1% em 1011 para 5% em 2012. Considerando brasileiros que tem acesso a internet, 24% em 2012.

A tecnologia ja faz parte da grande maioria do povo brasileiro,qualquer um tem celular hoje em dia, e cada vez mais esta sendo acessivel comprar um celular com Android.

ANDROID, é a nossa realidade, com certeza criar aplicações multi plataformas é muitas vezes a solução, é a tendencia, mas se para seu produto multi plataforma não se aplique, comece com Android, hoje com R$200 voce compra um celular com Android, nao tenho os numeros comparando os usuários de cada plataforma, mas a superioridade quantitativa de usuarios de android comparados com outras plataformas é indiscutivel.

  • Com 71 milhões de usuários, o Brasil é o segundo país de usuários no Facebook, atrás apenas dos EUA.

Todos nós sabemos como brasileiro pode passar o dia inteiro em redes socias, esse é um mercado muito forte no Brasil, brasileiro gosta de se socializar, qualquer aplicação que venha a ajudar a conhecer novas pessoas, a se comunicar, é muito forte no nosso mercado.

  • O Brasil é lider em termos de desenvolvimento de apps na América Latina, com crescimento de 83% no primeiro semestre de 2012.

Chupa Argentina !!!! haha pra discontrair.

  • E-commerce está crescendo na faixa de 20% por ano e atigindo a marca de renda de $11 bi em 2012.
  • Aumento de 300% em vendas de e-book de 2011 para 2012.

E-Commerce está cada vez mais comum entre os brasileiros, é cada vez mais comodo comprar pela internet, do que sair de casa, pegar transito, pesquisar nas lojas. Eu mesmo sempre comprei tudo pela internet. E o povo brasileiro ta cada vez mais se adaptando a essa comodidade e perdendo o medo de comprar pela internet. Comodidade de caso você precisar comprar 3 tipos de produtos diferentes, não terá que se deslocar a tres locais, que muitas vezes não são perto, além de que muitas vezes os preços serem mais acessiveis. Claro que sempre tem os picaretas que tiram vantagem do e-commerce, mas o povo está cada vez mais se adaptando e aprendendo a confiar, a pesquisar sobre a loja virtual.

Então meu amigo, como vemos o país está atraindo investidores. Então tire sua idéia do papel, se arrisque, faça seu MVP, teste seu mercado, crie o seu Startup. Acredite na sua idéia, voce nao precisa sair do seu emprego pra se dedicar a sua ideia, use suas horas livres, faça aos poucos, faça o minímo e lance, teste seu publico. Um sucesso muitas vezes não se limita a criar algo que nao tem no mercado, e sim algo inovador, se voce tem a ideia e ve que ja existe alguma similiar no mercado, crie um potencial, podemos citar inumeraaaaass empresas de sucesso, lideres, que nao vieram com uma ideia nova, e sim com inovação, com diferencial. INOVAÇÃO é a chave pro sucesso, inove, seja criativo, não tenha medo. Aqui no vale do silicio eu estou vendo milhares de startups com ideias ridiculamentes simples, mas com um minimo de inovação os cara tocam seus negócios conseguem investidores e vao se sucedendo no mercado.  Não tenham medo, acreditem na sua idéia!

Hack for Change

Last weekend was the Civik Hacking Day. Google hosted a event in Mountain View where I had the opportunity to participate. The goals in this event was to us form groups and develop or create some product using open civics data.
Unfortunately I did alone, I didn’t found someone to make it with me. Anyway, I choose work with the Census Data, it’s a great valuable information, and I already worked with Census in Brazil where I had the opportunity to develop a Web Portal to create a Thematic Map with the Census Data.

My idea was use the Census data to identify potential areas through the variables combination. The census data has a lot of variables, a lot of kind of data like age, ethnic, sex, population, household, etc. The application allows the user to choose the variables that he wants to analyze, and it create a heat map identifying the potential areas.
For example if you want to open a dance club that plays Latin music, so your public probably will be Latin people with age between 21 and 30 years old. The application get the area that you are visualizing in the map and highlight the area where have more population that respect your condition.

Is a application very very simple, but can be very useful in many areas.

My presentation was horrible, I was very nervous and I’m learning to speak english, so the both together make a disaster. But the important is that I could show my idea.

Now I will improve the application, maybe change instead of ESRI i’ll use gmaps, but it is not so important.

Presentation(horrible too, made in 5 minutes lol)
https://docs.google.com/presentation/d/1JDi-kll1t_oAElVjSDtUKtUdSviGIQyijUGo4S-Nxek/edit?usp=sharing

Video(If there was a award for worst presentation for sure I would win.)

App – This is the first version that I developed just in the saturday. About an app that was developed in a few hours I think that it is good. I’ll improve it and launch in the mobiles market, so I’ll let you know.

http://censusanalysis.appspot.com/

Posição do aplicativo Vai Corinthians!

Bom, nesse ulimo fim de semana o aplicativo Vai Corinthians! alcançou um bom posicionamento na seção de esportes no Google Play.

 

Vai Corinthians ! – Widget

1º LUGAR – Principais aplicativos pago

O aplicativo contem dois widgets simples para sua área de trabalho, um reúne os feeds relacionados ao Corinthians dos principais sites de noticias, o outro contem um atalho para o som “Vai Corinthians!” 

Imagem

Vai Corinthians! 

4º lugar – Principais aplicativos GRATUITOS

O aplicativo conta com mais de 50 mil downloads, reúne diversos sons da torcida e sons do time, diversos papeis de paredes, acompanhamento de feed de noticias e twitter, alem de permitir a emissão de sons e troca de papel de parede automaticamente, contem tudo o que você precisa para deixar o celular com a cara do Corinthians ! 

Imagem

Clean Code

Fiz uma apresentação sobre Clean Code aqui na Imagem e estou aqui para passar para quem não teve a oportunidade de assistir.
A apresentação foi baseada no livro de Robert C. Martim, é uma leitura altamente recomendada para desenvolvedores, com certeza nos identificamos em quase todos tópicos abordados no livro, nos vemos fazendo o que o autor crítica e não recomenda, então é hora de todos mudarmos e começamos a pensar mais em refatoração e limpar nossos códigos.

O que é um código limpo – •Fácil manutenção•Elegante•Eficiente•Legível•Sem duplicações•Simples•Cuidadoso•Feito para o problema•Direto•Produtividade

5S na codificação – Como utilizarmos o conceito do 5S na hora de codificar.

O custo de um código confuso – Prejuízos causados por um código ruim.

Nomes significativos – Como nomear suas variáveis e métodos corretamente, a importância de se expressar na nomeação e conseguir se expressar no código com nomes dispensando o uso de comentários.

Funções – Características de uma função, qual tamanho deve ter, parâmetros, nomes. Cuidados para que a função realize somente aquilo que diz fazer, evitando efeitos colaterais.

Comentários – Comentários muitas vezes são ruídos no nosso código, tipos de comentários ruins e bons.

Formatação – Vertical – poucas linhas e conceitos relacionados próximos. Horizontal – Definir um numero máximo de caracteres e identação.

Tratamento de Exceção – Erros sempre devem ser tratados, melhores maneiras do que fazer e não fazer.

Testes – Extremamente importante testarmos nosso codigo e mantermos os teste limpos.

Classes – Nomes substantivos, classes curtas, Princípio de Responsabilidade Única.

Emergente – Regras básicas para criar um sistema com um design de código e estrutura eficiente. Rode Todos os Testes – Sem Duplicação – Expresse sua Intenção – Diminua o número de classes e métodos.

Maus Cheiros – Como identificar um código sujo. Duplicação,Inconsistências,Comentários Pobres, Despadronização, etc.

 

E é isso ai pessoal, é legal que leiam o livro (eu mesmo ainda não li inteiro, sei que tem muito mais coisas que agregam muito valor ao nosso código).

Seguindo essa prática reduziremos consideravelmente o custo de manutenção e pouparemos nós e nossos colegas de trabalho da frustração de pegar um código ruim, de passar horas pra entender um código, nos livrar de gambiarras, ter um código elegante e eficiente.

Abraços

WebSocket ( Java + TomCat )

Uma novidade com a ultima versão do Tomcat na qual fiz um estudo essa semana é o WebSocket.

WebSockets é um dos novos recursos previstos como parte do padrão HTML5. Ele oferece suporte à mensagens textuais e binárias, bi-direcionais, entre o servidor web e o navegador. Permite a criação de aplicações full-duplex, como chats, video conferências, sem exigir e onerar o navegador com lógica de pooling e reusando a mesma conexão HTTP, por fim tambem economiza recursos no servidor. Também permite o tráfego de mensagens assíncronas enviadas pelo servidor ou pelo cliente simplificando aplicações que demandam atualizações em tempo real.
Bom para realizar um teste simples peguei um exemplo de um chat, no qual vou demonstrar a seguinte.
Primeiramente você devê ter a ultima versão do Tomcat de preferência. O suporte veio a partir da 7.0.27.
Utilizando o eclipse com suporte a WEB, crie um projeto Dynamic Web, adicione como Target Runtime a ultima versão instalada do Tomcat e o dynamic web module version para 3.0, configuração default do target runtime, selecione posteriormente de preferencia  para gerar o arquivo web.xml.
Ok, criado o projeto iremos criar uma classe que estende de WebSocketServlet.
public class ChatWebSocketServlet extends WebSocketServlet 
Criaremos nossa classe de mensagem dentro do servlet, aqui adicionaremos os comportamentos para abertura de conexão, fechamento, e o envio de mensagens.
 private final AtomicInteger connectionIds = new AtomicInteger(0);
    private final Set<ChatMessageInbound> connections =
            new CopyOnWriteArraySet<ChatWebSocketServlet.ChatMessageInbound>();
  private final class ChatMessageInbound extends MessageInbound {
        private final String nickname;
        private ChatMessageInbound(int id) {
            this.nickname = "User"+ id;
        }
        @Override
        protected void onOpen(WsOutbound outbound) {
            connections.add(this);
            String message = String.format("* %s %s",
                    nickname, "has joined.");
            broadcast(message);
        }
        @Override
        protected void onClose(int status) {
            connections.remove(this);
            String message = String.format("* %s %s",
                    nickname, "has disconnected.");
            broadcast(message);
        }
        @Override
        protected void onBinaryMessage(ByteBuffer message) throws IOException {
            throw new UnsupportedOperationException(
                    "Binary message not supported.");
        }
        @Override
        protected void onTextMessage(CharBuffer message) throws IOException {
            // Never trust the client
            String filteredMessage = String.format("%s: %s",
                    nickname, HTMLFilter.filter(message.toString()));            
            broadcast(filteredMessage);
        }
        private void broadcast(String message) {
          
        
         for (ChatMessageInbound connection : connections) {
                try {
                    CharBuffer buffer = CharBuffer.wrap(message);
                    connection.getWsOutbound().writeTextMessage(buffer);
                } catch (IOException ignore) {
                    // Ignore
                }
            }
        }
    }
Bom , por ultimo sobreescrevemos createWebSocketInbound, retornando a nossa classe de mensagem e criando um id para a conexão.
@Override
    protected StreamInbound createWebSocketInbound(String subProtocol,
            HttpServletRequest request) {
        return new ChatMessageInbound(connectionIds.incrementAndGet());
    }
Bom, o Servlet é basicamente isso apenas. Devemos depois de criado adicioná-lo ao web.xml .

<servlet>

<servlet-name>wsChat</servlet-name>
<servlet-class>util.ChatWebSocketServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>wsChat</servlet-name>
<url-pattern>/wsChat</url-pattern>
</servlet-mapping>
Pronto, o lado server precisamos de apenas isso.
Agora vamos criar um html simples para acessar nosso WebSocket e visualizar essa comunicação, por hora a mensagem é enviada a todos os clients, posteriormente podemos realizar diversos filtros e tratamentos.
Aqui vamos abrir a conexão e enviar mensagem via javascript.
<script type="text/javascript">
        var Chat = {};
        Chat.socket = null;
        Chat.connect = (function(host) {
            if ('WebSocket' in window) {
                Chat.socket = new WebSocket(host);
            } else if ('MozWebSocket' in window) {
                Chat.socket = new MozWebSocket(host);
            } else {
                Console.log('Error: WebSocket is not supported by this browser.');
                return;
            }
            Chat.socket.onopen = function () {
                Console.log('Info: WebSocket connection opened.');
                document.getElementById('chat').onkeydown = function(event) {
                    if (event.keyCode == 13) {
                        Chat.sendMessage();
                    }
                };
                
                document.getElementById('btnsend').onclick = function(event){
                    Chat.sendMessage();
                }
            };
            Chat.socket.onclose = function () {
                document.getElementById('chat').onkeydown = null;
                Console.log('Info: WebSocket closed.');
            };
            Chat.socket.onmessage = function (message) {
                Console.log(message.data);
            };
        });
        Chat.initialize = function() {
            if (window.location.protocol == 'http:') {
                Chat.connect('ws://' + window.location.host + '/TesteChat/wsChat');
            } else {
                Chat.connect('wss://' + window.location.host + '/TesteChat/wsChat');
            }
        };
        Chat.sendMessage = (function() {
            var message = document.getElementById('chat').value;
            if (message != '') {
                Chat.socket.send(message);
                document.getElementById('chat').value = '';
            }
        });
        var Console = {};
        Console.log = (function(message) {
            var console = document.getElementById('console');
            var p = document.createElement('p');
            p.style.wordWrap = 'break-word';
            p.innerHTML = message;
            console.appendChild(p);
            while (console.childNodes.length > 25) {
                console.removeChild(console.firstChild);
            }
            console.scrollTop = console.scrollHeight;
        });
        Chat.initialize();
    </script>
<body>
<noscript>
<h2 style="color: #ff0000">Seems your browser doesn't support
Javascript! Websockets rely on Javascript being enabled. Please
enable Javascript and reload this page!</h2>
</noscript>
<div>
<p>
<input type="text" placeholder="Digite a aperte enter" id="chat">
<input type="button" id="btnsend" value="Enviar">
</p>
<div id="console-container">
<div id="console"></div>
</div>
</div>
</body>
Referente ao estilo da página coloque alguas coisitas do Bootstrap, algo que venho estudando também e é bem legal, da uma cara muito legal para o site muito facilmente.
<style type="text/css">
input#chat {
width: 350px
}
#console-container {
width: 400px;
}
#console {
border: 1px solid #CCCCCC;
border-right-color: #999999;
border-bottom-color: #999999;
height: 170px;
overflow-y: scroll;
padding: 5px;
width: 100%;
}
#console p {
padding: 0;
margin: 0;
}
</style>
<link href="css/bootstrap.css" rel="stylesheet" />
Bom, a intenção desse post é apenas apresentar este recurso que pode ser muito util no nosso dia-a-dia.
Segue o projeto em anexo na página.
Abs.