View
888
Download
0
Category
Preview:
Citation preview
Processo de Software
Como desenvolver software?
Copyright 2010Prof. Fbio Nogueira de Lucenafabio@inf.ufg.brTecnologias, Ferramentas e Processos
No estou aqui para dizer como fazer, no se trata de uma prescrio, mas uma descrio. Em artigo de dezembro da IEEE Software o editor coloca muito bem esta questo. Muitos pesquisadores no conhecem realmente o que se passa na prtica e o que pior, eles pensam que sabem.
A idia simples. Praticantes esto imersos. preciso emergir e verificar o que se passa ao redor. Visto que imergir uma tarefa na qual os praticantes so imbatveis. Por outro lado, coloco-me aqui na posio de pesquisador e assumo a postura de que no sei o que se passa na prtica. Com esta postura, esta apresentao, ao menos conceitualmente tenta ser livre de preconceitos e aberta a qualquer tipo de debate.
Todo o nosso conhecimentoprincipia pela experincia.
Immanuel Kant,
Crtica da Razo PuraEsta palestra fornece vises
Por que software?
Porque a sociedade precisaVirtualmente quase tudo faz uso de software
O que no usa software?
Diretamente ou no?
Motivao
Dinheiro (grandes empresas do planeta)Microsoft
IBM
Oracle
CA, ...
MicrosoftEmpresa de maior valor de mercado do mundo
50000 funcionrios
Mais de 1000 aplicam + de $1.000.000 em bolsas
http://www.forbes.com/
Abordagens de construo
Engenharia de SoftwareSimplesmente faa
(gnios, superdotados)Contato com
foras ocultas, msticas
http://www.swebok.org
Desnecessrio
Obrigatrio
ItaipuCongresso NacionalRex e sua casa
ES se aplica a todos os casos?
Poucos riscosReconstruo barataMuitos riscosAltos custos
Quando se aplica, o objetivo ...
Engenharia de Software
Produzir software economicamente
que atende necessidades dos usurios
difcil construir software?
Modelar construes conceituais a essncia.
Representao acidental.
Propriedades inerentes:Complexidade (no linear com o tamanho)
Modificabilidade (infinitamente malevel)
Invisibilidade
Esperanas:Comprar versus construir
Construo de prottipos (def. de requisitos difcil)
Desenvolvimento incremental (crescer, no construir)
Bons projetistas
No Silver Bullet:
Essence and Accidents of Software Engineering
Frederick P. Brooks, Jr.
IEEE Computer, vol 20 (4), april, 1987, pp. 10-19.
Pense sobre isto!
Ouvir
Ver
Cheirar
Lamber
Cortar
Matar
Desgastar
Encolher
Segurar ...
Sem ttulo (obtido pela Internet)
Marcus Andr
O que impossvel de se fazer com um software:
Construir software jogo de equipe
Stakeholder:
Pessoa que afetada pelo sucesso ou no de um projeto (de
software)
Clientes, usurios (operadores),analistas, projetistas,programadores, ...
possvel constru-los sozinho?
Operating System SLOC (Million)
Red Hat Linux 7.1 30
Debian 3.1 213
Sun Solaris 7.5
Linux kernel 2.6.0 6.0
Windows XP 40
Windows Vista 50
http://blogs.zdnet.com/web2explorer/?p=148
Software em construo
Quais os
problemas?
Cumprimento de prazos
Insatisfao de clientes
Baixa produtividade
Erros
Custos
Complexidade
Pessoas
Desempenho
Mudanas
Como resolver os problemas?
Processos
Mtodos
Ferramentas
Maior relevncia
para o sucesso
Processo de software
Software Engineering: Theory and Practice
Shari Lawrence Pfleeger, Prentice-Hall, 2001Srie de passos que
envolvem atividades, restriese recursos que produzem um resultado
pretendido.Software Engineering: A Practitioners Approach
Roger S. Pressman, McGraw-Hill, 2001Estrutura para as tarefas que
so exigidas para a construo de software de alta qualidade.Processo
uma seqncia de tarefas que, executada
adequadamente, produz o resultado desejado.
Characterizing the Software Process: A Maturity Framework
Watts S. Humphrey, IEEE Software, mar/1988, 73-79
Para se construir uma casa...
preciso um processo!
Processo
Idia
ProblemaNecessidade(uma casa)Objetodesejado
Mapa de tarefas(orientao)
O que fazer?Quando?Quem?
Qual ferramenta?
Qual procedimento?
Qual tecnologia?
Perspectiva ldica
Suposio bem-aceita
Processo bom, resultado bom!Processo ruim, resultado ruim!
Primeiro processo de software
Code and fix
Implcito
DinmicaObter poucos detalhes
Construir software
Validar com usurios
Corrigir problemas
Ferramenta mais antiga
encontrada. Usada h mais de
2 milhes de anos
(provavelmente para cortar alimentos)
http://news.bbc.co.uk/1/hi/sci/tech/336555.stm
Processo catico
Processo mais famoso
Waterfall (fim de 1960)
Grandes projetos
Disciplina + Controle
Um estgio aps outro
IdiaProduzir especificaes detalhadas
Construir o objeto especificado
Foz do Iguau(Iguau waterfalls)
Anlise
Projeto
Codificao
Testes
Instante do
desenvolvimento
Construo de Itaipu
Complexidade, custos,fases previsveis,...
Modelos evolucionrios
ExemplosModelo incremental, espiral, espiral WINWIN, ...
Quando empregar?Produto evolui ao longo do tempo
Requisitos mudam ao longo do desenvolvimento
Verso deve ser introduzida (presso de mercado)
Essncia compreendida (extenses indefinidas)
Exemplo:Anti-vrus, ...
Incremental x Iterativo
Software desejado = ++
IncrementalIterativo
Verso 1Verso 2Verso 3Sequencial
Parte do sistema
(toda a funcionalidade)Todo o sistema
(funcionalidade parcial)
Princpios bem-aceitos
Selecting a Project's Methodology
Alistar Cockburn, IEEE Software, 2000, 64-71
Formalidade
Comunicao
Preguioso social (social loafer)
Pessoas que no se preocupam muito com o grupo, possuem um desempenho pior em grupo do que isoladamente.
Max Ringelmann (1913):
Grupos de homens puxando uma corda, fazem menos esforo do
isolados.
Quanto maior o grupo, mais se afasta de um comportamento
linear.
Preguoso
social
(sozinho)
Preguoso
social
(em equipe)
Processos conhecidos
IBM(r) Unified Process (UP)
Incorpora melhores prticas (incremental)
Microsoft(tm) Synch-and-Stabilize
Sincronizar equipes paralelas diariamente
Estabilizar os incrementos (nightly build process)
Mtodos geiseXtreme Programming (XP)
SCRUM, DSDM, ...
Waterfall
Progressos
visveis
continuamente!
Para melhorar preciso ...
Exige modelo de qualidadepara avaliar e orientar o
melhoramento
Diagnosticar
Modelos mais conhecidos:ISO 9000, CMM, SPICE, Bootstrap, IDEAL, ...
Melhoria de processo de software
difcil
Envolve mudanas na organizao
Exige recursos e habilidades
H grande risco de falha
Software Process Improvement: Blueprints versus Recipes
Ivan Aaen, IEEE Software, oct/2003, 86-93.
O que voc deve fazer
Trade-offs between Productivity and Quality in Selecting
Software Development Practices
Alan MacCormack et al, IEEE Software, oct/2003, 78-85
Criar uma verso logo no incio
Maior produtividade e menor taxa de defeitos
No confunda ...
Formigas so muito disciplinadas
Formigas no so formais
Processos geis como XP (eXtreme Programming)
abandonam formalidade sem perder disciplina
Processo uma questo de f?
Especificaes detalhadas de projetondia: 100%
US: 32%
Projetos divididos em subciclosndia e Europa: 64%
Waterfall like: Japo e US
Taxa de defeitosJapo: 0.020
ndia: 0.263
Europa: 0.225
US: 0.4
Produtividade
Europa e Japo (450 LOC por homem-ms) quase o dobro de ndia e US
Todos empregam revises de software (cdigo e projeto)
Mais produo quando descrio
funcional mais completa.
Software design mais completo
antes de codificar correlaciona
com menor nmero de defeitos.
Waterfall
Software Development Worldwide: The State of the Practice
Michael Cusumano et al., IEEE Software, dez/2003, pgs. 28-34
Requirements Engineering: The State of the Practice
C. Neill et al., IEEE Software, dez/2003, 40-45
Mais de 1/3 usa o
Status quo de pesquisas
Muitas tecnologias disponveis no so usadas pela indstriaDescrio de processo usa dossi em vez de PML
No so empregadas ferramentas
O nmero de artigos e trabalhos em conferncias e jornais est reduzindo
A comunidade encontra-se travada e incapaz de produzir contribuies efetivas
Software Process: A Roadmap
Alfonso Fuggetta, Conference on the Future of Software Engineering,
2000
Tecnologias de processo
Process Modeling Languages (PMLs)Spade, Funsoft net, Sentinel, APPL/A, JIL, ...
FerramentasCSCL (http://www.cscl.com/)
Tassc (http://www.tassc-solutions.com/)
PSP (time tracking)Hourglass (http://hourglass.sourceforge.net/)
Psp-web (http://psp-web.sourceforge.net/)
Dashboard (http://processdash.sourceforge.net/
Timetrack (http://timetrack.sourceforge.net/)
Omega-pi (Development Case) (http://omegapi.sourceforge.net/)
Por que no se usa?
Relao custo-benefcio no satisfatria
Why Software Process Innovations are not Adopted
Stan Rifkin, IEEE Software, aug/2001, 110-112
CMM
mais de 15 anos!
Importncia de fases
Requisitos
Projeto
Codificao
Testes
Implantao
Ei,
aqui!
Qualidade do produto
O que fundamental?
Baseado em dados empricos
Process Maturity Profile: CMMI V1.1
SCAMP V1.1 Class
A Appraisal Results 2004 Mid-Year Update
(technical report CMU-SEI)
fundamental para o sucesso:Gerncia de requisitos
Gerncia de configurao
Planejamento de projeto
Monitoramento e controle de projeto
Como me sinto?
A Software Development Process for Small Projects
Russ & McGregor, IEEE Software, oct/2000, 96-101
Equipe de desenvolvimento
Teletubies
Pequeno e perdido
sugesto
Pense
Todo produto fruto de um processo
Uma teoria:
Controlar a qualidade do processo
introduz qualidade no produto
Software fruto de pessoas (peopleware)
Uma teoria:
Melhorar as habilidades de comunicao,
colaborao, pensamento e de mtodos
Mtodo
Mtodo como construirGrego mthodos: caminho para chegar a um
fimAnlise, projeto, codificao, testes, ...
Padres de bits
Macros
Assembly
Procedimentos
Tipos abstratos de dadosObjetos, objetos de negcio, ...
Orientao a objetos
estende abstrao de
mtodos clssicos
Abstrao crescente
Abordagem
estruturada
Apropriado s necessidades
Mtodos OO no so mais fceis
Alguns mtodos OO:RUP
Coad & Yourdon
OMT
Fusion
Objectory
OEP, Octopus, OOA/RD,
OOBE, OOSE, OOSD,
OOSC, OOram, OOHDM, ...
Nem sempre a escolha fcil
Bibliografia Object-Oriented Analysis and Design: A Comparative Review, Brinkkemper, S.
Mtodos orientados a objetos
Pressa em codificarFalta de planejamentoConhecimento
ingnuo de OO
Problemas no resolvidos pela OO
Onde prefere morar?
ApartamentoCasa
Modelos
Desenho de Leonardo Da Vinci
MquinasRaio XMolde
(arcadadentria)
ArchitetturaAndrea Palladio1570
PartituraPaz
Modelo e objeto modelado no se confundem
Mais um exemplo (o ltimo!?)
0Sculo VII (confirmado)
Indianos h 17000 anos?Primeiro uso em 1655
John Wallis9691082
X2/3+y2/3 = a2/3x4=a2(x2-y2)Qual empreendimento humano
foi desenvolvido para lidar com
a abstrao? Matemtica.
Mathematical Reasoning in
Software Engineering Education
Peter Henderson,
CACM, 09/2003, pgs. 45-50
Desejos, idias, ...ModeloProduto
Eliciarrequisitos
Desenvolver
(+ modelos)Shah Jehan
Taj-MahalMausoluimaginadoMausolumodeladoFbula (sucesso)
CONTA A HISTRIA QUE O MAUSOLU MAIS BONITO DO PLANETA FRUTO DO AMOR DE UM GRANDE GUERREIRO PELA SUA MULHER.
FBULA INVENO MINHA: ESTE GUERREIRO TEVE QUE CONTAR COM ALGUM QUE CONSTRUI O MAUSOLU, OU SEJA, SUAS IDIAS TIVERAM QUE SAIR DA MENTE DELE E, DE FORMA FORMAL OU NO, SER TRANSFERIDA PARA A DE OUTRAS PESSOAS. ENTRE ELES, UM MODELO. NESTA FBULA, ELE IMAGINOU ASSIM O MAUSOLU, QUE FOI ASSIM INTERPRETADO PELA CONSTRUTORA DA POCA E FOI ASSIM REALIZADO. ESTA UMA FBULA QUE SERVE COMO METFORA DE SUCESSO PARA ER.
Modelos, realidade e processo
MundoAnlise & Projeto
RepositriodeModelos
Intermedirio entre o
problema e o
objeto de desejo
Software
Codificao
Concreto
Abstrato
Processo
Lnguas de software
IEEE/EIA 12207
12207.0 12207.1 12207.2UML
Acerca de processo de software se fala
Acerca da modelagem de software se fala
Ferramentas
Plataforma Java versus .Nada
http://java.sun.com/
Facilitar o aprendizado
Universidades precisam fazer
mais pelo ensino de
processos de software!
Software Process in the Classroom: The Capstone Project
Experience
David A. Umphress et al., IEEE Software, oct/2002, 78-85
Se treinamos engenheiros de software, ento
treinamos a programar para depois pensar acerca
de modelagem, design, processo. Aps hbitos ruins
j estarem em uso.
What Software Engineering Can Lear from Soccer
Shari Lawrence Pfleeger, IEEE Software, nov/2002, 64-65
Construo de software
ocorre em mentes!
Prepare-se!
Pgina
Recommended