INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1...

50
INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/ 2005 1 Engenharia de Software Engenharia de Software Unidade VI Engenharia de Software

Transcript of INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1...

Page 1: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

1Engenharia de SoftwareEngenharia de Software

Unidade VI

Engenharia de Software

Page 2: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

2Engenharia de SoftwareEngenharia de Software

HISTÓRICO

A Engenharia de Software (ES) surgiu em meados dos anos 70 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes e interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.

 Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantido suas qualidades. Além disto, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento.

Page 3: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

3Engenharia de SoftwareEngenharia de Software

MITOS E REALIDADES

MITOS ADMINISTRATIVOSMITOS ADMINISTRATIVOS

Mito: Já temos um manual repleto de padrões e procedimentos para a construção de software. Isso não oferecerá ao meu pessoal tudo o que eles precisam saber?

Realidade: O manual de padrões pode muito bem existir, mas será que é usado? Os profissionais de software têm conhecimento de sua existência? Ele reflete a moderna prática de desenvolvimento de software? É completo? Em muitos casos a respostas a todas estas perguntas é não.

Page 4: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

4Engenharia de SoftwareEngenharia de Software

MITOS E REALIDADES . . .

MITOS DO CLIENTEMITOS DO CLIENTE

Mito: Uma declaração geral dos objetivos é suficiente para se começar a escrever programas – podemos preencher os detalhes mais tarde.

Realidade: Uma definição inicial ruim é a principal causa dos fracassos dos esforços de desenvolvimento de software. Uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação é fundamental.

Page 5: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

5Engenharia de SoftwareEngenharia de Software

MITOS E REALIDADES . . .

MITOS DO CLIENTE . . .MITOS DO CLIENTE . . .

Mito: Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.

Realidade: É verdade que os requisitos de software se modificam, mas o impacto da mudança varia de acordo com o tempo em que ela é introduzida.

Page 6: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

6Engenharia de SoftwareEngenharia de Software

MITOS E REALIDADES . . .

MITOS DO PROFISSIONALMITOS DO PROFISSIONAL

Mito: Enquanto o programa não estiver funcionando não existirá maneira de avaliar sua qualidade.

Realidade: A revisão técnica formal pode ser aplicada desde o começo de um projeto.

Page 7: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

7Engenharia de SoftwareEngenharia de Software

MITOS E REALIDADES . . .

MITOS DO PROFISSIONAL . . .MITOS DO PROFISSIONAL . . .

Mito: A única coisa a ser entregue em um projeto bem sucedido é o programa funcionando.

Realidade: O programa funcionando é apenas uma parte de uma configuração de software. A documentação (plano, especificação de requisitos, estrutura de dados, especificação de teste, etc.) fornece um guia para facilitar a manutenção de software.

Page 8: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

8Engenharia de SoftwareEngenharia de Software

PARADIGMAS DA ENGENHARIA DE SOFTWARE

Não existe uma abordagem em particular que seja a melhor solução para o desenvolvimento de software, no entanto:

a combinação de métodos abrangentes para todas as fases de desenvolvimento;

a utilização de ferramentas para automatizar esses métodos;

a criação de blocos de construção mais consistentes;

a aplicação das melhores técnicas de qualidade; e,

a filosofia de coordenação, controle e administração;

darão o encaminhamento das bases da engenharia de software.

Page 9: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

9Engenharia de SoftwareEngenharia de Software

EVOLUÇÃO DO SOFTWARE

19501950 19601960 19701970 19801980 19901990 20002000

Os primeiros anos:Os primeiros anos:

• orientação batch

• distribuição limitada

• software customizado

A segunda era:A segunda era:

• multiusuário

• tempo real

• bancos de dados

• produto de software

• software house

A terceira era:A terceira era:

• sistemas distribuídos

• “inteligência” embutida

• hardware de baixo custo

• impacto de consumo

• microprocessadores e computadores pessoais

A quarta era:A quarta era:

• sistemas de desk-top poderosos

• tecnologias orientadas a objeto

• sistemas especialistas

• computação paralela

Page 10: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

10

Engenharia de SoftwareEngenharia de Software

EVOLUÇÃO DO SOFTWARE . . .

OS PRIMEIROS ANOS:OS PRIMEIROS ANOS:

software projetado sob medida para cada aplicação;

software com distribuição relativamente limitada;

o produto software estava em sua infância;

a maior parte dos softwares era desenvolvida e usada pela própria empresa;

quem escrevia e colocava em funcionamento, também tratava dos defeitos; e,

por causa do ambiente de software personalizado, o projeto era um processo implícito, realizado no cérebro de alguém, e a documentação muitas vezes não existia.

Page 11: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

11

Engenharia de SoftwareEngenharia de Software

EVOLUÇÃO DO SOFTWARE . . .

A SEGUNDA ERA:A SEGUNDA ERA:

multiprogramação e sistemas multiusuários introduziram novos conceitos na interação homem-máquina;

as técnicas interativas abriram um novo mundo de aplicações e novos níveis de sofisticação de software e hardware;

sistemas de tempo real podiam coletar, analisar e transformar dados de múltiplas fontes;

os avanços da armazenagem online levaram à primeira geração de sistemas de gerenciamento de banco de dados; e,

surgimento das “software houses”.

Page 12: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

12

Engenharia de SoftwareEngenharia de Software

EVOLUÇÃO DO SOFTWARE . . .

A TERCEIRA ERA:A TERCEIRA ERA:

os sistemas distribuídos - múltiplos computadores, cada um executando funções concorrentemente e comunicando-se um com o outro – aumentaram a complexidade dos sistemas baseados em computador;

as redes globais e locais, as comunicações digitais e a crescente demanda de acesso “instantâneo” a dados exigem muito dos desenvolvedores de software;

uso generalizado de microprocessadores e computadores pessoais; e,

produtos inteligentes: de automóveis a forno de microondas, de robôs industriais a diagnóstico de soro sangüíneo.

Page 13: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

13

Engenharia de SoftwareEngenharia de Software

EVOLUÇÃO DO SOFTWARE . . .

A QUARTA ERA:A QUARTA ERA:

tecnologias orientadas a objetos;

técnicas de quarta geração;

sistemas especialistas;

inteligência artificial; e,

software de rede neural artificial abrindo possibilidades para o reconhecimento de padrões e para capacidades de processamento de informações semelhantes às humanas.

Page 14: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

14

Engenharia de SoftwareEngenharia de Software

EVOLUÇÃO DO SOFTWARE . . .

A QUINTA ERA (?):A QUINTA ERA (?):

a sofisticação do software ultrapassou nossa capacidade de construir um software que extraia o potencial do hardware;

a capacidade de construir programas não acompanha o ritmo da demanda de novos programas;

a capacidade de manter os programas existentes é ameaçada por projetos ruins e recursos inadequados; e,

as práticas de engenharia de software se fortalecem.

Page 15: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

15

Engenharia de SoftwareEngenharia de Software

PERSPECTIVA INDUSTRIAL

Por que demora tanto tempo para que os programas sejam concluídos?

Por que os custos são tão elevados?

Por que não descobrimos todos os erros antes de entregarmos o software aos nossos clientes?

Por que temos dificuldade em medir o progresso enquanto o software está sendo desenvolvido?

Essas e muitas outras perguntas são uma manifestação da preocupação relativa ao software e à maneira pela qual ele é desenvolvido, fortalecendo as práticas de engenharia de software.

Page 16: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

16

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE

O processo de desenvolvimento de software contém três fases genéricas independente do paradigma de software escolhido. São elas:

definição;definição;

o quê? ?

desenvolvimentodesenvolvimento; e,

como?

manutençãomanutenção.

mudanças (o quê? e como?)

Page 17: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

17

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

DEFINIÇÃODEFINIÇÃO

A fase de definição focaliza o quê. Ou seja, durante a fase de definição, o desenvolvedor de software tenta identificar quais informações têm de ser processadas, qual função e desempenho são desejados, quais interfaces devem ser estabelecidas, quais restrições de projeto existem e quais critérios de validação são exigidos para se definir um sistema bem-sucedido. Esta fase apresenta as seguintes etapas:

análise de sistemaanálise de sistema;

planejamento do projeto de softwareplanejamento do projeto de software; e,

análise de requisitosanálise de requisitos.

Page 18: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

18

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

DEFINIÇÃO . . .DEFINIÇÃO . . .

Análise de sistemaAnálise de sistema

define o papel de cada elemento num sistema baseado em computador, atribuindo o papel que o software desempenhará.

Planejamento do projeto de softwarePlanejamento do projeto de software

uma vez definido o escopo do software, os riscos são analisados, as atividades e os recursos são definidos, os prazos são estabelecidos e os custos são estimados.

Page 19: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

19

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

DEFINIÇÃO . . .DEFINIÇÃO . . .

Análise de requisitosAnálise de requisitos

definição detalhada do domínio da informação e da função do software.

Page 20: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

20

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

DESENVOLVIMENTODESENVOLVIMENTO

A fase de desenvolvimento focaliza o como. Ou seja, o desenvolvedor de software tenta definir como a estrutura de dados e a arquitetura de software têm de ser projetadas, como os detalhes procedimentais têm de ser implementados, como projeto será traduzido numa linguagem de programação e como os testes têm de ser realizados. Esta fase apresenta as seguintes etapas:

projeto de softwareprojeto de software;

codificaçãocodificação; e,

realização de testes de softwarerealização de testes de software.

Page 21: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

21

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

DESENVOLVIMENTO . . .DESENVOLVIMENTO . . .

Projeto de softwareProjeto de software

traduz os requisitos do software num conjunto de representações que descrevem a estrutura de dados, a arquitetura, o procedimento algorítmico e as características de interface.

CodificaçãoCodificação

as representações do projeto devem ser convertidas numa linguagem de programação convencional ou numa linguagem não-procedimental usada no contexto do paradigma 4GT (técnicas de quarta geração).

Page 22: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

22

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

DESENVOLVIMENTO . . .DESENVOLVIMENTO . . .

Realização de testes do softwareRealização de testes do software

O software deve ser testado para que se possa descobrir defeitos de função, de lógica e de implementação.

Page 23: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

23

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

MANUTENÇÃOMANUTENÇÃO

A fase de manutenção concentra-se nas mudanças que estão associadas à correção de erros, adaptações exigidas à medida que o ambiente do software evolui e ampliações produzidas por exigências variáveis do cliente. Esta fase apresenta as seguintes etapas:

correçãocorreção;

adaptaçãoadaptação; e,

melhoramento funcionalmelhoramento funcional.

Page 24: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

24

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

MANUTENÇÃOMANUTENÇÃO

CorreçãoCorreção

A manutenção corretiva muda o software para corrigir defeitos.

AdaptaçãoAdaptação

A manutenção adaptativa resulta em modificações no software a fim de acomodar mudanças em seu ambiente.

Page 25: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

25

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

MANUTENÇÃOMANUTENÇÃO

Melhoramento funcionalMelhoramento funcional

O melhoramento funcional estende o software para além de suas exigências funcionais originais.

Page 26: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

26

Engenharia de SoftwareEngenharia de Software

VISÃO GERAL DA ENGENHARIA DE SOFTWARE . . .

As fases apresentadas são completadas por uma série de atividades de proteção, conforme a seguir:

revisõesrevisões (qualidade);

documentaçãodocumentação; e,

controle de mudançascontrole de mudanças.

Page 27: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

27

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE

CICLO DE VIDA CLÁSSICO (modelo cascata)CICLO DE VIDA CLÁSSICO (modelo cascata)

Também conhecido como modelo cascata, o paradigma do ciclo de vida clássico requer uma abordagem sistemática, seqüencial ao desenvolvimento de software, conforme figura a seguir:

Page 28: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

28

Engenharia de SoftwareEngenharia de Software

Engenharia

de Sistemas

Análise

Projeto

Teste

Manutenção

Codificação

Ciclo de vida clássico – Ciclo de vida clássico –

modelo cascatamodelo cascata

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

Page 29: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

29

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .

engenharia de sistemas;engenharia de sistemas;

análise de requisitos de software;análise de requisitos de software;

projeto;projeto;

codificação;codificação;

teste; e,teste; e,

manutenção.manutenção.

Page 30: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

30

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .

Engenharia de sistemasEngenharia de sistemas

Coletar os requisitos em nível de sistema, com uma pequena quantidade de projeto e análise de alto nível.

Análise de requisitos de softwareAnálise de requisitos de software

Compreender o domínio da informação para o software, bem como a função, desempenho e interface exigidos. Os requisitos, tanto para o sistema como para o software, são documentados e revistos com o cliente.

Page 31: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

31

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .

ProjetoProjeto

Gerar os quatro atributos distintos do programa: estrutura de dados, arquitetura de software, detalhes procedimentais e caracterização de interface.

O projeto é documentado e torna-se parte da configuração do software.

CodificaçãoCodificação

Traduzir o projeto numa forma legível por máquina.

Page 32: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

32

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .

TestesTestes

Realizar testes para descobrir erros técnicos e funcionais, buscando fazer com que a entrada definida produza resultados reais compatíveis com os resultados exigidos.

ManutençãoManutenção

Reaplicar cada uma das etapas precedentes do ciclo de vida a um programa existente, sempre que ocorrerem mudanças (correções, adaptações ou melhoramentos).

Page 33: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

33

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

CICLO DE VIDA CLÁSSICO (modelo cascata) . . .CICLO DE VIDA CLÁSSICO (modelo cascata) . . .

O modelo cascata é o paradigma mais antigo e o mais amplamente usado na engenharia de software. No entanto, os seguintes aspectos devem ser considerados:

raramente seguem o fluxo seqüencial que o modelo propõe;

necessidade de iterações trazem problemas para aplicação do paradigma;

dificuldade de acomodar a incerteza natural que existe no começo de muitos projetos;

erros descobertos tardiamente, podem ser desastrosos ao projeto.

Page 34: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

34

Engenharia de SoftwareEngenharia de Software

PROTOTIPAÇÃOPROTOTIPAÇÃO

Processo que capacita o desenvolvedor a criar um modelo do software que será implementado.

Pode assumir uma das três formas:

protótipo em papel ou modelo baseado em PC;protótipo em papel ou modelo baseado em PC;

protótipo de trabalhoprotótipo de trabalho; e,

programa existenteprograma existente.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

Page 35: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

35

Engenharia de SoftwareEngenharia de Software

Protótipo em papel ou modelo baseado em PCProtótipo em papel ou modelo baseado em PC

Retrata a interação homem-máquina de uma forma que capacita o usuário a entender quanta interação ocorrerá.

Protótipo de trabalhoProtótipo de trabalho

Implementa algum subconjunto da função exigida do software desejado.

Programa existentePrograma existente

Executa parte ou toda a função desejada, mas tem outras características que serão melhoradas em um novo esforço de desenvolvimento.

PROTOTIPAÇÃO . . .PROTOTIPAÇÃO . . .

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

Page 36: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

36

Engenharia de SoftwareEngenharia de Software

Coleta e refinamento dos

requisitos

Projeto

rápido

Con

stru

ção

do

prot

ótip

o

Avaliação do protótipo pelo

cliente

Eng

enha

ria

do

pr

odut

o

Refinam

ento

do

protótipo

Início

FimSeqüência de eventos do paradigma de prototipação

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

PROTOTIPAÇÃO . . .PROTOTIPAÇÃO . . .

Page 37: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

37

Engenharia de SoftwareEngenharia de Software

Ainda que possam ocorrer problemas, a prototipação é um paradigma eficiente da engenharia de software. A chave é definir-se as regras do jogo logo no começo; ou seja, o cliente e o desenvolvedor devem concordar que o protótipo seja construído para servir como um mecanismo de definição dos requisitos. Ele depois será descartado (pelo menos em parte) e o software real será projetado, levando-se em conta a qualidade e a manutenção.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

PROTOTIPAÇÃO . . .PROTOTIPAÇÃO . . .

Page 38: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

38

Engenharia de SoftwareEngenharia de Software

Desenvolvido para abranger as melhores características tanto do ciclo clássico como da prototipação, acrescentando, ao mesmo tempo, um novo elemento – a análise de riscos – que falta a esses paradigmas.

Análise dos riscos baseada nos requisitos iniciais

Análise dos riscos baseada na reação do cliente

Decisão de prosseguir / não prosseguir

Protótipo do software inicial

Protótipo no nível seguinte

Sistema construído pela engenharia

Avaliação do cliente

Planejamento Análise dos riscos

Avaliação do cliente Engenharia

Planejamento baseado nos comentários do cliente

Coleta inicial dos requisitos e planejamento do projeto

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

MODELO ESPIRALMODELO ESPIRAL

Na direção de um sistema concluído

Page 39: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

39

Engenharia de SoftwareEngenharia de Software

O modelo representado pela espiral define quatro importantes atividades representadas pelos quatro quadrantes da figura:

planejamentoplanejamento;

análise dos riscosanálise dos riscos;

engenhariaengenharia; e,

avaliação do clienteavaliação do cliente.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

MODELO ESPIRAL . . .MODELO ESPIRAL . . .

Page 40: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

40

Engenharia de SoftwareEngenharia de Software

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

MODELO ESPIRAL . . .MODELO ESPIRAL . . .PlanejamentoPlanejamento

Mistura análise com projeto. Nesta fase determina-se os objetivos, restrições e verifica-se alternativas de projeto.

Análise de riscoAnálise de risco Nesta fase analisa-se as alternativas e verifica-se os riscos.

Decide-se seguir o projeto na mesma linha ou começar de novo.

EngenhariaEngenharia Nesta fase desenvolve-se o protótipo. A cada nova fase de

engenharia o produto aproxima-se mais do produto final. Esta fase pode incluir todo o ciclo de vida clássico.

Avaliação do clienteAvaliação do cliente O cliente avalia o produto. Os desenvolvedores verificam a

necessidade de novas fases.

Page 41: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

41

Engenharia de SoftwareEngenharia de Software

O cliente avalia o trabalho de engenharia (o quadrante de avaliação do cliente) e apresenta sugestões para modificações.

Na maioria dos casos, o fluxo ocorre ao redor de uma trajetória espiral contínua, com cada trajetória movimentando os desenvolvedores para fora na direção de um modelo mais completo do sistema.

O paradigma de modelo espiral para a engenharia de software é atualmente a abordagem mais apropriada para o desenvolvimento de sistemas e de software em grande escala.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

MODELO ESPIRAL . . .MODELO ESPIRAL . . .

Page 42: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

42

Engenharia de SoftwareEngenharia de Software

O termo Técnicas de Quarta Geração abrange um amplo conjunto de ferramentas de software que têm uma coisa em comum: cada uma delas possibilita que o desenvolvedor especifique alguma característica do software em alto nível. A ferramenta gera então, automaticamente, o código-fonte, tendo como base a especificação do desenvolvedor. O paradigma da técnica de quarta geração concentra-se na capacidade de se especificar software a uma máquina em um nível que esteja próximo à linguagem natural ou de se usar uma notação que comunique uma função significativa.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃOTÉCNICAS DE QUARTA GERAÇÃO

Page 43: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

43

Engenharia de SoftwareEngenharia de Software

O usuário realiza a especificação em uma linguagem de 4G, em alto nível.

A codificação propriamente dita é realizada por uma linguagem de 4G.

Uma ferramenta de 4G é responsável por transformar automaticamente a especificação em código executável.

Quanto mais alto o nível da especificação (ou seja, mais próxima da linguagem natural), mais rapidamente é gerado o produto final.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃOTÉCNICAS DE QUARTA GERAÇÃO

Page 44: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

44

Engenharia de SoftwareEngenharia de Software

O ambiente de desenvolvimento de software que sustenta o ciclo de vida de quarta geração inclui:

linguagens não procedimentais para consulta de banco de dados;

ferramentas para geração de relatórios;

ferramentas para manipulação de dados;

ferramentas para definir interação e telas;

ferramentas para geração de códigos;

capacidade gráfica de alto nível; e,

capacidade de planilhas eletrônicas.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .

Page 45: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

45

Engenharia de SoftwareEngenharia de Software

Coleta de Requisitos

Estratégia de “Projeto”

Implementação Usando 4G

Teste

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

Ciclo de vida a partir das Ciclo de vida a partir das Técnicas de Quarta GeraçãoTécnicas de Quarta Geração

Page 46: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

46

Engenharia de SoftwareEngenharia de Software

Coleta de requisitosColeta de requisitos

O cliente descreve os requisitos os quais são traduzidos para um protótipo operacional.

Problemas:

o cliente pode estar inseguro quanto aos requisitos;

o cliente pode ser incapaz de especificar as informações de modo que uma ferramenta de 4G possa entender; e,

as linguagens de 4G atuais não são sofisticadas suficientemente para acomodar a verdadeira linguagem natural.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .

Page 47: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

47

Engenharia de SoftwareEngenharia de Software

Estratégia de projetoEstratégia de projeto

Nesta fase normalmente é projetado como o software será feito, organizado, estruturado, etc.;

No entanto, para pequenas aplicações é possível mover-se da fase um direto para a fase três, pulando a fase de projeto. Utilizando linguagens de quarta geração, às vezes esta fase não é necessária; e,

Já para grandes projetos é sempre necessário desenvolver uma estratégia de projeto. Caso contrário ocorrerão os mesmos problemas encontrados quando se usa abordagem convencional (baixa qualidade, manutenção ruim, má aceitação do cliente, etc).

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .

Page 48: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

48

Engenharia de SoftwareEngenharia de Software

Implementação usando linguagem de 4G Implementação usando linguagem de 4G

Os resultados desejados são representados de modo que haja geração automática de código. Deve existir uma estrutura de dados com informações relevantes e que seja acessível pela 4G.

TesteTeste

O desenvolvedor deve efetuar testes e desenvolver uma documentação significativa. O software desenvolvido deve ser construído de maneira que a manutenção possa ser efetuada prontamente.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .

Page 49: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

49

Engenharia de SoftwareEngenharia de Software

ConsideraçõesConsiderações

Favoráveis Os defensores das linguagens de 4G argumentam que

por meio delas se obtém uma redução dramática no tempo de desenvolvimento do software (aumento de produtividade).

Desfavoráveis As linguagens de 4G atuais não são mais fáceis de usar

do que as linguagens de programação.

O código fonte produzido é ineficiente.

A manutenção de sistemas usando técnicas de 4G ainda é questionável.

PARADIGMAS DO DESENVOLVIMENTO DE SOFTWARE . . .

TÉCNICAS DE QUARTA GERAÇÃO . . .TÉCNICAS DE QUARTA GERAÇÃO . . .

Page 50: INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx Xxxxxxxx VS1-Mar/2005 1 Engenharia de Software Unidade VI Engenharia de Software.

INF0198 (ICO) – Introdução à Computação Professor(a): Xxxxxxxxxx XxxxxxxxVS

1-M

ar/2

005

50

Engenharia de SoftwareEngenharia de Software

Unidade VI

Engenharia de Software

# F I M #