• Nenhum resultado encontrado

AulaEngSW01

N/A
N/A
Protected

Academic year: 2021

Share "AulaEngSW01"

Copied!
45
0
0

Texto

(1)

Engenharia de Software I

Prof. Lucio Kamiji lucio.kamiji@unifil.br

(2)

Importância do Software

• 1950 a 1980: desenvolvimento de hardware que reduzisse o custo de processamento.

• 1980 a 1990: avanços da microeletrônica resultou em maior poder de processamento e custo cada vez mais baixo.

• A partir de 1990: melhorar a qualidade de soluções (softwares) baseadas no

(3)

O papel evolutivo do Software

1950 1960 1970 1980 1990 2000 Os primeiros anos • Orientação batch • Distribuição limitada • Software customizado A segunda era • Multiusuário • Tempo Real • Banco de Dados • Produto de software A terceira era • Sistemas distribuídos • “Inteligência” embutida • Hardware de baixo custo • Impacto de consumo

A quarta era

• Sistemas de desk-top poderosos • Tecnologia orientadas a objeto • Sistemas especialistas

• Redes neurais artificiais • Computação paralela

(4)

Características do Software

Tempo T a x a d e F a lh a s

Curva de falhas (banheira) para o hardware

“Mortalidade infantil”

(5)

Curva de Falhas Ideal do SW

Tempo T a x a d a s F a lh a s Contínua na mesma taxa até a obsolecência

(6)

Curvas de Falhas Real do SW

Tempo T a x a d e F a lh a s Mudança

(7)

Software

• Componentes do Software (reusabilidade)

– Duas formas:

• Componentes não executáveis • Componentes executáveis

• Aplicações do Software

– Software básico (S.O., compiladores, utilitários, drivers) – Software de Tempo Real (controla o mundo real)

– Software Comercial (estoque, CR, CP, CT)

– Software Científico e de Engenharia (CAD, teste de fadiga) – Software Embutido (residente na memória)

– Software de Computador Pessoal (planilhas, processador de texto) – Software de Inteligência Artificial (baseados em conhecimento)

(8)

Problemas

01) Estimativas de prazo e de custo

freqüentemente são imprecisas (falham); 02) Produtividade das pessoas da área de

software não tem acompanhado a demanda por seus serviços; e

03) Qualidade de software às vezes é menos que adequada.

(9)

Dificuldades:

1) Pouco tempo dedicado para coletar dados sobre o processo de desenvolvimento de software (poucos históricos, chutes, etc...);

2) Insatisfação do cliente com o sistema “concluído” ocorre freqüentemente (requisitos pobres,

comunicação fraca);

3) Qualidade de software é freqüentemente suspeita (testes de software, ferramentas, etc...); e

(10)

Causas:

01) Os problemas foram causados pelo próprio caráter do software e pelas falhas das pessoas que detinham a

responsabilidade pelo desenvolvimento; 02) Desafio intelectual do desenvolvimento; 03) Baixa comunicação entre todas as pessoas

envolvidas no projeto;

04) Pouco treinamento formal em novas técnicas para o desenvolvimento; e

(11)

Mitos do Software

• Mitos Administrativos: os responsáveis pelo

desenvolvimento encontram-se sobre pressão para manter o orçamento, evitar que os prazos saiam de controle e melhorarem a qualidade.

• Mitos do Cliente: Os clientes acham que os responsáveis pelo desenvolvimento devem saber (conhecimento) de tudo sobre as demais áreas.

• Mitos do Profissional: a programação era vista como uma forma de arte e velhas maneiras e atitudes dificilmente morrem (mais de 4 décadas).

(12)

Mitos Administrativos

• Mito: Já temos um manual de padrões

e procedimentos para a construção de software.

• Realidade: O manual pode existir, mas

será que é usado? Os profissionais têm conhecimento de sua existência?

(13)

Mitos Administrativos

• Mito: Meu pessoal tem ferramentas de

desenvolvimento de última geração; afinal de contas compramos o mais novos

computadores.

• Realidade: É preciso muito mais que novos

computadores para desenvolver software de qualidade. Ferramentas adequadas de CASE são mais importantes que os computadores.

(14)

Mitos Administrativos

• Mito: Se estamos atrasados nos prazos

podemos adicionar mais programadores e tirar o atraso (conceito hordas de mongóis).

• Realidade: “... acrescentar mais pessoas em

um projeto de software atrasado torna-o ainda mais atrasado” [Brooks, F., The

(15)

Mitos do Cliente

• Mito: Uma declaração geral dos

objetivos é suficiente para se começar a escrever programas - podemos

preencher os detalhes mais tarde.

• Realidade: Uma definição inicial ruim é

a principal causa de fracasso dos esforços de desenvolvimento de software

(16)

Mitos do Cliente

• Mito: Os requisitos de projeto

modificam-se continuamente, mas as mudanças podem ser facilmente

acomodadas, porque o software é flexível.

• Realidade: O impacto da mudança

varia de acordo com o tempo em que é introduzida.

(17)

O Impacto da Mudança

Custo da Mudança

Definição Desenvolvimento Manutenção

1x

1.5 -6x

60 -100x

(18)

Alto Custo de Requisitos Errados

A regra 1-10-100 100 25 10 5 2.5 .5 - 1 Estágio Tempo de Requisitos Projeto Codificação Teste Aceitação do Teste Manutenção

Custo relativo para corrigir erros:

Quando introduzido x quando reparado

“Todos juntos, os resultados mostram que existe uma

relação de 200:1 no % do custo entre erros encontrados no estágio de requisitos e no de manutenção do ciclo de vida do software.”

% custo médio é 14:1 Grady 1989

(19)

Mitos do Profissional

• Mito: Assim que escrevermos o

programa e o colocarmos em

funcionamento nosso trabalho estará completo.

• Realidade: Existe indicação de que 50

a 70% de todo o esforço gasto num programa serão despendidos depois que ele for entregue ao cliente.

(20)

Mitos do Profissional

• Mito: Enquanto não tiver o programa

“funcionando”, eu não terei realmente nenhuma maneira de avaliar sua

qualidade.

• Realidade: A revisão técnica formal

tem sido considerado mais eficiente do que a realização de testes.

(21)

Mitos do Profissional

• Mito: A única coisa a ser entregue em

um projeto bem-sucedido é o programa funcionando.

• Realidade: Os programas funcionando

é apenas uma parte de uma

(22)

Paradigmas da Engenharia de

Software

• Engenharia de Software:

– É o estabelecimento e uso de sólidos princípios de

engenharia para que se possa obter economicamente um software que seja confiável e que funcione

eficientemente em máquinas reais. (Fritz Bauer)

– É abordagem sistemática, disciplinada e possível de ser medida para o desenvolvimento, operação e

(23)

Ciclo de Vida Clássico

Engenharia de Sistemas Análise Projeto Codificação Teste Manutenção

(24)

Críticas ao Ciclo de Vida

Clássico

• Projetos raramente seguem o fluxo seqüencial

proposto. Sempre existe iterações e traz problemas na aplicação.

• Dificilmente o usuário define claramente todos os requisitos.

• O usuário deve ter paciência, porque uma versão do sistema estará pronto num ponto tardio do

cronograma. Qualquer erro crasso pode ser desastroso.

(25)

Prototipação

Coleta e refinamento dos requisitos Projeto rápido Construção do protótipo Avaliação do protótipo pelo cliente Refinamento do protótipo Engenharia do produto Início Fim

(26)

Prototipação

• É um processo que capacita o

desenvolvedor a criar um modelo do software que será implementado.

– Pode assumir 3 formas:

• protótipo em papel ou modelo baseado no PC que retrata a interação homem-máquina;

• protótipo de trabalho que implementa algum subconjunto de funcionalidades; e

• programa existente que implementa parte ou toda funcionalidade.

(27)

Modelo Espiral

Planejamento Análise dos Riscos

Avaliação do Cliente Engenharia

Análise dos riscos baseada nos requisitos iniciais

Análise dos riscos baseada na reação do cliente Decisão de Prosseguir ou não Na direção de um sistema concluido

Coleta inicial dos Requisitos e Planejamento do Projeto

Planejamento baseado nos comentários do cliente

Avaliação do cliente

Protótipo de Software inicial

Protótipo de nível seguinte

(28)

Modelo Espiral

• Planejamento:

– determinação dos objetivos, alternativas e restrições

• Análise dos riscos:

– análise de alternativas e identificação/resolução dos riscos

• Engenharia:

– desenvolvimento do produto no ”nível seguinte”

• Avaliação feita pelo cliente:

(29)

Técnicas da 4a. Geração

Coleta de requisitos Estratégia de Projeto Implement. usando 4GL Teste

(30)

A Natureza Mutante do

Desenvolvimento do Software

1970 1980 1990 2000

Métodos convencionais

Demanda

global Aplicações de “técnicas de quarta geração” D em an da d e so ft w ar e

(31)

Combinando Paradigmas

Obtenção preliminar dos requisitos

Análise de requisitos Projeto Realização de testes 4GT (técnicas de quarta geração) Codificação Prototipação Enésima iteração Modelo espiral 4GT (técnicas de quarta geração) 4GT (técnicas de quarta geração) Enésima iteração Sistema Operacional Manutenção

(32)

Visão Genérica da Engenharia de

Software (3 fases)

• Definição (o quê?):

– Análise do Sistema

– Planejamento do Projeto de Software – Análise de Requisitos • Desenvolvimento (como?): – Projeto de Software – Codificação – Testes do Software • Manutenção: – Correção – Adaptação – Melhoria funcional

(33)

Fase de Definição do Processo de

Software

Focaliza "

Focaliza "o queo que" ser" seráá desenvolvidodesenvolvido

• que informação será processada

• que funcionalidade e desempenho são desejados • que comportamento pode ser esperado do sistema • que interfaces serão estabelecidas

• que restrições de projeto existem

• que critérios de validação são exigidos para definir um sistema bem sucedido

(34)

Fase de Definição do Processo de

Software

Focaliza "

Focaliza "o queo que" seráá desenvolvido" ser desenvolvido

• que informação será processada

• que funcionalidade e desempenho são desejados • que comportamento pode ser esperado do sistema • que interfaces serão estabelecidas

• que restrições de projeto existem

• que critérios de validação são exigidos para definir um sistema bem sucedido

Análise de Sistemas

Planejamento do Projeto de Software Análise de Requisitos

(35)

Fase de Desenvolvimento do

Processo de Software

Focaliza "

Focaliza "comocomo" o software ser" o software seráá desenvolvidodesenvolvido

• como os dados serão estruturados

• como uma funcionalidade será implementada com uma arquitetura de software

• como os detalhes de procedimentos serão implementados • como as interfaces serão caracterizadas

• como o projeto será traduzido numa linguagem de programação

(36)

Fase de Desenvolvimento do

Processo de Software

Focaliza "como" o software ser

Focaliza "como" o software seráá desenvolvidodesenvolvido

• como os dados serão estruturados

• como a funcionalidade será implementada com uma arquitetura de software

• como os detalhes procedimentais serão implementados • como as interfaces serão caracterizadas

• como o projeto será traduzido em uma linguagem de programação

• como os testes serão efetuados

Projeto do Software Codificação

(37)

Fase de Manutenção do Processo

de Software

Focaliza as "

Focaliza as "mudanmudanççasas" que ocorrerão depois " que ocorrerão depois

que o software for liberado para uso

que o software for liberado para uso

operacional

operacional

• A fase de manutenção reaplica os passos das fases de definição e desenvolvimento, mas faz isso no contexto de um software existente

(38)

Fase de Manutenção do Processo

de Software

Focaliza as "

Focaliza as "mudanmudanççasas" que ocorrerão depois " que ocorrerão depois que o software for liberado para uso

que o software for liberado para uso operacional

operacional

• A fase de manutenção reaplica os passos das fases de definição e desenvolvimento, mas faz isso no contexto de um software existente

Correção Adaptações

(39)

Bibliografia

PRESSMAN, Roger S. ENGENHARIA DE SOFTWARE. São Paulo: Makron Books, 1995. (páginas 1 a 49).

(40)

As Melhores Práticas da

Engenharia de Software

• Desenvolvimento Iterativo • Gerência de Requisitos

• Uso da Arquitetura de Componentes • Modelo Visual (UML)

• Verificação Contínua da Qualidade • Gerência da Mudança

(41)

R.U.P. Implementa as

Melhores Práticas

• O RUP é um processo de negócio genérico para engenharia de software orientado a

objeto.

• Ele descreve uma família de processo de engenharia de software tendo em comum a estrutura e arquitetura de processo.

(42)
(43)

Desenvolvimento Iterativo

Produz um Executável

Requisitos Análise e Projetos Implementação Teste Implantação Planejamento Planejamento Inicial Avaliação Gerenciamento do Ambiente Cada Iteração resulta num release executável

(44)

Estrutura do processo – fases do ciclo de

vida

O RUP tem quatro fases:

• Inception – define o escopo de projeto

• Elaboration – plano do projeto, especifica funcionalidades, arquitetura básica

• Construction – construção do produto

• Transition – transição do produto dentro da comunidade do usuário final

(45)

Gerenciamento de Requisitos: Visão Geral

Procedimentos

de Teste Projeto User Docs Problema Espaço da Solução Espaço do Problema Neces-sidades Características Use Cases e Requisitos de Software Produto a Produto a ser ser constru construíídodo R ast rea bilid ade

Referências

Documentos relacionados

tividades pedagógicas relativas a atuação em sala de aula como estagiário docente, tais como plano de aula, preparação de material didático auxiliar para uso elaboração

Ainda em novembro de 2013, as deputadas organizaram a campanha “16 dias pelo fim da violência contra as mulheres”, que teve diversas ações tais como um ato público;

A aceitação do fenótipo negro é bastante visível em todas as obras, e ações, historicamente, desenvolvidas pelos brancos, são representadas por personagens negras, como

DECLARO que tenho pleno conhecimento do disposto no presente PDI a respeito do Plano de Saúde, bem como, de que no caso de optar pela permanência devo fazer minha opção diretamente

Seleciona a proposta, A ou B, e, de acordo com a proposta selecionada, apresenta 2 argumentos, explicando, um de forma adequada e outro de forma menos adequada, de

Os processos de recobrimento com menores valores de eficiência (Ensaio 1), tanto para pellets recobertos com Opadry ® quanto para pellets recobertos com Opadry ® II,

Pretende discutir a relação entre memória e espaço urbano através das fontes audio- visuais produzidas pelos movimentos Ocupe Estelita (Recife) e Renovar a Mouraria (Lisboa),

Assim como as duas categorias já citadas, conclui-se para os respondentes da empresa terceirizada que essa integração é muito satisfatória pois 75% responderam que