34
Aula 21 - 29/11/06 1 Informática I Aula 21 http://www.ic.uff.br/~bianca/informatica1/

Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 1

Informática I

Aula 21

http://www.ic.uff.br/~bianca/informatica1/

Page 2: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 2

Ementa

• Histórico dos Computadores• Noções de Hardware e Software• Microprocessadores• Sistemas Numéricos e Representação de Dados• Estrutura e Organização da Informação• Linguagens de Programação• Sistemas Operacionais• Redes de Computadores e Internet• Engenharia de Software• Softwares Aplicativos• Aspectos Legais do Software

Page 3: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 3

Engenharia de Software

• Surgiu nos anos 1970 como uma tentativa de dar um tratamento mais sistemático e controlado ao desenvolvimento de software.– O desenvolvimento de software é uma tarefa

complexa e portanto precisa ser gerenciado.

• Envolve a especificação, desenvolvimento e manutenção de sistemas de software.– Tem como objetivo produzir softwares de qualidade,

confiáveis e eficientes.– Aplica técnicas de ciência da computação e de

gerência de projetos.

Page 4: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 4

Engenharia de Software

• A engenharia de software abrange três elementos principais:– Processos: determinam quais são as tarefas

necessárias e em que ordem elas devem ser executadas.

– Métodos: fornecem detalhes fundamentais de como fazer para executar as tarefas necessárias.

• Métodos de planejamento, métodos de análise dos requisitos, métodos de projeto, métodos de codificação, etc.

– Ferramentas: proporcionam apoio automatizado ou semi-automatizado aos processos e métodos.

• Chamadas de ferramentas CASE (computer-aided software engineering). Ex: Rational Rose

Page 5: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 5

Um processo genérico• Atividades aplicáveis à maioria dos projetos

de software:1. Comunicação: levantamento de requisitos em

colaboração com o cliente.2. Planejamento: estabelece as tarefas, os riscos, os

recursos, os produtos e um cronograma.3. Modelagem: criação de modelos que permitam ao

desenvolvedor entender melhor o projeto e seus requisitos. Ações:• Análise – modelos de especificação de requisitos.• Projeto – modelos de especificação de projeto.

4. Construção: geração de código e testes.5. Implantação: entrega do software ao cliente.

Page 6: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 6

Um processo genérico

• Atividades típicas que ocorrem ao longo de um processo:– Acompanhamento e controle do projeto de software.– Gestão de risco.– Garantia de qualidade de software.– Revisões técnicas formais.– Medição.– Gestão de configuração de software.– Gestão de reusabilidade.– Preparação e produção do produto de trabalho.

Page 7: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 7

Modelos Prescritivos de Processo

• Um modelo prescritivo de processo determina as atividades que serão realizadas durante o desenvolvimento de software.

• Cada modelo prescritivo de processo também prescreve um fluxo de trabalho = maneira como as atividades se inter-relacionam.

• Todos os modelos acomodam de alguma forma as atividades genéricas, mas diferem na ênfasee no fluxo.

Page 8: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 8

Tipos de Modelo de Processo

• Modelo em Cascata• Modelo Incremental• Modelo RAD• Modelos Evolucionários

– Modelo de Prototipagem

– Modelo Espiral

• Modelo baseado em componentes• Desenvolvimento ágil

Page 9: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 9

Modelo em Cascata

• Também chamado de ciclo de vida clássico.

• Sugere uma abordagem sistemática e seqüencial para o desenvolvimento de software.

Comunicação

Planejamento

Modelagem

Construção

Implantação

Page 10: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 10

Modelo em Cascata

• É o paradigma mais antigo da Engenharia de Software.• Nas últimas décadas, têm surgido críticas quanto a sua

eficácia.– Projetos reais raramente seguem o fluxo seqüencial.– É difícil estabelecer todos os requisitos inicialmente.– Uma versão executável do software só fica disponível no final do

processo.– Estados de bloqueio: membros da equipe ficam esperando

outros membros terminarem a sua parte.

• É adequado quando os requisitos são bem entendidos, como em aperfeiçoamentos de um sistema existente.

Page 11: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 11

Modelo Incremental

• Combina elementos do modelo em cascata aplicados de maneira iterativa.

Page 12: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 12

Modelo Incremental

• Cada seqüência produz incrementos do software passíveis de serem entregues.– Fornecem progressivamente mais funcionalidade.

• O primeiro incremento é chamado de núcleo de produto.

• O modelo incremental é particularmente útil quando não há mão-de-obra/recursos disponíveis para uma implementação completa.

Page 13: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 13

Modelo RAD(Rapid Application Development)• Enfatiza um ciclo de desenvolvimento

curto, com o uso de uma abordagem de construção baseada no uso de componentes.

• O planejamento é essencial, porque equipes trabalham em paralelo em diferentes funções do sistema.

Page 14: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 14

Modelo RAD

Page 15: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 15

Modelo RAD

• Recomendável quando uma aplicação pode ser modularizada.

• Desvantagens do modelo RAD:– Exige pessoal suficiente para criar várias equipes

RAD.– Desenvolvedores e clientes têm que estar

comprometidos com atividades rápidas.– Exige que o sistema seja modularizável.– Não é adequado quando os riscos técnicos são altos.

Page 16: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 16

Modelos Evolucionários

• São explicitamente projetados para acomodar um produto que evolui com o tempo.

• A cada iteração, produzem uma versão melhor e mais completa do software.

• Exemplos:– Modelo de Prototipagem– Modelo Espiral– Modelo de Desenvolvimento Concorrente.

Page 17: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 17

Modelo de Prototipagem

• Auxilia o engenheiro de software e o cliente a entenderem melhor o que deve ser construído quando os requisitos estão confusos.

• Mais comumente usado como uma técnica que pode ser implementada dentro de qualquer modelo.

• Protótipo: versão preliminar do software– Pode ser um programa ou no papel– Concentra-se na representação dos aspectos do

software que são visíveis para o cliente.• Lay-out da interface• Entradas e saídas

Page 18: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 18

Modelo de Prototipagem

Page 19: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 19

Modelo de Prototipagem

• Problemas:– Pode haver pressão do cliente para transformar um

protótipo mal-feito em produto final resultando em baixa qualidade.

– Concessões na implementação podem fazer com que o desenvolvedor fique familiarizado com escolhas não ideais.

• O cliente tem que concordar que o protótipo será usado apenas para levantar requisitos.– O software real será desenvolvido com olho na

qualidade.

Page 20: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 20

Modelo Espiral

• Combina a natureza interativa da prototipagem com os aspectos controlados do modelo em cascata.

• O software é produzido em uma série de versões evolucionárias.– Primeiras versões só no papel.

• É uma abordagem cíclica que aumenta incrementalmente o grau de definição, enquanto diminui o risco.

• O modelo pode ser aplicado ao longo de todo o ciclo de vida de uma aplicação.

Page 21: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 21

Modelo Espiral

Page 22: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 22

Modelo Espiral

• É uma abordagem realista do desenvolvimento de software

• Problemas:– Pode ser difícil convencer os clientes de que

a abordagem é controlável.– A gerência pode exigir orçamento fixo, o que

não é compátivel com o modelo espiral.

– Exige competência na avaliação de riscos.

Page 23: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 23

Comparação

Modelo Incremental• Atividades fixas do

modelo em cascata são usadas em cada incremento.

• Objetiva a elaboração de um produto operacional a cada incremento, que pode ser testado.

Modelo Espiral• As atividades não são

fixas, cada “loop” se concentra mais em uma determinada atividade.

• A análise de riscos é uma atividade essencial no modelo.

Page 24: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 24

Desenvolvimento Baseado em Componentes

• Compõe aplicações a partir de componentesde software previamente preparados.

• Segue os seguintes passos implantados com uma abordagem evolucionária:1. Pesquisa e avaliação de componentes disponíveis

para o domínio em questão.2. Considerações sobre a integração de componentes.3. Projeto de arquitetura de software.4. Integração dos componentes à arquitetura.5. Testes para garantir a funcionalidade adequada.

Page 25: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 25

Vantagens do desenvolvimento baseado em componentes

• Leva ao reuso de software, que segundo estudos tem como consequências:– Redução significativa do prazo de desenvolvimento.– Redução significativa no custo do projeto.– Aumento do índice de produtividade.

• Em que situações o desenvolvimento baseado em componentes não é adequado?– Aquelas em que não existam componentes padrão

disponíveis ou em que não se queira pagar pelos componentes.

Page 26: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 26

Desenvolvimento Ágil

• 2001: Manifesto para o Desenvolvimento Ágil de Software (http://www.agilemanifesto.org).– 17 figuras proeminentes na engenharia de software

(a Aliança Ágil) se reuniram e declararam importante a valorização de:

• Indivíduos e interações em vez de processos e ferramentas.

• Softwares funcionando em vez de documentação abrangente.

• Colaboração do cliente em vez de negociação de contratos.

• Resposta a modificações em vez de seguir um plano.

Page 27: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 27

O que é o desenvolvimento ágil?

• É uma filosofia e um conjunto de diretrizes que encorajam: – A entrega incremental do software logo de

início.– Equipes de projeto pequenas e motivadas.– Métodos informais de comunicação ao invés

de documentos escritos.– Enfatizar a entrega em contraposição à

análise e ao projeto.– Adotar o cliente como parte da equipe.

Page 28: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 28

Quando deve ser usado o desenvolvimento ágil?

• O desenvolvimento ágil é particularmente indicado em situações onde os requisitos são imprevísiveis ou mudam rapidamente.

• Ele funciona melhor para equipes pequenas (até 10 desenvolvedores) trabalhando no mesmo local.

Page 29: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 29

Modelos ágeis de processo

• Extreme Programming (XP)• Desenvolvimento Adaptativo de Software

(DAS)• Método de Desenvolvimento Dinâmico de

Sistemas (DSDM)• Scrum• Crystal• Desenvolvimento Guiado por Características

(FDD)• Modelagem Ágil (AM)

Page 30: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 30

Extreme Programming (XP)

• Trabalho pioneiro sobre o assunto escrito em 1999 por Kent Beck.

• Usa uma abordagem orientada a objetos como seu paradigma de desenvolvimento.

• Inclui um conjunto de regras e práticas que ocorrem no contexto de quatro atividades de arcabouço:– Planejamento– Projeto– Codificação– Teste

Page 31: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 31

XP - Planejamento• Criação de um conjunto de histórias de usuário.

– Cada história é escrita em poucas linhas pelos clientes, que lheatribuem um valor, e deve poder ser implementadas em menos de três semanas.

– Exemplo: “Quando a aplicação começa, o último documento em que o cliente estava trabalhando deve ser aberto automaticamente.”

• A equipe XP e os clientes trabalham juntos para definir um planoque determina as histórias que serão desenvolvidas primeiro levando em consideração valores e riscos.

• Depois que o primeiro incremento é entregue, a equipe XP calcula a velocidade do projeto = número de histórias implementadas.

• Ao longo do tempo, o cliente pode adicionar histórias, mudar o valor de uma história, subdividir histórias ou eliminá-las,

Page 32: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 32

XP - Projeto

• Segue o princípio KIS (keep it simple).– Se restringe a implementar as histórias de usuário.

• Usa cartões CRC (Class-Responsability-Colaborator) para identificar e organizar as classes que são relevantes para o incremento atual.

• Se um problema de projeto difícil é encontrado, o XP recomenda a criação de uma solução de ponta para diminuir o risco.– Solução de ponta = um protótipo operacional daquela parte do

projeto, que depois será descartado.• O XP encoraja a refabricação = modificar o sistema de tal

modo que o comportamento externo não seja alterado, mas aperfeiçoe a estrutura interna.– A refabricação ocorre durante a codificação, mas altera o projeto.

Page 33: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 33

XP - Codificação

• Antes de partir para o código, a equipe deve desenvolver testes unitários para verificar a funcionalidade que será desenvolvida.

• A programação é feita em pares. – Isso fornece um mecanismo de solução de problemas e de

garantia de qualidade em tempo real.– Uma pessoa pensa nos detalhes do código enquanto a outra

garante as normas de codificação e que o código gerado vai se encaixar no resto do sistema.

• O código gerado vai sendo integrado imediatamente ao trabalho de outros, o que ajuda a evitar problemas de compatibiilidade e interface.

Page 34: Aula21-InfI · 2006. 12. 4. · Aula 21 - 29/11/06 5 Um processo genérico • Atividades aplicáveis à maioria dos projetos de software: 1. Comunicação: levantamento de requisitos

Aula 21 - 29/11/06 34

XP - Teste

• Os testes unitários são criados de tal forma que eles possam ser automatizados, e aplicados diariamente.

• O XP usa uma estratégia de teste de regressão: testes são aplicados de novo mesmo que anteriormente eles não tenham apresentado problema.– Isso permite a refabricação.

• Testes de aceitação são especificados pelo cliente (derivados das histórias do usuário) e focalizam nas características e funcionalidades do sistema global.– Devem ser automatizados e aplicados frequentemente.– O sistema só é considerado aceitável quando todos passar em

todos os testes de aceitação.