20

Click here to load reader

02 Introdução à engenharia de software - conceitos fundamentais

Embed Size (px)

DESCRIPTION

Tópicos para discussão em sala -

Citation preview

Page 1: 02 Introdução à engenharia de software - conceitos fundamentais

Introdução à Engenharia de

Software

Conceitos fundamentais

Page 2: 02 Introdução à engenharia de software - conceitos fundamentais

A situação do software

A sofisticação do software ultrapassou nossa

capacidade de construir um software que extraia o

potencial do hardware.

Nossa capacidade de construir programas não pode

acompanhar o ritmo da demanda de novos

programas.

Nossa capacidade de manter os programas

existentes é ameaçada por projetos ruins e recursos

inadequados

Page 3: 02 Introdução à engenharia de software - conceitos fundamentais

A grandeza do software na atualidade

A economia de todas as nações desenvolvidas são dependentes de software

Muitos sistemas são controlados por software

Veja – Agosto 2009

Page 4: 02 Introdução à engenharia de software - conceitos fundamentais

Custos de software

Os custos de software geralmente determinam os

custos de sistemas.

Em um PC:

Windows 7 Professional – R$629,00

MS Office 2010 Professional – R$1399,00

MS Visual Studio .NET 2010 Professional – R$1899,00

Licença de acesso para um usuário SAP – R$999,00 (por

ano!)

O maior custo de software é a manutenção.

A engenharia de software se preocupa com

custo/benefício (ROI)

Page 5: 02 Introdução à engenharia de software - conceitos fundamentais

Qualidade — Terminologias

Erro: erro humano

Defeito: resultado do erro evidenciado em algum

desenvolvimento ou manutenção do produto

Falha: divergência entre o comportamento

requerido para o sistema e o comportamento real.

Page 6: 02 Introdução à engenharia de software - conceitos fundamentais

Perguntas frequentes

O que é software?

Qual a diferença entre Engenharia de Software e Ciências da Computação?

Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas?

O que é um processo de software

O que é um modelo de processo de software?

Quais são os custos da Engenharia de Software?

O que são métodos de Engenharia de Software?

O que é CASE (Computer-Aided Software Engineering)

Quais são as características de um software bom?

Quais são os principais desafios da Engenharia de Software?

Page 7: 02 Introdução à engenharia de software - conceitos fundamentais

O que é Software?

Programas de computador e documentação associada.

Produtos de Software podem ser, basicamente: Genéricos: produzidos e vendidos no mercado a

qualquer cliente

Produtos sob encomenda: são desenvolvidos para um cliente em particular – MySoftware.

Page 8: 02 Introdução à engenharia de software - conceitos fundamentais

Participantes do desenvolvimento de

software sob encomenda

Page 9: 02 Introdução à engenharia de software - conceitos fundamentais

Qual é a diferença entre Engenharia de

Software e Ciências da Computação?

A Ciência da Computação

se preocupa com as

teorias e os métodos

fundamentais.

A Engenharia de Software

se dedica aos problemas

práticos da produção de

software.

As teorias da Ciência da

Computação não são

suficientes por si só.

Page 10: 02 Introdução à engenharia de software - conceitos fundamentais

Qual é a diferença entre Engenharia de

Software e Engenharia de Sistemas?

Engenharia de sistemas se ocupa de todos os

aspectos de desenvolvimento e da evolução de

sistemas baseado em computadores, incluindo

hardware, software e engenharia do processo.

A Engenharia de Software é parte deste processo.

Engenheiros de sistemas estão envolvidos na

especificação do sistema, na definição de sua

arquitetura geral, integração e desenvolvimento.

Page 11: 02 Introdução à engenharia de software - conceitos fundamentais

O que é um processo de software?

Um conjunto de atividades cujo objetivo é o

desenvolvimento ou evolução do software.

Atividades comuns a todo processo de

desenvolvimento de software são:

Especificação – o que o sistema deveria fazer (ou não -

constraints);

Desenvolvimento – produção do software;

Validação – verificação de que o software é o que o

cliente quer;

Evolução – modificações do software em resposta às

mudanças de requisitos.

Page 12: 02 Introdução à engenharia de software - conceitos fundamentais

O que é um modelo de processo de software?

Uma descrição simplificada de um processo de software, que é representada a partir de uma perspectiva específica.

Exemplos de tipos de modelos de processos de software: Workflow – sequência de atividades;

Fluxo de dados ou atividades – demonstra o fluxo da informação;

Papel/Ação – quem faz o que.

Modelos genéricos de desenvolvimento Waterfall;

Desenvolvimento evolucionário;

Especificação formal;

Modelagem a partir de componentes reutilizáveis.

Page 13: 02 Introdução à engenharia de software - conceitos fundamentais

Quais são os custos de Engenharia de

Software?

De maneira geral: 60% dos custos são custos de desenvolvimento;

40% são custos de teste.

Para software personalizado, o custo de evolução frequentemente ultrapassa os custos de desenvolvimento.

Custos podem variar, dependendo do tipo de software que está sendo desenvolvido e os requisitos de atributos como performance e confiabilidade.

A distribuição dos custos depende do modelo de desenvolvimento que está sendo utilizado.

Page 14: 02 Introdução à engenharia de software - conceitos fundamentais

O que são métodos de Engenharia de

Software?

Uma abordagem estruturada para o

desenvolvimento de software que inclui:

Descrição de modelos – gráficos, textuais, documentais,

etc.

Regras – restrições aplicadas a modelos de sistemas.

Padrões de design - recomendações de melhores

práticas.

Guias de processo – quais atividades seguir,

Page 15: 02 Introdução à engenharia de software - conceitos fundamentais

O que é CASE (Computer-Aided Software

Engineering)?

Sistema de software cujo objetivo é fornecer suporte

automatizado para as atividades de processo de

software. Sistemas CASE são frequentemente

utilizados para apoiar a aplicação dos métodos.

Page 16: 02 Introdução à engenharia de software - conceitos fundamentais

Quais são os atributos de um bom

software?

Atender aos requisitos solicitados pelo usuário

Performance

Manutenibilidade – o software precisa evoluir para

atender a novos requisitos.

Confiabilidade – em caso de falha o software não

pode causar danos significativos ao usuário.

Eficiência – usar os recursos do sistema com

parcimônia.

Usabilidade – o software deve poder ser utilizado

pelos usuários para os quais ele foi desenhado.

Page 17: 02 Introdução à engenharia de software - conceitos fundamentais

Quais são os principais desafios

enfrentados pela Engenharia de Software?

Sistemas legados – antigos, mas valiosos.

Heterogeneidade – diversidade crescente de

plataformas, de software distribuído, mistura muito

grande de software e hardware.

Demanda x Tempo de entrega

Page 19: 02 Introdução à engenharia de software - conceitos fundamentais

Construindo uma casa versus um software

A casa

Identificar e analisar os requisitos

Produzir e documentar todo o projeto

Detalhar as especificações

Identificar e projetar os componentes

Construir cada componente

Testar cada componente

Integrar os componentes

Fazer as modificações finais

Manutenção contínua

O software

Análise e definição dos requisitos

Projeto do sistema

Projeto do programa

Escrever os programas

Testes das unidades

Teste de integração

Teste do sistema

Entrega do sistema

Manutenção

Page 20: 02 Introdução à engenharia de software - conceitos fundamentais

Os papéis na equipe de desenvolvimento