Você está na página 1de 39

ENGENHARIA DE SOFTWARE

Aula 4

Prof. Ernesto Veiga


ernestoveiga@ufg.br
Sobre a aula anterior
• Revisão da Engenharia de Software
• Relação com Engenharia de Sistemas

• Visão geral de Software

• Crise do Software

• Surgimento da Engenharia de Software


Assuntos do dia
• Corpo de Conhecimento em Engenharia de
Software (SWEBOK)
• Processo de Software

• Modelos de Processo de Software


Contextualizando…
• Engenharia de Software evoluiu como uma
profissão caracterizada por
• padrões que especificam práticas profissionais genéricas
• um código de ética
• inúmeros livros-texto
• diversos eventos científicos especializados
• reconhecidos cursos de graduação e pós-graduação
• ...
• um guia para o corpo de conhecimento
Contextualizando…
• Muitas profissões têm um corpo de conhecimento,
que descreve conhecimento aceito de forma
consensual, para ser utilizado para vários
propósitos
• desenvolvimento da área em si
• certificação de especialistas
• cursos acadêmicos
• licenciamento de profissionais
• Um projeto da

• Primeira versão: 2004


• Última versão: v.3.0, de Janeiro de 2014
• Disponível gratuitamente para download em
www.swebok.org
• Aproximadamente 150 revisores de 33 países
contribuíram para esta versão
• O SWEBOK não detalha o corpo de conhecimento, mas
serve como um guia para o corpo de conhecimento completo
desenvolvido ao longo das últimas 5 décadas
• Está organizado em 15 áreas de conhecimento
(knowledge áreas – KAs)
• as KAs sumarizam os conceitos básicos da ES e
• incluem uma lista de referências apontando para mais
informações detalhadas
As 15 KAs
As 15 KAs
As 15 KAs
• Promovem uma visão consistente da área de ES em todo
o mundo
• Especificam o escopo e as contribuições existentes entre
a ES e outras áreas, como Ciência da Computação, Gestão
de Projetos, Engenharia de Sistemas, Matemática, etc.
• Fundamentam a construção de um currículo para cursos
de graduação, pós-graduação e capacitação profissional
As 15 KAs
Engenharia de Software

Abordagem sistemática, disciplinada e capaz de


ser medida ao longo de um processo de
desenvolvimento de um software
ENGENHARIA
DE
REQUISITOS
Processo de Software:
Fases
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
Processo de Software?
• Um conjunto de FASES ordenadas com objetivos
distintos entre si ...
• ... que levam à produção, manutenção e evolução
de um produto de software
ENGENHARIA
DE
REQUISITOS
Exemplo de Processo
de Software Genérico
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
ENGENHARIA
DE
REQUISITOS
Exemplo de Processo
de Software Genérico
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE
FASES
IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
ENGENHARIA
DE
REQUISITOS
Processo de Software:
Atividades
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
Processo de Software?
• Um conjunto de FASES ordenadas com objetivos
distintos entre si ...
• ... que levam à produção, manutenção e evolução
de um produto de software
• Em cada FASE, são executadas ATIVIDADES (ou
disciplinas) com maior ou menor predominância
ENGENHARIA
DE
REQUISITOS
Exemplo de Processo
de Software Genérico
DESIGN DE
SOFTWARE

CONSTRUÇÃO
DE SOFTWARE

Atividades TESTE DE
SOFTWARE
Estudo de viabilidade
Elicitação e análise IMPLANTAÇÃO
Especificação DE SOFTWARE
Validação
Documentação MANUTENÇÃO E
EVOLUÇÃO DE
Gerenciamento SOFTWARE
ENGENHARIA
DE
REQUISITOS
Processo de Software:
Artefatos
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
Processo de Software?
• Um conjunto de FASES ordenadas com objetivos
distintos entre si ...
• ... que levam à produção, manutenção e evolução
de um produto de software
• Em cada FASE, são executadas ATIVIDADES (ou
disciplinas) com maior ou menor predominância
• Para cada ATIVIDADE, devem ser bem definidos um conjunto
de artefatos (documentos, produtos) de entrada e de saída e
um conjunto de papéis com responsabilidades
ENGENHARIA
DE
REQUISITOS

Atividades

Estudo de viabilidade
Elicitação e análise
Especificação
Validação
Documentação
Gerenciamento
ENGENHARIA
DE
REQUISITOS

Artefatos
ENGENHARIA
DE
REQUISITOS
Processo de Software:
Papéis e
DESIGN DE
SOFTWARE responsabilidades
CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
Papeis e
Gerente Analista, responsabilidades
de projeto usuário final
etc. etc.

Analista
Analista,
usuário final
etc.

ENGENHARIA
DE
REQUISITOS

Artefatos
ENGENHARIA
DE
REQUISITOS
Processo de Software:
Exemplo!
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃODE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

IMPLANTAÇÃO
DE SOFTWARE

MANUTENÇÃO E
EVOLUÇÃO DE
SOFTWARE
ENGENHARIA
DE Especificações e modelos de análise
REQUISITOS
Requisitos do cliente
Necessidades do negócio
etc. DESIGN DE
SOFTWARE
Modelos de design (arquitetura,
interface com usuário, dados,
componentes, etc.)

CONSTRUÇÃO
CONSTRUÇÃO DE Código-fonte e TESTE DE
DE SOFTWARE
SOFTWARE casos de testes SOFTWARE

IMPLANTAÇÃO Software testado


DE SOFTWARE e aceito

MANUTENÇÃO E Software em
EVOLUÇÃO DE operação
SOFTWARE
Processo de Software?
• Fases
• Atividades
• Artefatos
• Papéis com responsabilidades
e...
Processo de Software?
• Fases
• Atividades
• Artefatos
• Papéis com responsabilidades
e...
• Ferramentas!
ENGENHARIA
DE
REQUISITOS
Exemplo de Processo
de Software Genérico
DESIGN DE
SOFTWARE

CONSTRUÇÃO
CONSTRUÇÃO DE
DE SOFTWARE
SOFTWARE

TESTE DE
SOFTWARE

Ferramentas IMPLANTAÇÃO
DE SOFTWARE
Editor de código-fonte
Compilador
Depurador MANUTENÇÃO E
Plugins diversos (ex: para EVOLUÇÃO DE
controle de versão) SOFTWARE
Processo: para quê?
1. Redução do tempo de treinamento
2. Possibilidade de uniformização dos produtos
3. Possibilidade de capitalizar experiências

Fases, atividades, artefatos,


papeis com responsabilidades e
ferramentas.

CAMADAS DA ENGENHARIA DE SOFTWARE


Processo: para quê?
1. Redução do tempo de treinamento
– Com processos bem definidos e documentados, é mais fácil
encaixar novos membros à equipe do que quando não se dispõe
deles
2. Possibilidade de uniformização dos produtos
3. Possibilidade de capitalizar experiências
Processo: para quê?
1. Redução do tempo de treinamento
2. Possibilidade de uniformização dos produtos
– Embora não garanta uniformidade na qualidade dos
produtos, uma equipe com um processo bem definido tende a
ser mais previsível que sem processo algum
– Previsibilidade benéfica em termos de produtividade e
atendimento a prazos e custos, por exemplo
3. Possibilidade de capitalizar experiências
Processo: para quê?
1. Redução do tempo de treinamento
2. Possibilidade de uniformização dos produtos
3. Possibilidade de capitalizar experiências
– Ter um ou mais processos bem definidos não significa estar
preso a eles
– Se um processo é bem gerenciado, as pessoas tendem a
descobrir sempre um meio de fazer as coisas de modo melhor
que a descrita no processo, incorporando alterações para sua
melhoria
Modelo de Processo de Software
• Representação simplificada, abstrata e genérica
de um processo de software
• Quando uma empresa decide adotar um processo
de software, deve buscar um modelo de processo e
adaptá-lo para criar o seu próprio processo
• Adaptar segundo as suas próprias necessidades
(características do negócio, do software, da equipe, ...)
Modelos de Processo de Software
1. Tradicionais
2. Ágeis
Tarefa (10/05)
Entregar um mapa mental ou um resumo estruturado sobre os
seguintes tópicos da ABNT ISO IEC 12207 (páginas 16-18 e 20-24):

• Seção 5.2: apenas as Subseções 5.2.1 (Sistemas de software, p. 16 e


17), 5.2.2 (Estrutura de sistema de software, p.17 e 18) e 5.2.4
(Processos do ciclo de vida para o sistema de software, p. 20);
• Seção 5.3: Conceitos de organização e projeto (p. 20 e 21); e
• Seção 5.4: Conceitos do ciclo de vida (p. 21 a 23);
• Seção 5.5: Conceitos do processo (p. 23 e 24).
Leitura Recomendada
• PRESSMAN, Roger S. Engenharia de Software: Uma Abordagem
Profissional. Capítulos 2 e 3. 7a edição. McGraw-Hill, 2011.
• SOMMERVILLE, Ian. Engenharia de Software. Capítulo 2. 9ed.
Prentice Hall, São Paulo, SP, 2011.

• Material complementar: video-aula sobre “Modelos de Ciclo de


Vida de Desenvolvimento de Software”, disponível em:
https://eduplay.rnp.br/portal/video/112305

Você também pode gostar