Você está na página 1de 4

2a Avaliação Semestral de Engenharia de Software II

Data: 05/11/2021.
Valor: 20,00 pontos.
Nome: Charles Ferreira Nunes

1. Você está habilitado para proceder com a delimitação do projeto de arquitetura


de software do aplicativo multiplataforma WhatsApp.
Para tanto você deve:

a) (3,00 pontos) indicar que decisões de projeto de arquitetura são necessárias


e que acredita que fazem parte da elaboração deste aplicativo, justificando sua
resposta.
Verificar se existe uma arquitetura genérica de aplicação que pode atuar como
um modelo para o sistema que está sendo projetado;
Quais padrões ou estilos de arquitetura podem ser usados;
Qual será a abordagem fundamental para se estruturar o sistema;
Como os componentes estruturais do sistema serão decompostos em
subcomponentes;
Qual a melhor organização de arquitetura para satisfazer os requisitos não
funcionais do sistema.

b) (3,00 pontos) Identificar qual padrão de arquitetura, que condiz com o


aplicativo. Justifique sua resposta, complementando com informações úteis e
condizentes com as funcionalidades existentes na plataforma.
Por possuir várias funções que são interdependentes ou que estão relacionadas
entre si, de modo que uma função principal necessita de recursos que estão
presentes em uma subfunção, por exemplo: na função “Anexo”, que possui
subfunções para os mais diversos objetivos (enviar fotos, músicas,
documentos, etc...), o melhor padrão de arquitetura seria a Arquitetura em
Camadas, pois com ela é possível representar todas as funções existentes no
aplicativo e como elas se relacionam entre si, possibilitando uma melhor
visualização de como deverá ser a versão final do aplicativo.

2. Você está habilitado para proceder agora com o projeto e implementação de


software da funcionalidade específica (seção) Anexo no aplicativo WhatsApp
indicando que procedimentos do que acredita que fazem parte da elaboração desta
funcionalidade específica. Para tanto você deve:
a) (3,00 pontos) Identificar que contexto e interações do sistema devem ser
observados.

*Obs: o Chat pertence aos Sistemas de Mesmo Nível (Pares)

b) (3,00 pontos) Determinar uma proposta de projeto de arquitetura e/ou regras


que devem ser observadas.

c) (3,00 pontos) Identificar objetos de classe para a funcionalidade, em análise.


*Obs: os “Arquivos” referem-se às fotos, vídeos, documentos ou qualquer
outro arquivo suportado pelo aplicativo.

d) (3,00 pontos) Elaborar questões de implementação que devem ser usadas,


abrangendo questões de reuso, de gerenciamento de configuração e de
desenvolvimento host-target.
Questões de reuso: a função “Anexo” do WhatsApp é dividida em várias
subfunções com objetivos diferentes, mas todas um mesmo objetivo em
comum: enviar o arquivo ou dado selecionado, logo a função de envio pode
muito bem ser reutilizada em todas essas subfunções, ou melhor ainda, pode
ser criada uma classe com a função de envio, onde todas as subfunções do
anexo irão acessá-la em um único arquivo já existente, o que poupa código
(modularização de código). Além disso, grande parte das subfunções do
“Anexo” envolvem selecionar arquivos no dispositivo do usuário, algo que ao
ser programado também pode ser modularizado, pois todas elas têm o mesmo
objetivo, sendo a única exceção a aplicação de alguns filtros.
Questões de gerenciamento de configuração: o WhatsApp é um aplicativo
que recebe constantes atualizações de segurança ou otimização de funções já
existentes, além de inserção de novas funções que podem acabar
complementando ou alterando funções já existentes. Por isso é necessário
fazer um controle de versões, caso dê algum problema que acabe prejudicando
ou impossibilitando o uso do aplicativo. Além disso, também é possível
conceder à um determinado número de usuários, o acesso à uma versão do
aplicativo que irá receber novas funções, assim eles poderão testá-las e
reportar qualquer problema encontrado, antes de qualquer função ser
implementada na versão oficial do aplicativo.
Questões de desenvolvimento host-target: por ser um aplicativo que
provavelmente foi desenvolvido no PC para ser executado em celulares, há
duas grandes questões que devem ser observadas:
A primeira diz respeito a performance. O computador possui muito mais
recursos e capacidade de processamento que qualquer smartphone, logo deve
sempre optar por desenvolver funções simples e leves que exijam o mínimo
possível de capacidade de processamento do dispositivo alvo.
A segunda diz respeito ao armazenamento. Conforme dito anteriormente, um
computador possui mais recursos que um celular, logo, é necessário ficar
atento ao tamanho do aplicativo. Sempre que necessário e possível, deve-se
reutilizar códigos ou otimizá-los, para que o aplicativo final ocupe o mínimo
de espaço possível.

e) (2,00 pontos) Na hipótese de desenvolvimento open source, para a


funcionalidade em análise, que diretrizes deveriam ser observadas?

No caso do desenvolvimento de uma função tão específica, o primeiro passo


é verificar se realmente vale a pena utilizar componentes open source no seu
desenvolvimento. Caso esse tipo de desenvolvimento seja adotado, seja para
reduzir custos ou trabalho, é necessário ficar atento, pois pode ser necessário
integrar o software que está sendo desenvolvido com sistemas existentes que
são incompatíveis.
Também é necessário avaliar qual licença de código open source foi adotada
pelo componente, pois para cada tipo de licença serão necessários o
cumprimento de uma série de obrigações.
Também é necessário:
manter uma cópia da licença para cada componente que era válido quando foi
usado, pois as licenças podem mudar;
saber um pouco sobre o projeto open source no qual os componentes são
desenvolvidos para compreender como eles podem mudar no futuro;
educar as os desenvolvedores sobre open source;
ter os sistemas de auditoria em vigor;
e participar da comunidade open source.

Você também pode gostar