81
1 Introdução à Engenharia de Software Bibliografia: SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Pearson Addison-Wesley, 2007. IFPR – Instituto Federal do Paraná – Campus Umuarama Curso Técnico em Informática Disciplina: Engenharia de Software - 2º módulo - 2010 Professora: Márcia Cristina Dadalto Pascutti ( [email protected] )

Introdução a Engenharia de software

  • Upload
    eneias

  • View
    1.666

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Introdução a Engenharia de software

1

Introdução à Engenharia de Software

Bibliografia: SOMMERVILLE, Ian. Engenharia de Software. São Paulo: Pearson Addison-Wesley, 2007.

IFPR – Instituto Federal do Paraná – Campus Umuarama

Curso Técnico em Informática

Disciplina: Engenharia de Software - 2º módulo - 2010

Professora: Márcia Cristina Dadalto Pascutti ([email protected])

Page 2: Introdução a Engenharia de software

2

Engenharia de Software (ES) É uma disciplina da engenharia cuja meta é o

desenvolvimento de sistemas de software com boa relação custo-benefício;

É uma disciplina relativamente nova. Surgiu pela 1a vez em 1968 crise do software (hardware poderoso, portanto o software resultante era maior e mais complexo);

Dessa forma uma abordagem informal para a construção desses sistemas não era o bastante. Os projetos atrasavam, apresentavam custos elevados, não eram confiáveis, eram de difícil manutenção e tinham desempenho ruim o desenvolvimento de software estava em crise.

Page 3: Introdução a Engenharia de software

3

Engenharia de Software (ES)

Novas técnicas e novos métodos eram necessários para controlar a complexidade inerente aos sistemas de software;

Essas técnicas se tornaram parte da ES. Ainda existem problemas, porém houve um grande progresso desde 1968 e o desenvolvimento da ES melhorou de modo marcante o software produzido.

Page 4: Introdução a Engenharia de software

4

Engenharia de Software (ES) Quando um software é bem-sucedido – quando

satisfaz as necessidades das pessoas que o usam, tem desempenho sem falhas por um longo período, é fácil de modificar e ainda mais fácil de usar – ele pode e efetivamente modifica as coisas para melhor.

Mas quando o software falha – quando seus usuários ficam insatisfeitos, quando tem tendência a erros, quando é difícil de modificar e ainda mais difícil de usar – podem e efetivamente acontecem coisas desagradáveis.

Para obter sucesso, precisamos de disciplina quando o software é projetado e construído precisamos de uma abordagem de engenharia.

Page 5: Introdução a Engenharia de software

5

1. O que é software? São os programas de computador, a

documentação associada e os dados de configuração necessários para que esses programas operem corretamente.

Há dois tipos de software Produtos genéricos: produtos desenvolvidos

para o mercado; pacotes de software. A especificação do software é controlada pela organização que o desenvolve.

Produtos sob encomenda (personalizados): produtos desenvolvidos para um cliente específico. A especificação do software é controlada pela organização que está comprando o software os desenvolvedores devem trabalhar de acordo com essa especificação.

Page 6: Introdução a Engenharia de software

6

2. O que é engenharia de software?

É uma disciplina da engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema;

Geralmente, os engenheiros de software adotam uma abordagem sistemática e organizada em seu trabalho, pois essa, com certeza, é a maneira mais eficaz de produzir software de alta qualidade.

Page 7: Introdução a Engenharia de software

7

3. Qual a diferença entre engenharia de software e ciência da computação?

Ciência da computação ocupa-se da teoria e dos fundamentos referentes aos computadores e sistemas de software;

Engenharia de software dedica-se aos problemas práticos da produção de software;

Teorias mais refinadas da ciência da computação nem sempre podem ser aplicadas a problemas reais e complexos, que requerem uma solução de software.

Page 8: Introdução a Engenharia de software

8

4. Qual a diferença entre engenharia de software e engenharia de sistemas? Engenharia de sistemas ocupa-se

de todos os aspectos relacionados ao desenvolvimento de sistemas, incluindo hardware e software;

Engenharia de software é parte desse processo.

Engenharia de Sistemas

Engenharia de software

Page 9: Introdução a Engenharia de software

9

5. O que é um processo de software? É um conjunto de atividades e resultados que geram um

produto de software; Há 4 atividades fundamentais – comuns a todos os

processos de software 1. Especificação do software: definição das funcionalidades

e restrições;2. Desenvolvimento do software: o software deve ser

produzido de forma a atender as especificações;3. Validação do software: garantia de que o software faz o

que o cliente deseja;4. Evolução do software: o software deve evoluir para

atender as necessidades mutáveis dos clientes. Diferentes organizações podem utilizar processos diferentes para

produzir o mesmo tipo de produto.

Page 10: Introdução a Engenharia de software

10

6. O que é um modelo de processo de software? É uma representação simplificada de um

processo de software, apresentada a partir de uma perspectiva específica;

Um modelo de processo de software define a seqüência em que as atividades do processo serão realizadas;

Exemplos de Modelos de Processo de Software Modelo em Cascata (Ciclo de Vida Clássico) Desenvolvimento Evolucionário Desenvolvimento Formal (Transformação formal) Desenvolvimento Orientado a Reuso (Montagem de

um sistema a partir de componentes reutilizáveis)

Page 11: Introdução a Engenharia de software

11

Modelo Cascata Considera as atividades de especificação,

desenvolvimento, validação e evolução, que são fundamentais ao processo, e as representa como fases separadas do processo, como a especificação de requisitos, o projeto de software, os testes e assim por diante.

Após cada estágio ter sido definido, ele é “aprovado” e o desenvolvimento prossegue para o estágio seguinte.

Page 12: Introdução a Engenharia de software

12

Desenvolvimento Evolucionário Tem como base a idéia de desenvolver uma

implementação inicial, expor ao comentário do usuário/cliente e fazer seu aprimoramento por meio de muitas versões, até que um sistema adequado tenha sido desenvolvido.

Em vez de ter as atividades de especificação, desenvolvimento e validação em separado, todo esse trabalho é realizado concorrentemente.

Page 13: Introdução a Engenharia de software

13

Desenvolvimento Evolucionário

Descrição do esboço

Especificação

Desenvolvimento

Validação

Versão inicial

Versões intermediárias

Versão final

Atividades concorrentes

Page 14: Introdução a Engenharia de software

14

Engenharia de Software Baseada em Componentes

Baseia-se na existência de um número significativo de componentes reutilizáveis;

O processo de desenvolvimento de sistemas se concentra na integração desses componentes em um sistema, em vez de partir do zero;

Desenvolvimento Baseado em Componentes.

Page 15: Introdução a Engenharia de software

15

7. Quais são os custos da engenharia de software?

A distribuição dos custos ao longo do processo de software depende do modelo de processo utilizado e do tipo de software que está sendo desenvolvido;

Aproximadamente 60% dos custos são relacionados ao desenvolvimento e 40% são referentes aos testes;

Para software personalizado (com um longo ciclo de duração), os custos de evolução normalmente excedem os custos de desenvolvimento;

Software genérico normalmente tem custo de especificação baixo, porém devem ser extensivamente testados.

Page 16: Introdução a Engenharia de software

16

8. O que são métodos de engenharia de software? Baseiam-se na idéia de desenvolver modelos

de um sistema que possam ser representados graficamente e de utilizar esses modelos como uma especificação ou projeto de sistema;

Métodos Análise Estruturada;Orientados a Objetos (UML – Unified

Modeling Language – Linguagem de Modelagem Unificada)

Page 17: Introdução a Engenharia de software

17

9. O que é CASE (computer-aided software engineering)? Uma ferramenta CASE é um software destinado a

proporcionar apoio automatizado às atividades de processo de software, como a análise de requisitos, modelagem do sistema, depuração e testes;

Alguns exemplos de ferramentas CASE RequisiteProDrCaseRational RoseAstah

Page 18: Introdução a Engenharia de software

18

10. Quais são os atributos de um bom software? Facilidade de manutenção o software deve

ser escrito de modo que possa evoluir para atender as necessidades mutáveis dos clientes;

Nível de Confiança inclui confiabilidade, segurança e proteção;

Eficiência inclui rapidez de resposta, tempo de processamento, utilização da memória, entre outros;

Facilidade de Uso (usabilidade) o software deve dispor de uma interface apropriada com o usuário e de documentação adequada. Deve ser utilizável sem esforços indevidos.

Page 19: Introdução a Engenharia de software

19

11. Quais são os principais desafios enfrentados pela engenharia de software? Desafio da heterogeneidade

desenvolver técnicas para construir softwares confiáveis, que sejam flexíveis para atender diferentes tipos de computadores e diferentes sistemas de apoio;

Desafio da entrega reduzir tempo para entrega de sistemas grandes e complexos, sem comprometer a qualidade;

Desafio da confiança desenvolver técnicas que demonstrem que o software pode ter a confiança dos seus usuários.

Page 20: Introdução a Engenharia de software

20

Processos de Software

Page 21: Introdução a Engenharia de software

21

Processo de Software Conjunto de atividades e resultados associados

que levam à produção de um produto de software;

Não há um processo ideal e até dentro da mesma empresa pode haver muitos processos diferentes utilizados para o desenvolvimento de software;

Existem muitos processos de software diferentes, porém há atividades fundamentais comuns a todos eles, como:

1. Especificação de software é preciso definir a funcionalidade do software e as restrições em sua operação;

Page 22: Introdução a Engenharia de software

22

Processo de Software 2. Projeto e implementação de

software deve ser produzido o software de modo que cumpra sua especificação;

3. Validação de software o software precisa ser validado para garantir que ele faz o que o cliente deseja;

4. Evolução de software o software precisa evoluir para atender às necessidades mutáveis do cliente.

Page 23: Introdução a Engenharia de software

23

Modelos de Processo de Software

São utilizados para explicar diferentes abordagens do desenvolvimento de software.

Um modelo de processo de software define a seqüência em que as atividades do processo serão realizadas;

Exemplos de processo de software 1. Modelo Cascata;2. Desenvolvimento Evolucionário;3. Engenharia de Software Baseada em

Componentes.

Page 24: Introdução a Engenharia de software

24

Modelo Cascata Primeiro modelo publicado do processo

de desenvolvimento de software; Também conhecido como Ciclo de Vida

Clássico ou Modelo Clássico; Esse modelo considera as atividades de

especificação, desenvolvimento, validação e evolução, que são fundamentais ao processo, e as representa como fases separadas do processo, como a especificação de requisitos, o projeto de software, os testes e assim por diante.

Page 25: Introdução a Engenharia de software

25

Modelo Cascata

Definição de requisitos

Projeto de sistemas e de software

Implementação e teste de unidades

Integração e teste de sistemas

Operação e manutenção

Page 26: Introdução a Engenharia de software

26

Fases do Modelo Cascata Análise e definição de requisitos

(especificação de requisitos) as funções, as restrições e os objetivos do sistema são estabelecidos por meio da consulta aos usuários do sistema;

Em seguida são definidos em detalhes e servem como uma especificação do sistema.

Page 27: Introdução a Engenharia de software

27

Fases do Modelo Cascata Projeto de sistemas e de software

agrupa os requisitos em sistemas de hardware ou de software. Estabelece uma arquitetura do sistema geral.

Implementação e teste de unidades durante esse estágio, o projeto de software é compreendido como um conjunto de programas ou de unidades de programa. O teste de unidade envolve verificar que cada unidade atenda a sua especificação.

Page 28: Introdução a Engenharia de software

28

Fases do Modelo Cascata Integração e teste de sistemas

as unidades de programa ou programas individuais são integrados e testados como um sistema completo a fim de garantir que os requisitos de software foram atendidos. Depois dos testes, o sistema de software é entregue ao cliente.

Page 29: Introdução a Engenharia de software

29

Fases do Modelo Cascata Operação e Manutenção

normalmente esta é a fase mais longa do ciclo de vida. O sistema é instalado e colocado em operação. A manutenção envolve corrigir erros que não foram descobertos em estágios anteriores do ciclo de vida ou aumentar as funções desse sistema à medida que novos requisitos são descobertos.

Page 30: Introdução a Engenharia de software

30

Modelo Cascata Em princípio, o resultado de cada fase

envolve um ou mais documentos que são aprovados;

A fase seguinte não deve se iniciar até que a fase precedente tenha sido concluída;

O processo de software não é um modelo linear simples, mas envolve uma seqüência de iterações das atividades de desenvolvimento problema do modelo cascata inflexível divisão do projeto nesses estágios distintos.

Page 31: Introdução a Engenharia de software

31

Modelo Cascata O modelo cascata somente deve ser

utilizado quando os requisitos forem bem compreendidos;

Contudo, ele reflete a prática da engenharia;

Conseqüentemente, os processos de software com base nessa abordagem ainda são muito utilizados no desenvolvimento de software.

Page 32: Introdução a Engenharia de software

32

Desenvolvimento Evolucionário

Tem como base a idéia de desenvolver uma implementação inicial, expor o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões, até que um sistema adequado tenha sido desenvolvido;

Em vez de ter as atividades de especificação, desenvolvimento e validação em separado, todo esse trabalho é realizado concorrentemente com um rápido feedback por meio dessas atividades.

Page 33: Introdução a Engenharia de software

33

Desenvolvimento Evolucionário

Descrição do esboço

Especificação

Desenvolvimento

Validação

Versão inicial

Versões intermediárias

Versão final

Atividades concorrentes

Page 34: Introdução a Engenharia de software

34

Desenvolvimento Evolucionário

A abordagem evolucionária do desenvolvimento de software, muitas vezes, é mais eficaz do que a abordagem em cascata, no sentido de produzir sistemas que atendam às necessidades imediatas dos clientes;

VANTAGEM a especificação pode ser desenvolvida gradativamente. À medida que os usuários desenvolvem uma compreensão melhor de seus problemas, isso pode ser refletido no sistema de software.

Page 35: Introdução a Engenharia de software

35

Desenvolvimento Evolucionário

PROBLEMAS 1. Como os sistemas são desenvolvidos

rapidamente, não é viável produzir documentos que reflitam cada versão do sistema;

2. Os sistemas freqüentemente são mal-estruturados. A mudança constante tende a corromper a estrutura do software. Incorporar modificações torna-se cada vez mais difícil e oneroso.

Page 36: Introdução a Engenharia de software

36

Engenharia de Software Baseada em Componentes

Essa abordagem tem como base a existência de um número significativo de componentes reutilizáveis;

O processo de desenvolvimento de sistemas se concentra na integração desses componentes em um sistema, ao invés de proceder ao desenvolvimento a partir do zero;

Page 37: Introdução a Engenharia de software

37

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Modelo genérico de processo para a engenharia de software baseada em

componentes

Page 38: Introdução a Engenharia de software

38

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Page 39: Introdução a Engenharia de software

39

Engenharia de Software Baseada em Componentes

Especificação de Requisitos comparável com outros processos, por exemplo, modelo cascata;

As funções, as restrições e os objetivos do sistema são estabelecidos por meio da consulta aos usuários do sistema;

Em seguida são definidos em detalhes e servem como uma especificação do sistema.

Page 40: Introdução a Engenharia de software

40

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Page 41: Introdução a Engenharia de software

41

Engenharia de Software Baseada em Componentes

Análise de Componentes com base na especificação de requisitos, é feita uma busca de componentes para implementar essa especificação;

Nem sempre é possível encontrar uma combinação exata e os componentes que podem ser utilizados fornecem somente parte da funcionalidade requerida.

Page 42: Introdução a Engenharia de software

42

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Page 43: Introdução a Engenharia de software

43

Engenharia de Software Baseada em Componentes

Modificação de requisitos durante esse estágio, os requisitos são analisados, utilizando-se as informações sobre os componentes que foram encontrados;

Eles são então modificados para refletir os componentes disponíveis;

Quando as modificações forem impossíveis, a atividade de análise de componentes é refeita, a fim de procurar soluções alternativas.

Page 44: Introdução a Engenharia de software

44

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Page 45: Introdução a Engenharia de software

45

Engenharia de Software Baseada em Componentes

Projeto de sistema com reuso durante essa fase, a infra-estrutura do sistema é projetada ou uma infra-estrutura existente é reutilizada;

Os projetistas levam em conta os componentes que são reutilizados e organizam a infra-estrutura para lidar com esse aspecto.

Page 46: Introdução a Engenharia de software

46

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Page 47: Introdução a Engenharia de software

47

Engenharia de Software Baseada em Componentes

Desenvolvimento e integração o software que não puder ser comprado será desenvolvido, e os componentes e sistemas COTS (commercial off-the-shelf –

sistemas comerciais de prateleira) serão integrados, a fim de criar um sistema.

Page 48: Introdução a Engenharia de software

48

Engenharia de Software Baseada em Componentes

Especificação de requisitos

Análise de componentes

Modificação derequisitos

Projeto de sistemacom reuso

Desenvolvimento e integração

Validação desistema

Page 49: Introdução a Engenharia de software

49

Engenharia de Software Baseada em Componentes

Validação de sistema o software deve ser validado para garantir que faz o que o cliente deseja.

Page 50: Introdução a Engenharia de software

50

Engenharia de Software Baseada em Componentes

VANTAGENS Reduz a quantidade de software a ser

desenvolvida, reduzindo custos e riscos;

Geralmente propicia a entrega mais rápida do software.

Page 51: Introdução a Engenharia de software

51

Engenharia de Software Baseada em Componentes

PROBLEMAS As adequações nos requisitos são

inevitáveis, e isso pode resultar em um sistema que não atenda às reais necessidades dos usuários;

O controle sobre a evolução do sistema se perde, uma vez que novas versões dos componentes reutilizáveis não estão sob o controle da organização que utiliza esses componentes.

Page 52: Introdução a Engenharia de software

52

Processos Iterativos Os modelos apresentados anteriormente

apresentam vantagens e desvantagens; Para o desenvolvimento de grandes

sistemas, pode haver a necessidade de utilizar diferentes abordagens para diferentes partes dos sistemas, de maneira que um modelo híbrido tem de ser utilizado;

Há também a necessidade de iteração, em que partes do processo são repetidas, à medida que os requisitos do sistema evoluem.

Page 53: Introdução a Engenharia de software

53

Processos Iterativos

Existem dois modelos híbridos, que apóiam diferentes abordagens do desenvolvimento e que foram explicitamente projetados para apoiarem a iteração do processo

Desenvolvimento Incremental

Desenvolvimento em Espiral

Page 54: Introdução a Engenharia de software

54

Desenvolvimento Incremental É uma abordagem intermediária, que combina

as vantagens do modelo cascata e do desenvolvimento evolucionário;

Em um processo de desenvolvimento incremental, os clientes identificam, em um esboço, as funções a serem fornecidas pelo sistema, definindo quais são mais importantes e quais são menos importantes;

Em seguida é definida uma série de estágios de entrega, com cada um fornecendo um subconjunto das funcionalidades do sistema;

As funções prioritárias são entregues primeiramente ao cliente;

Page 55: Introdução a Engenharia de software

55

Desenvolvimento Incremental Uma vez identificados os incrementos, os

requisitos para as funções a serem entregues no primeiro incremento são definidos em detalhes;

Esse incremento é desenvolvido, utilizando-se o processo de desenvolvimento mais apropriado;

Uma vez que um incremento é concluído e entregue, os clientes podem colocá-lo em operação;

Isso significa que eles recebem com antecedência parte da funcionalidade do sistema, podendo experimentar o sistema, facilitando assim o esclarecimento dos requisitos para os incrementos seguintes;

Page 56: Introdução a Engenharia de software

56

Desenvolvimento Incremental À medida que novos incrementos são

concluídos, eles são integrados aos estágios existentes, melhorando a funcionalidade do sistema a cada novo estágio de entrega;

Page 57: Introdução a Engenharia de software

57

Desenvolvimento Incremental

Definir esboço dos requisitos

Atribuir requisitosaos incrementos

Projetar arquite-tura do sistema

Desenvolver incre-mento do sistema

Validar incre-mento

Integrar incre-mento

Validar sistemaSistema

FinalSistema incompleto

Page 58: Introdução a Engenharia de software

58

Desenvolvimento Incremental Não existe a necessidade de utilizar o

mesmo processo para o desenvolvimento de cada incremento;

Quando as funções têm uma especificação bem-definida, o modelo de desenvolvimento em cascata pode ser utilizado;

Quando a especificação for mal definida, poderá ser utilizado um modelo de desenvolvimento evolucionário.

Page 59: Introdução a Engenharia de software

59

Desenvolvimento Incremental VANTAGENS 1. Os clientes não precisam esperar até que

todo o sistema seja entregue, para então tirar proveito dele;

2. Existe um risco menor de fracasso completo do sistema. Embora possam ser encontrados problemas em alguns incrementos, é provável que alguns incrementos sejam entregues com sucesso ao cliente;

3. Como as funções prioritárias são entregues primeiro, é inevitável que elas passem pela maior parte dos testes.

Page 60: Introdução a Engenharia de software

60

Desenvolvimento Incremental PROBLEMAS Os incrementos devem ser

relativamente pequenos, e cada incremento deve produzir alguma funcionalidade para o sistema;

Pode, portanto, ser difícil mapear os requisitos dos clientes dentro de incrementos de tamanho correto.

Page 61: Introdução a Engenharia de software

61

Desenvolvimento Incremental Extreme Programming

(programação extrema) recente evolução da abordagem incremental;

Tem como base o desenvolvimento e a entrega de incrementos de funcionalidade muito pequenos, o envolvimento do cliente no processo, a constante melhoria de código e a programação impessoal.

Page 62: Introdução a Engenharia de software

62

Desenvolvimento em Espiral Em vez de representar o processo de

software como uma seqüência de atividades com algum retorno de uma atividade para outra, o processo é representado como uma espiral;

Cada loop na espiral representa uma fase do processo de software;

Assim, o loop mais interno pode estar relacionado à vialibidade do sistema;

O loop seguinte, à definição de requisitos para o sistema;

O próximo loop, ao projeto do sistema, e assim por diante.

Page 63: Introdução a Engenharia de software

63

Desenvolvimento em Espiral

Page 64: Introdução a Engenharia de software

64

Desenvolvimento em Espiral Cada loop da espiral é dividido em

quatro setores: 1. Definição de objetivos São definidos os objetivos específicos

para essa fase do projeto; São identificados os riscos do projeto

e, dependendo dos riscos poderão ser planejadas estratégias alternativas.

Page 65: Introdução a Engenharia de software

65

Desenvolvimento em Espiral

Definição dos objetivos

Page 66: Introdução a Engenharia de software

66

Desenvolvimento em Espiral 2. Avaliação e redução de riscos Para cada um dos riscos de projeto

identificados, é realizada uma análise detalhada e são tomadas providências para reduzir esses riscos;

Por exemplo, se houver um risco de os requisitos serem inadequados, poderá ser desenvolvido um protótipo.

Page 67: Introdução a Engenharia de software

67

Desenvolvimento em Espiral

Avaliação e reduçãode riscos

Page 68: Introdução a Engenharia de software

68

Desenvolvimento em Espiral 3. Desenvolvimento e validação Depois da avaliação dos riscos, é

escolhido um modelo de desenvolvimento para o sistema;

Por exemplo, se forem dominantes os riscos relacionados à interface com o usuário, pode ser utilizado o modelo de desenvolvimento evolucionário (prototipação).

Page 69: Introdução a Engenharia de software

69

Desenvolvimento em Espiral

DesenvolvimentoE

validação

Page 70: Introdução a Engenharia de software

70

Desenvolvimento em Espiral 4. Planejamento O projeto é revisto e é tomada uma

decisão sobre continuar com o próximo loop da espiral;

Se a decisão for continuar, serão traçados os planos para a próxima fase do projeto.

Page 71: Introdução a Engenharia de software

71

Desenvolvimento em Espiral

Planejamento

Page 72: Introdução a Engenharia de software

72

Desenvolvimento em Espiral Não há fases fixas, como especificação

ou projeto, no modelo em espiral; O modelo em espiral abrange outros

modelos de processo, como por exemplo, prototipação;

Diferença do modelo em espiral em relação a outros modelos de processo de software explícita consideração dos riscos no modelo em espiral;

Risco algo que pode acontecer de errado.

Page 73: Introdução a Engenharia de software

73

Especificação de Software Estabelece quais funções são requeridas

pelo sistema e as restrições sobre a operação e o desenvolvimento do sistema;

Essa atividade é chamada de Engenharia de Requisitos muito importante;

O processo de engenharia de requisitos leva à produção de um documento de requisitos, que é a especificação para o sistema;

Existem quatro fases principais no processo de engenharia de requisitos

Page 74: Introdução a Engenharia de software

74

Especificação de Software 1. Estudo de Viabilidade existe

tecnologia atual para o desenvolvimento do sistema? Existem restrições orçamentárias?;

2. Levantamento e análise de requisitos obtenção dos requisitos do sistema. Entrevista, observação, sistemas existentes, ...;

3. Especificação de requisitos documento que especifica os requisitos;

4. Validação de requisitos verificação dos requisitos quanto a pertinência, consistência e integralidade.

Page 75: Introdução a Engenharia de software

75

Projeto e Implementação de Software

Um projeto de software é uma descrição estruturada de software a ser implementada, dos dados que são parte do sistema, das interfaces entre os elementos do sistema e dos algoritmos utilizados;

Métodos de Projeto Projeto estruturado; Projeto orientado a objetos;

Page 76: Introdução a Engenharia de software

76

Projeto e Implementação de Software

Programação atividade pessoal, sem regras;

Teste x Depuração Teste estabelece a existência de

defeitos; Depuração localiza e corrige esses

defeitos.

Page 77: Introdução a Engenharia de software

77

Validação de Software Destina-se a mostrar que um sistema está de

acordo com suas especificações e que atende às expectativas do cliente;

Processo de teste 1. Teste de unidade componentes

individuais; 2. Teste de módulo coleção de

componentes; 3. Teste de subsistema conjunto de

módulos integrados; 4. Teste de sistema integração dos

subsistemas; 5. Teste de aceitação o sistema é testado

com os dados fornecidos pelo cliente, no lugar dos testes simulados.

Page 78: Introdução a Engenharia de software

78

Evolução de Software Manutenção de software é o

processo de modificar o sistema desenvolvido depois que o mesmo é colocado em operação;

O software é continuamente modificado ao longo de seu tempo de duração, em resposta a requisitos em constante modificação e às necessidades do cliente.

Page 79: Introdução a Engenharia de software

79

Ferramentas CASE

É o nome dado ao software utilizado para apoiar as atividades de processo de software, como a engenharia de requisitos, o projeto, o desenvolvimento de programa e os testes;

As ferramentas CASE, portanto, incluem editores de projeto, dicionários de dados, compiladores, depuradores, ferramentas de construção de sistemas, entre outros.

Page 80: Introdução a Engenharia de software

80

Ferramentas CASE Exemplos de atividades que podem

ser automatizadas utilizando-se CASE

O desenvolvimento de modelos gráficos de sistemas, como parte das especificações de requisitos ou do projeto de software;

A compreensão de um projeto utilizando-se um dicionário de dados que contém informações sobre as entidades e sua relação em um projeto;

A geração de interfaces com usuários;

Page 81: Introdução a Engenharia de software

81

Ferramentas CASE

Exemplos de atividades que podem ser automatizadas utilizando-se CASE

A depuração de programas, pelo fornecimento de informações sobre um programa em execução;

Tradução automatizada de programas, a partir de uma antiga versão de uma linguagem de programação, como Cobol, para uma versão mais recente.