O documento apresenta uma avaliação de engenharia de software sobre o projeto de arquitetura do aplicativo WhatsApp. O aluno deve identificar decisões de projeto de arquitetura necessárias e qual padrão se aplica ao WhatsApp. Ele também deve projetar a funcionalidade de anexos indicando contextos, classes, questões de implementação e diretrizes para desenvolvimento open source.
O documento apresenta uma avaliação de engenharia de software sobre o projeto de arquitetura do aplicativo WhatsApp. O aluno deve identificar decisões de projeto de arquitetura necessárias e qual padrão se aplica ao WhatsApp. Ele também deve projetar a funcionalidade de anexos indicando contextos, classes, questões de implementação e diretrizes para desenvolvimento open source.
O documento apresenta uma avaliação de engenharia de software sobre o projeto de arquitetura do aplicativo WhatsApp. O aluno deve identificar decisões de projeto de arquitetura necessárias e qual padrão se aplica ao WhatsApp. Ele também deve projetar a funcionalidade de anexos indicando contextos, classes, questões de implementação e diretrizes para desenvolvimento open source.
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.