Engenharia de Software
Aula 02
Tpicos da Aula
Engenharia de Software: Conceitos Fundamentais
Motivao e Conceitos Fundamentais Leis de Lehman (Evoluo de Software) Engenharia de Software: Viso Geral Desenvolvimento de sistemas
Vises do sistema (charge) Atividades principais
Eduardo Figueiredo
[Link] figueiredo@[Link]
05 Agosto 2010
Reviso
O que software?
Motivao e Conceitos Fundamentais
Programa de computador + Documentao Classificao fundamental
Produtos genricos (ex. MS Office) Produtos encomendados (ex. Locadora do Z)
Crise do Software (1968)
Custos de hardware caindo Custos do software subindo Avanos em hardware
Permitem desenvolvimento de sistemas cada vez mais complexos
Software est em todo lugar
Resultado (software)
Custos altos, projetos atrasados, sistemas no confiveis, desempenho insatisfatrio, etc...
Desafios de Produzir Software
Confiabilidade Exemplo: Vo Air France Rio - Paris
1. Dados conflitantes (falha nos sensores) 2. Sistema assume o controle (piloto automtico) 3. Piloto tenta reiniciar o sistema (boot) 4. Em 4 minutos o avio mergulha no oceano
The Last Four Minutes of Air France Flight 447. [Link]
Desafios de Produzir Software
Preo e desempenho Celular
Pouco espao na memria Grande variao em caractersticas de aparelhos
Desafios de Produzir Software
Sistemas Crticos Equipamentos mdicos
Extremamente crticos Lidam com vidas
Em Resumo...
O desenvolvimento informal de software no suficiente
Tcnicas e mtodos so necessrios
Algumas dificuldades Caixas eletrnicos
Prejuzos financeiros Heterogeneidade Prazo de entrega Mudana contnua
O que Engenharia de Software?
A Engenharia de Software uma disciplina de engenharia relacionada a todos os aspectos de produo de software. Ian Sommerville Foco no desenvolvimento de software de alta qualidade dentro de custos adequados.
Atender necessidades do cliente
E as outras engenharias?
O que difere Engenharia de Software de outras engenharias?
Software desenvolvido, no fabricado Software no se desgasta Software geralmente produzido para um cliente especfico
Evoluo de Software
Leis de Lehman (Evoluo)
Objetivo de Manny Lehman
Definir uma teoria unificada para evoluo de software
Resultados
Um conjunto de oito leis que governam a evoluo de sistemas
M. M. Lehman. Rules and Tools for Software Evolution Planning and Management. Annals of Software Engineering, 2001.
Lei da Modificao Contnua
Sistemas devem ser continuamente adaptados ou eles se tornam progressivamente menos satisfatrios
Lei da Complexidade Crescente
A medida que um sistema evolui, sua complexidade aumenta, a menos que seja realizado esforo para mant-la ou diminu-la
Lei do Crescimento Contnuo
O contedo funcional de sistemas podem ser continuamente aumentado para manter a satisfao do usurio
Lei da Qualidade Declinante
A qualidade de sistemas parecer estar declinando a menos que eles sejam mantidos e adaptados s modificaes do ambiente
Resultado das Leis = Custo
Custo de Desenvolvimento
0 100 200 300 400
Engenharia de Software: Viso Geral
Custo de Evoluo / Manuteno
Roger Pressman. Engenharia de Software, 6 Edio. McGraw-Hill, 2006.
Eng. de Software em Camadas
A engenharia de software inclui
Processo Mtodos Ferramentas
Ferramentas Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Qualidade de Software
Atributos de um bom software
Facilidade de manuteno Confiana Eficincia Ferramentas Usabilidade, etc.
Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Pode ser organizada em camadas
Processo de Software
Conjunto de atividades (e seus resultados) cujo objetivo o desenvolvimento de software O processo oferece estabilidade, controle e organizao no ciclo de desenvolvimento Atividades principais Ferramentas
Especificao Desenvolvimento Validao Evoluo
Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Mtodos de Software
Abordagens estruturadas para desenvolvimento de software Os mtodos fornecem a tcnica de como fazer Ferramentas Mtodos incluem
Modelos Notaes Regras, etc.
Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Mtodos de Software
Ferramentas
Fornecem apoio automatizado (ou semiautomatizado) para o processo e para os mtodos Exemplo: ferramentas de modelagem do processo
Permitem definir aes, tarefas, produtos, etc. de um modelo de processo
Ferramentas Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Veremos mais detalhes sobre Abordagens estruturadas para desenvolvimento de software mtodos e processos de Os mtodos fornecem a tcnica software na prxima aula de como fazer (e Mtodos incluem parte Ferramentas na segunda do curso)
Modelos Notaes Regras, etc.
Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Ferramentas
Fornecem apoio automatizado (ou semiVeremos algumas ferramentas automatizado) para o processo e para os nas mtodos aulas em laboratrio Exemplo: ferramentas de modelagem do processo
Permitem definir aes, tarefas, produtos, etc. de um modelo de processo
Ferramentas Mtodos de Software Processo de Software Alta Qualidade e Baixo Custo
Diferentes Vises do Desenvolvimento de Software
O que anunciado
O que o vendedor promete
O projeto inicial
O projeto revisado do arquiteto
A primeira verso
A verso entregue ao cliente
O que o cliente queria Desenvolvimento de Software
Atividades Comuns
1. Especificao de requisitos 2. Projeto de Software 3. Implementao 4. Validao do software 5. Evoluo de software
Atividades de Desenvolvimento
1. Especificao de requisitos 2. Projeto de Software 3. Implementao 4. Validao do software 5. Evoluo de software
Especificao de Requisitos
Um sistema de programao deve satisfazer as necessidades de seus usurios
Tais necessidades so expressas na forma de requisitos
Especificao de Requisitos
Inclui quatro fases principais
Estudo de viabilidade Elicitao (ou anlise) de requisitos Especificao de requisitos Validao dos requisitos
Requisito = ao que deve ser executada pelo sistema
Ex: registrar as notas dos alunos, calcular a mdia final, etc.
Especificao de Requisitos
Atividades de Desenvolvimento
1. Especificao de requisitos
Inclui quatro fases principais
Estudo de viabilidade Elicitao (ou anlise) de requisitos Especificao de requisitos Validao dos requisitos
2. Projeto de Software 3. Implementao 4. Validao do software 5. Evoluo de software
Veremos mais detalhes sobre requisitos na aula 4.
Projeto de Software
Dividido em duas etapas
Projeto Preliminar define a estrutura modular do software, as interfaces e as estruturas de dados utilizadas
Modelo de Arquitetura
Projeto de uma Casa
Projeto Detalhado descreve detalhadamente cada mdulo definido no projeto preliminar
Modelo de Projeto
Projeto de Software
Projeto de Software
Veremos mais detalhes sobre projeto de software a partir da aula 7.
Atividades de Desenvolvimento
1. Especificao de requisitos 2. Projeto de Software 3. Implementao 4. Validao do software 5. Evoluo de software
Implementao
A implementao segue as definies da fase anterior
Transcreve as decises de projeto arquitetural e detalhado para uma linguagem de programao
Abordado em outras disciplinas
AEDS 1 e 2, POO, Programao de Computadores, Programao Modular, etc.
Atividades de Desenvolvimento
1. Especificao de requisitos 2. Projeto de Software 3. Implementao 4. Validao do software 5. Evoluo de software
Teste e Validao
Tem por objetivo garantir que o sistema satisfaa os requisitos Consiste da realizao de alguns tipos de testes para encontrar erros A inexistncia de erros no representa a adequao operacional do sistema
Deve ser feita a validao com o cliente
Validao do software
Fase de depurao e testes
Localizar Erro Projetar Reparo
Tipos de Testes
Teste de Componente (unitrio)
Garantir que um componente funciona
Teste de Sistema (integrao)
Garantir que dois ou mais componentes funcionam juntos
Re-testar
Reparar Erro
Teste de Aceitao (validao)
Garantir que o sistema faz o que o cliente deseja
Atividades de Desenvolvimento
1. Especificao de requisitos 2. Projeto de Software 3. Implementao 4. Validao do software 5. Evoluo de software
Evoluo ou Manuteno
O custo de manuteno geralmente muito maior que o custo de desenvolvimento Cada vez menos sistemas so desenvolvidos do zero
Sistemas so desenvolvidos/adaptados a partir de outros sistemas
Faz mais sentido considerar desenvolvimento e manuteno como atividades contnuas
Resumo Reviso da Aula
Definies bsicas de software e engenharia de software Alguns desafios da engenharia de software Porque a engenharia de software importante Algumas atividades comuns ao desenvolvimento de software
Especificao, projeto, implementao, validao e evoluo
Matria dada nesta aula
Ian Sommerville. Engenharia de Software, 8 Edio. Pearson Education, 2007.
Captulo 1, Seo 1.1 Perguntas sobre Eng. de Software (pginas 3 a 10) Captulo 2, Seo 2.2 Engenharia de Sistemas (pginas 17 a 23)
Em sua opinio...
1.
2. 3.
4.
Por que leva tanto tempo para concluir um software? Por que os custos so to altos? Por que no achamos todos os erros antes de entregar o software ao cliente? Por que gasta-se tantos recursos para manter sistemas existentes (antigos)?
10