Fundamentos de Engenharia de Software Willamys Araújo 1.

Post on 18-Apr-2015

116 views 2 download

Transcript of Fundamentos de Engenharia de Software Willamys Araújo 1.

1

Fundamentos de Engenharia de Software

Willamys Araújo

2

Processo de Software

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

3

Processo de Software

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

4

Processo de Software

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

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

6

Processo é sinônimo de Engenharia de software?

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

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.

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?

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 )

11

Engenharia Software

Tecnologia em Camadas

Processo

Métodos

Qualidade

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.

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.

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)

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.

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.

17

O processo de Software

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

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.

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

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

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.

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

23

CMMI

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

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)

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;

26

Processo de Software – Modelo de Processo de Software

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;

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

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;

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

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

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;

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

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

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

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.

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

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

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.

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

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?

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