Trabalho apresentado na disciplina Gerência, Planamento e Controle da Produção no periódo 2011.2 pelos alunos Flávio Fabrício Ventura de Melo Ferreira ,Adriano Costa de Oliveira e Ísis de Andrade Lima Ministrada pela professora Maria de Fátima Queiroz Vieira do Centro de Engenharia Elétrica e Informática (CEEI) na Universidade Federal de Campina Grande( UFCG)
Boas práticas de programação com Object Calisthenics
Projeto de Melhoria da Qualidade do Desenvolvimento de um Software Multiplataforma
1. UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
CENTRO DE ENGENHARIA ELÉTRICA E INFORMÁTICA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
DISCIPLINA: GERÊNCIA, PLANEJAMENTO E CONTROLE DA PRODUÇÃO
Projeto de Melhoria da Qualidade do
Desenvolvimento de um Software de Edição
Alunos: de Imagens Multiplataforma
Adriano Costa de Oliveira 20721265
Flávio Fabrício 21011473
Ísis de Andrade Lima 21011485 Professora: Maria de Fátima Queiroz Vieira
2. Objetivo
• Fazer o planejamento do
desenvolvimento de um
software simples de edição
de imagens
“Multiplataforma”.
• O termo “Multiplataforma”
se refere a uma aplicação que
funcione em diferentes
dispositivos de diferentes
marcas e sistemas
operacionais.
• Analisar e implementar a
melhoria da qualidade desse
desenvolvimento.
3. Desenvolvimento
• Foi feito um primeiro planejamento para o
desenvolvimento do software de edição de imagens em
várias plataformas utilizando o software “Microsoft
Project”.
4. Dispositivos
• As Plataformas e
os dispositivos
alvos para este
projeto foram
decididas de
acordo com o
mercado atual
da tecnologia.
• Com o avanço
do número de
Smartphones e
Tablets estes
também foram
levados em
consideração.
5. Plataformas
• Windows para
Desktop e
Windowsphone.
• IOS/Apple para
Macbook, Ipad e
Iphone.
• Android para
respectivos Tablets e
smartphones.
• RIM/BlackBerry para
respectivos
smartphones.
• Symbian/Nokia para
smartphones.
• Java para
smatphones em
geral (Xing-Lings).
• Linux para Desktop.
6. Código Base C++
• O Programador 1 ficou responsável por:
– Elaborar o método AbrirArquivodeFoto()
– Elaborar o método SalvarFoto()
– Elaborar a Interface Gráfica em C++
• O Programador 2 ficou responsável por:
– Elaborar o método MudarCordoBit()
– Elaborar o método EfeitoPreto&Branco()
– Elaborar o método EfeitoSépia()
– Elaborar o método InverterCores()
• O Programador 3 ficou responsável pelos métodos:
– Elaborar o método TrocarBits()
– Elaborar o método InverterFotoHorizontalmente()
– Elaborar o método InverterFotoVerticalmente()
8. Design
• Conceito Gráfico da Aplicação:
Criação do conceito gráfico da
aplicação com a definição de
cores, sombras, desenhos etc..
• Design Gráfico Smartphones: Criação
dos componentes de tela otimizados
para smartphones.
• Design Gráfico Desktop: Criação dos
componentes de tela otimizados para
Desktops.
• Design Gráfico Tablets: Criação dos
componentes de tela otimizados para
Tablets.
9. Testes
• Essa parte ficou
responsável pelos testes
• Testes funcionais da parte
de Código Base em C++
• Testes funcionais das
aplicações finais de cada
plataforma.
• Para isto como recurso foi
utilizado um Gerente
responsável por esses
testes.
10. MASP-Método de Análise e Solução de
Problemas
• Considerando este projeto de desenvolvimento
de software nós decidimos utilizar o método
MASP para a análise, planejamento e solução dos
problemas.
• O MASP, Método de Análise e Solução de
Problemas, consiste em uma sequência de etapas
que levam a um planejamento participativo para
a melhoria da qualidade de um produto ou
serviço de determinado setor em uma
organização.
11. Problema: Método da
“Tentativa e Erro”:
• O problema surge na
ocorrência de erros que
impedem o funcionamento
da aplicação;
• Alguns programadores
utilizam o método da
“Tentativa e Erro” para
tentar solucionar o erro;
• Essa ocorrência toma muito
tempo;
• Pode ocorrer atraso nos
prazos do projeto.
12. Solução: Método da
“Tentativa e Erro”:
• A solução proposta é: realizar
treinamento de depuração em
códigos;
– 2 semanas após a detecção do
problema, com duração de 1
semana;
– O treinamento pode ser realizado
no mesmo ambiente de trabalho
dos programadores;
– A decisão deve partir do Gerente
e executada por todos;
– Para isso é necessário contratar
um profissional para conduzir o
treinamento.
13. Problema: Falta de Comunicação entre
os Programadores
• O problema pode ocorrer em
qualquer momento do
desenvolvimento do projeto;
• Pode levar à ocorrência de erros;
• Leva a execução de trabalhos
desnecessários, repetição de
esforços por desconhecimento;
• Inviabiliza parceria na solução de
problemas.
14. Solução: Falta de Comunicação entre
os Programadores
• Solução proposta: implantação de ferramenta de
comunicação:
– Ferramenta via web que facilite a comunicação acerca do
desenvolvimento do projeto, até 1 semana após detecção do
problema;
– Deve ser implantado pelo Gerente, com atuação de todos;
– Para isso é necessário decidir qual ferramenta utilizar e implantá-la.
15. Problema: Conflito entre as Pessoas do
Projeto
• O problema pode ocorrer em
qualquer momento do
desenvolvimento do projeto;
• Inviabiliza parceria na solução de
problemas.
Solução:
• Alocação de um líder
imediatamente, para mediar os
conflitos e tomar decisões;
• Responsabilidade do Gerente, que
pode eleger um líder ou contratar
novo membro.
16. Problema: Código Desorganizado
• O problema ocorre no momento da
concepção do código, no entanto as
consequências podem se
manifestar em quaisquer etapas;
• Dificulta a compreensão do código;
• Pode levar a erros, sobrecarga de
processamento por repetições de
trechos;
• Dificulta revisões feitas pelo próprio
programador ou até numa
atualização feita por parceiros;
• Pode inviabilizar futura reutilização
do código.
17. Solução: Código Desorganizado
• Solução proposta:
treinamento em
documentação de códigos;
– Medida tomada em até 3
semanas após detecção do
problema e tem duração de
1 semana;
– É de responsabilidade do
Gerente, com participação
de todos;
– Para isso é necessário
contratar alguém para
realizar treinamento ou
buscar materiais didáticos
para estudo intensivo
(tutoriais ou livros).
18. Problema: Falta de um líder
• O problema surge no início de cada
etapa, mas pode ter consequências
percebidas a qualquer momento;
• Reduz a probabilidade de que
alguém tome decisões em
situações críticas;
• Pode acarretar na perda de prazos;
• Não há responsabilidade de ações;
• Decisões consideradas erradas
podem ser atribuídas aos membros
do grupo, causando
desentendimentos.
19. Solução: Falta de um líder
• A alocação de um líder é
de caráter imediato;
• Deve ser realizada pelo
Gerente e executada pelo
líder;
• Pode ser escolhido um
membro com esse perfil
(mediante
entrevista, testes, dinâmica
s de grupo) ou poderá ser
feita contratação de novo
membro.
20. Problema: “Memory Leak”
• O problema surge na
concepção do problema, mas
é percebido na etapa pós-
venda;
• Fenômeno ocorre em
dispositivos dependentes de
baterias, quando o programa
não possui tratamento para o
erro;
• Gera consumo excessivo de
bateria (problema de
qualidade do produto).
21. Solução: “Memory Leak”
• Treinamento em testes
específicos para detecção de
“MemoryLeaks”:
– Até 4 semanas após se verificar
o problema;
– O treinamento ocorre no
mesmo ambiente dos
programadores;
– Deve ser executado pelo
Gerente;
– Para isso é necessário contratar
um especialista.
22. Problema: Alterações Simultâneas no
Código
• O problema ocorre na etapa de
programação;
• Mais de um programador
trabalhando no mesmo
problema:
– O mesmo problema pode ser
tratado simultaneamente, gerando
esforço repetitivo;
– Os programadores podem alterar
trechos diferentes, destruindo a
unicidade do programa;
• Os programadores não têm
ciência das alterações de
terceiros.
23. Solução: Alterações Simultâneas de
Códigos
• Solução proposta:
Implantação de
Ferramenta de
Repositório:
– Até 1 semana após
detecção;
– O ambiente de ocorrência
é a Web;
– É de responsabilidade do
Gerente e execução de
todos;
– Se dá por meio da
pesquisa em busca da
melhor ferramenta do
gênero.
24. Problema: Atrasos no
desenvolvimento
• O problema pode ocorrer em
qualquer etapa e pode afetar todo
o processo;
• Podem ocorrer atrasos individuais
ou em grupo;
• Os atrasos podem ser referentes a
etapas intermediárias (mais fáceis
de detectar) ou apenas no prazo
final de execução (difícil de
detectar ao longo do processo e
muitas vezes impossível de
solucionar);
• Gera custos adicionais, queda de
desempenho e possível perda do
objetivo final.
25. Solução: Atrasos no desenvolvimento
• Solução: Implantação de processo de gerenciamento SCRUM:
– É de caráter imediato;
– É implantada pelo Gerente, executada por todos;
– Ocorre no mesmo ambiente dos programadores;
– É necessário contratar um profissional para treinamento.
26. SCRUM
1. ScrumMaster, que mantém os processos
(normalmente no lugar de um gerente de
projeto)
2. Proprietário do Produto, ou Product
Owner(PO), que representa os stakeholders e o
negócio
3. Equipe, ou Team, um grupo multifuncional com
cerca de 7 pessoas e que fazem a
análise, projeto, implementação, teste etc.
– Cada sprint é uma iteração que segue um ciclo (PDCA)
e entrega incremento de software pronto.
– Um backlog é conjunto de requisitos, priorizado pelo
Product Owner (responsável por conhecer as
necessidades do cliente);
– Há entrega de conjunto fixo de itens do backlog em
série de interações curtas ou sprints;
– Breve reunião diária, ou daily scrum, em que cada
participante fala sobre o progresso conseguido, o
trabalho a ser realizado e/ou o que o impede de
seguir avançando (também chamado de Standup
Meeting ou Daily Meeting, já que os membros da
equipe geralmente ficam em pé para não prolongar a
reunião).
– Breve sessão de planejamento, na qual os itens do
backlog para uma sprint (iteração) são definidos;
– Retrospectiva, na qual todos os membros da equipe
refletem sobre a sprint passada.
27. GUT
Problema G U T Score
Método da “Tentativa e Erro” 35 37 30 102
Falta de Comunicação ente os Programadores 56 52 49 157
Conflito entre as Pessoas do Projeto 53 50 51 154
Código Desorganizado 49 51 54 154
Falta de um Líder 55 55 47 157
“Memory Leak” 43 42 41 126
Atrasos no Desenvolvimento X X X 0
Alteração de Código Simultânea X X X 0
30. 5W1H
O quê? Quando? Onde? Por quê? Quem? Como?
Alocação de um novo Líder Pra Ontem. No mesmo ambiente Para mediar conflitos e tomar Gerente Contratando
(Durante 1 Semana) dos programadores decisões urgentes
Implantação de Ferramenta Em 1 Semana. Na Web. Para facilitar a comunicação Gerente para Pesquisando melhor ferramenta web de comunicação
de Comunicação (Durante 1 Semana) entre os integrantes do projeto Todos
Treinamento em Depuração Em 2 Semanas No mesmo ambiente Para fazer a correção de erros Gerente para Contratando alguém capacitado
de Códigos (Durante 1 Semana) dos programadores Todos Para dar treinamento.
Treinamento em Em 3 Semanas No mesmo ambiente Para evitar código desorganizado Gerente para Contratando alguém capacitado
Documentação de Códigos (Durante 1 Semana) dos programadores e facilitar o entendimento do Todos Para dar treinamento.
Código
Treinamento em testes Em 4 Semanas No mesmo ambiente Para evitar Vazamento de Gerente para Contratando alguém capacitado
específicos para detecção (Durante 1 Semana) dos programadores Memória Todos Para dar treinamento.
de “MemoryLeaks”
Implantação de processo Pra Ontem. No mesmo ambiente Para evitar atrasos no Gerente para Contratando alguém capacitado
de gerenciamento SCRUM (Durante 1 Semana) dos programadores. desenvolvimento Todos Para dar treinamento.
Implantação de Ferramenta Em 1 Semana. Na Web. Para evitar modificações Gerente para Pesquisando melhor ferramenta web de repositório.
de Repositório (Durante 1 Semana) simultâneas indesejadas no Todos
código
41. ISO 9000 - International Organization
for Standardization
• São normas de gestão e garantia, que
direcionam a implantação de
sistemas de qualidade ao especificar
as fases de produção ou prestação de
serviços, desde a execução até a pós-
venda;
• A seguir são citados alguns itens
tratados na revisão da norma ISSO
9001 (1994), que correspondem aos
itens abordados no planejamento de
qualidade apresentado no trabalho:
42. • Responsabilidades da Administração: Definição das políticas,
dos objetivos, da organização e das responsabilidades pela
qualidade na empresa;
• Controle de Projeto (do Produto): Definir regras para que as
idéias (projetos) sejam transformadas em produtos desejados;
• Controle de Processo: Estabelecimento do sistema que
garanta a qualidade nas etapas de produção;
• Inspeção e Ensaios: Definir regras para inspeções de
produtos;
• Assistência Técnica: Definir critérios para atividades pós-
venda;