Sei sulla pagina 1di 10

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
http://www.dcc.ufmg.br/~figueiredo figueiredo@dcc.ufmg.br
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. http://www.spiegel.de/international/world/0,1518,679980,00.html

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

Potrebbero piacerti anche