1. Softwares de Apoio ao
Desenvolvimento
ESPECIALIZAÇÃO EM ENGENHARIA DE SOFTWARE
Professor(a): Diogo Vinícius Winck, Msc
E-mail: diogo.winck@gmail.com
2012
7. Desmistificar o uso de Softwares para Apoio ao Desenvolvimento.
OBJETIVO GERAL
8. • Propor um modelo para adoção de ferramentas
• Apresentar os tipos de ferramentas
• Apresentar as Ferramentas
OBJETIVOS ESPECÍFICOS
9. Bibliografia
• 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.
10. Toda e qualquer ferramenta utilizada em uma das etapas da engenharia
de software, amplamente conhecidas por CASE.
O QUE SÃO FERRAMENTAS DE APOIO
AO DESENVOLVIMENTO DE SOFTWARE?
11. Case - Computer-Aided Software
Engineering
• Foram estigmatizada por ferramentas de
modelagem e geração de código.
• Abrangem: ferramentas para gerencia de
projeto, prototipagem, análise, testes...
13. Tornar o desenvolvimento de software: ou baratear, ou tornar mais
rápido, ou ampliar escopo do software, ou aprimorar a qualidade.
POR QUE ADOTAR UMA
DETERMINADA FERRAMENTA?
14. Os dilemas além da adoção de
ferramentas
• 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?
17. Um projeto é um esforço
temporário empreendido para
criar um produto, serviço ou
resultado exclusivo.
Segundo PMBOK...
18. Qual a chave do sucesso?
POR QUE ALGUNS PROJETOS DE
ADOÇÃO DE NOVAS FERRAMENTAS
DÃO CERTO?
19. Se os dilemas são conhecidos, por que mesmo assim dá errado?
POR QUE ALGUNS PROJETOS DE
ADOÇÃO DE NOVAS FERRAMENTAS
DÃO ERRADO?
20. 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.
DINÂMICA DO GERENTÃO
22. O que está por trás
das falhas/erros? Planejamento
Deficiente
Falha de motivação
Falta de
da partes Falta de Apoio
Conhecimento
interessadas
Falha de Falta de Expectativas
Comunicação Recursos/Pessoas Irrealistas
24. 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.
25. Qual a relação do PDCA com ferramentas de apoio para construção
software?
QUEM JÁ CONHECE OU JÁ USOU
PDCA?
27. É preciso assumir alguns axiomas
• 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 que
ainda não existe.
34. • 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.
38. Em processo controlado,
conhecido o estado inicial do
sistema é possível prever a
evolução dos indicadores para
um determinada tarefa!
Antes de implantar é um software de apoio é preciso identificar o estado
atual do processo de desenvolvimento
PROCESSO CONTROLADO É O
PRIMEIRO PASSO
39. Em quais pontos o processo de software pode falar?
Como saber que falhou?
QUAIS SÃO AS ETAPAS DO
PROCESSO DE SOFTWARE?
40. Quais métricas podem ser utilizadas?
• 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
42. 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...
43. Processo Adoção de
ferramentas
• 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
46. Elaboração Classificação
Definição de Definição de
de Lista de dos
Requisitos Critérios
Softwares Softwares
COMO AVALIAR UMA
FERRAMENTA?
47. O Caso
• 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.
48. Exemplo de mapa mental criado na
nossa empresa
• Simplicidade – só precisa de papel e
caneta/lápis
• Rápido
• Depois do problema resolvido se perde...
• Falta de rigor/padrão
49. Preparação
• 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?
50. Fase 1 – Definição dos requisitos
• 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
51. Exemplo de requisito
• A ferramenta deve permitir exportar imagens
dos mapas mentais.
• Inserir figuras aos nós
• Quais outros requisitos?
52. Verificação da Fase 1
• Há requisitos suficientes para analisar e
classificar possíveis soluções.
• Os requisitos listados são relevantes?
• Os requisitos listados podem ser efetivamente
verificados?
53. Fase 2 – Definição de Critérios
• 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
54. Exemplo de Critério
• 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
55. Verificação da Fase 2
• Nesta verificação deve-se:
– Revisar a lista de critérios: estão coerentes?
– Revisar as prioridades: estão coerentes?
56. Fase 3 – Busca por softwares
• 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.
58. Verificação da Fase 3
• A lista criada está consistente?
• Softwares de referência para a solução da
situação proposta estão na lista.
59. Fase 4 - Avaliação
• 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.
62. Retrospectiva
• O projeto de implantação deve possuir
milestones claros.
• A cada milestones deve-se verificar o impacto
nos indicadores selecionados.
64. SWEBOK
Segundo 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
66. 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.
68. 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
69. Ferramentas para Requisitos e Projeto
• 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
71. 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.
72. Ferramentas para Construção e
Manutenção de Software
• Controle de Versão • Documentação
– CVS, Subversion, Git, – JavaDoc, Wiki, ECM/GED
Mercurial, • Gestão de solicitações:
• Teste Unitários Issue Track/bug track
– Junit, Cunit, Infinitest – Jira, Trac., Bugzilla
• Automação de tarefas • Fórum
– Ant, Maven • Geradores de instalação
• Geração de Código • Auditoria de Ambiente
– JEE Spider, Velocity
• Acesso remoto
73. 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.
74. Qualidade de Software
Conjunto de atividades relacionadas com
garantia de qualidade de software, entre estas
as atividades de verificação e validação.
75. Ferramentas para Teste e Qualidade
• 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
76. 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
77. Ferramentas para Gerência de
Configuração de Software
• Automação de tarefas
– Ant, Maven
• Integração continua
– Continuum, Bamboo, Jenkins
• Repositório de Componentes
– Nexus, Archiva
79. Processo de Engenharia de Software
Define, implementa, mede, gerencia, modifica e
aperfeiçoa o processo de desenvolvimento de
software
80. Ferramentas Processos de Engenharia
e Gerência de Engenharia 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
81. Mapas Mentais
É 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
82. Ferramentas para Modelagem de
Software
• 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.
83. Ferramentas para Modelagem de
Banco de Dados
• 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,
84. Wiki
• 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.
85. Wiki - Comparativo
Geral Confluence MediaWiki XWiki
Linguagem de
programação Java PHP e Ocaml Java
Postgres, MySQL, Oracle,
Banco de dados DB2, MS-SQL Server) MySQL MySQL
Upload de arquivos sim sim sim
Prevenção Spam sim sim
Controle acesso sim sim sim
Uso de HTML opcional sim sim
templates,
Interface com o "Versão para CSS, templates,
usuário final templates e temas impressão" temas
Feeds sim, RSS sim, RSS/Atom
plugins, macros,
Extensível plugins em Java não scripts
Licença de Software Comercial GPL v2 GPL/LGPL
86. GED / ECM
• 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.
87. Ferramentas
• Comercial
– IBM ECM
– Alfresco Enterprise
– Xerox DocuShare
• Open Source
– Alfresco Community
88. Issue Tracker e Bug Tracker
• 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.
89. Gerenciamento de Projeto
• 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 .
90. Automação de Tarefas
• 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.
91. Integração continua
• 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)
92. Onde obter
• Download do fornecedor
• Através de VM prontas
– http://www.turnkeylinux.org/
– http://bitnami.org
95. Trabalho 1 - Estudo de caso
• 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.
96. Trabalho 2 – Ferramenta
• 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.