Softwares de apoio ao desenvolvimento 2012

Post on 14-Jun-2015

2.924 views 3 download

Transcript of Softwares de apoio ao desenvolvimento 2012

Softwares de Apoio ao Desenvolvimento

ESPECIALIZAÇÃO EM ENGENHARIA DE SOFTWARE

Professor(a): Diogo Vinícius Winck, MscE-mail: diogo.winck@gmail.com

2012

Diogo Vinícius Winckdiogo.winck@gmail.com

gtalk: diogo.winck@gmail.comskype: diogo.wincksite: www.winck.biz

AQUECIMENTO

"DADO UM NÚMERO DE OLHOS SUFICIENTE, TODOS OS ERROS SÃO TRIVIAIS" (LEI DE LINUS)

Precisamos favorecer a colaboração!

Qual a experiência da turma?

Qual a expectativa da turma?

OBJETIVO GERALDesmistificar o uso de Softwares para Apoio ao Desenvolvimento.

OBJETIVOS ESPECÍFICOS

• Propor um modelo para adoção de ferramentas • Apresentar os tipos de ferramentas• Apresentar as Ferramentas

• SWEBOK – disponível em http://www.computer.org/portal/web/swebok/html/contents

• POPPENDIECK, Mary; POPPENDIECK, Tom. Implementando o Desenvolvimento Lean de Software. Editora: Artmed. 2010.

• KNIBERG, Henrik; SKARIN, Mattias. Kanban e Scrum - obtendo o melhor de ambos. Editora: InfoQ.com. 2011. Disponível em: http://www.infoq.com/br/minibooks/kanban-scrum-minibook

• Outros:– PRESSMANN. Engenharia de SOFTWARE - Uma Abordagem

Profissional.

– SOMMERVILLE, Ian. Engenharia de Software.

Bibliografia

O QUE SÃO FERRAMENTAS DE APOIO AO DESENVOLVIMENTO DE SOFTWARE?

Toda e qualquer ferramenta utilizada em uma das etapas da engenharia de software, amplamente conhecidas por CASE.

• Foram estigmatizada por ferramentas de modelagem e geração de código.

• Abrangem: ferramentas para gerencia de projeto, prototipagem, análise, testes...

Case - Computer-Aided Software Engineering

QUEM PODE LISTAR EXEMPLOS DE FERRAMENTAS CASE?

POR QUE ADOTAR UMA DETERMINADA FERRAMENTA?

Tornar o desenvolvimento de software: ou baratear, ou tornar mais rápido, ou ampliar escopo do software, ou aprimorar a qualidade.

• Qual ponto do processo atuar?– Há processo definido e amplamente seguido?

• Custo de implantação x benefício a ser alcançado– Existem métricas definidas e indicadores claros?

• Sempre há muitas opções: como selecionar?– As opções foram avaliados igualitariamente?

• Há real necessidade de se resolver com software?

Os dilemas além da adoção de ferramentas

COMO ADOTAR UMA FERRAMENTA?

PROJETOSA resposta sempre é um projeto...

Um projeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo.

Segundo PMBOK...

POR QUE ALGUNS PROJETOS DE ADOÇÃO DE NOVAS FERRAMENTAS DÃO CERTO?

Qual a chave do sucesso?

POR QUE ALGUNS PROJETOS DE ADOÇÃO DE NOVAS FERRAMENTAS DÃO ERRADO?

Se os dilemas são conhecidos, por que mesmo assim dá errado?

DINÂMICA DO GERENTÃO

Tangram é um quebra-cabeça chinês formado por 7 peças (5 triângulos, 1 quadrado e 1 paralelogramo) com essas peças podemos formar várias figuras, utilizando todas elas sem sobrepô-las.

RETROSPECTIVA DA DINÂMICA

Falha de Comunicação

Expectativas Irrealistas

Planejamento Deficiente

Falta de Conhecimento

Falha de motivação da partes

interessadasFalta de Apoio

Falta de Recursos/Pessoas

O que está por trás das falhas/erros?

PDCA

PDCA

• Walter A. Shewart (década de 1920) e William Edward Deming (década de 1950)

• Foco em:– Controle eficaz– Padronização nas informações de controle– Melhoria cíclica e contínua.

QUEM JÁ CONHECE OU JÁ USOU PDCA?

Qual a relação do PDCA com ferramentas de apoio para construção software?

PROCESSO DE ADOÇÃO FERRAMENTAS

• Todo o software de apoio pode ser testado através de uma rotina manualmente antes.

• Todo software de apoio impacta no processo de desenvolvimento. O impacto deve ser medido

• Uma ferramenta não deve tratar uma demanda queainda não existe.

É preciso assumir alguns axiomas

ESTES AXIOMAS FAZEM SENTIDO? Algum outro poderia ser adicionado?

QUAL A DIFERENÇA ENTRE MEDIÇÃO MEDIDA, MÉTRICA E INDICADOR?

• A medição é o ato de medir.

QUAIS SERIAM BONS EXEMPLOS?

• A medição produz como resultado um conjunto de medidas e denota a aplicação de um processo para a obtenção de dados quantitativos.

QUAIS SERIAM BONS EXEMPLOS?

• As medições são conduzidas usando-se métricas. Elas descrevem regras para mapeamento de atributos de entidades do mundo real para entidades formais.

QUAIS SERIAM BONS EXEMPLOS?

• Um indicador é uma métrica, ou uma combinação de métricas, que fornece a compreensão sobre um projeto, um processo ou um produto de software.

QUAIS SERIAM BONS EXEMPLOS?

PROCESSO CONTROLADO É O PRIMEIRO PASSO

Antes de implantar é um software de apoio é preciso identificar o estado atual do processo de desenvolvimento

Em processo controlado, conhecido o estado inicial do sistema é possível prever a

evolução dos indicadores para um determinada tarefa!

QUAIS SÃO AS ETAPAS DO PROCESSO DE SOFTWARE?

Em quais pontos o processo de software pode falar?Como saber que falhou?

• Bugs fechados por Mês / Total Bugs conhecidos• Núm. de novas Funcionalidade solicitadas abertas• Custo mensal de manutenção• Custo Mensal de Suporte• Investimento Mensal em Inovação• Cancelamento de Contratos por período• Tempo Médio de resposta de atendimento• Tempo Médio de resposta de manutenção• Número médio de iterações com cliente dado um

problema

Quais métricas podem ser utilizadas?

QUAIS OUTRAS MÉTRICAS?

Qual é a meta? Qual indicador favorecer?

Maximizar o ROI

• (Total de Lucros – Total de Perdas) / Total do investimento

Não faz sentido um projeto para implantar uma nova ferramenta que não gere

um ROI maior que 1...

• Envolver os participantes é fundamental… • Selecionar indicadores que contribuem para a

meta e relacionam-se com a ferramenta.• Método Científico - alterar uma variável por

vez• Foco em resolver um problema por vez –

enfileirar os patinhos

Processo Adoção de ferramentas

• Treinar• Executar• Observar

• Verificar

• Métricas• Indicadores• Metas• Métodos

• Corrigir

Act Plan

DoCheck

ESTUDO DE CASOAvaliando/Selecionando Ferramentas

Definição de Requisitos

Definição de Critérios

Elaboração de Lista de Softwares

Classificação dos

Softwares

COMO AVALIAR UMA FERRAMENTA?

• Na nossa empresa a Alice Informática Ltda. Identificamos que quando nos deparamos com graves problemas nos nossos clientes nem sempre avaliamos de forma ampla.

• Um participante da empresa percebeu que o uso de mapas mentais (ou mapas conceituais) tem ajudado ele a tratar melhor os problemas.

• Na reunião de verificação surgiu a sugestão de adotar esta prática usando uma ferramenta para tal.

O Caso

• Simplicidade – só precisa de papel e caneta/lápis

• Rápido • Depois do problema resolvido se perde...• Falta de rigor/padrão

Exemplo de mapa mental criado na nossa empresa

• Toda ferramenta de apoio pode ser simulada de maneira manual

• As premissas:– Processo (em questão) está estável– Existem métricas/Indicadores para avaliar o

processo antes e após adoção• Quais indicadores deverão ser impactados?

– Foi identificada uma oportunidade melhoria?– E possível simular?

Preparação

• Objetivo é criar uma lista de requisitos para a necessidade identificada

• Pode ser feito através de:– Entrevistas com usuários– Consulta a especialistas– Comparação com modelos de referencia – Consulta a publicações

Fase 1 – Definição dos requisitos

• A ferramenta deve permitir exportar imagens dos mapas mentais.

• Inserir figuras aos nós

• Quais outros requisitos?

Exemplo de requisito

• Há requisitos suficientes para analisar e classificar possíveis soluções.

• Os requisitos listados são relevantes?• Os requisitos listados podem ser efetivamente

verificados?

Verificação da Fase 1

• Considerar/Elencar os critérios a serem considerados para cada requisito levantado.

• Definir prioridade entre os requisitos– Para isto utilizar: entrevistas entre os participantes

da empresa (futuros usuários)– Os pesos variam entre:

• 0.0 – sem importância• 0.2 – pouca importância• 0.6 – média importância• 1.0 – muita importância

Fase 2 – Definição de Critérios

• A ferramenta deve permitir exportar imagens dos mapas metais– Em JPG (muito importante)– Em BMP (sem importância)– Em DOC (média importância)

• Inserir figuras– Ícones predefinidos– muito importante– Figuras externas – pouca importância

Exemplo de Critério

• Nesta verificação deve-se:– Revisar a lista de critérios: estão coerentes?– Revisar as prioridades: estão coerentes?

Verificação da Fase 2

• Deve-se buscar sistematicamente opções de ferramentas na internet, publicações especializadas e fornecedores.

• Uma planilha organizada organizada é formada com as opções identificadas

• Deve ser feita uma avaliações prévia dos softwares para identificar que softwares que possam ser eliminados– Deve-se manter o histórico do motivo da eliminação.

Fase 3 – Busca por softwares

• Freemind• Mindman personal• Microsoft Visio

Algumas ferramentas

• A lista criada está consistente?• Softwares de referência para a solução da

situação proposta estão na lista.

Verificação da Fase 3

• Avaliar o software segundo a planilha de critérios definida.– Através de comparativos realizados por publicações de referencia– Instalação e verificação dos critérios– Reunião com os fornecedores

• Deve-se preencher a planilha atribuindo os pesos:– 0 – não atende o critério– 3 – atende parcialmente– 5 – atende completamente

• Deve-se gerar uma média considerando peso do critério x aderência.

Fase 4 - Avaliação

Planilha - FreemindCritério Peso Avaliação valorJPG 1 5 5BMP 0 5 0Doc 0,6 5 3Ícones 1 5 5Imagem 0,2 3 0,6total 13,6

• A lista de softwares está classificada segundo os critérios definidos

Encerramento

• O projeto de implantação deve possuir milestones claros.

• A cada milestones deve-se verificar o impacto nos indicadores selecionados.

Retrospectiva

OS CLASSIFICANDO AS FERRAMENTAS EXISTENTES

SWEBOKSegundo o SWEBOK, as áreas de conhecimento da Engenharia de Software são:• Requisitos de Software• Projeto de Software• Construção de Software• Teste de Software• Manutenção de Software• Gerência de Configuração de Software• Gerência da Engenharia de Software• Processo de Engenharia de Software• Ferramentas e Métodos da Engenharia de Software• Qualidade de Software

DETALHANDO...

Ferramentas e Métodos da Engenharia de Software

Ferramentas de software automatizam o processo de engenharia de software.Métodos impõem estrutura sobre a atividade de desenvolvimento e manutenção de software com o objetivo de torná-la sistemática e mais propensa ao sucesso.

Requisitos de software

Aquisição, análise, especificação e gestão de requisitos de software.

Projeto de software

Transformação de requisitos, tipicamente estabelecidos em termos relevantes ao domínio do problema, em uma descrição explicando como solucionar os aspectos do problema relacionados com software

• Análise de problema– Mapas mentais

• Gerência De Projetos– Microsoft Project, dotProject, – Issue track

• Diagramas– Modelagem geral: Rational Rose, Astah– Modelagem de BD: DBDesigner

• Ferramentas de Prototipagem e Mockup– Balsamiq, NetBeans ...

• Editores de texto colaborativo– Wiki

Ferramentas para Requisitos e Projeto

Construção de Software

Construção de programas funcionais e coerentes através da codificação, auto validação, e teste unitário.

Manutenção de Software

Modificação do software com o objetivo de corrigir falhas, melhorar seu desempenho ou adapta-lo a um ambiente modificado. Pode ocorrer antes e após a entrega do software.

Ferramentas para Construção e Manutenção de Software

• Controle de Versão– CVS, Subversion, Git,

Mercurial,

• Teste Unitários– Junit, Cunit, Infinitest

• Automação de tarefas – Ant, Maven

• Geração de Código– JEE Spider, Velocity

• Documentação– JavaDoc, Wiki, ECM/GED

• Gestão de solicitações: Issue Track/bug track– Jira, Trac., Bugzilla

• Fórum• Geradores de instalação• Auditoria de Ambiente• Acesso remoto

Teste de Software

Verificação dinâmica do comportamento do programa através do uso de um conjunto finito de casos de teste - adequadamente selecionados de um domínio de execuções usualmente infinito - contra o comportamento esperado deste.

Qualidade de Software

Conjunto de atividades relacionadas com garantia de qualidade de software, entre estas as atividades de verificação e validação.

• Teste Unitário– Junit, Cunit

• Teste Integrado e/ou sistêmico– Selenium– Jmeter

• Análise de cobertura de tester– Clover

• Gestão de Métricas de código fonte– Sonar

• Ferramentas de Métricas– Costar, USC-COCOMO,Calico

• Análise de Código Fonte– PMD, CheckStyle

Ferramentas para Teste e Qualidade

Gerência de Configuração de Software

Identifica a configuração do sistema em pontos discretos no tempo, de modo a controlar sistematicamente suas mudanças e manter sua integridade e rastreabilidade durante o ciclo de vida do sistema

• Automação de tarefas – Ant, Maven

• Integração continua– Continuum, Bamboo, Jenkins

• Repositório de Componentes– Nexus, Archiva

Ferramentas para Gerência de Configuração de Software

Gerência de Engenharia de Software

Gerencia projetos de desenvolvimento de software

Processo de Engenharia de Software

Define, implementa, mede, gerencia, modifica e aperfeiçoa o processo de desenvolvimento de software

• Gestão de solicitações: Issue Track/bug track– Jira, Trac., Bugzilla

• Ferramentas para engenharia de processo– Aris Toolset, HPS Ithink Analyst

• Ferramentas de Métricas– Costar, USC-COCOMO,Calico

Ferramentas Processos de Engenharia e Gerência de Engenharia de Software

É um tipo de diagrama, sistematizado pelo inglês Tony Buzan, voltado para a gestão de informações, de conhecimento e de capital intelectual; para a compreensão e solução de problemas; na memorização e aprendizado; na criação de manuais, livros e palestras; como ferramenta de brainstorming e no auxílio da gestão estratégica de uma empresa ou negócio• Ferramentas:– FreeMind – Gratuito– MindGenius – pago

Mapas Mentais

• Enterprise Architect: ferramenta que trata do ciclo de vida de software de forma completa.

• IBM Rational: Um produto integrado para gerenciamento de requisitos, modelagem e de referência de utilização que promove melhor comunicação, aprimora o trabalho em equipe e reduz o risco do projeto.

Ferramentas para Modelagem de Software

• DBDesigner: Editor visual para criação de banco de dados mySQL que integra criação, modelagem, desenvolvimento e manutenção dos bancos em um ambiente simples e agradável.

• Outras ferramentas:– Oracle's Designer,

Ferramentas para Modelagem de Banco de Dados

• Wiki são utilizados para identificar um tipo específico de coleção de documentos em hipertexto ou o software colaborativo usado para criá-lo.

• Wiki designa o software colaborativo permite a edição coletiva dos documentos usando um sistema que não necessita que o conteúdo tenha que ser revisto antes da sua publicação.

Wiki

Wiki - ComparativoGeral Confluence MediaWiki XWikiLinguagem de programação Java PHP e Ocaml Java

Banco de dadosPostgres, MySQL, Oracle, DB2, MS-SQL Server) MySQL MySQL

Upload de arquivos sim sim simPrevenção Spam sim simControle acesso sim sim simUso de HTML opcional sim sim

Interface com o usuário final templates e temas

templates, "Versão para impressão"

CSS, templates, temas

Feeds sim, RSS sim, RSS/Atom

Extensível plugins em Java nãoplugins, macros, scripts

Licença de Software Comercial GPL v2 GPL/LGPL

• GED é uma tecnologia que provê um meio de facilmente gerar, controlar, armazenar, compartilhar e recuperar informações existentes em documentos.

• ECM é o conjunto de tecnologias usadas para gerir o ciclo de vida das informações não-estruturadas de uma organização, contemplando as fases de criação/captura, armazenamento, versionamento, indexação, gestão, limpeza, distribuição, publicação, pesquisa e arquivamento, relacionando os conteúdos com processos de negócio.

GED / ECM

• Comercial– IBM ECM– Alfresco Enterprise – Xerox DocuShare

• Open Source– Alfresco Community

Ferramentas

• Issue Track são ferramentas destinadas a organizar e manter a lista de demandas para um determinado produto

• Bug Tracker são fermentas destinadas a organizar e manter as solicitação de correção de bugs.

• Exemplos – Jira (pago) – Excelente ferramenta.– Trac (gratuito) – Excelente ferramenta – configuração

complexa.

Issue Tracker e Bug Tracker

• Prototipagem de Software é um processo interativo de geração de modelos de software que faz parte da análise do ciclo de vida do desenvolvimento de sistemas.

• São ferramentas utilizadas durante o processo de prototipação. Algumas utilizam esquemas em papel na análise inicial, para facilitar um feedback concreto dos usuários, e depois desenvolvem um protótipo operacional .

Gerenciamento de Projeto

• São ferramenta utilizada para automatizar a construção de software.

• Exemplos– Ant – compila utilizando build.xml– Maven – gerencia o ciclo de vida de

desenvolvimento, utilizando hierarquia de repositórios de componentes para localizar as dependências de bibliotecas.

Automação de Tarefas

• Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho freqüentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia.

• Exemplos– Continuum (gratuito)– Bamboo (proprietário)

Integração continua

• Download do fornecedor• Através de VM prontas– http://www.turnkeylinux.org/– http://bitnami.org

Onde obter

RETROSPECTIVA

• Selecione uma tarefa recorrente que você acredita que possa ser melhorada – prefira algo profissional e vinculado a software.– Não esqueça de definir critérios e pontos de checagem!

• Faça o Plan desta etapa:– Métricas– Indicadores– Metas– Métodos

• Estruture o planejamento e elabore detalhando-o e uma apresentação.

• O documento deve ser entregue no segundo encontro• Alguns alunos serão sorteados para apresentar o planejamento.

Trabalho 1 - Estudo de caso

• Serão sorteadas ferramentas para cada dupla.• A dupla deverá estudar a ferramenta, instalar,

testar e elaborar um avaliação crítica da ferramenta em formato de artigo.

• O Artigo deverá ser entregue para os demais alunos da sala – pode ser por e-mail.

• Deve-se elaborar uma apresentação da ferramenta onde a ferramenta deverá ser ‘vendida’ e convencer a sala a ‘comprar’ a ferramenta.

Trabalho 2 – Ferramenta