Prof. Nécio de Lima Veras
Introdução à
Engenharia de
Software
Objetivo: Perceber os conceitos
básicos e aspectos introdutórios
sobre 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;
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)
Software: Conceitos
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
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: Reflexão sobre os conceitos
Reflexões
Será que essa Qual a relevância
formalização já é de conhecer o
suficiente para que está
entendermos o que “escondido” por
é realmente um traz de um
software? 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?
Software: Mitos
1 2 3
A equipe de A equipe possui Se os prazos
desenvolvimento ferramentas de atrasam, pode-se
desenvolvimento de
dispõe de um adicionar mais
software de última
manual com pessoas ao grupo
geração! Afinal lhes
padrões e compramos os mais e tirar o atraso;
procedimentos; novos computadores;
Software: Mitos
4 5 6
Uma descrição Os requisitos de Assim que
projeto modificam- escrevermos o
geral dos objetivos
se continuamente, programa e o
é suficiente para se mas as mudanças colocarmos em
escrever podem ser funcionamento
programas e os facilmente nosso trabalho
detalhes são vistos acomodadas, porque estará completo.
posteriormente; o software é flexível.
Software: Mitos
7
Enquanto não tiver o
programa "funcionando",
eu não terei realmente
nenhuma maneira de
avaliar sua qualidade.
Quais foram as possíveis soluções para
a crise?
Reconhecer os
problemas e causas;
Desmascarar os Engenharia
mitos; de
Software
Criar soluções que
apresentem suporte ao
desenvolvedor e que
melhore a qualidade;
Produtos 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?
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: 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?
Engenharia de Software: abrangência
Métodos
Métodos Ferramentas
Ferramentas Procedimentos
Procedimentos
Planejamento,
Análise,
Projeto, Automação “Elo de
Codificação, ligação” entre
Teste e métodos e
Manutenção ferramentas
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 fundamentais
Há quatro atividades fundamentais
Desenvolvimento
Especificação de Validação de Evolução de
de software software software
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;
Exemplos de Modelos de Processos
de Software
O Modelo
em cascata
Desenvolvimento
Desenvolvimento incremental
evolucionário
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;
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?
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);
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;
Modelo Ágil de Gerência de Projeto de
Software – Visão Geral
Fonte: Martins, 2007
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.