Você está na página 1de 92

Engenharia de Software

Prof. Cristiano Soares de Aguiar

Goiânia, 11 de setembro de 2023.


Engenharia de Software
Unidade I – Conceitos Fundamentais
- Conceitos Fundamentais sobre Engenharia de Software;
- Perspectiva Histórica sobre Desenvolvimento de Software;
- Processo: Metodologia Tradicional vs Ágil;
- Documentação de Software e Métricas.
Unidade II – Prática
Prática de Engenharia de Software:
- Requisitos; - Projeto; - Métricas; - Modelagem;
- Teste de Software;

Unidade III – Gerenciamento para Dev


Gestão de Projetos:
- Qualidade;
- Risco;
- Modificação e Versionamento.
Engenharia de Software
Enquete!

• Quem já desenvolveu algum software para terceiros, ou


seja, para vender?
• Explique como foi isso?
• Como você cobrou pelo sistema?
• Quanto tempo levou para entregar o sistema?
• O cliente ficou satisfeito de primeira?
• Tudo foi documentado? Em caso afirmativo, como?

Para quem nunca desenvolveu um software para terceiros, caso


formasse hoje e tivesse o primeiro cliente. Como seria a
abordagem? Como definir critérios de preço, tempo, qualidade?
Engenharia de Software

1. Como saber qual a finalidade de um software?


2. Como saber o tamanho de um software?;
3. Estimar esforço, custo, tempo de desenvolvimento
depende do tamanho do software;
6. Métricas;
7. Bibliografia;
Engenharia de Software
Qual a finalidade de documentação de um Projeto?
Engenharia de Software
O que seriam requisitos de software? E como documentá-los?

▪ Requisitos:
- Funcionais;
- Não Funcionais.
Engenharia de Software
Engenharia de Software
Em Software existe documentação de Projeto?
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Requisitos parece simples!
→ Basta perguntar ao usuário o que ele deseja.
➔ Levantamento ou Elicitação de Requisitos.
▪ Problemas encontrados:
→ Problema de escopo;
→ Problema de entendimento;
→ Problema de volatilidade;
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Algumas ponderações iniciais:
1. Quais foram as principais dificuldades para a elaboração do trabalho proposto? E como estas foram
superadas, se o foram.
2. A especificação do sistema (modelo descritivo) era completa e suficientemente clara? Em caso negativo,
como poderia ser melhorado?
3. Por que um número muito grande de desenvolvedores de software não dedica muita atenção à
engenharia de requisitos? Existiria alguma circunstância em que poderíamos deixá-la de lado?
4. Você foi incumbido de extrair os requisitos de um cliente que lhe diz que está muito ocupado para poder
atendê-lo. O que você deve fazer?
5. Discuta alguns dos problemas que ocorrem quando os requisitos têm de ser obtidos de três ou quatro
clientes diferentes.
6. Desenvolva pelo menos três “perguntas livres de contexto” que você faria a um envolvido durante a
atividade de concepção.
7. Como você explicaria para um Analista de Requisitos iniciante sobre o processo de levantamento de
Requisitos de Sistema?
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
UML - Linguagem de Modelagem Unificada
— Diagrama de Casos de Uso
Engenharia de Software
UML — Diagrama de Casos de Uso
O diagrama de Casos de Uso auxilia no levantamento dos requisitos funcionais do
sistema, descrevendo um conjunto de funcionalidades do sistema e suas interações com
elementos externos e entre si.

➔ Um cenário pode ser compreendido como uma sequência de


passos que descreve uma interação entre um usuário e o sistema.

Os diagramas de Casos de Uso:


• auxiliam na comunicação entre o cliente e os analistas.
• apresentam as principais funcionalidades do sistema com foco no cliente.
• descrevem cenários de interação entre as partes internas/externas de um
sistema, com foco no usuário.
• é muito utilizado na fase de levantamento de requisitos.
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Casos de Uso e Herança
Engenharia de Software
Um possível cenário para compras on-line
O cliente navega pelo catálogo e adiciona os itens desejados ao carrinho de compras.
Quando o cliente desejar pagar, ele preenche os dados para entrega e da forma de
pagamento, confirmando a compra no final. O sistema verifica o cartão de crédito, tenta
passar a compra no cartão e confirma a venda com o envio de um e-mail.

Este é um de muitos cenários que podem ocorrer, tendo em vista que


a verificação do cartão pode dar não autorizado, gerando um segundo
cenário. Seu cliente pode ser um cliente regular, não necessitando
preencher os dados de entrega ou mesmo do cartão, isso já seria um
terceiro cenário.

Um caso de uso é um conjunto de cenários


relacionados por um objetivo comum a um usuário.
Engenharia de Software
Um possível cenário para compras on-line
O cliente navega pelo catálogo e adiciona
os itens desejados ao carrinho de
compras. Quando o cliente desejar pagar,
ele preenche os dados para entrega e da
forma de pagamento, confirmando a
compra no final. O sistema verifica o
cartão de crédito, tenta passar a compra
no cartão e confirma a venda com o envio
de um e-mail.
Engenharia de Software
Exercício
a) Escreva um possível cenário para realizar cadastro em um sistema de e-mail.

b) Construa o Diagrama de Caso de Uso equivalente.

c) Desenhe uma interface equivalente.


Engenharia de Software
Fluxo de Eventos
Fluxo Principal
No Ação Ator Sistema
Engenharia de Software
Engenharia de Software
Engenharia de Software
Engenharia de Software
Fluxo Principal – descreve a sequência de ações que serão executadas considerando que
nenhum desvio ou exceção ocorrerá durante a execução do Caso de Uso.
→ Descreve o que normalmente acontece quando o caso de uso é realizado.

Fluxos Alternativos – descrevem o que acontece quando o ator faz uma escolha
alternativa, diferente da descrita no fluxo principal, para alcançar seu objetivo.
→ Podem descrever escolhas exclusivas entre si.

Fluxos de Exceção – correspondem à descrição das situações de exceção.


→ Descrevem o que acontece quando algo inesperado ocorre na interação entre ator e
caso de uso (ex.: ator realiza ação inválida ou uma condição inesperada é atingida)
Engenharia de Software
Engenharia de Software
Exercício
a) Escreva um possível cenário para enviar um e-mail.

b) Construa o Diagrama de Caso de Uso equivalente.

c) Desenhe uma interface equivalente.


Engenharia de Software
Exercício
a) Para um sistema de comércio eletrônico (visão do cliente e comerciante) identifique
pelo menos 05 Casos de Uso para cada ator.

b) Construa o Diagrama de Caso de Uso equivalente.

c) Desenhe a interface equivalente.

d) Documente pelo menos um Caso de Uso para cada ator.


Engenharia de Software
Exercício
a) Se fosse necessário refazer o protótipo do Sistema de Gerência Acadêmica, seria mais
fácil ou mais difícil? Fundamente sua resposta.

b) O que você faria da mesma forma como fez o primeiro protótipo?

c) O que você faria diferente da forma como fez o primeiro protótipo?

d) Como você explicaria para um Analista de Requisitos iniciante sobre o processo de


levantamento de Requisitos de Sistema?
Engenharia de Software

Você também pode gostar