Upload
duongnhi
View
218
Download
0
Embed Size (px)
Citation preview
Engenharia de Software 2011-2
Ciência da Computação
ENGENHARIA DE SOFTWARE
Prof. Claudinei Diasemail: [email protected]
Capítulo 1 – Introdução
Engenharia de Software 2011-2
Plano de Ensino
1. Introdução à Engenharia de Software
– Importância da Engenharia de Software
– Ciclos de vida de desenvolvimento - Modelos de Processo
– Processo de Software
– Planejamento e Gerenciamento de Software
– Construção e Gerenciamento de planos
– Métricas e Estimativas do Projeto
– Monitoramento e controle
2/37
Engenharia de Software 2011-2
Introdução
• Linha do Tempo
• Anos 40 è Hardware;
• Anos 50 è Sistemas Operacionais (linguagens de linguagens de alto nívelalto nível);
• Anos 60 è Engenharia de Software (demanda alta è Crise do SoftwareCrise do Software);
3/37
Engenharia de Software 2011-2
• O que é software? (conjunto de instruções, estrutura conjunto de instruções, estrutura de dados e documentaçãode dados e documentação);
• Comparação entre Hardware e Software (falhasfalhas);
• Produto de software:– Resultado de um processo de Engenharia;– Não se desgasta;– Sob medida.
Principais aspectos de software
4/37
Engenharia de Software 2011-2
• Principais Aplicações:
– Básico;
– Tempo Real;
– Comercial;
– Embutido;
– Científico e de Engenharia;
– Computador Pessoal;
– Inteligência Artificial.
Principais aspectos de software
5/37
Engenharia de Software 2011-2
• Desenvolvimento è Problemas è Qualidade;
• Programação <==> Arte;
• Problemas:– Demora para conclusão (poucapouca coleta de informações no iníciooleta de informações no início);
– Custos Elevados (freqüentes atividades de manutençãofreqüentes atividades de manutenção);
– Detecção de erros (não utilização das técnicas de testenão utilização das técnicas de teste);
– Medir a qualidade;
– Estimativas Precárias e não formais;
– Baixa produtividade das pessoas da área;
– Insatisfação do cliente.
Principais aspectos de software
6/37
Engenharia de Software 2011-2
• Causas:– Falta de experiência;– Falta de treinamento;– “Cultura de programação”;– Resistência à mudanças.
• Mitos de Gerenciamento:– "Se a equipe dispõe de um manual repleto de padrões e procedimentos
de desenvolvimento de software, então a equipe está apta a encaminhar bem o desenvolvimento."
– "A equipe tem ferramentas de desenvolvimento de software de última geração, uma vez que eles dispõem de computadores de última geração."
Principais aspectos de software
7/37
Engenharia de Software 2011-2
• Mitos de Gerenciamento:
– "Se o desenvolvimento do software estiver atrasado, basta aumentar a equipe para honrar o prazo de desenvolvimento.“
• Mitos dos Clientes:
– "Uma descrição breve e geral dos requisitos do software é o suficiente para iniciar o seu projeto... maiores detalhes podem ser definidos posteriormente."
– "Os requisitos de projeto mudam continuamente durante o seu desenvolvimento, mas isto não representa um problema, uma vez que o software é flexível e poderá suportar facilmente as alterações."
Mitos (cont.)
8/37
Engenharia de Software 2011-2
1 x
1.5 ~ 6 x
60 ~ 100 x
DEFINIÇÃO DESENVOLVIMENTO MANUTENÇÃO
CUST
O
Mitos (cont.)
9/37
Engenharia de Software 2011-2
• Mitos dos Profissionais:– "Após a edição do programa e a sua colocação em
funcionamento, o trabalho está terminado."
– "Enquanto o programa não entrar em funcionamento, é impossível avaliar a sua qualidade."
– "O produto a ser entregue no final do projeto é o programa funcionando."
Mitos (cont.)
10/37
Engenharia de Software 2011-2
• Definições:
– “O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais" [NAU 69];
– “A aplicação prática do conhecimento científico para o projeto e a construção de programas”computacionais e a documentação necessária à sua operação e manutenção.” [Boehm, 76];
– “Abordagem sistemática para o desenvolvimento, a operação e a manutenção de software” [Afnor, 83];
– “Conjunto de métodos, técnicas e ferramentas necessárias à produção de software de qualidade para todas as etapas do ciclo de vida do produto.” [Krakowiak, 85].
Paradigma de Eng. de Software
11/37
Engenharia de Software 2011-2
• Elementos fundamentais:
– Métodos (como fazer?como fazer?);
– Ferramentas (apoio automatizadoapoio automatizado);
– Procedimentos (deliverablesdeliverables ee milestonesmilestones);
Paradigma de Eng. de Software
12/37
Engenharia de Software 2011-2
• Processo è Produto;
• Modelos de desenvolvimento:
– Ciclo de vida Clássico;
– Prototipação;
– Espiral.
Paradigma de Eng. de Software
13/37
Engenharia de Software 2011-2
• Clássico:
Operação eManutenção
Codificação
Projeto
Análise deRequisitos
Teste eIntegração
Engenharia deSistemas
Modelos de Desenvolvimento
14/37
Engenharia de Software 2011-2
• Etapas ou Atividades:
– Análise e Engenharia de Sistemas (coleta a nível de sistemacoleta a nível de sistema);
– Análise de requisitos do software (domínio da informação, função, domínio da informação, função, desempenho e interfacesdesempenho e interfaces);
– Projeto (estrutura de dados, arquitetura, detalhes procedimentais e estrutura de dados, arquitetura, detalhes procedimentais e interfaceinterface);
– Codificação;
– Testes;
– Manutenção (mudançasmudanças).
Modelos de Desenvolvimento
15/37
Engenharia de Software 2011-2
• Características do modelo Clássico:
– Simples;
– Visão global do sistema;
– Ordenamento Linear das etapas (determinar inicio e fimdeterminar inicio e fim);
– Mecanismo de Certificação (Garantir a coerência da interação Garantir a coerência da interação entre as etapasentre as etapas);
– Todas as etapas devem ser realizadas e de forma ordenada.
Modelos de Desenvolvimento
16/37
Engenharia de Software 2011-2
• Problemas do modelo Clássico:
– Requisitos são inalterados;
– Definição dos Requisitos è Definição do Hardware;
– Requisitos são completamente especificados em cada etapa;
– Software funcionando somente no final (cliente deve ter cliente deve ter paciênciapaciência).
Modelos de Desenvolvimento
17/37
Engenharia de Software 2011-2
• Etapas ou Atividades:
– Coleta de requisitos (reunir, definir, identificar e esboçarreunir, definir, identificar e esboçar);
– Projeto Rápido (abordagens de entrada e saídaabordagens de entrada e saída);
– Construção do Protótipo (avaliado pelo usuárioavaliado pelo usuário);
– Avaliação e Refinamento do Protótipo (sintonia fina e processo sintonia fina e processo de interaçãode interação);
– Engenharia do Produto.
Modelos de Desenvolvimento
19/37
Engenharia de Software 2011-2
• Características do modelo Prototipação:
– Eliminar congelamentocongelamento dos requisitos;
– Protótipo com base nos requisitos iniciais (em papel, em papel, subconjunto e programasubconjunto e programa);
– Validar ou Reformular requisitos para etapas seguintes; (determinar inicio e fimdeterminar inicio e fim);
– Demonstrar capacidade de realização do mesmo;
– Versão simplificada (pouco esforçopouco esforço).
Modelos de Desenvolvimento
20/37
Engenharia de Software 2011-2
• Problemas do modelo Prototipação:
– Usuário quer usar o protótipo;
– O desenvolvedor faz concessões (linguagem e/ou Sist. Oper. impróprio);
– As expectativas do usuário não podem ser atendidas.
Modelos de Desenvolvimento
21/37
Engenharia de Software 2011-2
• Etapas ou Atividades:
– Planejamento (objetivosobjetivos);
– Análise dos riscos;
– Engenharia (produtoproduto);
– Avaliação.
Modelos de Desenvolvimento
23/37
Engenharia de Software 2011-2
• Características do modelo Espiral:
– Redução dos riscos (prosseguir ou não prosseguirprosseguir ou não prosseguir);
– Abordagem Realística (evolucionáriaevolucionária);
– Utiliza vantagens do modelo Clássico e Prototipação (quais???);
– Cada ciclo é encerrado por uma atividade de revisão (avaliação avaliação dos riscos em cada ciclodos riscos em cada ciclo).
Modelos de Desenvolvimento
24/37
Engenharia de Software 2011-2
• Problemas do modelo Espiral:
– Difícil de convencer o cliente que a abordagem é controlável;
– Exige experiência na avaliação dos riscos;
– Modelo relativamente novo.
Modelos de Desenvolvimento
25/37
Engenharia de Software 2011-2
• Características do modelo 4GT:
– Característica do Software em alto nível (geração automática de código fontegeração automática de código fonte);
– Propões o uso de Linguagem Natural;
– Produtividade elevado (redução drástica no tempo de desenvolvimentoredução drástica no tempo de desenvolvimento)
– Ferramentas:
• Consulta de banco de dados;• Geração de Relatórios;• Manipulação de dados;• Definição e interação de telas;• Geração de Código.
Modelos de Desenvolvimento
27/37
Engenharia de Software 2011-2
• Problemas do 4GT:– Somente para domínios específicos de aplicação;
– Pode gerar Código-fonte ineficiente;
– Não acomodam verdadeiramente linguagem natural ainda;
– Passar as especificações do cliente para a implementação
Modelos de Desenvolvimento
28/37
Engenharia de Software 2011-2
• Definição:– Função, desempenho,interface,restrições e critérios
de avaliação.
– Análise de Sistemas;– Planejamento do processo de software (recursos, recursos,
riscos e custosriscos e custos);– Análise dos requisitos (detalhamento e detalhamento e
funcionalidadefuncionalidade).
Visão Geral de Engenharia de Software
30/37
Engenharia de Software 2011-2
• Desenvolvimento:– Estrutura de Dados, Arquitetura de software,
detalhes procedimentais,programas, testes.
– Projeto de software;
– Codificação(IA e 4GTIA e 4GT);
– Testes (função, lógica e implementaçãofunção, lógica e implementação).
Visão Geral de Engenharia de Software
32/37
Engenharia de Software 2011-2
• Manutenção:– Alterações diversas.
– Correção;
– Adaptação (hardware e sistemas operacionaishardware e sistemas operacionais);
– Melhoramento Funcional.
Visão Geral de Engenharia de Software
34/37
Engenharia de Software 2011-2
Bibliografia
BIBLIOGRAFIA BÁSICA:PRESSMAN, R.S. Engenharia de Software. Mc Graw Hill, 5ª Edição 2001.
SOMMERVILLE,I. Engenharia de Software. Addison Wesley, 6ª Edição 2003.
REZENDE,D.A. Engenharia de Software e Sistemas de Informação. Brasport, 2ª edição.
BIBLIOGRAFIA COMPLEMENTAR:WEBER,K.C. et all. Qualidade e produtividade em Software. Makron Books, 1999.
ROCHA,A.R.C et all; Qualidade de Software. Editora Linarth, 1999.
Anais do SBES - Simpósio Brasileiro de Engenharia de Software.
SEI. SOFTWARE ENGINEERING INSTITUTE. CMMI for Development (CMMI-DEV), Version 1.2, Technical report CMU/SEI-2006-TR-008. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2006.
SOFTEX. MPS.BR - Melhoria de Processo do Software Brasileiro. Guia Geral, versão 1.2. 2007.
ABNT – ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/IEC 12207 – Tecnologia de informação -Processos de ciclo de vida de software. Rio de Janeiro, 1998.
ISO/IEC - The International Organization for Standardization and The International Electrotechnical Commission, ISO/IEC TR 15504 Software Process Assessment. 1998.
36/37
Engenharia de Software 2011-2
Ciência da Computação
ENGENHARIA DE SOFTWARE
Prof. Claudinei Diasemail: [email protected]
Capítulo 1 – Introdução