segunda-feira, 14 de fevereiro de 2011

Engenharia de Software - Alguns Processos




3 - Desenvolvimento Incremental (Prototipação Rápida)

•    Conceito básico: desenvolvimento incremental  criação do software em incrementos pequenos, onde cada novo incremento é o sistema antigo com funcionalidades adicionais. Cada incremento é um sistema funcionando.

Vantagens

•    Aumento do poder descritivo.
   
•    Ressaltam-se conceitos importantes em E.S. com verificação e validação.
   
•    Visibilidade do sistema final é antecipada.

Desvantagens


•    Se não houver verificação, alta propagação de erros.
   
•    Gerenciamento é complexo, por se construírem muitos subsistemas.

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.


segunda-feira, 7 de fevereiro de 2011

Teoria de Grafos - Outras Definições

Grafo Direcionado G é um par (V,E), onde V é um conjunto finito e E é uma relação binária em V.
Grafo Não Direcionado G = (V,E) é um par onde o conjunto de arestas E consiste em pares de vértices não orientados. A aresta (vi,vj) e (vj,vi) são consideradas a mesma aresta.


Outras definições:
  • Loop: uma aresta associada ao par de vértices (vi,vi)
  • Arestas paralelas: quando mais de uma aresta está associada ao mesmo par de vértices
  • Grafo simples: um grafo que não possui loops e nem arestas paralelas
  • Dois vértices são ditos adjacentes se eles são pontos finais de uma mesma aresta
  • Duas arestas não paralelas são adjacentes se elas são incidentes a um vértice comum
  • Quando um vértice vi é o vértice final de alguma aresta ej, vi e ej são incidentes
O número de arestas incidentes a um vértice vi é chamado de grau, d(vi), do vértice i
A soma dos graus de todos os vértices de um grafo G é duas vezes o número de arestas de G.



Referências: Material dos professores Max do Val Machado e Raquel Mini

    domingo, 6 de fevereiro de 2011

    Teoria de Grafos - Conceitos Básicos

    Definição
    • Grafo é uma coleção de vértices e arestas
    • Vértice é um objeto simples que pode ter nomes e outros atributos
    • Aresta é uma conexão entre dois vértices

    Exemplo:
    Dados os conjuntos: A={1,2,3,4} B={2,3,6} C={7,10} D={7,8,9} E={1,3} F={}
    Modelagem:
    Vértices = conjuntos
    Arestas = conjuntos com interseção não vazia

    Aplicações: As Pontes de Königsberg No século XVIII havia na cidade de Königsberg um conjunto de sete pontes que cruzavam o rio Pregel . Elas conectavam duas ilhas entre si e as ilhas com as margens.



    Por muito tempo os habitantes daquela cidade perguntavam-se se era possível cruzar as sete pontes em uma caminhada contínua sem passar duas vezes por qualquer uma delas.

    Aplicações: Problema do Desenho da Casa

    No desenho abaixo, uma criança diz ter posto a ponta do lápis em uma das bolinhas e com movimentos contínuos (sem levantar e sem retroceder o lápis) traçou as linhas que formam o desenho da casa, traçando cada linha uma única vez.
    A mãe da criança acha que ela trapaceou, pois a mãe não foi capaz de achar uma seqüência que pudesse produzir tal resultado. Você concorda com a mãe?


    Aplicações: O Problema das três casas e três serviços

    Suponha três casas e três serviços:
    É possível conectar cada serviço a cada uma das três casas sem que haja cruzamento de tubulações?

    Aplicações: Problema do caminho de custo mínimo

    De forma a reduzir seus custos operacionais, uma empresa de transporte de cargas deseja oferecer aos motoristas de sua frota um mecanismo que os auxilie a selecionar o caminho de menor custo entre quaisquer duas cidades por ela servidas. Como realizar esta tarefa?



    Aplicações: Problema do Caixeiro Viajante

    Suponha que a área de venda de um caixeiro viajante inclua várias cidades, muitas das quais, aos pares, estão conectadas por rodovias. O trabalho do caixeiro requer que ele visite cada cidade pessoalmente. Sob que condições seria possível estabelecer uma viagem circular (que o leve ao ponto de partida) de forma a que ele visite cada cidade exatamente uma vez?

    Referências: Material dos professores Max do Val Machado e Raquel Mini