Click here to load reader
Upload
waldemar-roberti
View
142
Download
1
Embed Size (px)
DESCRIPTION
Tópicos para discussão em sala -
Citation preview
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