Transcript

ENGENHARIA DE SOFTWARE

Profª: Janaide Nogueira

Curso: Sistemas de Informação

ENGENHARIA DE SOFTWAREENGENHARIA DE SOFTWARE

APRESENTAÇÃOFormação Técnica:

� Informática(IFCE-Campus Tianguá-CE)�Secretária Escolar(FDR)Graduação:

� Bacharelado em Sistemas de Informação(Ieducare)Pós-Graduação:

� Especialização em Engenharia de Software (WPÓS)� Especialização em Engenharia de Software (WPÓS)� MBA em Sistemas de Informação (ESAB)Atividades Profissionais:

�Profª. Faculdade Ieducare.�Profª. IFCE – Campus Tianguá-CE – Pronatec (Programação Web).

EMENTA�Conceitos e princípios fundamentais.

� Ciclo de vida de software e estágios de desenvolvimento:

requisitos de software, projeto, implementação, gerenciamento

e qualidade de software.

� Ferramentas e ambientes de desenvolvimento integrado.

CARGA HORÁRIA : 60 HORAS/AULA = 15 ENCONTROS

REFERÊNCIAS

PAULA FILHO, W. P. Engenharia de Software –Fundamentos, Métodos e Padrões. 2. ed. Rio de Janeiro: LTC, 2003.

PFLEEGER, S. L. Engenharia de Software –Teoria e Prática. 2. ed. São Paulo: Pearson PrenticeHall, 2004.

PRESSMAN, R.S.Engenharia de Software.6. ed. São Paulo: McGraw-Hill, 2006.

SOMMERVILLE, I. Engenharia de Software. 8. ed. São Paulo: Pearson, 2007.

METODOLOGIA DE AVALIAÇÃO

(Nota1+Nota2+Nota3)\3= Média final;�Nota1 = (1*Exercícios + 2*Artigo)/3;�Nota2= (1*Exercícios + 2*Prova escrita)/3;�Nota2= (1*Exercícios + 2*Prova escrita)/3;�Nota3= Trabalho;

FALTAS E ATRASOS

O aluno deve evitar ao máximo ter faltas,pois dificulta o aprendizado.pois dificulta o aprendizado.

As aulas iniciam às 19:00 horas, o intervaloinicia às 20:15 horas, com 15 minutos deduração, terminando o encontro pontualmenteas 22:00 horas.

ENGENHARIA DE SOFTWAREENGENHARIA DE SOFTWARE

O QUE É ENGENHARIA DE SOFTWARE?

" É uma disciplina da engenharia que se preocupacom todos os aspectos da produção de software, desde osestágios iniciais de especificação do sistema até amanutenção desse sistema, depois que ele entrou emmanutenção desse sistema, depois que ele entrou emoperação".(SOMMERVILLE,2007)

Com isso o engenheiro de software deve adotar umperfil sistemático e organizado para seus trabalhos e utilizarferramentas e técnicas apropriadas, dependendo doproblema a ser resolvido e dosobstáculos no desenvolvimento e dos recursos disponíveis.

OBJETIVOS DA ENGENHARIA DE SOFTWARE

�Controlar o desenvolvimento de software dentro de custos,prazos e níveis de qualidade desejados;

�Qualidade X Produtividade;

QUAL A DIFERENÇA ENTRE ENGENHARIA DE SOFTWARE E DE

SISTEMAS?A Engenharia de Software é mais especifica, a de

Sistemas é mais genérica. Enquanto a Engenharia deSistemas está mais envolvida com o sistema como um todoSistemas está mais envolvida com o sistema como um todoe seus detalhes, a Engenharia de Software é mais especifica,em especial ao hardware e software.

TIPOS DE SOFTWARE

�Produtos genéricos;

�Produtos sob encomendas (personalizados);

O QUE É CASE?

• Compute raided software engineering (engenharia de

software como auxílio de computador). Se refere a

uma ampla gama de diferentes tipos de programas

utilizados para apoiar as atividades de processo deutilizados para apoiar as atividades de processo de

software, como a análise de requisitos, modelagem

de sistema, a depuração e os testes.

• •Upper-CASE: Apoio as atividades iniciais (requisitose projeto);

• •Lower-CASE: Apoio as atividades finais

(programação, depuração e teste).

O QUE É DEPURAÇÃO DE SOFTWARE?

É o processo de encontrar e reduzir defeitos em umsoftware.

ATRIBUTOS DE UM BOM SOFTWARE

O software deve oferecer aos usuários as funcionalidades e o

desempenho por ele desejado, deve possuir fácil manutenção,

ser eficiente...

Características Descrição

Facilidade de Manutenção Esse é um atributo crucial, porque as

15

Facilidade de Manutenção Esse é um atributo crucial, porque as

modificações em um software são uma

consequência inevitável de um

ambiente de negócios em constante mutação.

Nível de Confiança Neste nível incluem-se as características de

confiabilidade, proteção e segurança

Eficiência O Software não deve desperdiçar os recursos do

sistema, como por exemplo os ciclos do processador

Facilidade de Uso O software deve ser utilizável, usuários leigos não

devem sentir muita dificuldade.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

O Conjunto de atividades associadas geram um produto

de software. Há quatro atividades de processos fundamentais

comuns a todos os processos de software que são:

� Especificação do software;

� Desenvolvimento do software;

16

� Desenvolvimento do software;

� Validação do software;

� Evolução do software.

CICLO DE VIDA DE DESENVOLVIMENTO DE

SOFTWARE

O CVDS descreve como o software deve ser desenvolvido,

ou seja, define a ordem global das atividades e propõe uma

estratégia de desenvolvimento.

17

estratégia de desenvolvimento.

Simplificando: Todo desenvolvimento de um software é

caracterizado por fases que quando colocadas em sequência

obtêm-se um Ciclo de Vida do Sistema.

MODELO BALBÚRDIA

No início da computação, poucos programadoresseguiam algum tipo de metodologia baseando-se, emsua maioria, na própria experiência. Era o quechamamos hoje de Modelo Balbúrdia, que sãosistemas desenvolvidos na informalidade sem nenhumtipo de projeto ou documentação.

18

tipo de projeto ou documentação.Nesse modelo, o software tende a entrar num ciclo

de somente duas fases: o de implementação e deimplantação. E os ajustes ao software para atenderaos novos requisitos, sempre são em clima deurgência e de stress, motivados por vários fatores, eprincipalmente por pressão política.

MODELO CASCATA

19

MODELO CASCATA�O modelo em Cascata a fase seguinte não deve se iniciar

até que a fase precedente tenha sido concluída;

�Na prática os estágios se sobrepõem e trocam informações

entre si;

20

entre si;

�A principal desvantagem do modelo em cascata é a

dificuldade de acomodação das mudanças depois que o

processo está em andamento. Uma fase tem de estar

completa antes de passar para a próxima;

DESVANTAGENS DO MODELO CASCATA

�Particionamento inflexível do projeto em estágios

distintos, dificulta a respota aos requisitos de mudança do

cliente;

�Este modelo é apropriado somente quando os requisitos

são bem compreendidos, e quando as mudanças forem

21

são bem compreendidos, e quando as mudanças forem

bastante limitadas durante o desenvolvimento do sistema;

�Poucos sistemas de negócio têm requisitos estáveis;

DESVANTAGENS DO MODELO CASCATA

�Pode não permitir a visão real do processo em andamento.

�Dois universos:

�Universo que se refere ao processo em andamento;

�Universo que se refere às mudanças que deveriam ser

aplicadas, mas não são pelo fato do modelo não

22

aplicadas, mas não são pelo fato do modelo não

incorporar em sua dinâmica.

FASES DO MODELO CASCATA�Análise e definição de requisitos;

�Projeto de sistema e software;

�Implementação e teste de unidade;

�Integração e teste de sistema;

�Operação e manutenção;

23

�Operação e manutenção;

MODELO EVOLUCIONÁRIOTem como base a idéia de desenvolver uma

implementação inicial, expôr 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.

24

desenvolvido.

TIPOS DE MODELO EVOLUCIONÁRIO

�DESENVOLVIMENTO EXPLORATÓRIO;

25

MODELO EVOLUCIONÁRIO: DESENVOLVIMENTO

EXPLORATÓRIO

O desenvolvimento se inicia com as partes do sistema que estão bem compreendidas adicionar novas características à medida que forem propostas pelo

26

características à medida que forem propostas pelo cliente.

TIPOS DE MODELO EVOLUCIONÁRIO

�PROTOTIPAÇÃO DESCARTÁVEL;

27

MODELO EVOLUCIONÁRIO: PROTOTIPAÇÃO DESCARTÁVEL

O objetivo é compreender os requisitos de sistema. Deve iniciar com requisitos mal compreendidos para esclarecer o que é realmente necessário.

28

DESVANTAGENS DA PROTOTIPAÇÃO DESCARTÁVEL

� Falta de visibilidade do processo;� Os sistemas são frequentemente mal estruturados;

29

DESENVOLVIMENTO ORIENTADO A REUSO

Baseado em reuso sistemático onde sistemas são integrados a

partir de componentes existentes.

Estágios do processo:

•Análise de componentes;

30

•Análise de componentes;

•Modificação de requisitos;

•Projeto de sistema com reuso;

•Desenvolvimento e integração.

DESENVOLVIMENTO ORIENTADO A REUSO

Vantagens do Desenvolvimento Orientado a Reuso

-Reduzir a quantidade de software a ser desenvolvida;

-Reduzir custos;

31

-Reduzir custos;

-Reduzir riscos.

Problema do Desenvolvimento Orientado a Reuso

-Perda do controle sobre a evolução do sistema.

ITERAÇÃO DE PROCESSO

-Requisitos de sistema SEMPRE evoluem no curso de um projeto

e, sendo assim, a iteração de processo, onde estágios iniciais são

retrabalhados, é sempre parte do processo dos sistemas de

grande porte.

32

grande porte.

-A iteração pode ser aplicada a qualquer um dos modelos

genéricos do processo.

Duas abordagens (relacionadas)

-Entrega incremental;

-Desenvolvimento espiral.

ENTREGA INCREMENTALAo invés de entregar o sistema como uma única entrega, o

desenvolvimento e a entrega são separados em incrementos,

sendo que cada incremento fornece parte da funcionalidade

solicitada.

Os requisitos de usuário são priorizados e os

requisitos de prioridade mais alta são incluídos nos incrementos

33

requisitos de prioridade mais alta são incluídos nos incrementos

iniciais.

VANTAGENS DA ENTREGA INCREMENTAL

O valor pode ser entregue para o cliente com cada

incremento e, desse modo, a funcionalidade de sistema é

disponibilizada mais cedo.

O incremento inicial age como um protótipo para auxiliar a

elicitar os requisitos para incrementos posteriores do sistema.

34

elicitar os requisitos para incrementos posteriores do sistema.

Riscos menores de falha geral do projeto.

Os serviços de sistema de mais alta prioridade tendem a

receber mais testes.

EXTREME PROGRAMMING

Uma abordagem baseada no desenvolvimento e na entrega

de incrementos de funcionalidade muito pequenos.

Baseia-se no aprimoramento constante de código, no

envolvimento do usuário na equipe e no desenvolvimento e

programação em pares.

35

programação em pares.

DESENVOLVIMENTO EM ESPIRAL

O processo é representado como uma espiral ao invés de uma

sequência de atividades como realimentação.

Cada loop na espiral representa uma fase no processo.

Sem fases definidas, tais como especificação ou projeto;

Os riscos são explicitamente avaliados e resolvidos ao longo do

36

Os riscos são explicitamente avaliados e resolvidos ao longo do

processo.

DESENVOLVIMENTO EM ESPIRAL

37

DESENVOLVIMENTO EM ESPIRAL

Setores do Desenvolvimento em Espiral-Definição de objetivos:-Objetivos específicos para a fase são identificados.

-Avaliação e redução de riscos:-Riscos são avaliados e atividades são realizadas para reduzir os

38

-Riscos são avaliados e atividades são realizadas para reduzir os

riscos-chave.

-Desenvolvimento e validaçãoUm modelo de desenvolvimento para o sistema, que pode ser

qualquer um dos modelos genéricos, é escolhido.

-Planejamento

-O projeto é revisado e a próxima fase da espiral é planejada.

DESENVOLVIMENTO EM ESPIRAL

Atividades de Processo- Especificação de software;

- Projeto e implementação de software;

- Validação de software;

- Evolução de software.

39

- Evolução de software.

DESENVOLVIMENTO EM ESPIRAL

Atividades de Processo- Especificação de software;

- Projeto e implementação de software;

- Validação de software;

- Evolução de software.

40

- Evolução de software.

PROCESSO DE SOFTWARE

-Como definir o modelo de processo do software?

-Como definir a iteração do projeto?

41

PROCESSO DE SOFTWARE

“Uma empresa de produção de calçados deseja automatizar o

setor de estoque e contrata um serviço terceiriza do para

desenvolver um software que atenda as necessidades. A

princípio, existem muitos riscos no projeto, pois o setor de

estoque apresentar e quisito pouco definido. O cliente pretende

42

estoque apresentar e quisito pouco definido. O cliente pretende

esclarecer o quanto antes os requisitos que ainda não estão

claros.”

PROCESSO DE SOFTWARE

“Uma rede de hotéis deseja renovar o sistema de controle de

hospedagem e contrata um serviço terceirizado para desenvolver

um software que atenda as necessidades. A princípio, os

requisitos estão muito bem definidos, pois a empresa possui um

sistema anterior que facilita o entendimento. O cliente pretende

43

sistema anterior que facilita o entendimento. O cliente pretende

ter um acompanhamento modular do desenvolvimento do

software.”


Top Related