UC_03 - antoniodanielbf-isep/LAPR5-2021 GitHub Wiki
=======================================
|| REQUISITOS || ANÁLISE || DESIGN || OBSERVAÇÕES ||
=======================================
Boa tarde, estimado cliente, Poder-me-ia esclarecer melhor o que entende por força de ligação entre dois utilizadores e a força de relação entre dois utilizadores? Cumprimentos, João Pereira
Cada utilizador possui ligações com outros utilizadores, podendo catalogar essas ligações de acordo
com etiquetas (tags) e “força de ligação”. Além da força de ligação atribuída pelo utilizador, por
exemplo 5, também é possível calcular a força de uma relação entre dois utilizadores pelo número de
likes menos o número de dislikes de um utilizador nos posts e comentários do outro.
A força de ligação é um valor númerico introduzido pelo utilizador aquando da criação da ligação com outro utilizador.
A força de relação é calculada pelo sistema
Bom dia, Relativamente às tags que caracterizam a ligação, elas são comuns aos dois users, isto é: Se o user A identificar a tag X na ligação com o user B, o user B saberá que aquela ligação foi identificada com a tag X? Ou cada user tem apenas acesso às suas Tags? O mesmo acontece com a força de relação, existe o resultado da força do user A com o B e do B com o A, ou é a mesma força? Com os melhores cumprimentos, Grupo 80
as tags, bem como a força de ligação é sempre unidirecional e por isso numa associação A-> B as tags e a força de serão definidas por A e na sua perspectiva. por exemplo
A-> B, indicou força de ligação 10 e tags "isep" e ".net"
B -> A, indicou força de ligação 20 e tags "erasmus", "lapr5" e "poker"
no momento de aceitar/recusar um pedido de ligação, o utilizador "B" poderá ver as tags que "A" indicou
No enunciado indica que "Além da força de ligação atribuída pelo utilizador, por exemplo 5, também é possível calcular a força de uma relação entre dois utilizadores pelo número de likes menos o número de dislikes de um utilizador nos posts e comentários do outro. Nesse sentido a força de ligação é unidirecional." Isto significa a existência de dois tipos distintos de forças possíveis perante uma conexão realizada? Ou significa que na ausência da atribuída, é realizado um calculo tendo por base os likes e os dislikes dos utilizadores da conexão?
são dois tipos diferentes de forças
Então a força de "amizade" entre dois utilizadores é quantificada pela força de ligação (atribuído pelos utilizadores) e pela força da relação que é calculada pelo sistema? Relativamente à forma do cálculo da força da relação é dito que é igual ao "número de likes menos o número de dislikes de um utilizador nos posts e comentários do outro", mas- isso quer dizer que esta é também unidirecional?, ou é número dos likes menos o número de dislikes de ambos os 2 utilizadores um ao outro? Exemplo: Utilizador A deu 10 likes e 2 dislikes ao Utilizador B e o Utilizador B deu 5 likes e 1 dislike ao A. A força de ligação seria de (10+5-2-1) ou seria de (10-2) de User A -> User B e (5-1) de User B -> User A ?
força de "amizade" não é um termo utilizado neste sistema uma vez que a ligação entre dois utilizadores pode ser meramente profissional e não de "amizade"
o "força de ligação" como "força de relação" são unidirecionais. como já foi dito anteriormente a força de ligação é um valor introduzido pelo utilizador. por exemplo, A atribui 10 à sua ligação com B enquanto B atribui 7 à sua ligação com A.
a força de relação é dada pela formula L(i,j) - D(i,j), em que
L(i,j) = nr likes do utilizador i ao utilizador j
Di,j) = nr de dislikes do utilizador i ao utilizador j
Boa tarde, prezado, cliente, Gostaríamos de saber entre que valores espera que as forças de ligação se encontrem. Cumprimentos, Grupo 61
entre 1 e 100
Boa noite, estimado, cliente, Gostaria de saber se o objetivo desta funcionalidade é simplesmente editar as tags e a força de ligação de um dado relacionamento, perguntando cada uma destas ao utilizador, ou se pretende algo mais. Cumprimentos, Grupo 61
o utlizador deve escolher uma ligação, ex., usando o modolo de visualização ou uma listagem, e editar a força de ligação e as tags
Para editar uma relação com tags e força de ligação, o utilizador deve indicar, após lhe ser mostrada a rede social, a relação que pretende editar e as novas tags e força de ligação. A força de ligação é numérica, de 1 a 100 e as tags são palavras curtas alfanuméricas, identificadoras de uma relação.
Até ao momento não são necessárias alterações no MD.
Testes de validação de tag e força de ligação.
-
tags - unidirecionais , obrigatorio
-
força de ligação - unidirecional, numérico, varia entre 1 e 100, obrigatorio
O padrão de User Interface é usado para fornecer uma interface simples de usar para o utilizador e servir de intermediário entre o utilizador e as partes funcionais so sistema. Neste caso é utilizada a classe EditarRelacaoUI
O padrão Controller foi usado para ter um controlador (neste caso de uso EditarRelacaoController) que pode atuar como um organizador da lógica do caso de uso.
Esse padrão atribui responsabilidades às classes para o domínio de negócios que ele representa, como é o caso do Relacao, ForcaDeLigacao e Tag.
Normalmente as regras 1 e 2, neste caso de uso, o creator foi usado por Relacao para instanciar uma ForcaDeLigacao e uma Tag.
Padrão usado para diminuir o acoplamento entre classes e, ao mesmo tempo, apenas atribuir lhes associações que sejam realmente coesas com o seu propósito. Em todo esse caso de uso, tentamos restringir as responsabilidades próprias de cada classe e, assim, minimizar as associações apenas ao necessário. Como pode ser visto neste caso de uso:
RedeSocialDTO salva os dados inseridos num objeto intermediário para posteriormente mostrar o utilizador a sua perspetiva de Rede Social;
Relacao é usado para instanciar uma Relacao;
RedeSocialRepository é usado para armazenar a Rede Social.
EditarRelacaoController trata de toda a lógica de atualização de um evento delegando etapas intermediárias às outras classes.
O padrão DTO fornece um objeto intermediário para transferência de dados, reduzindo o acoplamento entre o domínio e as camadas do aplicativo, permitindo o carregamento rápido do aplicativo e garantindo mais segurança. Nesse caso de uso, temos a sua implementação na classe RedeSocialDTO.
O Repositório ajuda a persistir, armazenar e acessar dados. É usado na camada de Persistência para garantir a instanciação de RedeSocialRepository, onde é armazenado. Abstrai os detalhes dos métodos que modificam o estado deste objeto.
Nesta secção deve sistematizar como os testes foram concebidos para permitir uma correta aferição da satisfação dos requisitos.
Teste 1: Introduzir valor da força de ligação alfanumérico
[Test]
public void introduzirValorLigacaoAlfanumerico()
{
Exception exception = null;
try
{
ForcaLigacao forcaLigacao = new ForcaLigacao(14);
}
catch (Exception ex)
{
exception = ex;
}
Assert.IsNull(exception);
}
Teste 2: Introduzir um valor de força de ligação menor do que 1
[Test]
public void introduzirValorLigacaoMenorQueUm()
{
Exception exception = null;
try
{
ForcaLigacao forcaLigacao = new ForcaLigacao(-1);
}
catch (Exception ex)
{
exception = ex;
}
Assert.IsNull(exception);
}
Teste 3: Introduzir um valor de força de ligação maior do que 100
[Test]
public void introduzirValorLigacaoMaiorQueCem()
{
Exception exception = null;
try
{
ForcaLigacao forcaLigacao = new ForcaLigacao(300);
}
catch (Exception ex)
{
exception = ex;
}
Assert.IsNull(exception);
}
Teste 5: Testar a recusa de um valor nulo ou vazio na tag
[Test]
public void testarRecusaDeNomeNuloOuVazioNaTag()
{
Exception exception = null;
try
{
Tags nome = new Tags(" ");
}
catch (Exception ex)
{
exception = ex;
}
Assert.IsNotNull(exception);
}
Nesta secção a equipa deve providenciar, se necessário, algumas evidências de que a implementação está em conformidade com o design efetuado. Para além disso, deve mencionar/descrever a existência de outros ficheiros (e.g. de configuração) relevantes e destacar commits relevantes;
Recomenda-se que organize este conteúdo por subsecções.
Nesta secção a equipa deve descrever os esforços realizados no sentido de integrar a funcionalidade desenvolvida com as restantes funcionalidades do sistema.
Nesta secção sugere-se que a equipa apresente uma perspetiva critica sobre o trabalho desenvolvido apontando, por exemplo, outras alternativas e ou trabalhos futuros relacionados.