1. Engenharia do Software I Manuel Menezes de Sequeira DCTI, ISCTE-IUL Manuel.Sequeira@iscte.pt, D6.02 As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
2. Sumário Contactos O que é a engenharia do software e qual a sua importância? Panorâmica da unidade Materiais Avaliação Informações práticas 2009/2010 2 Engenharia do Software I
4. Manuel Menezes de Sequeira Manuel.Sequeira@iscte.pt: correio electrónico e MSN manuel.sequeira.iscte.pt: Skype Gabinete: D6.02 Telemóvel: 962 337 428 http://www.google.com/profiles/MMSequeira 2009/2010 4 Engenharia do Software I
5. O que é a engenharia do software? 2009/2010 5 Engenharia do Software I
6. O que é o software? Programas e documentação associada, incluindo requisitos, modelos de desenho e manuais de utilização 2009/2010 6 Engenharia do Software I
7. O que é o software? Produtos de software Genéricos – Desenvolvidos para fornecer a diferentes clientes; e.g., Excel ou Word Personalizados (custom) – Desenvolvidos para um cliente de acordo com os seus requisitos 2009/2010 7 Engenharia do Software I
8. O que é o software? Novo software Desenvolvimento de novos programas Configuração de sistemas de software genéricos Reutilização de software existente 2009/2010 8 Engenharia do Software I
9. Encontro da NATO em 1968 acerca da crise no software Problemas que ainda não foram resolvidos: Ultrapassagem do orçamento Baixa produtividades Produtos errados Baixa qualidade Manutenção constante – “Se não se fizerem mudanças, tornar-se-á inútil” 2009/2010 9 Engenharia do Software I
10. Caos O software é como uma catedral – primeiro constrói-se, depois reza-se. SamRedwine 2009/2010 10 Engenharia do Software I
11. Engenharia do software Disciplina da engenharia focada em todos os aspectos da produção de software 2009/2010 11 Engenharia do Software I
12. Engenharia do software Engenheiros de software Abordam trabalho de forma sistemática e organizada Utilizam ferramentas e técnicas apropriadas ao problema a resolver, às restrições existentes e aos recursos disponíveis 2009/2010 12 Engenharia do Software I
13. Engenharia do software Não é ciência! Constrói sistemas que outras pessoas usam Thereis no silverbullet Google Search – Tem de ser rápido Gmail – Tem de ser fiável 2009/2010 13 Engenharia do Software I
14. Engenharia do software É um problema tramado Há soluções melhores e soluções piores Não há soluções certas e soluções erradas Não há medidas objectivas de sucesso 2009/2010 14 Engenharia do Software I
15. Comparação com outras engenharias Software entities are more complex for their size than perhaps any other human construct, because no two parts are alike (at least above the statement level). If they are, we make the two similar parts into one… In this respect software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound. Fred Brooks, 1986 2009/2010 15 Engenharia do Software I
16. Engenharia do software vs. informática Informática - Teoria e fundamentos Engenharia do software - Questão prática de desenvolver e fornecer software útil Teorias da informática insuficientes como fundamento da engenharia do software Pelo contrário, física suficiente como fundamento da engenharia electrotécnica 2009/2010 16 Engenharia do Software I
17. Disciplina dominante À medida que o tamanho do software aumenta, a disciplina dominante muda [Feldman] 2009/2010 17 Engenharia do Software I
18. Que ferramentas? Ferramentas intelectuais Ocultação de informação Padrões de desenho … Mais relevantes que ferramentas de software! 2009/2010 18 Engenharia do Software I
19. Que ferramentas? Ferramentas de software Ajudam a aplicar princípios, políticas e melhores práticas Não decidem por nós 2009/2010 19 Engenharia do Software I
20. CASE (Computer-Aided Software Engineering) Ferramentas de software suportando automaticamente actividades do processo de desenvolvimento de software Upper-CASE (actividades iniciais) Recolha de requisitos Desenho Lower-CASE (actividades posteriores) Programação Depuração Teste 2009/2010 20 Engenharia do Software I
21. Processo de software Conjunto de actividades destinadas a desenvolver ou fazer evoluir o software 2009/2010 21 Engenharia do Software I
22. Processo de software Actividades comuns Especificação – O que deve fazer? Quais as restrições ao seu desenvolvimento? Desenvolvimento – Produção do sistema Validação – Verificação do sistema face às pretensões do cliente Evolução – Alteração do software como resposta a alterações nos requisitos 2009/2010 22 Engenharia do Software I
23. Modelo de processo de software Representação simplificada de processo de software, com uma perspectiva específica Perspectivas Fluxo de trabalho (workflow) – Sequência de actividades Fluxo de dados – Fluxo de informação Papéis/acções – Quem faz o quê 2009/2010 23 Engenharia do Software I
24. Modelo de processo de software Modelos genéricos de processo Cascata Desenvolvimento iterativo Engenharia do software baseada em componentes 2009/2010 24 Engenharia do Software I
26. Custos por actividade Waterfall model 25 50 75 100 0 Specification Design Development Integration and testing Iterative development 25 50 75 100 0 Specification Iterative development System testing Component-based software engineering 25 50 75 100 0 Specification Development Integration and testing Development and evolution costs for long-lifetime systems 10 20 30 40 0 System development System evolution 2009/2010 26 Engenharia do Software I
27. Metodologias de engenharia do software Abordagens estruturadas ao desenvolvimento de software incluindo Modelos de sistemas Notações Regras Linhas orientadoras do processo 2009/2010 27 Engenharia do Software I
28. Metodologias de engenharia do software Descrições de modelos Usualmente gráficas Regras Restrições aos modelos do sistema Recomendações e melhores práticas Linhas orientadoras do processo Que fazer e quando 2009/2010 28 Engenharia do Software I
29. Atributos do bom software Cumpre requisitos funcionais e de desempenho do cliente “Mantenível” (possível de manter) – Pode evoluir adaptando-se a requisitos em mutação Fiável – É de confiança Eficiente – Não desperdiça recursos Aceitável pelos utilizadores – Compreensível, fácil de usar e compatível com outros sistemas 2009/2010 29 Engenharia do Software I
30. A reter Engenharia do software Focada em todos os aspectos da produção de software Resulta em produtos de software consistindo em programas e documentação É sobretudo questão de pessoas e não de computadores 2009/2010 30 Engenharia do Software I
31. A reter Processo de software Actividades necessárias para o desenvolvimento de produtos de software Actividades básicas são especificação, desenvolvimento, validação e evolução 2009/2010 31 Engenharia do Software I
32. A reter Metodologias Formas organizadas de produzir software Incluem recomendações sobre Processo a seguir Notações a usar Regras a seguir na descrição do sistema Linhas orientadoras do desenho 2009/2010 32 Engenharia do Software I
33. A reter Ferramentas CASE são sistemas de software desenhados para suportar actividades rotineiras do processo de software Edição de diagramas de desenho Verificação da consistência dos diagramas Registo e controlo dos testes efectuados 2009/2010 33 Engenharia do Software I
34. A ler IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006 Capítulo 1 Capítulo 6 2009/2010 34 Engenharia do Software I
36. Objectivos Visão geral dos vários problemas, métodos, actividades, modelos, etc., associados ao desenvolvimento de software Familiarização com panóplia de diferentes ferramentas e perspectivas permitindo boas escolhas face a problemas concretos 2009/2010 36 Engenharia do Software I
37. Avaliação Avaliação periódica Frequência ≥ 7,5 Projecto ≥ 7,5 Final = 0,5 frequência + 0,5 projecto ≥ 9,5 Exame ≥ 9,5 2009/2010 37 Engenharia do Software I
38. Formato e projecto Uma aula teórica e uma aula prática por semana Projecto Desenvolvido ao longo do semestre Entregue por etapas Realizado em grupos de seis Ênfase no processo e não no produto 2009/2010 38 Engenharia do Software I
39. Tópicos Requisitos Processos de software Desenvolvimento rápido de software Arquitectura de software Design de interfaces com o utilizador Gestão de projectos Verificação e validação Testes de software 2009/2010 39 Engenharia do Software I
40. Materiais e ferramentas IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006 Artigos vários na Web Rational Requisite Pro Bouml, UMLet ou outra aplicação para edição de diagramas UML 2009/2010 40 Engenharia do Software I
41. Mais informação Horário de dúvidas Sextas-feiras, das 13:00 às 18h00 no gabinete D6.02 Avisardocentepor SMS no mínimoumahora antes Todas as aulas no laboratório D1.01 Maisinformaçãoemhttp://www.piazzza.com/ 2009/2010 41 Engenharia do Software I
42. Manuel Menezes de Sequeira Manuel.Sequeira@iscte.pt: correio electrónico e MSN manuel.sequeira.iscte.pt: Skype Gabinete: D6.02 Telemóvel: 962 337 428 http://www.google.com/profiles/MMSequeira 2009/2010 42 Engenharia do Software I