Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de...

39
Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise e Projeto de Sistemas

Transcript of Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de...

Page 1: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

Engenharia de Software

Renata AraujoRicardo Storino

Núcleo de Computação EletrônicaCurso de Programação de Computadores

Maio a Setembro/2000

Análise e Projeto de Sistemas

Page 2: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

2

A evolução do Software

Década de 1960 Sistemas em Batch Distribuição limitada Software customizado

Década de 1970 Multi usuários Tempo real Bancos de Dados Software Produto

Década de 1980 Sistemas distribuídos Inteligência embutida Hardware barato impacto no consumidor

Década de 1990 Sistema pessoais Tecnologias OO Sistemas Especialistas Redes Neurais Computação Paralela

Page 3: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

3

Desenvolvimento de Software

Usuário

Software

Desenvolvedor

Software

Page 4: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

4

A evolução do Software

Software cada vez maior mais funcionalidades mais complexo abrangendo mais usuários exigindo a participação de equipes em seu desenvolvimento

Page 5: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

5

Características do Software

Software é desenvolvido e não produzido no sentido clássico (industrial) custo de Software é na engenharia e não na reprodução

Software não ‘gasta’ custos em sua manutenção

Software precisa se adaptar a novas tecnologias (‘crise do software’)

Page 6: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

6

A Crise de Software

Dificuldades no Trabalho com Software

Medidas pobres de eficiência e qualidade

Insatisfação do usuário é frequente Pouco entendimento dos requisitos Problemas de Comunicação entre o usuário e o analista

A qualidade do software é frequentemente suspeita Poucas medidas e critérios de qualidade

Software existente é muito difícil de manter E tem que ser mantido até ser substituído

Page 7: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

7

A Crise de Software

Causas

Introdução de erros no processo Má especificação Mau projeto Má implementação Testes incompletos ou mal feitos

Problemas na comunicação homem-máquina

Problemas na gerência Falta de treinamento em novas técnicas de desenvolvimento O processo está evoluindo muito rapidamente em função do

aprendizado. É necessário reciclar

Page 8: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

8

Problemas

Complexidade Especificar sistemas é uma atividade bastante complexa. Não se

trata apenas de fazer uns “programinhas”.

Insatisfação dos usuários usuários sentem-se frustrados com sistemas difíceis de serem

operados e/ou cujo desenvolvimento se prolonga por vários anos. usuário precisa de sistemas funcionando de acordo com suas

necessidades

“O valor de um sistema está em atender com precisão as necessidades de seus usuários.”

Page 9: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

9

Problemas

Produtividade

Costuma estar quase sempre aquém do desejado.

Freqüentemente, a alocação de recursos e atividades são desbalanceadas.

Algumas questões recebem consideração demasiada, enquanto outras são insuficientemente consideradas.

Custos, tempo e recursos geralmente são subestimados

Page 10: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

10

Problemas

Confiabilidade do Sistema

Há diversas estatísticas que provam a pouca confiabilidade de boa parte dos sistemas.

depende do uso de métodos que possam garantir uma boa qualidade do produto construído

Não basta que o sistema produza resultados solicitados pelo usuário.Mas que também tenha o desempenho adequado.

“Não é suficiente que o sistema seja eficiente. É necessário ainda que ele seja eficaz”

Page 11: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

11

Problemas

Manutenibilidade

Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação.

Sistemas recentemente implantados são substituídos por novos, devido ao alto custo para sua manutenção

Page 12: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

12

Custo de Mudanças

Custo

1x

1,5a

5X

60a

100X

Definição Projeto Manutenção

Fase Crítica

Page 13: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

13

Problemas

Porque leva tanto tempo para terminar programas e sistemas?

Porque os custos são tão altos?

Porque temos dificuldade de medir o progresso do desenvolvimento do software?

Porque não conseguimos detectar todos os erros antes de entregar o software aos nossos clientes?

Porque os usuários estão sempre insatisfeitos com o software entregue?

Page 14: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

14

Mitos...

da Gerência...

Manuais de Regras e Procedimentos

Ferramentas modernasde software e hardware

são suficientes

Estamos atrasados… Vamos alocar

mais gente ao projeto!

Desatualizados, obsoletos

O uso eficiente de ferramental exige conhecimento

Custos de treinamento, gerência e entendimento do processo de trabalho

Page 15: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

15

Mitos...

do Desenvolvedor/Programador...

Programa escrito e testado!

Acabei!

Até que o programa esteja “rodando” não

há como medir sua qualidade

O único produto de um projeto de software é o conjunto de programas

Quanto mais cedo voce escrever o código, mais tempo irá demorar para completá-lo

De 50 a 70 % do custo de produção de um software vai ser gasto para operacionalizá-lo para o usuário

Revisões anteriores à codificação

Especificação, projeto, plano de trabalho

Page 16: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

16

Mitos... do Cliente...

Uma lista de intenções (boas) é suficiente para começar

a produzir o software

Minhas necessidades vão mudar… Mas mudanças são fáceis de introduzir

porque software é bastante flexível

Custo de mudanças é muito altoA Especificação do

Software é a fase mais crítica do processo

Erros na fase inicial têm um custo muito alto de correção

Page 17: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

17

O que é Engenharia de Software?

Estudo e aplicação de Métodos e Técnicas com o objetivo de tornar o desenvolvimento de software mais

“eficiente”.

“O estabelecimento e uso de princípios de engenharia de forma a obter economicamente software confiável e

que funcione eficientemente em máquinas reais.”

Page 18: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

18

Engenharia de Software

Existe como disciplina há pouco tempo

Estabelece um diferencial entre um engenheiro de software profissional e um “praticante da informática”

Novos profissionais são agentes de mudanças ou de problemas oportunidades, desafios e perigos

Page 19: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

19

Engenharia de Software

Produtividade linhas de código por dia; pontos de função por mês

Qualidade confiabilidade (e.g.: defeitos por KLOC); e manutenibilidade (manutenção fácil).

Page 20: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

20

Princípios da Engenharia

MÉTODOS

FERRAMENTAS

PROCEDIMENTOS

Page 21: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

21

Métodos

Instrumentos representação do software

durante seu desenvolvimento Notações Linguagens

Critérios de Qualidade Como avaliar o

desenvolvimento

Exemplos UML Booch Análise estruturada Anlaise Essencial

Como construir o Software?

Page 22: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

22

Ferramentas

Suporte automático ou semi-automático aos métodos CASE - Computer Aided Software Engineering

Ambientes de desenvolvimento ferramentas integradas Hardware + Software (de suporte) + Banco de Dados

É preciso muito software para desenvolver software!

Page 23: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

23

Procedimentos

Seqüência dos métodos sequência de passos e atividades

Resultados documentos, relatórios, módulos

Controles coordenação, critérios de qualidade, pontos de controle

Equipe

Quais os passos para construir o software?

Page 24: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

24

Software

ProdutoProcesso

Software

Page 25: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

25

Produto de Software

Plano

Especificação

Projeto

Testes e Validações

Programa Fonte

ProgramaObjeto

Estrutura de Dados

Page 26: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

26

Processo de Construção de Software

Equipe

FerramentasMétodos

Passos/Atividades

Produtos

Instrumentos

Processo

Page 27: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

27

Ciclo de Vida de Software

Definição dos requisitos

Análise

Projeto

Implementação

Teste/Avaliação

Implantação

Manutenção

Documentos são geradosa cada fase e servem deentrada para a fase seguinte

Page 28: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

28

Ciclo de Vida - Modelo Cascata

Intenções

Especificação do

Software

Projetodo

Software

Códigodo

Software

Sistemapronto

para operar

Análise

Projeto

Implementação

Teste

Requisitosdo

Software

Definição de Requisitos

Documentos geradosdurante o ciclo de vida

Transformações

Page 29: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

29

Definição de Requisitos

Identificar desejos, intenções, procedimentos

atuais e dados;

Organizá-los de forma coerente

Definir de uma forma geral o que será tratado pelo software interface com o que fica de fora do

software

DesejosIntenções

ProcedimentosDados

Requisitosdo

Software

Page 30: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

30

Análise do Software

Entendimento e Representação Domínio do problema Conceitos Funcionalidades Casos de uso

Baseado nos fatores críticos de sucesso do software

Especificaçãodo

Software

Requisitosdo

Software

Page 31: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

31

Projeto do Software

Projetar o Software Arquitetura Interfaces Estrutura de Dados Procedimentos

Independente da Tecnologia onde será “encarnado” o software

Especificaçãodo

Software

Arquitetura Interfaces

Estruturade

Dados

Detalhesdos

Procedimentos

Projetodo

Software

Page 32: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

32

Construção do Código

Implementação

Programação do código Tecnologia

linguagem ambiente etc

Arquitetura Interfaces

Estruturade

Dados

Detalhesdos

Procedimentos

Projetodo

Software

Código

Software

Page 33: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

33

Testes

Estou construindo um sistema correto? Estou construindo o sistema certo?

Teste de código Teste de sistema Testes com usuários

Page 34: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

34

Implantação do Software

Pôr o Software em operação

Entrada de dados Conversões de dados Treinamento de operadores Disponibilização de Manuais Suporte à operação

Help Desk Acompanhar

Software

Software

Dados Conversões

Pronto para operar

Page 35: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

35

Manutenção do Software

Manutenção Tipos

Corretiva Novos Requisitos Novas Tecnologias

Alto Custo Podem requerer

mudanças nas fases iniciais do desenvolvimento

Software

Em Operação

Erros

Software

Nova Versão

Requisitos

Page 36: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

36

Análise e Projeto OO

Motivação e benefícios Enfrentar novos domínios de aplicação

Melhorar a interação entre analistas e especialistas de domínios de aplicação

Proporcionar uma representação básica consistente entre análise e projeto

Reutilização

Page 37: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

37

O que impulsionou uma proposta OO

Amadurecimento dos conceitos de orientação a objetos

Aumento da complexidade de sistemas Maiores Sujeitos a alterações constantes Interativos Voltados para os usuários

Page 38: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

38

Métodos para Análise e Projeto OO

Rumbaugh (OMT) – 1989

Shlaer & Mellor – 1990

Coad & Yourdon – 1991

Booch – 1991

Wirfs-Brock –1991

Jacobson – 1992

Page 39: Engenharia de Software Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise.

39

Unified Modeling Language

UML – 1995

Unificação dos trabalhos de Rumbaugh, Booch, Jacobson

Oferece um conjunto de instrumentos para se realizar a análise e projeto OO

Especificação, visualização, documentação e construção de artefatos de um sistema

Linguagem de modelagem OO com maior previsão de utilização no mercado