Introducao
-
Upload
fabio-nogueira-de-lucena -
Category
Technology
-
view
683 -
download
1
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 ?