introdução à engenharia de software

26
Introdução à Engenharia de Software Prof. Nécio de Lima Veras Objetivo: Perceber os conceitos básicos e aspectos introdutórios sobre Engenharia de Software.

Upload: necio-de-lima-veras

Post on 27-May-2015

2.244 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introdução à Engenharia de Software

Introdução àEngenharia de

Software

Prof. Nécio de Lima Veras

Objetivo: Perceber os conceitos básicos e aspectos introdutórios sobre Engenharia de Software.

Page 2: Introdução à Engenharia de Software

Aula 01: Ordem

Software: Conceitos; Crise Histórica; Mitos;

Introdução à abordagem de projetos;Engenharia de Software:

Definição; Modelos de Processos de Softwares; Modelos de Gerência de Projetos;

Page 3: Introdução à Engenharia de Software

Software: Conceitos

[...] uma forma híbrida, algo no domínio entre o concreto e o abstrato, entre o tangível e o intangível. [...] o desenvolvimento de produtos de software é visto como uma atividade mental, abstrata, solitária e criativa.

Cox (apud GUERRA e ALVES, 2004, p. 1)

Page 4: Introdução à Engenharia de Software

Pressman (1997) diz que um livro didático poderia trazer a descrição de um software da seguinte forma: Instruções (programas de computador) que,

quando executadas, produzem a função e desempenho desejados;

Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação;

Documentos que descrevem a operação e o uso dos programas;

Software: Conceitos

Page 5: Introdução à Engenharia de Software

Sommerville (2003) complementa criando dois tipos diferentes: Produtos Genéricos; Produtos sob encomenda;

Por tanto, Software é: Produto (ou serviço) que possui um grande

número de características próprias oriundas dos critérios de análise, codificação e documentação aplicados durante sua construção;

Software: Conceitos

Page 6: Introdução à Engenharia de Software

Software: Reflexão sobre os conceitos

Será que essa formalização já é suficiente para entendermos o que é realmente um software?

Reflexões

Qual a relevância de conhecer o que está “escondido” por traz de um software?

Page 7: Introdução à Engenharia de Software

Software: Crise Histórica (1968)

Evolução do hardware;Softwares mais complexos com:

Custos maiores (não previstos); Baixa confiabilidade; Difícil manutenção; e Desempenho abaixo do esperado;

Percebeu-se que uma abordagem informal de desenvolvimento não era suficiente; E quais as prováveis causas da crise?

Page 8: Introdução à Engenharia de Software

Software: Mitos

1

A equipe de desenvolvimento dispõe de um manual com padrões e procedimentos;

2

A equipe possui ferramentas de desenvolvimento de software de última geração! Afinal lhes compramos os mais novos computadores;

3

Se os prazos atrasam, pode-se adicionar mais pessoas ao grupo e tirar o atraso;

Page 9: Introdução à Engenharia de Software

Software: Mitos

4

Uma descrição geral dos objetivos é suficiente para se escrever programas e os detalhes são vistos posteriormente;

5

Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível.

6

Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo.

Page 10: Introdução à Engenharia de Software

Software: Mitos

7

Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.

Page 11: Introdução à Engenharia de Software

Quais foram as possíveis soluções para a crise?

Engenharia Engenharia de de

SoftwareSoftwareCriar soluções que apresentem suporte ao desenvolvedor e que melhore a qualidade;

Reconhecer os problemas e causas;

Desmascarar os mitos;

Page 12: Introdução à Engenharia de Software

Introdução à abordagem de projetos

Page 13: Introdução à Engenharia de Software

Surge de ideias conceituais e reajustáveis; É Intangível; Possui escopo variável; É dotado de incertezas constantes; Difícil visualização do produto final. Mas como obter um produto de software com qualidade diante de todas estas peculiaridades?

Produtos de Software

Page 14: Introdução à Engenharia de Software

● A ideia foi incluir a disciplina de engenharia no desenvolvimento de software;

● A E.S. Engloba três elementos fundamentais:

Engenharia de Software

Page 15: Introdução à Engenharia de Software

Engenharia de Software: definição

Sommerville (2003): Disciplina que trabalha todos os aspectos da

produção de software, desde os estágios iniciais de especificação até a manutenção deste, depois que ele entrou em operação;

Não se dedica apenas aos processos técnicos de software, mas também:

• Ao gerenciamento dos projetos;• Ao desenvolvimento de ferramentas, métodos e

teorias que dêem apoio à produção de software;

Por que não fazer uma analogia?

Page 16: Introdução à Engenharia de Software

Engenharia de Software: abrangência

MétodosMétodos FerramentasFerramentas ProcedimentosProcedimentos

Planejamento, Análise, Projeto, Codificação, Teste e Manutenção

“Elo de ligação” entre métodos e ferramentas

Automação

Page 17: Introdução à Engenharia de Software

Engenharia de Software: Modelo de Processo de Software

O que entendemos por processo de software? Conjunto de atividades que geram produtos

de software;

Há quatro atividades fundamentaisHá quatro atividades fundamentais

Evolução de

softwareValidação de

software

Desenvolvimento de

softwareEspecificação

de Software

Page 18: Introdução à Engenharia de Software

Engenharia de Software: Modelo de Processo de Software

Um modelo de processo de software é: Uma descrição simplificada de um processo

de software, abstraindo o processo real que está sendo aplicado;

É constituído por: Atividades de processos de software; Produtos de software; Definição de papeis das pessoas envolvidas;

Page 19: Introdução à Engenharia de Software

Exemplos de Modelos de Processos de Software

Desenvolvimento incrementalDesenvolvimento

evolucionário

O Modelo em cascata

Page 20: Introdução à Engenharia de Software

Reflexão sobre os modelos

Esses modelos garantem o sucesso do software? E as métricas de software? E as garantias de qualidade?

Como vimos, faz parte da definição de engenharia de software: Não se dedica apenas aos processos

técnicos de software, mas também ao gerenciamento dos projetos;

Page 21: Introdução à Engenharia de Software

Gerência de Projetos de Software

A crise é passado? E os softwares complexos?

É preciso gerenciar projetos de software? Considere:

• Sistemas de Software;• Desenvolvimento colaborativo;

Também existe modelos de gerenciamento?

Page 22: Introdução à Engenharia de Software

Modelos de Gerenciamento de Projetos

PMI (Project Management Institute): Baseado em processos; Alguns consideram muito burocrático; Possui publicações reconhecidas

internacionalmente, como o Guia PMBOK;

CMMI (Capability Maturity Model Integration): Baseado em níveis de maturidade organizacional; Encomendado e patrocinado pelo Pentágono, foi

formulado pelo SEI (Software Engineering Institute);

Page 23: Introdução à Engenharia de Software

Modelos de Gerenciamento de Projetos

APM (Agile Project Management): Criado em 2001 por um grupo chamado de Agile

Alliance; Possui um conjunto de princípios que são referências

básicas para as metodologias ágeis; Possui cinco objetivos-chave:

• Inovação contínua;• Adaptabilidade do produto;• Entregas com cronograma reduzido;• Adaptabilidade do processo e das pessoas;• Resultados confiáveis;

Page 24: Introdução à Engenharia de Software

Modelo Ágil de Gerência de Projeto de Software – Visão Geral

Fonte: Martins, 2007

Page 25: Introdução à Engenharia de Software

Considerações Finais

Perspectivas para a área de Engenharia de Software: O modelo brasileiro de melhoria dos

processos de software (MPS.BR);

Page 26: Introdução à Engenharia de Software

Referências Bibliográficas

SOMMERVILLE, I. Engenharia de Software. 6ª. ed. São Paulo: Addison Wesley, 2003.

PRESSMAN, R. S. Engenharia de Software. São Paulo: Pearson Makron Books, 1997, Reimpressão 2007.

MARTINS, J. C. C. Técnicas para Gerenciamento de Projetos de Software. Rio de Janeiro: Brasport, 2007.

GUERRA, A. C., ALVES, A. M. Aquisição de produtos e serviços de software. Rio de Janeiro: Elsevier: 2004.

BASSI, D. Planejamento Ágil de Projetos. Engenharia de Software Magazine. DevMedia Group, ano I, n. 08, pág. 08-12, 2008.

PAULA, Wilson de Pádua Filho. Alguns Fundamentos da Engenharia de Software. Engenharia de Software Magazine. DevMedia Group, ano I, n. 01, pág. 04-08, 2007.