Introdução à Engenharia de
Introdução à Engenharia de
Software
Software
Prof. Bene UMC 2010É a metodologia de desenvolvimento e manutenção de sistemas modulares, com as seguintes
características:
Adequação aos requisitos funcionais do negócio
do cliente e seus respectivos procedimentos pertinentes;
Efetivação de padrões de qualidade e
produtividade em suas atividades e produtos;
Fundamentação na tecnologia da informação
disponível viável e oportuna;
Planejamento e gestão de atividades, recursos,
custos e datas.
O que é Engenharia de
O que é Engenharia de
Software?
Outras definições:
Engenharia de Software é uma área
interdisciplinar que engloba vertentes
tecnológica e gerencial, visando abordar de modo sistemático (modular), os processos de construção, implantação e manutenção de
produtos de software, com qualidade assegurada por construção, segundo
cronogramas e custos previamente definidos. [MAFFEO,1992]
Engenharia de Software?
Outras 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”.
“É descendente da engenharia de sistemas e
de hardware. Abrange um conjunto de 3 elementos fundamentais (métodos,
ferramentas e procedimentos”.
[PRESSMAN,1995]
Engenharia de Software?
SEGUNDO O DICIONÁRIO AURÉLIO:
SEGUNDO O DICIONÁRIO AURÉLIO:
É AQUILO QUE PODE SER EXECUTADO POR UM
EQUIPAMENTO (NO CASO O HARDWARE);
É UM PRODUTO COMERCIALIZADO QUE CONSISTE EM
UM SISTEMA DE ROTINAS E FUNÇÕES.
UMA DEFINIÇÃO MAIS TÉCNICA:
UMA DEFINIÇÃO MAIS TÉCNICA:
SÃO INSTRUÇÕES (PROGRAMAS DE COMPUTADOR) QUE,
QUANDO EXECUTADAS PRODUZEM A FUNÇÃO E O
DESEMPENHO DESEJADO, MANIPULANDO OS DADOS E TRANSFORMANDO-OS EM INFORMAÇÕES, DE FORMA ADEQUADA.
O que é Software?
Características do Software
Características do Software
1. desenvolvido ou projetado por engenharia, não
manufaturado no sentido clássico 2. não se desgasta mas se deteriora
Características do Software
Características do Software
Problemas do Desenvolvimento de
Problemas do Desenvolvimento de
Software
Software
• AS ESTIMATIVAS DE CUSTO E PRAZO FREQUENTEMENTE SÃO IMPRECISAS;
• A PRODUTIVIDADE DAS PESSOAS DA ÁREA DE
SOFTWARE NÃO TEM ACOMPANHADO A DEMANDA POR SEUS SERVIÇOS;
•A QUALIDADE DO SOFTWARE ÀS VEZES É MENOS ADEQUADA;
• NÃO DEDICAMOS TEMPO PARA COLETAR DADOS SOBRE O PROCESSO DE DESENVOLVIMENTO;
• POUCOS DADOS HISTÓRICOS PARA GUIAR ESTIMATIVAS;
• A COMUNICAÇÃO ENTRE ANALISTA E CLIENTE FREQUENTEMENTE É MUITO POBRE;
• FALTA OU DEFICIÊNCIA EM TÉCNICAS DE TESTE; • A TAREFA DE MANUTENÇÃO DEVORA A MAIORIA DO ORÇAMENTO DESTINADO AO SOFTWARE.
Problemas do Desenvolvimento
Problemas do Desenvolvimento
de Software
Problemas do Desenvolvimento
Problemas do Desenvolvimento
de Software
Problemas do Desenvolvimento
Problemas do Desenvolvimento
de Software
“É A APLICAÇÃO DE UMA ABORDAGEM
SISTEMÁTICA, DISCIPLINADA E QUANTIFICÁVEL PARA O DESENVOLVIMENTO, OPERAÇÃO E
MANUTENÇÃO DO SOFTWARE”.
“É A APLICAÇÃO SISTEMÁTICA DE
CONHECIMENTOS CIENTÍFICOS NA CRIAÇÃO E CONSTRUÇÃO DE SOLUÇÕES COM UM BOM
CUSTO/BENEFÍCIO PARA RESOLUÇÃO DE PROBLEMAS PRÁTICOS DA SOCIEDADE”.
Engenharia de Software:
• Modelos de desenvolvimentos :
Servem para padronizar a metodologia e facilitar a gerencia do projeto.
Modelo Cascata (ou convencional)Modelo Cascata (ou convencional)
Modelo Prototipação Modelo Prototipação Modelo EspiralModelo Espiral
CICLOS DE VIDA DE SOFTWARE
Abrange um conjunto de três elementos fundamentais: 1. 1.Métodos,Métodos, 2. 2.Ferramentas eFerramentas e 3. 3.Procedimentos.Procedimentos.
Engenharia de Software:
Engenharia de Software:
Planejamento e estimativa de projeto
Análise de requisitos de software e de
sistemas
Projeto da estrutura de dados
Codificação
Teste
Manutenção
Engenharia de Software:
Engenharia de Software:
1. Métodos
1. Métodos
: proporcionam os detalhes de
2. Ferramentas
2. Ferramentas
: dão suporte automatizado aos
métodos.
existem atualmente ferramentas para sustentar cada
um dos métodos
quando as ferramentas são integradas é estabelecido
um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering
Engenharia de Software:
3. Procedimentos
3. Procedimentos
: constituem o elo de ligação
entre os métodos e as ferramentas;
seqüência em que os métodos serão aplicados produtos que se exige que sejam entregues
controles que ajudam assegurar a qualidade e coordenar as alterações
marcos de referência que possibilitam administrar o
progresso do software.
Engenharia de Software:
Engenharia de Software
Engenharia de Software
uma visão genéricauma visão genéricaO
processo de desenvolvimento de software
processo de desenvolvimento de software
contém 3 fases genéricas, independentes do
modelo de engenharia de software escolhido:
1. DEFINIÇÃODEFINIÇÃO,
2. DESENVOLVIMENTODESENVOLVIMENTO e 3. MANUTENÇÃOMANUTENÇÃO.
1. Revisões 2. Documentação 3. Controle de Mudanças C C Cooonnnssstttrrruuuçççãããooo 1. Entender 2. Modificar 3. Revalidar Manutenção “mudanças” O O Opppeeerrraaaçççãããooo S S SOOOFFFTTTWWWAAARRREEE P P PRRROOODDDUUUTTTOOO A A Atttiiivvviiidddaaadddeeesss dddeee AAApppoooiiiooo 1. Análise de Sistema 2. Planejamento do Projeto 3. Análise de Requisitos Definição
“o que” Desenvolvimento “como” 1. Projeto de Software 2. Codificação 3. Teste
Engenharia de Software
Para escolha de um
Para escolha de um
Ciclo de Vida de Software:
Ciclo de Vida de Software:
natureza do projeto e da aplicação
métodos e ferramentas a serem usados ou
disponíveis
controles e produtos que precisam ser
entregues
Modelo Cascata (ou convencional)
Modelo Cascata (ou convencional)
modelo mais antigo e o mais amplamente
usado da engenharia de software
modelado em função do ciclo da engenharia
convencional
requer uma abordagem sistemática,
Engenhari Engenhari a de a de Sistemas Sistemas Engenhari Engenhari a de a de Sistemas
SistemasAnálise Análise
de de Requisitos Requisitos Análise Análise de de Requisitos
Requisitos Projeto Projeto Projeto Projeto
Codificaçã Codificaçã o o Codificaçã Codificaçã o o Testes
Testes Testes Testes
Manutenç Manutenç ão ão Manutenç Manutenç ão ão
Modelo Cascata
Modelo Cascata
Problemas
Problemas
com o modelo Cascata
com o modelo Cascata
P
rojetos reais raramente seguem o fluxoseqüencial que o modelo propõe
logo no início é difícil estabelecer explicitamente
todos os requisitos. No começo dos projetos sempre existe uma incerteza natural
o cliente deve ter paciência. Uma versão
executável do software só fica disponível numa etapa avançada do desenvolvimento
Embora o Ciclo de Vida Clássico tenha
Embora o Ciclo de Vida Clássico tenha
fragilidades, ele é significativamente
fragilidades, ele é significativamente
melhor do que uma abordagem casual
melhor do que uma abordagem casual
ao desenvolvimento de software
ao desenvolvimento de software
Clássico
Prototipação
Prototipação
Análise de Requisitos
Desenvolvimento do Protótipo
Experimentação do Protótipo
Prototipação
Prototipação
processo que possibilita que o desenvolvedor crie
um modelo do software que deve ser construído.
idealmente, o modelo (protótipo) serve como um protótipo
mecanismo para identificar os requisitos de software.
apropriado para quando o cliente definiu um
conjunto de objetivos gerais para o software, mas
não identificou requisitos de entrada,
Atividades da Prototipação
Atividades da Prototipação
Obtenção dos Requisitos:
Obtenção dos Requisitos:
desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais
Projeto Rápido:
Projeto Rápido: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída) fim início construção produto refinamento protótipo avaliação protótipo construção protótipo projeto rápido obtenção dos requisitos
Construção Protótipo: Construção Protótipo: implementação do projeto rápido Avaliação do Protótipo: Avaliação do Protótipo:
cliente e desenvolvedor avaliam o protótipo
Atividades da Prototipação
Atividades da Prototipação
fim início construção produto refinamento protótipo avaliação protótipo construção protótipo projeto rápido obtenção dos requisitosRefinamento do Protótipo
Refinamento do Protótipo::
cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. Ocorre neste ponto um processo
de N iterações, iterações, que pode conduzir da 1a. atividade até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito.
Atividades da Prototipação
Atividades da Prototipação
fim início construção produto Refinamento protótipo avaliação protótipo construção protótipo projeto rápido obtenção dos requisitosConstrução Produto:
Construção Produto:
identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade.
Atividades da Prototipação
Atividades da Prototipação
fim início construção produto refinamento protótipo avaliação protótipo construção protótipo projeto rápido obtenção dos requisitosProblemas com a Prototipação
Problemas com a Prototipação
cliente não sabe que o software que ele vê não
considerou, durante o desenvolvimento, a
qualidade global e a manutenibilidade a longo prazo.
Não aceita bem a idéia que a versão final do
software vai ser construída e "força" a utilização do protótipo como produto final.
Problemas com a Prototipação
Problemas com a Prototipação
desenvolvedor freqüentemente faz uma
implementação comprometida (utilizando o que está disponível) com o objetivo de produzir
rapidamente um protótipo.
Depois de um tempo ele familiariza com essas
escolhas, e esquece que elas não são apropriadas para o produto final.
Modelo Espiral
Modelo Espiral
Baseado na prototipação e simulação de um ciclo, fase a fase, formando uma espiral:
• Determinar objetivos, alternativas, restrições • Avaliar alternativas, identificar e resolver riscos • Desenvolver e verificar produto obtido
• Planejar fase seguinte:
– determinar objetivos, alternativas, restrições – Avaliar alternativas, identificar e resolver riscos – Desenvolver e verificar produto obtido
– Planejar fase seguinte:
Ainda que possam ocorrer problemas, a prototipação é um ciclo de vida eficiente
A chave é definir claramente as regras do jogo logo no começo
O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos