Introdução à Engenharia de
Software
Conceitos fundamentais
A situação do software
 A sofisticação do software ultrapassou nossa
capacidade de construir um software que extraia o
potencial do hardware.
 Nossa capacidade de construir programas não pode
acompanhar o ritmo da demanda de novos
programas.
 Nossa capacidade de manter os programas
existentes é ameaçada por projetos ruins e recursos
inadequados
A grandeza do software na atualidade
 A economia de todas as
nações desenvolvidas
são dependentes de
software
 Muitos sistemas são
controlados por software
 Veja – Agosto 2009
Custos de software
 Os custos de software geralmente determinam os
custos de sistemas.
 Em um PC:
 Windows 7 Professional – R$629,00
 MS Office 2010 Professional – R$1399,00
 MS Visual Studio .NET 2010 Professional – R$1899,00
 Licença de acesso para um usuário SAP – R$999,00 (por
ano!)
 O maior custo de software é a manutenção.
 A engenharia de software se preocupa com
custo/benefício (ROI)
Qualidade — Terminologias
 Erro: erro humano
 Defeito: resultado do erro evidenciado em algum
desenvolvimento ou manutenção do produto
 Falha: divergência entre o comportamento
requerido para o sistema e o comportamento real.
Perguntas frequentes
 O que é software?
 Qual a diferença entre Engenharia de Software e
Ciências da Computação?
 Qual é a diferença entre Engenharia de Software e
Engenharia de Sistemas?
 O que é um processo de software
 O que é um modelo de processo de software?
 Quais são os custos da Engenharia de Software?
 O que são métodos de Engenharia de Software?
 O que é CASE (Computer-Aided Software Engineering)
 Quais são as características de um software bom?
 Quais são os principais desafios da Engenharia de
Software?
O que é Software?
 Programas de computador e documentação
associada.
 Produtos de Software podem ser, basicamente:
 Genéricos: produzidos e vendidos no mercado a
qualquer cliente
 Produtos sob encomenda: são desenvolvidos para um
cliente em particular – MySoftware.
Participantes do desenvolvimento de
software sob encomenda
Qual é a diferença entre Engenharia de
Software e Ciências da Computação?
 A Ciência da Computação
se preocupa com as
teorias e os métodos
fundamentais.
 A Engenharia de Software
se dedica aos problemas
práticos da produção de
software.
 As teorias da Ciência da
Computação não são
suficientes por si só.
Qual é a diferença entre Engenharia de
Software e Engenharia de Sistemas?
 Engenharia de sistemas se ocupa de todos os
aspectos de desenvolvimento e da evolução de
sistemas baseado em computadores, incluindo
hardware, software e engenharia do processo.
 A Engenharia de Software é parte deste processo.
 Engenheiros de sistemas estão envolvidos na
especificação do sistema, na definição de sua
arquitetura geral, integração e desenvolvimento.
O que é um processo de software?
 Um conjunto de atividades cujo objetivo é o
desenvolvimento ou evolução do software.
 Atividades comuns a todo processo de
desenvolvimento de software são:
 Especificação – o que o sistema deveria fazer (ou não -
constraints);
 Desenvolvimento – produção do software;
 Validação – verificação de que o software é o que o
cliente quer;
 Evolução – modificações do software em resposta às
mudanças de requisitos.
O que é um modelo de processo de software?
 Uma descrição simplificada de um processo de software,
que é representada a partir de uma perspectiva
específica.
 Exemplos de tipos de modelos de processos de
software:
 Workflow – sequência de atividades;
 Fluxo de dados ou atividades – demonstra o fluxo da
informação;
 Papel/Ação – quem faz o que.
 Modelos genéricos de desenvolvimento
 Waterfall;
 Desenvolvimento evolucionário;
 Especificação formal;
 Modelagem a partir de componentes reutilizáveis.
Quais são os custos de Engenharia de
Software?
 De maneira geral:
 60% dos custos são custos de desenvolvimento;
 40% são custos de teste.
 Para software personalizado, o custo de evolução
frequentemente ultrapassa os custos de
desenvolvimento.
 Custos podem variar, dependendo do tipo de
software que está sendo desenvolvido e os
requisitos de atributos como performance e
confiabilidade.
 A distribuição dos custos depende do modelo de
desenvolvimento que está sendo utilizado.
O que são métodos de Engenharia de
Software?
 Uma abordagem estruturada para o
desenvolvimento de software que inclui:
 Descrição de modelos – gráficos, textuais, documentais,
etc.
 Regras – restrições aplicadas a modelos de sistemas.
 Padrões de design - recomendações de melhores
práticas.
 Guias de processo – quais atividades seguir,
O que é CASE (Computer-Aided Software
Engineering)?
 Sistema de software cujo objetivo é fornecer suporte
automatizado para as atividades de processo de
software. Sistemas CASE são frequentemente
utilizados para apoiar a aplicação dos métodos.
Quais são os atributos de um bom
software?
 Atender aos requisitos solicitados pelo usuário
 Performance
 Manutenibilidade – o software precisa evoluir para
atender a novos requisitos.
 Confiabilidade – em caso de falha o software não
pode causar danos significativos ao usuário.
 Eficiência – usar os recursos do sistema com
parcimônia.
 Usabilidade – o software deve poder ser utilizado
pelos usuários para os quais ele foi desenhado.
Quais são os principais desafios
enfrentados pela Engenharia de Software?
 Sistemas legados – antigos, mas valiosos.
 Heterogeneidade – diversidade crescente de
plataformas, de software distribuído, mistura muito
grande de software e hardware.
 Demanda x Tempo de entrega
Leitura e discussão
 Governo fará censo para avaliar apagão de mão de
obra de TI
 Saídas para evitar o apagão de mão de obra em TI
 CIOs sofrem com a falta de talentos de TI no Brasil
 Jogos Olímpicos de Londres geram 60 GB de
informações por segundo
Construindo uma casa versus um software
 A casa
 Identificar e analisar os
requisitos
 Produzir e documentar todo
o projeto
 Detalhar as especificações
 Identificar e projetar os
componentes
 Construir cada componente
 Testar cada componente
 Integrar os componentes
 Fazer as modificações
finais
 Manutenção contínua
 O software
 Análise e definição dos
requisitos
 Projeto do sistema
 Projeto do programa
 Escrever os programas
 Testes das unidades
 Teste de integração
 Teste do sistema
 Entrega do sistema
 Manutenção
Os papéis na equipe de desenvolvimento

02 Introdução à engenharia de software - conceitos fundamentais

  • 1.
    Introdução à Engenhariade Software Conceitos fundamentais
  • 2.
    A situação dosoftware  A sofisticação do software ultrapassou nossa capacidade de construir um software que extraia o potencial do hardware.  Nossa capacidade de construir programas não pode acompanhar o ritmo da demanda de novos programas.  Nossa capacidade de manter os programas existentes é ameaçada por projetos ruins e recursos inadequados
  • 3.
    A grandeza dosoftware na atualidade  A economia de todas as nações desenvolvidas são dependentes de software  Muitos sistemas são controlados por software  Veja – Agosto 2009
  • 4.
    Custos de software Os custos de software geralmente determinam os custos de sistemas.  Em um PC:  Windows 7 Professional – R$629,00  MS Office 2010 Professional – R$1399,00  MS Visual Studio .NET 2010 Professional – R$1899,00  Licença de acesso para um usuário SAP – R$999,00 (por ano!)  O maior custo de software é a manutenção.  A engenharia de software se preocupa com custo/benefício (ROI)
  • 5.
    Qualidade — Terminologias Erro: erro humano  Defeito: resultado do erro evidenciado em algum desenvolvimento ou manutenção do produto  Falha: divergência entre o comportamento requerido para o sistema e o comportamento real.
  • 6.
    Perguntas frequentes  Oque é software?  Qual a diferença entre Engenharia de Software e Ciências da Computação?  Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas?  O que é um processo de software  O que é um modelo de processo de software?  Quais são os custos da Engenharia de Software?  O que são métodos de Engenharia de Software?  O que é CASE (Computer-Aided Software Engineering)  Quais são as características de um software bom?  Quais são os principais desafios da Engenharia de Software?
  • 7.
    O que éSoftware?  Programas de computador e documentação associada.  Produtos de Software podem ser, basicamente:  Genéricos: produzidos e vendidos no mercado a qualquer cliente  Produtos sob encomenda: são desenvolvidos para um cliente em particular – MySoftware.
  • 8.
    Participantes do desenvolvimentode software sob encomenda
  • 9.
    Qual é adiferença entre Engenharia de Software e Ciências da Computação?  A Ciência da Computação se preocupa com as teorias e os métodos fundamentais.  A Engenharia de Software se dedica aos problemas práticos da produção de software.  As teorias da Ciência da Computação não são suficientes por si só.
  • 10.
    Qual é adiferença entre Engenharia de Software e Engenharia de Sistemas?  Engenharia de sistemas se ocupa de todos os aspectos de desenvolvimento e da evolução de sistemas baseado em computadores, incluindo hardware, software e engenharia do processo.  A Engenharia de Software é parte deste processo.  Engenheiros de sistemas estão envolvidos na especificação do sistema, na definição de sua arquitetura geral, integração e desenvolvimento.
  • 11.
    O que éum processo de software?  Um conjunto de atividades cujo objetivo é o desenvolvimento ou evolução do software.  Atividades comuns a todo processo de desenvolvimento de software são:  Especificação – o que o sistema deveria fazer (ou não - constraints);  Desenvolvimento – produção do software;  Validação – verificação de que o software é o que o cliente quer;  Evolução – modificações do software em resposta às mudanças de requisitos.
  • 12.
    O que éum modelo de processo de software?  Uma descrição simplificada de um processo de software, que é representada a partir de uma perspectiva específica.  Exemplos de tipos de modelos de processos de software:  Workflow – sequência de atividades;  Fluxo de dados ou atividades – demonstra o fluxo da informação;  Papel/Ação – quem faz o que.  Modelos genéricos de desenvolvimento  Waterfall;  Desenvolvimento evolucionário;  Especificação formal;  Modelagem a partir de componentes reutilizáveis.
  • 13.
    Quais são oscustos de Engenharia de Software?  De maneira geral:  60% dos custos são custos de desenvolvimento;  40% são custos de teste.  Para software personalizado, o custo de evolução frequentemente ultrapassa os custos de desenvolvimento.  Custos podem variar, dependendo do tipo de software que está sendo desenvolvido e os requisitos de atributos como performance e confiabilidade.  A distribuição dos custos depende do modelo de desenvolvimento que está sendo utilizado.
  • 14.
    O que sãométodos de Engenharia de Software?  Uma abordagem estruturada para o desenvolvimento de software que inclui:  Descrição de modelos – gráficos, textuais, documentais, etc.  Regras – restrições aplicadas a modelos de sistemas.  Padrões de design - recomendações de melhores práticas.  Guias de processo – quais atividades seguir,
  • 15.
    O que éCASE (Computer-Aided Software Engineering)?  Sistema de software cujo objetivo é fornecer suporte automatizado para as atividades de processo de software. Sistemas CASE são frequentemente utilizados para apoiar a aplicação dos métodos.
  • 16.
    Quais são osatributos de um bom software?  Atender aos requisitos solicitados pelo usuário  Performance  Manutenibilidade – o software precisa evoluir para atender a novos requisitos.  Confiabilidade – em caso de falha o software não pode causar danos significativos ao usuário.  Eficiência – usar os recursos do sistema com parcimônia.  Usabilidade – o software deve poder ser utilizado pelos usuários para os quais ele foi desenhado.
  • 17.
    Quais são osprincipais desafios enfrentados pela Engenharia de Software?  Sistemas legados – antigos, mas valiosos.  Heterogeneidade – diversidade crescente de plataformas, de software distribuído, mistura muito grande de software e hardware.  Demanda x Tempo de entrega
  • 18.
    Leitura e discussão Governo fará censo para avaliar apagão de mão de obra de TI  Saídas para evitar o apagão de mão de obra em TI  CIOs sofrem com a falta de talentos de TI no Brasil  Jogos Olímpicos de Londres geram 60 GB de informações por segundo
  • 19.
    Construindo uma casaversus um software  A casa  Identificar e analisar os requisitos  Produzir e documentar todo o projeto  Detalhar as especificações  Identificar e projetar os componentes  Construir cada componente  Testar cada componente  Integrar os componentes  Fazer as modificações finais  Manutenção contínua  O software  Análise e definição dos requisitos  Projeto do sistema  Projeto do programa  Escrever os programas  Testes das unidades  Teste de integração  Teste do sistema  Entrega do sistema  Manutenção
  • 20.
    Os papéis naequipe de desenvolvimento