Você está na página 1de 15

UNIVERSIDADE NORTE DO PARANÁ - UNOPAR

TI

PROJETO INTEGRADO III

Salvador

2023
ADRIEL FREITAS DOS SANTOS

Produção Textual Referente ao Projeto Integrado do


Curso Superior de Tecnologia em Análise e
Desenvolvimento de Sistemas, apresentado como
requisito parcial para a obtenção de média semestral na
disciplina de: Projeto Integrado III

Orientador:

Professores Titulares:

1. Profª. Tiago Barroso dos Santos

Salvador

2023
SUMÁRIO

1. INTRODUÇÃO..............................................................................................4
Tarefa 1:................................................................................................................5
Tarefa 2:................................................................................................................7
Tarefa 3:................................................................................................................9
Tarefa 4:..............................................................................................................10
2. CONCLUSÃO.................................................................................................14
3. REFERÊNCIAS..............................................................................................15

Salvador

2023
4

1. INTRODUÇÃO

A Unified Modeling Language (UML), ou Linguagem de Modelagem


Unificada, é uma linguagem gráfica utilizada na engenharia de software para
modelar, visualizar, especificar e documentar sistemas de software. A UML é
uma ferramenta amplamente utilizada em projetos de desenvolvimento de
software, permitindo aos desenvolvedores e analistas representar visualmente
os diferentes aspectos de um sistema de forma clara e compreensível.

A UML foi desenvolvida pela primeira vez na década de 1990 por um


grupo de especialistas em engenharia de software, com o objetivo de unificar
as diferentes abordagens de modelagem que eram utilizadas na época. Desde
então, a UML tem se tornado uma linguagem padrão na indústria de
desenvolvimento de software, sendo amplamente adotada em diferentes
metodologias e processos de desenvolvimento, como o RUP (Rational Unified
Process) e o Agile.

A UML oferece uma variedade de diagramas que podem ser usados


para modelar diferentes aspectos de um sistema de software, como diagrama
de classes, diagrama de objetos, diagrama de sequência, diagrama de
atividades, entre outros. Cada tipo de diagrama tem sua própria finalidade e
representa uma perspectiva específica do sistema, permitindo aos
desenvolvedores e analistas visualizar e compreender diferentes aspectos,
como a estrutura, o comportamento e a interação entre os componentes do
sistema.

A utilização da UML pode trazer diversos benefícios para o


desenvolvimento de software, como a melhoria da comunicação entre os
membros da equipe de desenvolvimento, a identificação de erros e
ambiguidades na especificação do sistema, a facilitação do entendimento do
sistema por parte dos stakeholders e a geração de documentação clara e
precisa.

No entanto, é importante ressaltar que a UML é apenas uma ferramenta


e não é a solução definitiva para todos os problemas de desenvolvimento de
5

software. É necessário utilizar a UML de forma adequada, de acordo com as


necessidades e características do projeto, e combiná-la com outras práticas e
técnicas de engenharia de software, para garantir o sucesso do projeto como
um todo.

A UML é uma linguagem gráfica amplamente utilizada na engenharia de


software para modelar sistemas de software, oferecendo uma variedade de
diagramas que permitem visualizar diferentes aspectos do sistema. A correta
utilização da UML pode trazer benefícios para o desenvolvimento de software,
mas é importante considerar seu contexto e combiná-la com outras práticas e
técnicas adequadas ao projeto em questão.

Tarefa 1:

A UML (Linguagem de Modelagem Unificada) é uma linguagem-


padrão para a elaboração da estrutura de projetos de software. Ela pode
ser empregada para a visualização, a especificação, a construção e a
documentação de artefatos que façam uso de sistemas complexos de
software. A UML possui diagramas estruturais e comportamentais. Sobre
esse assunto, responda às questões a seguir:

• descreva a diferença entre os diagramas estruturais e comportamentais;


• escolha um diagrama comportamental e um diagrama estrutural e
descreva as suas principais características e em qual momento do projeto
eles se encaixam.

A UML (Linguagem de Modelagem Unificada) é uma linguagem gráfica


que é amplamente utilizada na engenharia de software para modelar e
visualizar sistemas complexos. A UML é composta por vários tipos de
diagramas, sendo os diagramas estruturais e comportamentais dois grupos
principais.

Diferença entre os diagramas estruturais e comportamentais na


UML:

Diagramas Estruturais: Os diagramas estruturais da UML são


utilizados para representar a estrutura estática de um sistema, ou seja, os
6

elementos que compõem o sistema e suas relações. Eles são usados para
modelar a organização dos componentes de software, como classes, objetos,
interfaces, pacotes, componentes, entre outros. Os diagramas estruturais da
UML incluem o diagrama de classes, o diagrama de objetos, o diagrama de
componentes, o diagrama de pacotes, o diagrama de implantação, entre
outros.

Diagramas Comportamentais: Os diagramas comportamentais da UML


são usados para modelar o comportamento dinâmico de um sistema, ou seja,
como os elementos do sistema interagem entre si e como o sistema se
comporta em tempo de execução. Eles são usados para modelar os aspectos
funcionais e dinâmicos do sistema, como os fluxos de controle, os estados, as
atividades, as interações, entre outros. Os diagramas comportamentais da UML
incluem o diagrama de casos de uso, o diagrama de sequência, o diagrama de
atividades, o diagrama de comunicação, o diagrama de estado, entre outros.

Exemplo de um diagrama comportamental e um diagrama estrutural e


suas principais características:

Diagrama Comportamental: Diagrama de Sequência

Características: O diagrama de sequência é usado para representar a


interação entre objetos ou componentes em uma sequência temporal. Ele
mostra a ordem de envio de mensagens entre os objetos, com foco na
sequência temporal em que as mensagens são trocadas. É especialmente útil
para modelar o fluxo de interações em cenários de casos de uso.

Momento do Projeto: O diagrama de sequência é geralmente utilizado


durante a fase de análise e design do projeto de software, para capturar e
representar a dinâmica do sistema, ou seja, como os objetos interagem entre si
em tempo de execução.

Diagrama Estrutural: Diagrama de Classes

Características: O diagrama de classes é usado para representar a


estrutura estática de um sistema, mostrando as classes, seus atributos,
métodos e suas relações. Ele é amplamente utilizado para modelar a estrutura
7

de classes de um sistema de software, suas associações, heranças, interfaces,


entre outros elementos estruturais.

Momento do Projeto: O diagrama de classes é geralmente utilizado


desde as fases iniciais do projeto de software, durante a análise e design, para
modelar a estrutura de classes do sistema, suas relações e a hierarquia de
herança entre as classes.

Tarefa 2:

Para o design de interfaces, devemos nos preocupar com diversos


aspectos. Imagine que você desenvolverá a página inicial do site de um
programa para o Ministério da Educação. Ele poderá ser acessado tanto
na web quanto nos dispositivos móveis. Esse programa fará o
mapeamento de faculdades com cursos de tecnologia que existem no
Brasil. Alguns itens importantes e necessários nessa interface: a) Login e
senha b) Cadastro c) Uma parte visual, onde será colocado o mapa do
Brasil e teremos o mapeamento de quantas faculdades temos no estado,
quais as cidades que as oferecem e se entrarmos na cidade, poderemos
ver quais são as faculdades naquele município.
Faça uma pesquisa e descreva como você fará:
a) Como você desenhará essa página inicial

Para a página inicial do site do programa de mapeamento de faculdades


com cursos de tecnologia do Ministério da Educação, é importante criar um
design limpo, claro e de fácil compreensão. A página deve ser responsiva, ou
seja, se adaptar a diferentes dispositivos, como desktops, tablets e
smartphones. A utilização de cores e elementos visuais que remetam à
identidade visual do Ministério da Educação pode ser uma boa abordagem
para criar uma sensação de familiaridade e confiabilidade aos usuários. Além
disso, é importante considerar a organização das informações de forma
hierárquica e intuitiva, com destaque para os elementos de login e cadastro.

b) Que técnicas poderemos trabalhar para desenvolver essa página


Para desenvolver a página inicial, podem ser utilizadas várias técnicas,
tais como:
8

Design responsivo: Utilizar técnicas de design responsivo para que a


página se adapte a diferentes tamanhos de tela, garantindo uma boa
experiência de uso tanto em dispositivos móveis quanto em desktops.

Grid layout: Utilizar um sistema de grid layout para organizar e distribuir


os elementos na página de forma harmoniosa e consistente.

Ícones e imagens: Utilizar ícones e imagens relevantes para transmitir


informações de forma visualmente atrativa e compreensível.

Formulários de login e cadastro: Implementar formulários de login e


cadastro de forma clara, com campos necessários e validações adequadas,
seguindo as melhores práticas de segurança.

c) Quais os aspectos importantes da criação dessa página, como


usabilidade entre outros

Usabilidade: Garantir que a página seja fácil de usar, com navegação


intuitiva, fluxos de interação claros e botões de ação bem destacados. Os
elementos de login e cadastro devem ser facilmente visíveis e acessíveis.

Acessibilidade: Assegurar que a página seja acessível a todos os


usuários, incluindo aqueles com deficiências visuais, motoras ou cognitivas,
seguindo as diretrizes de acessibilidade da web.

Performance: Otimizar o desempenho da página para garantir um


carregamento rápido e eficiente, evitando elementos desnecessários ou
pesados que possam prejudicar a experiência do usuário.

Consistência visual: Manter a consistência visual com a identidade


visual do Ministério da Educação, utilizando cores, fontes e elementos visuais
que sejam coerentes com a marca.
9

d) Lembrando que deveremos desenvolver um protótipo dessa tela, como


faremos isso?

Para desenvolver um protótipo dessa tela, pode-se utilizar ferramentas


de design como Sketch, Figma ou Adobe XD, que permitem criar layouts
interativos e navegáveis para visualizar como a página será em diferentes
dispositivos. É possível criar protótipos de baixa fidelidade, com esboços
básicos, ou protótipos de alta fidelidade, com elementos visuais detalhados e
interações simuladas. Esses protótipos podem ser compartilhados com a
equipe de desenvolvimento e stakeholders para obter feedback e validar a
usabilidade e funcionalidades da página antes de implementá-la.

Tarefa 3:

Leia o fragmento, interprete o código Python em questão e assinale


alternativa correta. 1. def remove(self, valor): 2. if self.head.data == valor:
3. self.head = self.head.nextItem 4. else: 5. before = None 6. navegar =
self.head 7. while navegar and navegar.data != valor: 8. before = navegar
9. navegar = navegar.nextItem 10. if navegar: 11. before.nextItem =
navegar.nextItem 12. else: 13. before.nextItem = None

a) Descreva como o método recebe o valor:

O método "remove" recebe o valor que deseja ser removido como


parâmetro. Esse valor é comparado com o valor do nó atual (self.head.data) na
linha 2. Se o valor do nó atual for igual ao valor fornecido, o nó atual (self.head)
é atualizado para o próximo nó (self.head.nextItem) na linha 3, removendo
assim o primeiro nó da lista.

b) Não sendo o método, como será a busca? Lembre-se do head.

A busca na lista é realizada utilizando o conceito de "head", que é a


referência para o primeiro nó da lista. O código percorre a lista iterativamente,
comparando o valor do nó atual (navegar.data) com o valor desejado (valor) na
linha 7. Se o valor do nó atual for diferente do valor desejado, o código atualiza
a referência "navegar" para o próximo nó (navegar = navegar.nextItem) na linha
10

9, continuando assim a busca até encontrar o valor desejado ou até o final da


lista.

c) As possíveis alterações que podem ocorrer na lista são:

Se o valor a ser removido estiver no primeiro nó da lista (self.head.data


== valor), o primeiro nó é removido atualizando a referência "self.head" para o
próximo nó (self.head = self.head.nextItem) na linha 3.

Se o valor a ser removido estiver em algum nó intermediário ou no último


nó da lista (navegar.data == valor), o nó anterior (before) terá sua referência
para o próximo nó atualizada (before.nextItem = navegar.nextItem) na linha 11,
efetivamente removendo o nó com o valor desejado da lista.

Se o valor a ser removido não estiver na lista, nenhuma alteração será


feita na lista, pois a busca percorrerá até o final da lista (navegar = None) sem
encontrar o valor desejado, e a lista permanecerá inalterada.

Tarefa 4:

1 - Instanciação é um processo muito comum na programação


orientada a objetos. Isso porque, de certa forma, instanciar é o mesmo
que realizar uma “cópia” de algo. Dessa forma, analise o código a seguir,
identifique as linhas tracejadas (3 e 9) e escreva o código que falta para
que ele funcione perfeitamente. Uma dica, a classe que você utilizará
nesse código se chama User e o método que você precisará para conexão
com banco de dados se chama conectar.

1 <?php

2 require_once 'usuarios.php';

3 _______________________

4 if (isset($_POST['usuario'])){

5 $user = addslashes($_POST['usuario']);

6 $passwd = addslashes($_POST['senha']);
11

8 if (!empty($usuario) && !empty($senha)){

9 $u->__________("nomeDB", "localhost", "user", "password");

10 if ($u->msgErro == "")

{ 11 if (!$u->logar($user, $passwd))

{ 12 echo "Credenciais incorretas!";

13 }

14 } else

{ 15 echo "Erro: " . $u->msgErro;

16 }

17 } else{

18 echo "Preencha todos os campos obrigatórios!";

19 }

20 }

21 ?>

<?php
require_once 'usuarios.php';

// Instanciar a classe User


$u = new User();

if (isset($_POST['usuario'])){
$user = addslashes($_POST['usuario']);
$passwd = addslashes($_POST['senha']);

if (!empty($usuario) && !empty($senha)){


12

$u->conectar("nomeDB", "localhost", "user", "password"); // Linha 9:


Chamar o método conectar da classe User
if ($u->msgErro == ""){
if (!$u->logar($user, $passwd)){
echo "Credenciais incorretas!";
}
} else {
echo "Erro: " . $u->msgErro;
}
} else {
echo "Preencha todos os campos obrigatórios!";
}
}
?>
Na linha 3, utilizamos a sintaxe de criação de uma nova instância da
classe User, que é a classe que será utilizada no código.

Em seguida, na linha 9, chamamos o método "conectar" da classe User,


passando os parâmetros "nomeDB", "localhost", "user" e "password" para
estabelecer a conexão com o banco de dados.

Tarefa 5: Qual a diferença entre Bancos de dados relacionais e não


relacionais? Cite as principais características e diferenças entre cada um
deles.

Bancos de dados relacionais e não relacionais são dois tipos diferentes


de sistemas de gerenciamento de banco de dados, com características
distintas. Aqui estão as principais diferenças entre os dois:

Bancos de Dados Relacionais:

Estruturados: os bancos de dados relacionais seguem um esquema de


tabela fixo, com linhas e colunas predefinidas. Os dados são organizados em
tabelas com relacionamentos definidos entre elas.
13

Esquema rígido: o esquema do banco de dados, que define a estrutura


das tabelas e os tipos de dados aceitos, é definido previamente e é rígido.
Alterações na estrutura requerem modificações no esquema e podem afetar a
integridade dos dados.

Linguagem SQL: os bancos de dados relacionais usam a Linguagem de


Consulta Estruturada (SQL) para executar operações de leitura e escrita nos
dados. O SQL é uma linguagem poderosa e amplamente utilizada para
consultas complexas e transações.

Ênfase em consistência: os bancos de dados relacionais são


projetados para manter a consistência dos dados, seguindo regras de
integridade, chaves primárias e chaves estrangeiras para garantir a integridade
e consistência dos dados.

Bancos de Dados Não Relacionais:

Não estruturados: os bancos de dados não relacionais não possuem


um esquema de tabela fixo. Os dados são armazenados em formatos como
documentos, pares de chave-valor, colunas largas, entre outros.

Esquema flexível: o esquema do banco de dados pode ser alterado


dinamicamente sem afetar os dados existentes. Isso permite uma maior
flexibilidade na estrutura dos dados e facilita a evolução do banco de dados ao
longo do tempo.

Linguagem de consulta própria: cada tipo de banco de dados não


relacional pode ter sua própria linguagem de consulta, não necessariamente
baseada em SQL. Isso pode exigir uma curva de aprendizado adicional para os
desenvolvedores acostumados com SQL.

Ênfase em escalabilidade e desempenho: os bancos de dados não


relacionais são projetados para oferecer alta escalabilidade e desempenho em
ambientes distribuídos. Eles são frequentemente usados em aplicações que
requerem grande volume de dados e alta velocidade de leitura e escrita.

É importante notar que a escolha entre bancos de dados relacionais e


não relacionais depende das necessidades e requisitos específicos de cada
14

projeto. Ambos têm suas vantagens e desvantagens, e a decisão deve ser


baseada nas características e demandas do sistema em questão.

2. CONCLUSÃO

A UML é uma ferramenta poderosa e amplamente utilizada na


engenharia de software para modelar sistemas de software de forma visual e
compreensível. Através dos diferentes tipos de diagramas oferecidos pela
UML, os desenvolvedores e analistas podem representar a estrutura, o
comportamento e a interação entre os componentes de um sistema, facilitando
a compreensão e a comunicação entre as equipes de desenvolvimento e os
stakeholders.

A utilização adequada da UML pode trazer diversos benefícios para o


desenvolvimento de software, como a melhoria da comunicação, a identificação
de erros e ambiguidades na especificação do sistema, e a geração de
documentação clara e precisa. No entanto, é importante ter em mente que a
UML é apenas uma ferramenta, e seu uso deve ser adequado às necessidades
e características do projeto em questão, combinando-a com outras práticas e
técnicas de engenharia de software.

É fundamental também estar atualizado com as versões mais recentes


da UML, uma vez que a linguagem continua evoluindo e se adaptando às
mudanças na indústria de desenvolvimento de software. Além disso, é
importante que a equipe de desenvolvimento esteja familiarizada com os
conceitos e notações da UML, para garantir o uso correto e efetivo da
linguagem.

A UML é uma ferramenta valiosa na engenharia de software, que auxilia


na modelagem e visualização de sistemas de software. Se usada
corretamente, pode trazer benefícios significativos para o desenvolvimento de
software, melhorando a compreensão, comunicação e documentação dos
sistemas. No entanto, é importante usá-la de forma adequada, considerando o
contexto do projeto e combinando-a com outras práticas e técnicas relevantes.
15

3. REFERÊNCIAS

BEZERRA, E. et al. UML - Guia Prático: Modelagem de Sistemas Orientados


a Objetos. São Paulo: Novatec, 2011.
BRISSOS, S. Introdução à UML: Modelagem e Projeto de Software. São
Paulo: Érica, 2013.
FURLAN, J. C. UML Essencial: Um Breve Guia para a Linguagem de
Modelagem Unificada. São Paulo: Novatec, 2010.
GUEDES, G. C. UML: Uma Abordagem Prática. São Paulo: Érica, 2013.
LARMAN, C. Utilizando UML e Padrões: Uma Introdução à Análise e ao
Projeto Orientado a Objetos e ao Desenvolvimento Iterativo. Porto Alegre:
Bookman, 2010.
PEREIRA, R. UML 2 Prático: Modelagem de Sistemas Orientados a Objetos.
Rio de Janeiro: Alta Books, 2012.
RUMBAUGH, J. et al. Modelagem e Projeto Orientado a Objetos com UML.
São Paulo: Campus, 2005.

Você também pode gostar