0% acharam este documento útil (0 voto)
26 visualizações65 páginas

Modelos de Software e UML em Engenharia

O capítulo 4 do documento aborda modelos de software, destacando a importância de preencher a lacuna entre requisitos e código. A UML é apresentada como uma ferramenta essencial para modelagem, sendo utilizada principalmente como esboços em métodos ágeis. O documento também discute diferentes tipos de diagramas UML, como diagramas de classes, sequência e atividades, e suas aplicações na engenharia de software.

Enviado por

Da Paz Junior
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
26 visualizações65 páginas

Modelos de Software e UML em Engenharia

O capítulo 4 do documento aborda modelos de software, destacando a importância de preencher a lacuna entre requisitos e código. A UML é apresentada como uma ferramenta essencial para modelagem, sendo utilizada principalmente como esboços em métodos ágeis. O documento também discute diferentes tipos de diagramas UML, como diagramas de classes, sequência e atividades, e suas aplicações na engenharia de software.

Enviado por

Da Paz Junior
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Engenharia de Software Moderna

Cap. 4 - Modelos

Prof. Marco Tulio Valente


[Link]

Licença CC-BY; permite copiar, distribuir, adaptar etc; porém, créditos devem ser dados ao autor dos slides
1
Motivação
● Existe uma lacuna entre os seguintes mundos

Requisitos Código
Gap

o que o sistema faz (nível como o sistema faz isso


de abstração mais alto) (nível de abstração mais
baixo)

2
Modelos de Software
● Objetivo: preencher essa "lacuna"
● Documentar uma solução para o problema definido pelos
requisitos

Requisitos Código

3
Comuns em outras Engenharias
● Natural que fossem propostos também para software

4
Modelos de Software
● Infelizmente, não são tão efetivos e largamente usados,
como em outras engenharias
● Modelos de software podem ser:
○ Formais: menos comuns; não serão estudados aqui
○ Gráficos: UML é a notação mais comum

5
Ideia: "muitas vezes, um diagrama UML, vale
mais do que 1000 LOC"

6
UML: Unified Modelling Language
● Proposta em 1995, para fundir outras notações

Fonte: Wikipédia
7
Quais os principais usos de UML?
1. Como blueprint (planta detalhada)
2. Como sketches (esboços, rascunhos)

8
Neste curso, vamos estudar o uso de UML
como sketches

9
UML como Sketch
● Uso mais comum de UML com métodos ágeis
● Uso mais informal e leve da notação
● Objetivo não é ter um modelo completo
● UML é usada para:
○ Conversar sobre uma parte do código ou do projeto
○ Documentar uma parte do código ou do projeto

10
UML como Sketch

Q. Chen, J. Grundy, J. Hosking: SUMLOW: early design-stage sketching of UML diagrams


11 on an E-whiteboard. Software Practice and Experience, 2008
Diagramas UML

12
Diagramas UML
● Diagramas Estáticos: modelam a estrutura do código
● Diagramas Dinâmicos: modelam a execução do código (o
comportamento do sistema)

13
Diagramas UML
Em vermelho, os diagramas que vamos estudar
,

14
Versão de UML que iremos usar

15
Diagrama de Classes

16
Formato genérico

17
Exemplo com duas classes

- : private
+: public

18
Associações

19
Associações

20
Multiplicidade (exemplo 1)

21
Multiplicidade (exemplo 2)

22
Principais multiplicidades

0..1
1
*
0..*
1..*
n
23
Associação bidirecional

24
Herança

25
Dependências (setas tracejadas)
Relacionamento entre duas classes, mas que não é devido a associação ou herança

Dependências não possuem informação sobre multiplicidade

26
Importante
● Não confundir diagramas de classes com diagramas ER
ou Esquemas de Bancos de Dados

Não modela:
métodos, herança,
dependências, etc

27
Exercícios sobre Diagrama de Classes

28
1. Estude e procure
entender o seguinte
diagrama de classes

29 Fonte: Martin Fowler. UML Distilled


2. Modele os cenários descritos a seguir usando Diagramas de Classe UML.
Veja que as classes são grafadas em uma fonte diferente.
● ContaBancaria possui exatamente um Cliente. Mas um Cliente
pode ter várias ContaBancaria, com navegabilidade nos dois sentidos.
● ContaPoupanca e ContaSalario são subclasses de ContaBancaria.
● No código de ContaBancaria declara-se uma variável local do tipo
BancoDados.
● Um ItemPedido se refere a um único Produto (sem navegabilidade).
Um Produto pode ter vários ItemPedido (com navegabilidade).
● A classe Aluno possui atributos nome, matricula, curso (todos privados);
e métodos getCurso() e cancelaMatricula(), ambos públicos.

30
3. Crie diagramas de classes para os seguintes trechos de código:

class HelloFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello!");
[Link](true);
}
}

class HelloFrame extends JFrame {


public HelloFrame() {
super("Hello!");
}
public static void main(String[] args) {
HelloFrame frame = new HelloFrame();
[Link](true);
}
31
}
Diagrama de Pacotes

32
Diagrama de Pacotes

33
Diagrama de Pacotes

34
Sketches UML são úteis em
Engenharia Avante e em Engenharia Reversa

35
Engenharia Avante (“Forward”)
● Modelo é usado para discutir alternativas de projeto
● Antes de qualquer linha de código ser implementada

36
Engenharia Reversa
● Modelo é usado para explicar um código que já existe
● Contextos de manutenção e evolução de software

37
Diagrama de Sequência

38
Diagramas de Sequência
● São diagramas comportamentais ou dinâmicos
● Modelam:
○ Objetos de um sistema
○ Métodos que eles executam

39
Diagrama de Sequência (exemplo 1)

inativo

ativo

40
Diagrama de Sequência (exemplo 2)

41
Setas de retorno de métodos
● Muitas vezes, são omitidas:
○ Porque o retorno não é importante
○ Porque o método não retorna valor (void)

42
Diagrama de Sequência (exemplo 3)

43
Diagrama de Sequência (exemplo 4)

Não é um uso interessante de


diagramas de sequência

44
Exercícios

45
1. Esse diagrama de sequência deveria representar o processamento
necessário para calcular o valor total de um Pedido (Order), o qual possui
diversos Itens (Lines), cada um referindo-se a um Produto e com uma
quantidade. Por que ele, no entanto, não faz isso corretamente?

46
Versão
loop [for each line item]
Correta do
Diagrama
Anterior

47
2. No próximo slide, mostramos um diagrama com os
principais passos do algoritmo de recomendação do TikTok.
Qual a principal diferença entre este diagrama e o diagrama
de sequência "oficial", proposto por UML, que estudamos
antes?

48
49 Source: Monolith: Real Time Recommendation System With Collisionless Embedding Table. [Link]
Diagrama de Atividades

50
Diagramas de Atividades
● Também são diagramas comportamentais ou dinâmicos
● Modelam em alto nível um processo ou fluxo de negócio

51
Imagine que existe uma ficha (token)
que caminha pelos nodos do diagrama
de atividades.

52
Nodo inicial (cria uma ficha)

53
Ação (repassa ficha do fluxo de entrada para saída)

54
Decisão (decide para qual fluxo de saída repassará a ficha)

55
Merge (quando ficha chega em uma das entradas, repassa para saída)

56
Fork (multiplicadores de fichas)

57
Join (sorvedouros de fichas)

58
59 Nodo final (encerra execução)
Importante
● Diagramas de Atividades: modelam processos de mais
alto nível de uma organização
● Não devem ser usados para modelar:
○ A navegação entre as páginas de um sistema
○ A implementação de uma parte de um sistema (isto é,
não são um fluxograma)

60
Exercícios

61
1. (Poscomp 2023) Seja o seguinte diagrama de
classes. Marque a alternativa correta.

(A) classe “Pessoa” se associa com a classe


“Funcionario”, que por sua vez tem uma relação de
generalização com a classe “Tarefa”.
(B) “Pessoa” herda da classe “Funcionario”, que tem
uma relação de associação com “Tarefa”.

(C) A associação com navegabilidade da classe “Funcionario” para a classe


“Tarefa” gera um atributo “lista de objetos” da classe “Tarefa” na classe
“Funcionario”.
(D) A classe “Tarefa” faz parte da classe “Funcionario”, constituindo uma relação de
agregação.
(E) O método “addTarefa(tarefa: Tarefa)” pode ser invocado a partir de uma
instância da classe “Pessoa”, através de polimorfismo.
2. Modele em UML usando um Diagrama de Classes.

class Computador { class Teclado {


... ...
private List<Teclado> teclados; }
...
}

Observação: Teclado não possui uma referência de volta para Computador.


Porém, no nosso sistema, sabemos que qualquer Teclado está sempre
ligado a exatamente um Computador.

63
3. Qual é o erro do seguinte diagrama de atividades? Refaça o diagrama de forma a
refletir corretamente a intenção do projetista.

64
Fim

65

Você também pode gostar