fundamentos de engenharia de software willamys araújo 1

42
Fundamentos de Engenharia de Software Willamys Araújo 1

Upload: internet

Post on 18-Apr-2015

121 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Fundamentos de Engenharia de Software Willamys Araújo 1

1

Fundamentos de Engenharia de Software

Willamys Araújo

Page 2: Fundamentos de Engenharia de Software Willamys Araújo 1

2

Processo de Software

• “É um diálogo no qual o conhecimento, que deve se transformar em software, é reunido e incorporado ao software.”

Page 3: Fundamentos de Engenharia de Software Willamys Araújo 1

3

Processo de Software

• Processo fornece interação– Usuários e projetistas– Usuários e ferramentas– Projetistas e ferramentas

Page 4: Fundamentos de Engenharia de Software Willamys Araújo 1

4

Processo de Software

• É um arcabouço para as tarefas que são necessárias para construir softwares de alta qualidade.

Page 5: Fundamentos de Engenharia de Software Willamys Araújo 1

5

Processo de Software - Introdução• Através de uma visão geral um processo de software pode ser considerado

assim:

Uma Visão Genérica: 3 Fases Definição - “o que”

– Engenharia do Sistema– Planejamento do Projeto– Análise de Requisitos

Desenvolvimento - “como”– Projeto– Geração do Código– Teste

Manutenção

Atividades Guarda-Chuva

• Controle e Rastreamento do Projeto• Revisões Técnicas Formais• Garantia de Qualidade• Gerenciamento de Configuração• Produção e Preparação de Documentos• Gerenciamento de Reusabilidade• Medição• Gerenciamento de Risco

Page 6: Fundamentos de Engenharia de Software Willamys Araújo 1

6

Processo é sinônimo de Engenharia de software?

Page 7: Fundamentos de Engenharia de Software Willamys Araújo 1

7

Processo

Abordagem que é adotada quandoo software é elaborado.

Engenharia de Software

Inclui tbm tecnologias (métodos técnicos e

ferramentas automatizadas)

Quando se elabora um sistema é precisoSeguir uma série de passos previsíveis

Um roteiro– roteiro é chamado de processo de software.

Processo x Engenharia

Page 8: Fundamentos de Engenharia de Software Willamys Araújo 1

8

Engenharia de Software

• É o estabelecimento e utilização de saudáveis princípios de engenharia a fim de obter economicamente software que seja confiável e rode eficientemente em máquinas reais.

Page 9: Fundamentos de Engenharia de Software Willamys Araújo 1

9

O que falta a esta definição?– Aspectos técnicos de qualidade de software? – Satisfação do usuário? – Cumprimento do cronograma? – Importância de medidas, métricas e indicadores? – Importância de um processo maduro para desenvolvimento? – Como aplicar os saudáveis princípios de engenharia? – Como construir software confiável e econômico? – O que é rodar eficientemente em máquinas reais?

Page 10: Fundamentos de Engenharia de Software Willamys Araújo 1

10

Engenharia de Software

• A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software; isto é, a aplicação da engenharia ao software. (IEEE - The Institute of Electrical and Electronics

Engineers )

Page 11: Fundamentos de Engenharia de Software Willamys Araújo 1

11

Engenharia Software

Tecnologia em Camadas

Processo

Métodos

Qualidade

Page 12: Fundamentos de Engenharia de Software Willamys Araújo 1

12

Engenharia de Software

• Métodos e Técnicas: como fazer. Estabelece o contexto no qual os métodos são aplicados, os produtos de trabalho (modelos, documentos, dados) são produzidos, os marcos são estabelecidos, a qualidade garantida.

• Metodologias: como aplicar– Análise de requisitos,– Modelagem de projetos,– Construção, teste e manutenção de programas.

Page 13: Fundamentos de Engenharia de Software Willamys Araújo 1

13

Engenharia de Software

• Ferramentas: Automatizam os métodos, dão apoio à utilização dos mesmos.– CASE => (Computer-Aided Software Engineering):

Ferramentas integradas para desenvolver software.

Page 14: Fundamentos de Engenharia de Software Willamys Araújo 1

14

Engenharia de Software

• É o “solo” e o porque de utilizarmos um processo de software

“Gerenciamento da Qualidade Total e filosofias similares produzem uma mudança cultural

que permite o desenvolvimento crescente de abordagens mais maduras para a Engenharia

de Software”.(Pressman, 2006)

Page 15: Fundamentos de Engenharia de Software Willamys Araújo 1

15

Produto e Processo

• Se o processo de desenvolvimento de um produto é ruim, sem dúvida o produto obtido é ruim. No entanto não se deve focar apenas no processo. O produto é também importante.

Page 16: Fundamentos de Engenharia de Software Willamys Araújo 1

16

Produto e Processo

• Contexto, utilização e significado do software deve ser analisado tanto do ponto de vista de processo como de produto. – O desenvolvedor de software deve sentir

satisfação tanto na execução do processo de desenvolvimento como no exame produto final obtido.

Page 17: Fundamentos de Engenharia de Software Willamys Araújo 1

17

O processo de Software

• Cinco atividades genéricas– Comunicação– Planejamento– modelagem– Construção– Implantação

Page 18: Fundamentos de Engenharia de Software Willamys Araújo 1

18

O processo de Software

• Diferentes projetos necessitam de diferentes conjuntos de tarefas. A equipe de software escolhe o conjunto de tarefas com base no problema e características do projeto.

Page 19: Fundamentos de Engenharia de Software Willamys Araújo 1

19

Exemplo

• Projeto pequeno e simples.– Lista de envolvidos no projeto– Convide todos os interessados para reunião– Cada um faz lista de características e funções

desejadas– Discuta requisitos e construa lista final– Priorize requisitos– Observe as áreas de incertezas

Page 20: Fundamentos de Engenharia de Software Willamys Araújo 1

20

Exemplo

• Projeto e maior e mais complexo– Lista de envolvidos no projeto– Entrevista cada um individualmente para determinar seus desejos e

necessidades gerais– Construa uma lista preliminar de funções e características– Programe uma série de reuniões para levantamento de requisitos– Realize as reuniões– Produza cenários informais de usuário como parte de cada reunião

Page 21: Fundamentos de Engenharia de Software Willamys Araújo 1

21

Exemplo

• Projeto e maior e mais complexo– Refine os cenários com base no feedback dos envolvidos– Construa uma lista revisada dos requisitos– Use técnicas de implantação de função de qualidade para priorizar

requisitos– Empacote requisitos de modo que possam ser entregues

incrementalmente– Anote as restrições e limitações que serão colocadas no sistema– Discuta métodos para validação do sistema.

Page 22: Fundamentos de Engenharia de Software Willamys Araújo 1

22

CMMI (Capability Maturity Model Integration)

• Modelo desenvolvido pelo SEI (Software Engineering Institute) baseado em um conjunto de capacidades de engenharia de software que devem estar presentes à medida que as empresas alcançam diferentes níveis de capacidade e maturidade de processo.

http://www.sei.cmu.edu/cmmi/general/index.html

Page 23: Fundamentos de Engenharia de Software Willamys Araújo 1

23

CMMI

• Apresenta 2 modelos diferentes de processo:– Modelo contínuo– Modelo em estágios

Page 24: Fundamentos de Engenharia de Software Willamys Araújo 1

24

Pesquisa Sobre CMMI

• Formar grupos de 5 pessoas;• Pesquisar sobre os dois tipos de CMMI– Em Estágios – Contínuo– Diferenças entre eles.

• Apresentar na Próxima aula(09/06)

Page 25: Fundamentos de Engenharia de Software Willamys Araújo 1

25

Processo de Software – Engenharia de Software

• O objetivo desta aula é dar foco no PROCESSO de desenvolvimento de software e aos MODELOS existentes na literatura;

• Processo de software define uma abordagem;

• Modelo é uma descrição simplificada, uma abstração dessa abordagem;

Page 26: Fundamentos de Engenharia de Software Willamys Araújo 1

26

Processo de Software – Modelo de Processo de Software

Page 27: Fundamentos de Engenharia de Software Willamys Araújo 1

27

Processo de Software – Modelo de Processo de Software

• Um modelo de processo de software deve ser escolhido com base:

– Na natureza do projeto e da aplicação;

– Nos métodos e ferramentas a serem utilizados;

– Nos controles e produtos que precisam ser entregues;

Page 28: Fundamentos de Engenharia de Software Willamys Araújo 1

28

Processo de Software – Modelo de Processo de Software

• Alguns modelos de processo:

Modelo Seqüencial Linear Modelo RAD Modelos Evolucionários

Modelo de Prototipação ( Descartáveis )

Incremental ( Exploratório ) Espiral ( Exploratório )

Técnicas de 4a Geração

Page 29: Fundamentos de Engenharia de Software Willamys Araújo 1

29

Processo de Software – Modelo Seqüencial Linear

• Também conhecido como ciclo de vida clássico ou Modelo Cascata:

– Modelo mais antigo e mais usado (idealizado por Royce em 1970 );

– Modelado em função do ciclo de engenharia convencional;

– Requer uma abordagem sistemática e seqüencial para o desenvolvimento de um software;

Page 30: Fundamentos de Engenharia de Software Willamys Araújo 1

30

Processo de Software – Modelo Seqüencial Linear

• Muitos aplicam esse modelo de forma estritamente linear, sem volta.

Engenharia de Sistemas / Informação

AnáliseAnálise Projeto Projeto Codificação Codificação Testes Testes

Page 31: Fundamentos de Engenharia de Software Willamys Araújo 1

31

Processo de Software – Modelo Seqüencial Linear

• Mas o modelo original prevê a volta:

Engenharia de Sistemas

Engenharia de Sistemas

Análise de Requisitos

Análise de Requisitos

Projeto Projeto

Codificação Codificação

Testes Testes

Manutenção Manutenção

Page 32: Fundamentos de Engenharia de Software Willamys Araújo 1

32

Processo de Software – Modelo Seqüencial Linear

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

ANÁLISE E ENGENHARIA DE SISTEMAS

1. Envolve a coleta de requisitosde todos os elementos do sistema;

2. Essa visão de sistema é essencial quando o software faz interface com outros elementos como HW, pessoas e BD;

Page 33: Fundamentos de Engenharia de Software Willamys Araújo 1

33

Processo de Software – Modelo Seqüencial Linear

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

ANÁLISE DE REQUISITOS DE SOFTWARE

1. processo de coleta dos requisitos é intensificado e concentrado especificamente no software

2. deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos

3. os requisitos (para o sistema e para o software) são documentados e revistos com o cliente

Page 34: Fundamentos de Engenharia de Software Willamys Araújo 1

34

Processo de Software – Modelo Seqüencial Linear

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

• PROJETO1. tradução dos requisitos do software para um

conjunto de representações que podem ser avaliadas quanto à qualidade, antes que a codificação se inicie

2. se concentra em 4 atributos do programa:

– Estrutura de Dados, – Arquitetura de Software, – Detalhes Procedimentais e – Caracterização de Interfaces

Page 35: Fundamentos de Engenharia de Software Willamys Araújo 1

35

Processo de Software – Modelo Seqüencial Linear

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

CODIFICAÇÃO1. tradução das

representações do projeto para uma linguagem “artificial” resultando em instruções executáveis pelo computador

Page 36: Fundamentos de Engenharia de Software Willamys Araújo 1

36

Processo de Software – Modelo Seqüencial Linear

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

TESTES• Concentram-se:

1. nos aspectos lógicos internos do software, garantindo que todas as instruções tenham sido testadas

2. nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados.

Page 37: Fundamentos de Engenharia de Software Willamys Araújo 1

37

Processo de Software – Modelo Seqüencial Linear

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

MANUTENÇÃO1. o software deverá sofrer mudanças

depois que for entregue ao cliente

Page 38: Fundamentos de Engenharia de Software Willamys Araújo 1

38

Processo de Software – Modelo Seqüencial Linear

• Problemas:

– Projetos reais raramente seguem o fluxo de seqüencial proposto;– É difícil estabelecer todos os requisitos no começo do projeto na qual

existe uma incerteza natural quanto a esses requisitos;– Uma versão do software só vai ficar pronta em um ponto tardio do

desenvolvimento;• Assim se houver algum erro não detectado na análise ou projeto o

resultado pode ser desastroso;– Há muitos estágios bloqueantes que permitem a ociosidade dos

desenvolvedores em alguns momentos

Page 39: Fundamentos de Engenharia de Software Willamys Araújo 1

39

Processo de Software – Modelo Seqüencial Linear

• Problemas:

– Dificuldade em acomodar mudanças depois que o processo está a ser executado;

– É mais apropriado quando os requisitos são bem compreendidos; – Cliente tem de pacientemente esperar o resultado final; – Os programadores são frequentemente atrasados sem necessidade; – Alto custo de correção das especificações quando nas fases de Teste e

Implantação.

Page 40: Fundamentos de Engenharia de Software Willamys Araújo 1

40

Processo de Software – Modelo Seqüencial Linear

Embora o Modelo Seqüencial Linear

ou Ciclo de Vida Clássico tenha

fragilidades, ele é

significativamente melhor do que

uma abordagem casual ao

desenvolvimento de software

Page 41: Fundamentos de Engenharia de Software Willamys Araújo 1

41

Exercícios• Desenvolva um conjunto de tarefas para a atividade de

comunicação.• Descreva um arcabouço do processo com suas próprias

palavras. Quando se diz que as atividades de arcabouço são aplicadas a todos os projetos, isso quer dizer que as mesmas tarefas de trabalho são aplicadas a todos os projetos, independentemente do tamanho e da complexidade, explique.

• O que é mais importante: o produto ou o processo?

Page 42: Fundamentos de Engenharia de Software Willamys Araújo 1

42

Exercícios

• A figura abaixo coloca as camadas da engenharia de software sobre uma camada denominada “qualidade”. Isso implica um programa de qualidade para toda a organização tal como de qualidade total. Pesquise e faça um esboço dos pontos-chave de um programa de gestão de qualidade total.

Qualidade