segunda-feira, 9 de fevereiro de 2009

Introdução à Análise e ao Projeto de Software



Introdução à Análise
e ao Projeto de Software




O que é “Análise” e “Projeto”?
 Na Análise, investigamos o problema e descobrimos o QUE precisará estar no sistema.
 Durante o Projeto:
 detalhamos a análise de modo a encontrar uma solução computacional que satisfaça os requisitos do software
 Estruturamos COMO o sistema será implementado
 O Projeto oferece uma ponte entre a Análise e a Implementação.


O que é “Análise” e “Projeto”?
 A análise consiste de todas as atividades feitas com ou para o conhecimento do cliente. A informação produzida é aquela que o cliente deve discutir e aprovar.
 O projeto inclui as atividades que resultam em informação que interessa apenas ao programador.
 Com essa definição, a análise invade um pouco o "lado da solução", pois o cliente deve discutir alguns tipos de interações que ocorrerão na interface do usuário, etc.


Fases do desenvolvimento de Software
 Planejamento
 Análise de Requisitos
 Projeto
 Codificação
 Revisão
 Teste
 Documentação
 Manutenção


Processos de desenvolvimento de Software
 Modelo Cascata
 Modelo Iterativo e Incremental (RUPRational Unified Process)

Modelo Cascata
 Abordagem sistemática e seqüencial
 Processo organizado em fases distintas e separadas
 Baseado nos processos convencionais de engenharia
 Requer especificação completa e bem entendida
 Dificulta a introdução de mudanças após o início do processo




Modelo Cascata
 Problemas:
 projetos reais raramente seguem o fluxo seqüencial que o modelo propõe;
 logo no início é difícil estabelecer explicitamente todos os requisitos ;
 no começo dos projetos sempre existe uma incerteza natural
 propagação de erros pelas as fases do processo
 o cliente deve ter paciência.
 uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento
 Contribuição:
 imposição de disciplina, planejamento e gerenciamento.


Modelo Iterativo e Incremental
 Divide o desenvolvimento de um produto de software em ciclos de desenvolvimento.
 Cada ciclo considera um subconjunto de requisitos.
 Especificação evolui junto com o sistema.
 Suporta requisitos parcialmente definidos.
Modelo Iterativo e Incremental



Modelo Iterativo e Incremental
 Vantagens X Desvantagem
 Incentiva a participação do usuário.
 Riscos do desenvolvimento podem ser mais bem gerenciados.
 Um risco de projeto é a possibilidade de ocorrência de algum evento que cause prejuízo ao processo de desenvolvimento, juntamente com as conseqüências desse prejuízo.
 Influências: custos do projeto,cronograma, qualidade do produto, satisfação do cliente, etc.Mais difícil de gerenciar X
 Mais difícil de Gerenciar.


Distribuição das Fases
Metodologias de Desenvolvimento de Software


 É uma abordagem para a produção de software viável e de alta qualidade
 APE (Ex.: Análise estruturada, Projeto Estruturado,Análise de sistemas estruturados)
 APOO (Ex.: Booch, OMT, OOSE)

Processo X Metodologia
 Processo: como organizar as fases de desenvolvimento
 Metodologia: como produzir os resultados de cada fase
 Portanto, diferentes combinações de modelos e metodologias podem ser formadas
 Cascata + APOO
 Cascata + Projeto Estruturado
 Iterativo + Projeto Estruturado
 Iterativo + APOO

sexta-feira, 6 de fevereiro de 2009

Engenharia de Software














Engenharia de Software
- Introdução






O que é Software?
 Segundo (Pressman, 2000):
 instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados;
 estruturas de dados que possibilitam que programas manipulem adequadamente as informações;
 Documentos que descrevem a operação e uso dos programas.
 Segundo (Sommerville, 2002):
 Software é o conjunto de programas de computador,juntamente com a documentação e os dados de configuração necessários à sua operação

Características do Software
 É o Produto da Engenharia de Software.
 O Software é desenvolvido ou projetado por engenharia, não é fabricado no sentido clássico.
 Software não “se desgasta”
 Software não é sensível aos problemas ambientais que fazem com que o hardware se desgaste
 Toda falha indica erro de projeto ou implementação: manutenção do SW é mais complicada que a do HW
 Software não dá “avisos” de que pode falhar mais tarde. Em eletrônica, por exemplo, várias observações podem ser feitas periodicamente nos sinais para verificar o potencial de mau funcionamento.

O que é um software de qualidade?
 O software que satisfaz os requisitos solicitados pelo usuário. Deve ser fácil de manter, ter bom desempenho,ser confiável e fácil de usar.
 Alguns atributos de qualidade
 Manutenibilidade
 O software deve evoluir para atender os requisitos que mudam
 Eficiência
 O software não deve desperdiçar os recursos do sistema
 Usabilidade
 O software deve ser fácil de usar pelos usuários para os quais ele foi projetado

Qualidade de Software
(Um exemplo para varejo)
 Correto
 A loja não pode deixar de cobrar por produtos comprados pelo consumidor
 Robusto e altamente disponível
 A loja não pode parar de vender
 Eficiente
 O consumidor não pode esperar
 A empresa quer investir pouco em recursos computacionais(CPU, memória, rede)
 Amigável e fácil de usar
 A empresa quer investir pouco em treinamento






Qualidade de Software
(Um exemplo para varejo)
 Altamente extensível e adaptável
 A empresa tem sempre novos requisitos (para ontem!)
 A empresa quer o software customizado do seu jeito(interface,teclado, idioma, moeda, etc.)
 Aberto, compatível, de fácil integração com outros sistemas
 A empresa já tem controle de estoque, fidelização, etc.
 Portável e independente de plataforma (hw e sw)
 A empresa opta por uma determinada plataforma
 Baixo custo de instalação e atualização
 A empresa tem um grande número de PDVs .Mas...temos a crise de software
 Refere-se a um conjunto de problemas encontrados no desenvolvimento de software
 25% dos projetos são cancelados
 75% dos sistemas não funcionam como planejado
 os problemas são proporcionais a complexidade dos sistemas




Crise de Software
 1. As estimativas de prazo e de custo frequentemente são imprecisas
 O tempo de desenvolvimento é bem maior do que o estimado
 “Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software”
 2. A produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços
 “Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente”

Crise de Software
 3. A qualidade de software às vezes é menos que adequada
 Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software
 4. O software existente é muito difícil de manter
 A tarefa de manutenção devora o orçamento destinado ao software
 A facilidade de manutenção não foi enfatizada como um critério importante

Crise de Software
 estimativas de prazo e de custo ↑
 produtividade das pessoas ↓
 qualidade de software ↓
 software difícil de manter ↑




Causas da crise de software
 Causas mais óbvias
Pouco tempo dedicado para coletar dados sobre o desenvolvimento do software - resulta
em estimativas “a olho”
Comunicação entre o cliente e o desenvolvedor é muito fraca
Falta de testes sistemáticos e completos
Foguete Ariane 5

Foguete Ariane 5
 Projeto da Agência Espacial Européia que custou:
 10 anos.
 US$ 8 Bilhões
 Capacidade 6 toneladas.
 Garante supremacia européia no espaço.

Foguete Ariane 5
 Vôo inaugural em 04 de junho de 1996 Resultado
 Explosão 40 segundos após a decolagem.
 Destruição do foguete e carga avaliada em US$ 500milhões.

O que aconteceu?
 Fato: o veículo detonou suas cargas explosivas de autodestruição e explodiu no ar.
 Por que?Porque ele estava se quebrando devido às forças aerodinâmicas. Mas por que?
 O foguete tinha perdido o controle de direção.Causa disso?
 Os computadores principal e back-up deram shut-down ao mesmo tempo.

O que aconteceu?
 Por que o Shut-down? Ocorrera um run time error(out of range, overflow , ou
outro) e ambos computadores se desligaram. De onde veio este erro?
 Um programa que convertia um valor em ponto flutuante para um inteiro de 16 bits
recebeu como entrada um valor que estava fora da faixa permitida.Ironia...
 O resultado desta conversão não era maisnecessário após a decolagem...Boeing 787 Dreamliner
 O novo Boeing 787 Dreamliner oferece serviço de acesso à Internet aos seus passageiros. Boa idéia?
 SIM, mas não se a rede de acesso à Internet permitir também aceder aos sistemas de controle do próprio avião...