Gestão de Desejos
Engenharia de Software numa empresa
certificada de Telecomunicações
José Bonnet
FCUP, 2005.Nov.30
ISO 17025 - LABORATÓRIOS ACREDITADOS
CETLAB - Laboratório de Redes Privadas e Terminais
CETLCE - Laboratório de Calibração e Ensaio
1
Índice de conteúdos
•
•
•
•
Introdução
O problema
A solução
Conclusão
2
Onde estamos
PT Inovação Brasil
3
Como nos organizamos
(1/2)
4
Como nos organizamos
(2/2)
5
A nossa qualidade ...
•32 colaboradores
•29 com formação superior
•idade média : 33 anos
6
As nossas competências
...
• Ambientes de Desenvolvimento
– Web: Java, Java Server Pages, Javascript, XML, XSLT
– Oracle: PL/SQL
• Tecnologias
– Call-Center
– Computer Telephony Integration (CTI)
– IVR´s
– Reconhecimento e síntese de voz
• Sistemas
– Billing e Customer Care Systems (BCCS’s)
– Operation Support Systems (OSS’s)
7
Índice de conteúdos
•
•
•
•
Introdução
O problema
A solução
Conclusão
8
• … Cliente:
– ter tudo o que se lembrar até
ao momento de entrada ao
serviço
– gastar pouco
(desenvolvimento e
manutenção)
• … “Chefe”:
– ter tudo o que o cliente se
lembrar até ao momento de
entrada ao serviço
– ter as melhores pessoas,
sempre motivadas e na
equipa
– receber (desenvolvimento e
manutenção)
Os desejos do...
• … Programador:
– programar
– ter tudo bem percebido
antes de começar a
trabalhar
– fazer coisas engraçadas,
sempre com a tecnologia
ou o produto mais recente
– re-fazer as coisas,
optimizando-as
• … Software:
– estar correcto e ter
qualidade
– ser fácil de usar e manter
9
Evolução do valor do
Software
Valor do SI
Limiar de
actualização do SI
Lançamento
de 1 nova
versão
Lançamento
do novo SI
Tempo
Lançamento
de 1 nova
versão
10
Portanto...
• A Engenharia de Software não passa de
uma Gestão de Desejos!
11
Índice de conteúdos
•
•
•
•
Introdução
O problema
A solução
Conclusão
12
Qualidade de Recursos
Humanos
• Há pessoas 10 vezes mais produtivas que outras!
• Diferentes perfis, ambições, etc.
– perfil de testes é “destrutivo”
– há quem nunca queira deixar de ser programador,
por muita experiência que tenha acumulado!
• Ter em atenção o Princípio de Peter: a evolução
na carreira só se dá até se atingir o patamar
máximo de incompetência
• Motivar, motivar, motivar!
13
Tarefas de Desenvolvimento de
Software
Tabela 1: Tarefas de desenvolvimento de software.
1. Definição de requisitos
2. Prototipagem
3. Definição da arquitectura
4. Planeamento do projecto
5. Concepção preliminar
6. Concepção detalhada
7. Revisão de concepção
8. Programação
9. Análise de reutilização
10. Aquisição de pacotes
11. Inspecções de código
12. Verificação e validação
independente
13. Gestão de configurações
14. Integração formal
15. Documentação
16. Testes de unidades
17. Testes de funcionalidades
18. Testes de integração
19. Testes de sistema
20. Testes de campo
21. Testes de aceitação
22. Testes independentes
23. Garantia de qualidade
24. Instalação e formação
25. Gestão de projecto
• Só os projectos mais exigentes têm todas estas tarefas:
– Militares
– Que envolvem riscos de vida (Medicina, Espaço, etc.)
• Só a Programação é que garantidamente se faz!
14
Não há UMA
metodologia...
• Forma como se encadeiam as diversas tarefas ao
longo do tempo
• Pode variar com:
–
–
–
–
–
cliente
produto
projecto
tecnologia
equipa desenvolvimento
• Deve ter em conta:
– Dinâmica dos requisitos
– Entregas frequentes do software
15
Sobreposição de tarefas
Gestão de projecto
Gestão de configurações
Garantia da qualidade
Definição de requisitos
Análise e Concepção
Documentação
Implementação
Testes
Aceitação
Disponibilização à produção
180
Definição Requisitos
Total de Horas por fase
160
Aceitação e passagem à produção
Implem. e testes
Análise e Concepção
140
120
100
80
60
40
20
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Semana
Figura 1: Exemplo de esforço (total de horas trabalhadas) por cada uma das fases de
desenvolvimento de um projecto de software.
16
Tarefas iterativas
Definição
de requisitos
Concepção
Análise
17
Arquitectura
• Forma como os diversos “componentes” do
sistema se organizam e comunicam
• “spaghetti” vs. “ravioli”
• Deve ser:
–
–
–
–
simples: 7±2
fácil de entender por todos os envolvidos
robusta
flexível
• Inexistência implica difícil evolução e altos
custos de manutenção do software
18
Estimativas
• Dimensão, esforço, calendário
• Quase adivinhação: não usar datas rigorosas
• Depende das métricas:
– linhas de código: desenho de ecrãs? Tabelas de
bases de dados?
– Functional points: difícil interpretação
Custo projecto
(esforço e
dimensão)
4x
Calendário
projecto
1,6x
2x
1,25x
1,0x
1,0x
0,5x
0,8x
Produto
completo
0,25x
Conceito
inicial do
produto
0,6x
Conceito Especificação Especificação Especificação
aprovado de requisitos da concepção detalhada da
do produto
do produto
concepção
19
Gestão de riscos
• Diferentes probabilidades
• Diferentes impactos
• Gestão activa: perseguir o risco
Descrição do risco r
Probabilidade(r)
Importância(r)
Impacto(r)
(semanas)
(semanas)
Calendarização demasiado optimista
50%
5
2,5
Adição de um requisito que permita
actualizações completamente automáticas a
partir do mainframe
5%
20
1,0
Características (ainda indefinidas) adicionais
solicitadas pelo marketing
35%
8
2,8
Interface instável com o subsistema de
formatação de gráficos
25%
4
1,0
Concepção desajustada – trabalho extra de
revisão
15%
15
2,25
20
Garantia da qualidade
• Testes
– Especificação e execução
– Detecção e correcção de defeitos, custos:
• 200 vezes + mais caro corrigir um defeito nos testes de
aceitação do que na especificação!
– Muitos tipos: unitários, integração, sistema,
aceitação, campo
– não são muito eficazes por si só:
• mais usados: unitários, só 50% defeitos detectados
• mais eficazes: campo (com dados reais), só 65% defeitos
detectados mas em geral caros
• Inspecções, leitura acompanhada
21
UML
• Porquê?
– É uma norma: é cada vez mais conhecida
universalmente
– é orientado a objectos: facilita a análise, reutilização
– é “configurável”: estereótipos, ...
• …mas é muito complicado?
– Não! Deve usar-se “QB”
– 90% utilizadores usa apenas
• Diagramas de Casos de Uso
• Diagramas de Classes
22
Padrões de desenho
• Descrevem “soluções simples e elegantes para
problemas específicos da concepção de software
orientado a objectos” [“Design Patterns:
Elements of Reusable Object-Oriented
Software”, Gamma, Helm, Johnson, Vlissides (†).
Addison Wesley,1994]
• Estas soluções evoluíram no tempo, reflectindo
necessidades de reutilização e aumento de
flexibilidade
• Outros tipos de padrões: anti-padrões, padrões
de análise, padrões de organização, ...
23
Wiki! (1/2)
• “a mais simples base de dados que alguma
vez poderia funcionar” – Ward Cunningham
• Ferramenta de colaboração e gestão de
conteúdos baseada na web
• Sintaxe simples:
– hiperligações automáticas entre páginas
– Toda a gente pode ser um autor
• http://www.wiki.org
24
Wiki! (2/2)
http://www.tikiwiki.org
25
Índice de conteúdos
•
•
•
•
Introdução
O problema
A solução
Conclusão
26
Conclusão
• É muito complicado gerir os desejos de todos os
intervenientes num processo de
desenvolvimento de software
• Há cada vez mais ferramentas auxiliares...
– “mentais”, independentes de um produto ou
vendedor
– baseadas em normas (UML, …)
– tecnologias evoluíram muito (internet, Java, …)
• …mas ainda estamos longe do “karma” da ES:
fazer software com “engenho”, e não só com
“arte”!
27
Obrigado!
?
28
Download

PT INOVAÇÃO