Mostrando postagens com marcador Engenharia de Software. Mostrar todas as postagens
Mostrando postagens com marcador Engenharia de Software. Mostrar todas as postagens

segunda-feira, 14 de fevereiro de 2011

Engenharia de Software - Ambientes de Engenharia de Software

AMBIENTES DE ENGENHARIA DE SOFTWARE

Definição
    "Processo, Métodos e Automação requeridos para produzir um sistema de software."

Objetivo

    Prover um contexto para uma evolução racional, ordenada e bem gerenciada do software.





Processo:

    Cadeia de eventos que descrevem:
       
•    ATIVIDADES - Tarefas de desenvolvimento e gerenciamento
•    PRODUTOS - Saídas das tarefas

Métodos:

•    Tudo aquilo necessário à DEFINIÇÃO, DESCRIÇÃO, ASTRAÇÃO, MODIFICAÇÃO, REFINAMENTO E DOCUMENTAÇÃO do software.
•    Devem suportar as ATIVIDADES definidas no processo.

Automação:

    Uso do computador para implementação dos métodos (CASE)

O PROCESSO

    Características de um bom processo:

•    Generabilidade
•    Adequabilidade à automação
•    Alto poder descritivo
•    Possuir produtos capazes de documentar convenientemente o software
•    Possibilitar integração entre suas diversas fases

OS MÉTODOS
•    Devem implementar as atividades e possibilitar a criação dos produtos do PROCESSO
•    Devem ser integrados: TRACEABILIDADE entre fases

Propriedades de um método:

1.    PONTO DE VISTA


É a perspectiva sob a qual o método encara o problema

Por exemplo:
•    Visualização de relacionamento entre dados (PONTO DE VISTA INFORMACIONAL)
•    Visualização do fluxo dos dados e das transformações de dados (PONTO DE VISTA FUNCIONAL)
•    Visualização do sequenciamento e da transformação dos dados (PONTO DE VISTA COMPORTAMENTAL)

2.    MEIO
É o recurso que o método utiliza para implementar as atividades.

Por exemplo:

   
PALAVRAS       TEXTO       TEXTO          GRÁFICOS   LÓGICA
ESPARSAS                      ESTRUTURADO


BAIXO CONTEÚDO                                                  ALTO CONTEÚDO
SEMÂNTICO                                                                 SEMÂNTICO

3.    DOMÍNIO

É o escopo de aplicação do método, determinado pelo produto a ser desenvolvido e pela fase onde reside este produto.

Por exemplo, a análise estruturada não serve para emissão de um projeto de software (FASE), nem para especificar sistemas tempo-real (PRODUTO).

4.    ORIENTAÇÃO

Regras a serem seguidas para uso correto do método:
•    Que decisões tomar?
•    Como tomar decisões?
•    Em que ordem tomar as decisões?
•    Quando começar?
•    Quando parar?


Princípios básicos utilizados em um bom método:
•    Modularidade
•    Boa capacidade de abstração
•    Descrever a informação com uniformidade
•    Ser capaz de representar toda e qualquer informação
•    Ser capaz de orientar na utilização das informações realmente necessárias para descrever o sistema
•    Ter capacidade de agrupar estruturas semanalmente juntas

A AUTOMAÇÃO

Significado
    Prover um ambiente automatizado de suporte a métodos.

Observações  Importantes:

•    O método a ser automatizado deve interagir com outros métodos, de outras fases.
•    Jamais automatizar um ambiente sem antes possuir um processo e um conjunto de métodos perfeitamente definidos.

Benefícios
  • Reduz trabalho no uso dos métodos
  • Aumenta produtividade e reduz custos
  • Alguns métodos só são viáveis quando automatizados, pois o volume de informação e processamento necessários são impossíveis de serem manualmente manipulado
  • Aumento da criatividade do analista, pois o mesmo pode se concentrar na tarefa ao invés de se concentrar no método
FATORES IMPORTANTES NA IMPLANTAÇÃO DE UM AMBIETE BEM SUCEDIDO
  • Como a informação criada por um método deve ser capturada:
  • Qualquer dado obtido deve poder ser utilizado por qualquer outro método que dele necessite (Transparência de Dados).
    A estruturação do ambiente (Recursos Mínimos).
  • Os usuários do ambiente e a organização requerida para suportá-los.
  • Se o ambiente não se encaixa na estrutura da empresa, o mesmo não será plenamente utilizado.


terça-feira, 8 de fevereiro de 2011

Engenharia de Software-Conceitos Introdutórios





Forças por Trás da Emergência Engenharia de Software


·      Inabilidade para predição de tempo, esforço e custo em desenvolvimento de software.

·      Ruim qualidade do software produzido até então.

·      Modificação da razão: Custo de Hardware/Custo de Software.

·      Problemas de manutenção do software.

·      Avanços da tecnologia de hardware.
·      Avanços em técnicas para software.

·      Crescente demanda por novos softwares, maiores e mais complexos.


A Crise do Software


            Diz respeito a uma série de problemas encontrados no desenvolvimento de software, relacionados a como desenvolvê-lo, mantê-lo e a como suprir a crescente demanda por ele.

Principais Problemas Encontrados

·      Estimativas ruins de custo e tempo.

·      Baixa produtividade humana.

·      Software com qualidade ruim.

·      Fracas indicações sobre produtividade, não permitindo a avaliação de novas ferramentas, técnicas e padrões.

·      Insatisfação do usuário final.

·      Manutenção difícil do software.


Causas da Crise do Software


·      Capacidade técnica insuficiente das pessoas responsáveis pelo desenvolvimento.

·      Pouco treinamento em novas técnicas.

·      Resistência imposta pelos responsáveis pelo desenvolvimento à introdução de novas técnicas.

·      Falta de processos e métodos.

·      Documentação insuficiente.



O Problema Clássico do Software


O software é um produto lógico e não físico Þ custos concentram-se no desenvolvimento e não na produção Þ a ênfase deve ser dada em técnicas para gerenciamento.


Mas Afinal, o que é a Engenharia de Software?


·      Premissa: É um ramo da Engenharia.

·      IEEE: “Abordagem sitemática para desenvolvimento, operação e manutenção de software”.

·      Baver: “Uso de sólidos princípios de engenharia de forma a obter-se software economicamente viável, confiável e que funcione”.

·      Fairley: “Disciplina tecnológica e administrativa que trata da manutenção e produção sistemática de produtos de software”.


Características do Software


·      Variedade de funções.

·      Variedade de implementações

·      Evolução

·      Visibilidade

·      Continuidade

·      Raramente é construído a partir de partes existentes, como o hardware.

Categorias de Tamanho de um Software


Categoria
No de Programadores

Duração

Tamanho (linhas)
Trivial
1
1 a 4 sem.
500
Pequeno
1
1 a 2 meses
1K - 2K
Médio
2 a 5
1 a 2 anos
5K - 50K
Grande
5 a 20
2 a 3 anos
50K - 100K
Muito Grande
100 a 2.000
4 a 5 anos
1M
Extr. Grande
2.000 a 5.000
5 a 10 anos
1M - 10M


 
Engenharia de Software x Engenharia

Diferenças

·      Software é um produto lógico

·      Continuidade

·      Visibilidade

·      Software não está sujeito a leis físicas

·      Software é visualizado como um processo de produção de um serviço. Isto gera dúvidas:

-     Pode ser patenteado?

-     Pagar ICMS ou não?

·      As interfaces inter-módulos não são tão visíveis no produto de engenharia.

Semelhanças

·      Ciclo de vida.

·      Gerenciamento.

·      Organização.

 
O Impacto de Erros de Software


Erros normalmente resultam em dois custos:

·      O dano deles resultante.

·      O custo para correção.



Por quê?

·      Testes tornam-se mais complexos.

·      Modificações envolvem mais pessoas.

·      Repetição de testes de fases anteriores é mais difícil.

·      Mudanças acarretam outras modificações em fases anteriores.

·      Responsáveis por fases anteriores podem não estar presentes.




Estatísticas


·      Linhas de código produzidas no mundo:

100 Bilhões

70 Bilhões Þ COBOL

·      Guerra nas Estrelas:

100 M L.O.C. Þ 30 a 50.000 ERROS!!!

·      Space Shuttle:

500.000 L.O.C. a bordo.

1.700.00 L.O.C. em Terra.