introdução à engenharia de software
TRANSCRIPT
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.
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)
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: Conceitos
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?
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
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;
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.
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?
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;
Introdução à abordagem de projetos
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
● A ideia foi incluir a disciplina de engenharia no desenvolvimento de software;
● A E.S. Engloba três elementos fundamentais:
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?
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
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
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
Desenvolvimento incrementalDesenvolvimento
evolucionário
O Modelo em cascata
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
Considerações Finais
Perspectivas para a área de Engenharia de Software: O modelo brasileiro de melhoria dos
processos de software (MPS.BR);
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.