2. 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
3. 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
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
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?
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.
9. 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ó.
10. 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.
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 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.
14. 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,
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 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.
17. 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
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 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