Como desenvolver software? Tecnologias, Ferramentas e Processos
Esta palestra fornece “visões”
Por que software? Porque a sociedade precisa Virtualmente quase tudo faz uso de software O que não usa software? Diretamente ou não?
Motivação Dinheiro (grandes empresas do planeta) Microsoft
IBM
Oracle
CA, ... Microsoft Empresa de maior valor de mercado do mundo
50000 funcionários
Mais de 1000 aplicam + de $1.000.000 em bolsas http://www.forbes.com/
Abordagens de construção http://www.swebok.org
Desnecessário Obrigatório ES se aplica a todos os casos?
Quando se aplica, o objetivo é... Engenharia de Software Produzir software economicamente que atende necessidades dos usuários
É difícil construir software? Modelar construções conceituais é a essência.
Representação é acidental.
Propriedades inerentes: Complexidade  (não linear com o tamanho)
Modificabilidade  (infinitamente maleável)
Invisibilidade Esperanças: Comprar versus construir
Construção de protótipos (def. de requisitos é difícil)
Desenvolvimento incremental (crescer, não 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 ... O que é impossível de se fazer com um software:
Construir software é jogo de equipe Stakeholder: Pessoa que é afetada pelo sucesso ou não de um projeto (de software) Clientes, usuários (operadores), analistas, projetistas, programadores, ...
É possível 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 construção Quais os problemas?
Cumprimento de prazos Insatisfação de clientes Baixa produtividade Erros Custos Complexidade Pessoas Desempenho Mudanças
Como resolver os problemas? Processos
Métodos
Ferramentas Maior relevância para o sucesso
Processo de software Processo é uma seqüência 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 Objeto desejado Mapa de tarefas (orientação) O que fazer? Quando? Quem? Qual ferramenta? Qual procedimento?   Qual tecnologia?
Perspectiva lúdica
Suposição bem-aceita
Primeiro processo de software Code and fix
Implícito
Dinâmica Obter poucos detalhes
Construir software
Validar com usuários

Como desenvolver-software

Notas do Editor

  • #2 Não estou aqui para dizer como fazer, não se trata de uma prescrição, mas uma descrição. Em artigo de dezembro da IEEE Software o editor coloca muito bem esta questão. Muitos pesquisadores não conhecem realmente o que se passa na prática e o que é pior, eles pensam que sabem. A idéia é simples. Praticantes estão imersos. É preciso emergir e verificar o que se passa ao redor. Visto que imergir é uma tarefa na qual os praticantes são imbatíveis. Por outro lado, coloco-me aqui na posição de pesquisador e assumo a postura de que “não sei o que se passa na prática”. Com esta postura, esta apresentação, ao menos conceitualmente tenta ser livre de preconceitos e aberta a qualquer tipo de debate.
  • #47 CONTA A HISTÓRIA QUE O MAUSOLÉU MAIS BONITO DO PLANETA É FRUTO DO AMOR DE UM GRANDE GUERREIRO PELA SUA MULHER. FÁBULA É INVENÇÃO MINHA: ESTE GUERREIRO TEVE QUE CONTAR COM ALGUÉM QUE CONSTRUI O MAUSOLÉU, OU SEJA, SUAS IDÉIAS TIVERAM QUE SAIR DA MENTE DELE E, DE FORMA FORMAL OU NÃO, SER TRANSFERIDA PARA A DE OUTRAS PESSOAS. ENTRE ELES, UM MODELO. NESTA FÁBULA, ELE IMAGINOU ASSIM O MAUSOLÉU, QUE FOI ASSIM INTERPRETADO PELA CONSTRUTORA DA ÉPOCA E FOI ASSIM REALIZADO. ESTA É UMA FÁBULA QUE SERVE COMO METÁFORA DE SUCESSO PARA ER.