Introducao

download Introducao

If you can't read please download the document

Transcript of Introducao

  • 1. Copyright 2011 Fbio Nogueira de Lucena [email_address] Construir Software Idias Anlise Projeto Cdigo

2. Contedo

  • Quem cuida da criao de software

3. Engenharia de software (perspectivas) 4. Existem problemas no mundo 5. Elementos de uma soluo computacional 6. Atividades e dependncias entre elas para uma soluo 7. Problema, soluo e cdigo 8. Por que anlise, projeto e codificao? 9. Linguagens empregadas 10. Problemas de desenvolvimento e regras de ouro 11. Estmulo econmico para construir software 12. Reviso 13. Quem cuida da criao de software Esplanada dos Ministrios Qual o percurso para software? Engenharia Civil Engenharia de Software Prxima da idia (1957) Resultado (2000) 14. Engenharia de software (perspectivas)

  • Algumas perspectivas
  • Atividades

15. Artefatos 16. Pessoas 17. Processo 18. Mtodos 19. Projeto 20. Qualidade nfase em desenvolvimento

    • Alguns artefatos
  • 21. Algumas atividades
  • No aborda processo

22. No aborda gerncia de projeto Esta apresentao: 23. Reconhea a existncia de problemas

  • Guerras

24. Baixa qualidade de servios prestados 25. Custos elevados de produo 26. Cura de muitas enfermidades 27. ... Alguns podem ser resolvidos por computador Alvo da computao Problemas existentes 28. Computao pode resolver problemas Mas no todos os problemas 29. Elementos de soluo computacional Software no s cdigo! DADOS CDIGO DOCUMENTOS 30. Atividades necessrias...

  • Analisando... Problema definido

31. Projetando... Modelo de soluo que emprega computador 32. Implementando... Cdigo obtido a partir do projeto ... de toda soluo computacional Soluo computacional Implementao Projeto Anlise 33. Dependncia entre atividades

  • Primeirocaracterizeoproblema Sem problema no h o que fazer

34. Depoiscrieoprojeto(a soluo computacional) Etapa laboriosa, extensa.Deve-se adquirir habilidades para tal. 35. Convertao projeto emcdigo Sem projeto no h o que codificar. Considere a mquina conforme a liberdade possvel. Problema Soluo Cdigo Anlise Projeto Implementao 36. Problema

  • O que preciso?
  • Compreend-lo

Como se faz?

  • Analisando-o

Como saber se foi compreendido?

  • Validando com os usurios (clientes)

Antes da anlise Aps a anlise idealmente Anlise Atividade mais difcil 37. Projeto

  • O que preciso?
  • Cri-lo (exige registro)

Como se faz?

  • Princpios de projeto

38. Exercitando o raciocnio lgico Como saber se est correto?

  • Verificando a soluo

39. Algoritmo (parte de projeto detalhado)

  • Abstrao de um programa

40. Seqncia de passos de execuo finita 41. Produz um resultado esperado Algoritmo = modelo de soluo computacional Qualquer seqncia de passos cuja execuo d origem a um resultado desejado em tempo finito ... exemplo de algoritmo! 42. Projeto no s algoritmo

  • Definio de partes da soluo

43. Mecanismo de interao entre as partes 44. Influencia vrias qualidades ...

  • Facilidade de manuteno

45. Desempenho e outras ... Projetista de software Criao dealgoritmos Atividades de projeto de software Sem o projeto, no h o que codificar! 46. Cdigo Est para Energia Gasolina Lmpada Carro Assim como ... Programa Est para Computador 47. Programa

  • O que preciso?
  • Linguagem de programao

48. Compreender algoritmo 49. Conhecer o computador Como se faz?

  • Reescreva o projeto na linguagem de programao

Como saber se est correto?

  • Verificando e Validando (V&V)

No razovel escrever programa sem a existncia de uma soluocorrespondente. 50. Algoritmo e programa correspondente Algoritmo Permutacao(p,S) Se S possui um caractere ento Imprima p seguido de S Seno para i0 at (n-1) faa SS c i pp + c i Permutacao(p,S) fim para fim se #include void Permutacao(char* p, char* S) { char Slinha[10], pLinha[10]; int c; if (strlen(S) == 1) printf("n%s%s",p,S); else for (c = 0; c < strlen(S); c++) { memset(Slinha,0,10); memset(pLinha,0,10); strncpy(Slinha,S,c); strcat(Slinha,S+c+1); strcat(pLinha,p); strncat(pLinha,S+c,1); Permutacao(pLinha,Slinha);} } Algoritmo (projeto) Programa em C Acrescenta detalhes da linguagem, computador ... 51. Por que anlise, projeto e codificao? Problema Projeto Software Como poderia ser diferente? Anlise Codificao Entender o problema Definir uma soluo Escrever o software conforme a soluo 52. SWEBOK

  • Requisitos

53. Projeto 54. Construo 55. Testes 56. Manuteno 57. Gerncia de Configurao

  • Gerncia de Projeto

58. Processos 59. Qualidade 60. Mtodos e Ferramentas 61. Uma viso bem geral

  • Requisitos (o que fazer?)

62. Projeto (como fazer?) 63. Construo (contruir) 64. Testes (localizar problemas) 65. Manuteno (evoluir) 66. Gerncia de Configurao (gerir artefatos) 67. Gerncia de Projeto (coordenar aes) 68. Processos (passos e produtos) 69. Qualidade (atender necessidades) 70. Mtodos e Ferramentas (instrumentos) 71. Ordem

  • Requisitos antes de Projeto

72. Projeto antes de Construo 73. Construo antes de Testes (exceto TDD) 74. Manuteno aps Construo 75. Qualidade por todo o projeto 76. Gerncia de Projeto por todo o projeto 77. Gerncia de configurao por todo o projeto 78. Processo por todo o projeto 79. Mtodos e ferramentas por todo o projeto 80. Algumas esto sempre em execuo

  • Processo

81. Gerncia de Configurao 82. Mtodos e Ferramentas 83. Gerncia de Projeto 84. Qualidade 85. Requisitos

  • No tpico realizado apenas no incio de um projeto (ou seja, exige gerncia)

86. Requisitos podem ser funcionais

  • Calcular a nota final como mdia das notas

Requisitos podem ser no funcionais

  • Calcular pelo menos 1000 notas finais em 5s

87. Projeto

  • Compreende:
  • Arquitetura

88. Projeto detalhado Arquitetura

  • Principais componentes

89. Partes da soluo e como interagem Projeto detalhado

  • Detalhar o suficiente para permitir a construo

90. Construo

  • Criao do cdigo

91. Testes de unidade 92. Testes de integrao 93. Depurao 94. Testes

  • Sempre implica na execuo de programa

95. Ou seja, anlise esttica de cdigo no teste 96. So finitos 97. Deve ser possvel definir resultados aceitveis para uma dada entrada 98. Manuteno

  • Software deve evoluir
  • Atender novos requisitos

99. Corrigir erros Segundo o padro IEEE Standard for Software Maintenance, IEEE 1219

  • modificao de um software, aps entrega, para corrigir falhas, melhorar desempenho ou outros atributos, ou para se adaptar a um ambiente modificado.

100. Gerncia de Configurao

  • O desenvolvimento de software gera vrios artefatos

101. Artefatos evoluem ao longo do tempo 102. Gerncia de Configurao

  • Identifica artefatos (itens de configurao)

103. Controla mudanas nos artefatos Baseline

  • Conjunto de itens de configurao aprovado

104. Serve para referncia posterior 105. Ger ncia de Projeto

  • O desenvolvimento de um software pode envolver um ou mais projetos

106. Manuteno pode envolver um ou mais projetos 107. Gerncia visa: planejar, dirigir, acompanhar e fechar um projeto

  • Estimar esforo, alocar recursos, gerenciar riscos, contratar profissionais, ...

108. Processos de software

  • Atividades realizadas por uma organizao para produzir ou manter software

109. A norma 12207 apresenta vrios processos 110. MPS.BR visa a melhoria de processo do software brasileiro 111. Mtodos e ferramentas

  • Ambientes integradas de desenvolvimento, compiladores, ferramentas para builds,

112. Mtodos orientados a objetos, mtodos formais, ... 113. Qualidade

  • Satisfazer o uso pretendido do produto

114. Requisitos de software definem as caractersticas desejadas de qualidade 115. Ou seja, pode ser interpretada como conformidade aos requisitos 116. Empregadas no desenvolvimento de software Linguagens 117. Linguagens naturais

  • Portugus

118. Ingls 119. Espanhol 120. Japons, ... 121. Linguagens para computadores

  • Padres de bits 01110101000110110111...

122. AssemblyLinguagem de montagem 123. Linguagens de alto nvel Delphi, VB, C++, Java 124. ?? Mais abstrao = maior produtividade Abstrao crescente 125. Linguagens ao longo do tempo Linguagens naturais Linguagem de mquina Mais abstrao Menos abstrao Linguagem algortmica Linguagem de programao Crebro Crebro Compilador UML Fronteira homem-mquina 126. Outras questes relevantes do desenvolvimento de programas Processo de desenvolvimento 127. Problemas de desenvolvimento Pressa em codificar Falta de planejamento Conhecimento ingnuo 128. Suposio bem-aceita Processo bom, resultado bom! Processo ruim, resultado ruim! Desenvolver programas exige trabalho em equipe 129. Ausncia de disciplina Ausncia de disciplina = usurio insatisfeito No confundir com ausncia de formalidade. Formigas so informais e disciplinadas. 130. Ferramentas boas so suficientes? Bons instrumentos fazem boa msica? Bom prato obtido com um bom fogo? Emprego daltima tecnologia No necessariamente 131. Estmulo ...

  • Microsoft
  • Empresa de maior valor de mercado do mundo

132. 50000 funcionrios Wall-Mart

  • Quinta maior

133. Quase 1,5 milho de funcionrios Comparao:

  • Coca-cola est em 16o.

Software bom = Dinheiro Dados obtidos emwww. forbes .compara 2003 134. Voc acredita nisso? No existe soluo mgica! Lmpada mgica para construo de software. COMPRE AGORA! Pague s em 60 dias! 135. Consideraes finais

  • Software bom difcil de ser construdo

136. Desenvolver programas exige raciocnio 137. Envolve atividades e artefatos 138. Envolve vrias linguagens 139. Envolve anlise, projeto 140. Envolve implementao Desenvolver software bom = muito esforo ?