Buscar

Engenharia de Software - Aula 3 - Swebok

Prévia do material em texto

Assuntos do dia
• SWEBOK
• Processos de Software 
• Modelos de Processos/Ciclo de Vida
Engenharia de Software
SWEBOK
• Projeto da IEEE Computer Society
• Última versão: 3.0 publicada em Janeiro/2014
• Cópias do arquivo pdf distribuídas gratuitamente • Cópias do arquivo pdf distribuídas gratuitamente 
no link www.swebok.org
• Iniciativa para reunir o corpo de conhecimentos 
sobre Engenharia de Software
SWEBOK
• Um pouco da história
• 1958 – John Tukey utilizou o termo Software pela 
primeira vez na história
• 1968 – NATO conference na Alemanha utilizou o • 1968 – NATO conference na Alemanha utilizou o 
termo Engenharia de Software pela primeira vez
• 1972 – IEEE Computer Society publicou o primeiro 
Transactions on Software Engineering
• 1976 – foi estabelecido um comite no IEEE para 
padronizar o desenvolvimento da ES
SWEBOK
• Um pouco da história
• 1996 – foi publicada a norma ISO/IEC12207 com o 
título Standard for Software Life Cycle Processes
• 2004 – primeira versão do corpo de conhecimento • 2004 – primeira versão do corpo de conhecimento 
SWEBOK com base na 12207
• 2014 – versão mais nova do SWEBOK V3
Engenharia de Software
Abordagem sistemática, disciplinada e capaz de 
ser medida ao longo de um processo de ser medida ao longo de um processo de 
construção de um software
O que é um Processo?
• Latim= procedere
• verbo que indica a ação de avançar, ir para 
frente (pro+cedere)frente (pro+cedere)
• Conjunto de ações que objetivam atingir uma meta
O que é um Processo?
• Como é o processo de construção
de uma casa?
• Como é o processo de construção 
de um novo modelo de automóvel?
O que é um Processo?
• Na Engenharia de Software
• Conjunto de passos ordenados
• Objetivo = atingir uma meta = entregar um produto de 
software de maneira eficiente, previsível e que atinja 
as necessidades de negócio 
• Geralmente inclui análise de requisitos, projeto de 
software, programação, testes, entre outras tarefas
Exemplo de um processo 
GENÉRICO de Software
Engenharia Engenharia 
de de 
RequisitosRequisitos
Projeto Projeto 
de de 
SoftwareSoftware
Construção Construção 
e e 
TesteTeste
ImplantaçãoImplantação
RequisitosRequisitos SoftwareSoftware TesteTeste
Definições
Combinação de atividades, ferramentas e 
procedimentos visando o desenvolvimento 
ou evolução de um software (Sommerville)ou evolução de um software (Sommerville)
Roteiro, ou conjunto de passos, previsível
que ajuda a criar a tempo um software de 
alta qualidade (Pressman)
Definições
Combinação de atividades, ferramentas e 
procedimentos visando o desenvolvimento 
ou evolução de um software (Sommerville)ou evolução de um software (Sommerville)
• Quais são as atividades?
• Quais ferramentas devo utilizar?
• Quais procedimentos devo seguir?
Exemplo de um processo 
GENÉRICO de Software
Engenharia Engenharia 
de de 
RequisitosRequisitos
Projeto Projeto 
de de 
SoftwareSoftware
Construção Construção 
e e 
TesteTeste
ImplantaçãoImplantação
RequisitosRequisitos SoftwareSoftware TesteTeste
ATIVIDADES
O que preciso fazer?
Exemplo de um processo 
GENÉRICO de Software
Engenharia Engenharia 
de de 
RequisitosRequisitos
Projeto Projeto 
de de 
SoftwareSoftware
Construção Construção 
e e 
TesteTeste
ImplantaçãoImplantação
FERRAMENTASFERRAMENTAS
Gerenciador de Requisitos
- ex: RequisitePro
Linguagem de modelagem
- ex: UML
Linguagem de programação
- ex: Delphi, Java, C#
Compiladores
- ex: JDK
De testes
- ex: JUnit
Banco de Dados
- ex: Oracle, MySQL
Controle de Versão
- ex: CVS, SubVersion
Etc, etc, etc....
Exemplo de um processo 
GENÉRICO de Software
Engenharia Engenharia 
de de 
RequisitosRequisitos
Projeto Projeto 
de de 
SoftwareSoftware
Construção Construção 
e e 
TesteTeste
ImplantaçãoImplantação
PROCEDIMENTOSPROCEDIMENTOS
Definem a sequência das atividades, produtos a 
entregar (modelos, documentos, protótipos, relatórios, 
etc.), marcos de referência para administrar o 
progresso do software, etc.
Em suma ...
• Um processo de software
– prescreve a ordem e a frequência de cada fase/atividade
– especifica critérios para mudar de uma fase para outra
– define o que tem que ser entregue ao final de cada fase
• Um processo de software NÃO significa
– “sobrecarga”, “papelada desnecessária”, “perda da tempo”
• Um processo de software tem efeito positivo
• para atender ao cronograma e obter software com mais qualidade e 
mais fácil de manter
Modelos de Processo
• Modelo é uma representação abstrata de um 
processo
• Exemplos: 
• Sequenciais
• Incrementais
• Prototipagem
Modelos de Processos
• Sequenciais 
• Incrementais
Modelos Sequenciais
• També conhecido como
• Modelo Cascata 
• Ciclo de Vida Clássico 
• Sequencial Linear
• Requer abordagem sistemática e sequencial ao 
desenvolvimento de software
• Principal característica
• “O resultado de uma fase é a entrada da 
próxima”
Exemplo de um processo 
GENÉRICO de Software
Engenharia Engenharia 
de de 
RequisitosRequisitos
Projeto Projeto 
de de 
SoftwareSoftware
Construção Construção 
e e 
TesteTeste
ImplantaçãoImplantação
Engenharia de Requisitos
Levantamento de requisitos
Análise de requisitos
Projeto de SW
Projeto de Banco de Dados
Projeto Arquitetural
Projeto de Interface
Engenharia de Requisitos
Levantamento de requisitos
Análise de requisitos
Projeto de SW
Projeto de Banco de Dados
Projeto Arquitetural
Projeto de Interface
Construção
Geração de código
Teste
Implantação
Entrega
Manutenção
Feedback
Construção
Geração de código
Teste
Implantação
Entrega
Manutenção
Feedback
Problemas do Modelo Cascata
• Em projetos reais, é difícil estabelecer todos os requisitos 
no início de um processo (incertezas)
• Difícil acomodar mudanças com o processo em 
andamento, pois uma fase deve estar completa para andamento, pois uma fase deve estar completa para 
passar para a próxima (sem paralelismo)
• Inflexibilidade em estágios distintos dificulta resposta aos 
requisitos de mudança do cliente
• Cliente paciente
• Uma versão executável só fica disponível em uma etapa 
avançada do desenvolvimento
Problemas do Modelo Cascata
• Devido aos custos de produção e aprovação de 
documentos, as iterações são onerosas e envolvem 
retrabalho significativo
• É normal suspender partes do desenvolvimento mesmo 
com poucas iterações (ex: especificação) e prosseguir com poucas iterações (ex: especificação) e prosseguir 
com as fases posteriores �
• Softwares que não atenderão ao que o cliente deseja
• Softwares mal estruturados (problemas de projeto)
• Descoberta de erros e omissões na implantação
• Necessidade de evoluir o software precocemente
Quando usá-lo!?!
• Quando os requisitos são muito bem compreendidos, e 
quando as mudanças forem bastante limitadas durante o 
desenvolvimento
• Poucos sistemas de negócio têm requisitos estáveis• Poucos sistemas de negócio têm requisitos estáveis
• “... é significativamente melhor do que uma abordagem 
casual de desenvolvimento de software”
• Modelo Cascata é simples e fácil de usar e gerenciar
Exemplo Prático
• Software de calculadora
• Quais outros!?!?
Modelos de Processos
• Sequenciais 
• Incrementais
Modelo Incremental
• Ao invés de o sistema sofrer uma única entrega, o 
desenvolvimento e a entrega são separados em 
incrementos
• Cada incremento fornece parte da funcionalidade solicitada
Modelo Incremental
• Requisitos são priorizados
• Requisitos de prioridade mais alta são incluídos nos 
incrementos iniciaisincrementos iniciais
• Se o desenvolvimento de um incremento é iniciado,seus 
requisitos são congelados, embora os requisitos para 
incrementos posteriores possam continuar evoluindo
Modelo Incremental (1a visão)
increment # n
C o m m u n i c a t i o n
P l a n n i n g
M o d e l i n g
C o n s t r u c t i o n
D e p l o y m e n t 
 d e l i v e r y 
 f e e d b a c k
analy s is 
des ign
c ode 
t es t
F
u
n
cio
n
alid
ad
e
 e
 ca
racte
rísticas
 d
o
 softw
a
re
nº incremento
C o m m u n i c a t i o n
P l a n n i n g
M o d e l i n g
C o n s t r u c t i o n
D e p l o y m e n t 
 d e l i v e r y 
 f e e d b a c k
analy s is 
des ign c ode 
t es t
increment # 1
increment # 2
delivery of 
1st increment
delivery of 
2nd increment
delivery of 
nt h increment
project calendar t ime
C o m m u n i c a t i o n
P l a n n i n g
M o d e l i n g
C o n s t r u c t i o n
D e p l o y m e n t 
 d e l i v e r y 
 f e e d b a c k
ana ly s is 
des ign code 
t es t
F
u
n
cio
n
alid
ad
e
 e
 ca
racte
rísticas
 d
o
 softw
a
re
Tempo de projeto de software
Entrega do 1º incremento
Entrega do 2º incremento
Entrega do nº incremento
2º incremento
1º incremento
Modelo Incremental (2a visão)
Modelo Incremental (3a visão)
time
Requirements
1Iteration # ���� 2 3
Product released XFirst iteration completed X
M I L E S T O N E S
S C H E D U L E
1 
Requirements
analysis
Design
Coding
Testing
1
1 
2
2
3
3 
2 3 
2 31
Software
Subset
Software
Subset
Final
Version
Vantagens do Modelo Incremental
• Software pode ser entregue para o cliente com cada 
incremento e, desse modo, a funcionalidade principal é 
disponibilizada mais cedo
• Incremento inicial age como se fosse um protótipo para 
auxiliar na coleta de requisitos para posteriores incrementos 
do software, PORÉM o incremento é um produto operacional
a cada entrega
• Riscos menores de falha geral do projeto
• Módulos de mais alta prioridade são mais testados
Quando usá-lo!?!
• Quando não há mão de obra disponível para uma 
implementação completa dentro do prazo de 
entrega estabelecidoentrega estabelecido
• Quando o núcleo do software a ser desenvolvido é 
bem conhecido, mas não os requisitos em sua 
totalidade (mais realista)
Exemplo Prático
• Software de processamento de texto
• Incremento inicial (núcleo)
• gestão básica de arquivos, edição e produção de 
documentos (ex: novo, abrir, salvar, imprimir, documentos (ex: novo, abrir, salvar, imprimir, 
formatação com tipo e tamanho de fonte, N, I, S, ...)
• Incrementos posteriores
• edição e produção de documentos mais sofisticados 
(ex: salvar como, gerar PDF, )
• verificação ortográfica e gramatical
• ...
Resumo
• Um modelo de processo genérico para ES consiste num 
conjunto de atividades metodológicas e de apoio, ações e 
tarefas a realizar
• Cada modelo pode ser descrito por um fluxo de processo 
diferente
Resumo
• Os modelos de processos são utilizados com o objetivo de 
organizar e estruturar o desenvolvimento de software
• Cada modelo sugere um fluxo de processos ligeiramente 
diferente, mas todos realizam o mesmo conjunto de 
atividades metodológicas genéricas: comunicação, 
planejamento, modelagem, construção e emprego
Resumo
• Os modelos sequenciais (ex: cascata) são os paradigmas 
mais antigos
• Sugerem um fluxo de processo linear que é 
inadequado para considerar as características dos 
sistemas modernos
• Mas, tem aplicabilidade em situações em que os 
requisitos são bem definidos e estáveis
Resumo
• Os modelos de processo incremental são interativos por 
natureza e produzem rapidamente versões operacionais do 
sistema
Leitura Recomendada
– Capítulo 2 do livro texto: Pressman, Roger. 
Engenharia de Software, 7ed. McGrawHill, 
Porto Alegre, RS, 2011.
– Capítulo 2 do livro texto: Sommerville, Ian. – Capítulo 2 do livro texto: Sommerville, Ian. 
Engenharia de Software, 9ed. Prentice Hall, 
São Paulo, SP, 2011.
– Capítulo 8: SWEBOK V3. Disponível em 
http://www.swebok.org/

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes