37
Engenharia de Software 2011-2 Ciência da Computação ENGENHARIA DE SOFTWARE Prof. Claudinei Dias email: [email protected] Capítulo 1 – Introdução

Ciência da Computação ENGENHARIA DE SOFTWARE · Principais aspectos de software 7/37. ... SOMMERVILLE,I. Engenharia de Software. Addison Wesley, 6ª Edição 2003. REZENDE,D.A

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

• Prototipação:

Modelos de Desenvolvimento

18/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

• Espiral:

Modelos de Desenvolvimento

22/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

• 4GT:

Modelos de Desenvolvimento

26/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

Visão Geral de Engenharia de Software

29/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

Visão Geral de Engenharia de Software

31/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

Visão Geral de Engenharia de Software

33/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

Visão Geral de Engenharia de Software

35/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