• Nenhum resultado encontrado

05/05/2010. Década de 60: a chamada Crise do Software

N/A
N/A
Protected

Academic year: 2021

Share "05/05/2010. Década de 60: a chamada Crise do Software"

Copied!
11
0
0

Texto

(1)

Introdução

Pressman, Roger S. Software Engineering: A

Practiotioner’s Approach. Editora: McGraw-Hill. Ano: 2001. Edição: 5

Sommerville, Ian. SW Engineering. Editora:

Addison Wesley. Ano: 2003. Edição: 6

2 Fernando Pedrosa Lopes

Disciplina gerencial e tecnológica

lida com a produção e manutenção de

produtos de software desenvolvidos dentro de estimativas de custo e tempo.

Trata aspectos relacionados a

Processos, Métodos, Técnicas,

Ferramentas e Ambientes de suporte

Desenvolver Software não é só

programação!

3 Fernando Pedrosa Lopes

Obter software de qualidade

Com produtividade no seu

desenvolvimento, operação e

manutenção

Dentro de custos, prazos e níveis de

qualidade controlados

Com o melhor custo-benefício entre

Qualidade e Produtividade

4 Fernando Pedrosa Lopes

Década de 60: a chamada “Crise do

Software”

Desenvolvimento fora de controle

Iniciou como um problema de Custo e

Produtividade.

Mais importante: era um problema de

Qualidade

cada de 70

◦ Programação Estruturada

◦ Projeto Estruturado

5

(2)

Década de 80

Análise Estruturada (DFDs, Dicionário de

Dados, Diagrama ER, de Estados, etc.)

Ferramentas CASE

Década de 90

◦Análise e Projeto OO.

◦Modelagem de acordo com o mundo real.

Características e Comportamento de Objetos.

◦Processo Unificado

7 Fernando Pedrosa Lopes

Anos 2000

Metodologias Ágeis

Novos paradigmas: SOA, Aspectos,

Model-Driven Architecture, etc.

8 Fernando Pedrosa Lopes

Software

◦Programa de computador e documentação

associada.

◦Produtos de software podem ser

desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral.

9 Fernando Pedrosa Lopes

Processo

◦Uma série conectada de ações, atividades,

mudanças, etc., realizada de forma bem definida por atores com a intenção de satisfazer um propósito ou objetivo.

◦Define quem está fazendo o quê, quando

e como para atingir um certo objetivo

10 Fernando Pedrosa Lopes

Entrada Processo (atividades e sub-processos) Saída 

Processo de Software

◦Conjunto de atividades, métodos, práticas e transformações que guiam pessoas na construção de Software

(3)

“São uma representação abstrata e

simplificada do processo de

desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software.”

Contêm:

◦“Esqueleto do processo”

◦Ordem de precedência das atividades

◦Artefatos e produtos gerados

13 Fernando Pedrosa Lopes

Seqüenciais

◦Cascata ou Clássico 

Modelos Evolucionários

◦Programação Exploratória ◦Prototipagem Descartável 

Específicos

◦Métodos formais 

Iterativos

◦Espiral ◦Incremental 14 Fernando Pedrosa Lopes

Modelo “Clássico”, derivado de

modelos existentes em outras

engenharias

Sua estrutura é composta por várias

etapas que são executadas de forma

sistemática e seqüencial

Na prática, existe uma interação entre

as etapas e cada etapa pode levar a

modificações nas etapas anteriores

15 Fernando Pedrosa Lopes

Análise Projeto Implementação Testes Operação e Manutenção 16 Fernando Pedrosa Lopes

Requisitos Análise Projeto Implementação Testes Operação e Manutenção 17 Fernando Pedrosa Lopes

Requisitos Comunicação Planejamento Modelagem Construção Implantação 18 Fernando Pedrosa Lopes

- Iniciação do projeto - Levantamento de Requisitos - Estimativas - Cronograma - Monitoramento - Análise - Projeto - Codificação - Teste - Entrega - Manutenção - Teste

(4)

É simples e fácil de aplicar, facilitando

o planejamento

Fixa pontos específicos para a entrega

de artefatos

Pressupõe que os requisitos ficarão

estáveis

Porém, atrasa a redução de riscos!

19

Fernando Pedrosa Lopes Fernando Pedrosa Lopes 20

Início da integração 100% Tempo P ro g re s s o d o p ro je to (% c o d if ic a d o ) Deadline original 

Planejamento

◦Esboçar escopo e requisitos

◦Fazer estimativas razoáveis sobre

recursos, custos e prazos

Análise e Especificação de Requisitos

◦Refinar requisitos e escopo

◦Entender o domínio do problema, com

comportamento e funcionalidades esperados

21 Fernando Pedrosa Lopes

Projeto

Incorporar requisitos tecnológicos aos

requisitos essenciais do sistema

Fazer o projeto da arquitetura do sistema

e projeto detalhado do sistema

Implementação

Traduzir o projeto em uma forma passível

de execução pela máquina. Codificação.

22 Fernando Pedrosa Lopes

Testes

◦Realizar diversos níveis de teste, de forma

a fazer a verificação do software.

Implantação, Operação e Manutenção

◦Colocar o software em produção

◦Treinar pessoas

◦Manter o software

◦Gerenciar os serviços

Programação exploratória

Idéia geral:

◦Modificações sucessivas até que o sistema

seja considerado adequado

◦Desenvolvimento da primeira versão do

sistema o mais rápido possível

◦Após o desenvolvimento de cada uma das

versões do sistema ele é mostrado aos usuários para comentários

(5)

Programação exploratória

Adequado para o desenvolvimento de

sistemas onde é difícil ou impossível

se fazer uma especificação detalhada

do sistema

Principal diferença para os outros

modelos é a ausência da noção de

programa correto

25 Fernando Pedrosa Lopes

Prototipagem

Como na programação exploratória, a

primeira fase prevê o desenvolvimento

de um programa para o usuário

experimentar

◦No entanto, o objetivo aqui é estabelecer

os requisitos do sistema

◦O software deve ser reimplementado na

fase seguinte

26 Fernando Pedrosa Lopes

Prototipagem

27 Fernando Pedrosa Lopes

Prototipagem

É útil para sistemas grandes e

complicados

Ou quando não existe um sistema

anterior ou manual que ajude a

especificar os requisitos

28 Fernando Pedrosa Lopes

Métodos Formais

Idéia geral:

◦Uma especificação formal (definição

matemática, não ambígua) do software é desenvolvida e posteriormente

“transformada” em um programa através de regras que preservam a corretude da especificação

esp. 2

esp. 1 implement.

29 Fernando Pedrosa Lopes

Métodos Formais

O próprio processo de desenvolvimento

garante que o programa faz exatamente o que foi especificado

É possível gerar programas corretos e

completos por construção

Têm sido aplicados apenas ao

desenvolvimento de sistemas críticos (por questões de segurança!)

30 Fernando Pedrosa Lopes

(6)

Motivação: requisitos de sistema

sempre evoluem durante o projeto

Deve-se dividir para conquistar

Duas abordagens

◦Desenvolvimento Incremental

◦Desenvolvimento Espiral

31 Fernando Pedrosa Lopes

Desenvolvimento Incremental

A idéia é de desenvolver e entregar o software em

incrementos, com cada incremento entregando parte da funcionalidade requerida.

Requisitos são definidos antes do desenvolvimento

do incremento, sendo os mais críticos priorizados. Req A&P Imp I/T Imp Iteração 1 Req A&P Imp I/T Imp Iteração 2 Req A&P Imp I/T Imp Iteração 3 TEMPO 32 Fernando Pedrosa Lopes

 Incremental: são adicionados “pedaços completos”

 Iterativo: esboços ou pedaços incompletos do

produto são adicionados a cada iteração

33 Fernando Pedrosa Lopes

Desenvolvimento em Espiral

O processo é representado como uma

espiral em vez de uma seqüência de

atividades. Cada volta na espiral

representa uma fase no processo

Acrescenta aspectos gerenciais

Planejamento, tomada de decisão

Análise de Riscos

Porém, é complexo e requer

experiência na avaliação de riscos!

34 Fernando Pedrosa Lopes

(7)

Fernando Pedrosa Lopes 37 100% Tempo P ro g re s s o d o p ro je to (% c o d if ic a d o ) Ciclo de vida tradicional Ciclo de vida iterativo 38 Fernando Pedrosa Lopes

Início: década de 90

Reação contra métodos “pesados”, vistos como

lentos e burocráticos

Idéia central: tornar simples o que

dificultava o desenvolvimento de software

Geralmente aplicado em projetos onde os

Requisitos e Prioridades são instáveis

Hoje representa uma família de processos

de desenvolvimento.

39 Fernando Pedrosa Lopes

“Estamos evidenciando maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a entender que:

 Indivíduos e interações são mais importantes que processos e ferramentas.

 Software funcionando é mais importante do que documentação completa e detalhada.

 Colaboração com o cliente é mais importante do que negociação de contratos.

 Adaptação a mudanças é mais importante do que seguir o plano inicial.

Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda. “

40 Fernando Pedrosa Lopes

Errado - Metodologia Ágil não é o caos!

41 Fernando Pedrosa Lopes

eXtreme Programming

Scrum

FDD

Lean Software Development

Cristal Family

(...)

42 Fernando Pedrosa Lopes

(8)

Surgimento

Em meados de 1990, Kent Beck,

procurou formas mais simples e

eficientes de desenvolver Software.

Em Março de 1996, ele iniciou um

projeto com novos conceitos que

resultaram na metodologia XP

-eXtreme Programming

43 Fernando Pedrosa Lopes

“Trata-se de uma metodologia ágil para equipes pequenas e médias desenvolvendo software com requisitos vagos e em constante mudança”

44 Fernando Pedrosa Lopes

Levar todas as boas práticas ao

extremo

◦Se testar é bom, vamos testar toda hora!

◦Se projetar é bom, vamos fazer disso

parte do trabalho diário de cada pessoa!

◦Se integrar é bom, vamos integrar a maior

quantidade de vezes possível!

◦Se iterações curtas são boas, vamos deixar

as iterações realmente curtas!

45 Fernando Pedrosa Lopes

Metáfora

◦Procura facilitar a comunicação com o cliente,

entendendo a realidade dele.

Projeto simples

◦O código está, a qualquer momento, na forma

mais simples que passe todos os testes.

Pequenas versões

◦O software é entregue em pequenas versões para

que o cliente possa obter o seu ganho o mais cedo possível e para minimizar riscos.

46 Fernando Pedrosa Lopes

 Refatoração

◦A reconstrução baseia-se na remoção de redundância, eliminação de funcionalidades inúteis, e reconstrução de projetos obsoletos.

 Programação em Pares

◦Todo código de produção é desenvolvido por duas pessoas trabalhando com o mesmo teclado, o mesmo mouse e o mesmo monitor.

 Propriedade coletiva do código

◦A equipe como um todo é responsável por cada arquivo de código. Não é preciso pedir autorização para alterar qualquer arquivo.

Padrão de codificação

◦Todo código é desenvolvido segundo um padrão.

40 horas por semana

◦Cada programador trabalha 40 horas por

semana, no máximo

Reuniões em pé

◦Reuniões rápidas e diárias com a equipe, para

discutir apenas o essencial

Cliente sempre presente

(9)

 Testes de Aceitação

◦São definidos pelo usuário e são os critérios de aceitação do software.

 Desenvolvimento Orientado a Testes

◦A criação de testes leva em conta não só o tempo ganho com a criação dos mesmos antes da codificação, mas conhecer previamente as possíveis falhas do seu sistema.

 Integração Contínua

◦Os diversos módulos do software são integrados diversas vezes por dia e todos os testes unitários são executados. O código não passa até obter sucesso em 100% dos testes unitários.

49 Fernando Pedrosa Lopes

Comunicação

◦Métodos para rapidamente construir e disseminar conhecimento

Simplicidade

◦XP encoraja que você comece, sempre, pela solução mais simples

Feedback

◦Do cliente, do sistema e da equipe

Coragem

◦Design simples, refatoração…

 Respeito

◦Respeito da Equipe, do Cliente, dos Usuários…

50 Fernando Pedrosa Lopes

O nome é derivado de uma atividade que

ocorre durante um jogo de Rugby

Princípios:

◦Pequenas equipes de trabalho são organizadas de

modo a “maximizar a comunicação, minimizar a supervisão e maximizar o compartilhamento de conhecimento tácito informal”.

◦O processo precisa ser adaptável tanto a

modificações técnicas como de negócio.

◦O processo produz frequentes incrementos de

software.

51 Fernando Pedrosa Lopes

Atividades do processo

◦ requisitos ◦ análise ◦ projeto ◦ evolução ◦ entrega. 

Principais papéis

◦ScrumMaster; Product Owner; Team

52 Fernando Pedrosa Lopes

Início: Jeff de Luca e Peter Coad em

1997-98

A FDD é focada na entrega regular de

funcionalidades valiosas para o cliente

Tem mais estrutura do que o XP,

porém é mais enxuto do que o RUP – é

um meio termo.

53 Fernando Pedrosa Lopes

Seis Papéis

◦Project Manager

◦Chief Architect

◦Development Manager

◦Chief Programmers

◦Class Owners (aka Developers)

◦Domain Experts

54 Fernando Pedrosa Lopes

(10)

Cinco processos

55

Fernando Pedrosa Lopes Fernando Pedrosa Lopes 56

Antes da década de 90 – “casa de

ferreiro, espeto de pau”

Hoje em dia as ferramentas CASE

ainda não são tão variadas nem

fornecem tudo aquilo que os

desenvolvedores queriam, mas são

um aparato essencial para o

engenheiro de software

57 Fernando Pedrosa Lopes

O que são?

◦São ferramentas que auxiliam o

engenheiro de SW em cada atividade associada ao desenvolvimento de SW

Quem usa?

◦Gerentes de projeto e engenheiros de SW

Por que são importantes?

◦Reduzem o esforço necessário para

produzir artefatos e alcançar metas

◦Aumentam a qualidade do software

58 Fernando Pedrosa Lopes

Quais são os passos?

◦Ferramentas CASE são usadas em

conjunto com o modelo de processo adotado. Se for escolhida uma ferramenta completa, pode passar por quase todos os passos do desenvolvimento de SW

Como são usadas?

◦Como complemento às boas práticas de

Engenharia de Software. Ferramentas CASE não substituem uma metodologia de desenvolvimento de software sólida

“Um tolo com ferramentas, ainda é apenas um tolo”

(11)

Horizontais

◦São utilizados durante todo o processo de

desenvolvimento de software 

Verticais

◦São específicas para uma disciplina de software

Por funções [Pressman]

◦Processos de negócio, Planejamento de

projeto, Análise de Riscos, Rastreamento de Requisitos, IDEs, Gerenciamento de BDs, Análise Estática, Análise Dinâmica, ...

61 Fernando Pedrosa Lopes

Como não há um padrão para categorizar

ferramentas CASE, a seguinte proposta foi feita:

◦Front-end ou Upper CASE

apóiam as etapas iniciais da criação dos

sistemas: as fases de planejamento, análise e projeto da aplicação

◦Back-end ou Lower CASE

dão apoio à parte física, i.e, código, testes e

manutenção

◦I-CASE ou Integrated CASE

cobrem todo o ciclo de vida, do início ao fim

62 Fernando Pedrosa Lopes

Referências

Documentos relacionados

apresentados, a gravidade da falta, seus efeitos sobre as atividades administrativas e institucionais e o interesse público decorrente, bem como os antecedentes da

Qual a percepção do usuário em relação à qualidade dos serviços de testes de software, quando adotada fábrica de testes no ciclo de desenvolvimento1. Para tanto, foi delineado

• Por isso, embora tenhamos investido parte considerável do PIB à educação, os valores por aluno são relativamente baixos e falta mecanismos para garantir uma redistribuição

Desse modo, no desenvolvimento do projeto, a equipe técnica elaborou também a proposta de um novo instrumento de avaliação que pudesse aferir os níveis das competências mapeadas

* O cálculo do efeito do compartilhamento de riscos com os participantes e assistidos do plano, de forma a limitar a responsabilidade atuarial a ser reconhecida pelo Banco, considera

Por isso, este trabalho prop˜oe uma abordagem para teste de robustez no Archmeds e para isso, contou com o desenvolvimento de uma ferramenta de inje¸c˜ao de falhas chamada WSInject,

Como resultado principal do estágio, espera-se que software DDGfs tenha sido instalado com sucesso em todos os ambientes resquisitados e a partir disso, todos os testes tenham

The lower panel shows the relative difference of the observed number of events over the post-fit background prediction.... Non-uniform binning of the BDT discriminant was chosen