Como desenvolver-software

download Como desenvolver-software

If you can't read please download the document

Transcript of Como desenvolver-software

Processo de Software

Como desenvolver software?

Copyright 2010Prof. Fbio Nogueira de [email protected], 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