Baixe o app para aproveitar ainda mais
Prévia do material em texto
Desenvolvimento para Dispositivos Móveis Introdução ao desenvolvimento para dispositivos móveis 1. O smartphone se tornou um fenômeno mundial. Atualmente, é quase impossível pensar na sua vida sem o uso desses aparelhos, não é? Eles agrupam inúmeras funções, as quais antes eram desempenhadas por equipamentos diferentes. De acordo com essa afirmação, selecione a alternativa correta. A. Os smartphones surgiram com o lançamento do iPhone, em 2007, pela Apple. Esses dispositivos funcionavam com redes de segunda geração. B. O Android foi o primeiro sistema operacional utilizado por smartphones (exceto o iPhone). C. O padrão de smartphones que você conhece hoje foi desenvolvido pela Nokia, utilizando o sistema Android. D. O padrão de smartphones utilizado hoje foi inicialmente desenvolvido pela Apple, com o iPhone. E. O iPhone foi lançado como uma tentativa da Apple de concorrer com o sistema Android, do Google, amplamente utilizado por outras empresas. Resposta: D Motivo: O primeiro smartphone é tido como sendo o IBM Simon, lançado em 1993 — o qual foi um fracasso de mercado. Vários aparelhos fizeram sucesso comercial depois disso. Todavia, foi com o lançamento do iPhone, em 2007, que o mercado realmente explodiu. Em 2008, o Google lança, em parceria com a operadora T-Mobile, o HTC G1, o primeiro smartphone com Android, para concorrer com a Apple e o iPhone. 2. A mobilidade trazida pelos smartphones e outros dispositivos móveis traz diversas facilidades, as quais são aproveitadas no dia a dia. De acordo com a evolução da tecnologia, é correto afirmar que: A. Na segunda geração de redes celulares, as chamadas de vídeo eram um dos principais usos das plataformas. B. Na terceira geração de redes celulares, houve um aumento do interesse devido ao melhor acesso aos conteúdos multimídia. C. O principal uso de rede na terceira geração de redes celulares foi a troca de mensagens de texto por SMS. D. As conexões na segunda geração de redes celulares já eram consideradas estáveis para o uso de streaming. E. As redes de terceira geração tinham a velocidade máxima em torno de 110Kbps, o suficiente para uso geral. Resposta: B Motivo: As redes de segunda geração se caracterizaram por uma conexão de velocidade máxima na faixa dos 110Kbps (já com o aperfeiçoamento da tecnologia EDGE), porém, com médias muito abaixo desse valor, além de serem instáveis. Seu uso era mais restrito a conteúdos básicos, como e-mail e páginas web (preferencialmente sem muito conteúdo dinâmico). O uso de mensagens de texto na segunda geração também foi intenso. Na terceira geração, já alcançando velocidades na faixa de alguns megabits por segundo, assim como maior estabilidade, seu uso se tornou mais próximo do que se fazia com o computador. Chamadas de vídeo e streamings se tornaram mais viáveis, atraindo um grande número de usuários. 3. O desenvolvimento da tecnologia acaba por definir conceitos, os quais serão ou não adotados ao longo do tempo. Alguns se tornam projetos, outros são relegados ao esquecimento por alguma inviabilidade. Muitos já fazem parte do dia a dia das pessoas. A respeito da computação ubíqua, é possível afirmar que: A. Os smartphones não fazem parte desse conceito. B. A expressão se refere à presença de computadores convencionais no dia a dia das pessoas, respondendo a comandos de voz. C. É a onipresença de computadores dos mais variados tipos interagindo com as pessoas de maneira imperceptível. D. Foi um projeto de um cientista da Xerox, chamado Mark Weiser, o qual não foi realizado por falta de interesse comercial. E. Os smartphones são incluídos no conceito de ubiquidade por terem comandos de voz. Resposta: C Motivo: A computação ubíqua — um conceito desenvolvido por Mark Weiser —, trata da onipresença de computadores no cotidiano das pessoas e da interação imperceptível (ou quase) com eles. Essa interação pode se dar por gestos, comandos de voz, toques em tela, entre outras formas; quanto mais natural, melhor. Os smartphones, por estarem sempre junto ao usuário e ter uma interface mais natural que os computadores convencionais, estão incluídos no conceito de ubiquidade. 4. Atualmente, o mercado está dividido basicamente entre duas plataformas: de um lado o Android, desenvolvido pelo Google; e de outro, o iOS, do iPhone. Sobre o desenvolvimento de aplicativos para essas plataformas, é correto afirmar que: A. A linguagem de programação padrão, utilizada em ambas as plataformas, é o Java. B. Os sistemas operacionais mobile têm um ecossistema comum, permitindo que aplicações sejam compartilhadas. C. O desenvolvimento para iPhone/iOS é feito principalmente em C e Java. D. Uma aplicação desenvolvida para um dos sistemas precisa ser apenas recompilada para que funcione no outro. E. Uma aplicação desenvolvida para um dos sistemas é totalmente incompatível com o outro, precisando ser reescrita. Resposta: E Motivo: Os dois principais sistemas do mercado, o Android e o iOS, são completamente incompatíveis entre si. Uma aplicação desenvolvida para Android — normalmente em Java ou Kotlin, precisará ser completamente reescrita utilizando as ferramentas para iOS, nas linguagens Objective-C ou Swift, preferencialmente. Cada plataforma tem seu ecossistema independente e, caso seja de interesse do desenvolvedor, este deverá manter a sua aplicação de forma separada nos dois marketplaces. 5. Para o desenvolvimento de aplicações, existem as aplicações nativas — desenvolvidas com uma plataforma própria para o sistema operacional em que a aplicação será executada, e as desenvolvidas com metodologias híbridas. O que é correto afirmar sobre o desenvolvimento híbrido? A. Utiliza uma plataforma comum, a web, para criar a aplicação; posteriormente transformando-as em aplicações nativas. B. São aplicações mais leves que as aplicações nativas, pois rodam por meio do navegador. C. São produzidas utilizando HTML, CSS e JavaScript, sendo executadas a partir da Internet. D. Para executar uma aplicação desenvolvida hibridamente, o usuário deverá utilizar um navegador, seja Chrome ou Safari. E. O desempenho de aplicativos desenvolvidos com essa tecnologia são lentos e, por isso, esse recurso quase não é utilizado. Resposta: A Motivo: O modelo híbrido é desenvolvido utilizando, normalmente, tecnologias baseadas em web, principalmente HTML 5, CSS 3 e JavaScript (ou derivados). Contudo, os frameworks atuais podem gerar aplicações nativas a partir da construção web. Seu desempenho, para a maior parte das aplicações (exceto jogos e outras que demandem intenso uso de recursos) é próximo de uma aplicação desenvolvida na plataforma nativa do sistema. A sobrecarga é muito pequena. Como são convertidas para aplicações nativas, não há a necessidade do navegador para que funcionem. Por terem desempenho parecido com aplicações desenvolvidas nativamente e poderem gerar aplicativos para as duas plataformas, têm tido enorme aceitação no mercado, pois evita a necessidade de manter duas bases de códigos, bem como duas equipes diferentes. Dispositivos móveis 1. Existem diversos tipos e tamanhos, além de diversas marcas de smartphones. Em relação a essa variedade, é possível afirmar que: A. Apesar da variedade de aparelhos e fabricantes existente, o desenvolvimento é basicamente similar. Além disso, há compatibilidade entre as plataformas. B. Devido à grande variedade de fabricantes, existe também uma grande variedade de sistemas operacionais para smartphones em uso atualmente. C. Apesar da variedade de fabricantes e modelos, o mercado é dominado por dois sistemas operacionais diferentes e não compatíveis entre si. D. O sistema operacional desenvolvido pela Apple, o iOS, é licenciado também para outros fabricantes de hardware utilizarem em seus equipamentos. E. O sucesso do Android se deve, principalmente, aos equipamentos desenvolvidos e fabricados pela própria Google. Resposta: C Motivo: Atualmente, apesar do número de fabricantes de smartphones, apenas dois sistemas operacionais dominam o mercado: o iOS,exclusivo dos iPhones, fabricado pela Apple; e o Android, desenvolvido pela Google — que não fabrica o hardware dos dispositivos — e licenciado para uso em dispositivos de fabricantes de hardware. Os sistemas não são compatíveis entre si. 2. Outra categoria de dispositivos vem ganhando espaço de mercado: os wearables. Sobre esses dispositivos, é possível afirmar que: A. Utilizam normalmente os mesmos sistemas operacionais dos smartphones e têm basicamente as mesmas funcionalidades. B. A principal dificuldade na produção de wearables está no espaço reduzido e na duração da bateria, bem como na estética. C. São dispositivos que, em geral, têm poucas funcionalidades, além de um relógio convencional; se popularizando mais por status que por funcionalidade. D. São novidades tecnológicas, de desenvolvimento recente, pensados para trabalhar dependentes dos smartphones, como um visualizador facilitado. E. Foram desenvolvidos com o intuito de substituir os smartphones, de forma a realizar as mesmas funções de seu concorrente maior. Resposta: B Motivo: A iniciativa de construir computadores vestíveis não é nova. Já na década de 70 existiam projetos de desenvolver relógios avançados, passando por projetos como o da IBM, nos anos 2000. O principal desafio encontrado até então era o espaço reduzido e a necessária miniaturização dos componentes para caber neste espaço, bem como a duração de bateria dos dispositivos. A estética também foi um fator considerado: os smartwatches precisavam ser parecidos com relógios comuns, e não com grandes braceletes chamativos. Os modelos atuais têm funcionalidades avançadas, inclusive complementadas com a instalação de aplicativos adicionais. Alguns modelos contam até mesmo com GPS. Sua popularidade nos dias de hoje se dá, principalmente, entre praticantes de esportes, por seus recursos de monitoramento biológico. 3. O mercado de dispositivos móveis tem algumas peculiaridades, principalmente no tocante aos sistemas operacionais. Em relação a esses sistemas, é correto afirmar que: A. Predomina-se o uso do sistema Android, da Google. B. Predomina-se o uso do sistema iOS, da Apple. C. O uso do iOS e do Android são muito similares em números. D. O Android equipa apenas dispositivos básicos, de entrada. E. A adoção do Android vem caindo nos últimos anos. Resposta: A Motivo: O marketshare do Android, segundo o portal IDC, chega a 85% da fatia de mercado, enquanto o iOS alcança 15%. O sistema desenvolvido pela Google equipa, desde equipamentos básicos, de entrada, até dispositivos de ponta, como é o caso dos flagships da Samsung e Xiaomi. Essa diferença tende a se manter, pois, mesmo o iOS sendo exclusividade da Apple, esta tende a manter a sua fatia de mercado. 4. Os smartphones são equipados com sistemas operacionais que permitem o uso de recursos de computação avançada, como multitarefa e instalação de aplicativos. Sobre o sistema Android, é correto afirmar que: A. A maior parte dos dispositivos tende a usar a versão mais atual. B. Os usuários podem atualizar a versão assim que é lançada pela Google. C. Existe pouca fragmentação em relação às versões em uso. D. Existe grande fragmentação em relação às versões em uso. E. Uma única versão é responsável por aproximadamente 50% do uso. Resposta: D Motivo: Apesar de ser o sistema líder em número de dispositivos, existe uma grande fragmentação entre as versões em uso, sendo assim, a reposta adequada para a questão é a letra “d”. A letra “a” não pode ser considerada correta pois nenhuma versão em uso do Android atinge a maioria, e a adoção de novas versões tem o impacto da velocidade de venda de novos aparelhos não ser tão rápida. A letra “b” é incorreta pois a atualização do sistema depende de homologação pela fabricante do dispositivo móvel. A letra “c” é incorreta já que a fragmentação do mercado é característica mais presente no Android. A letra “e” não pode ser considerada correta pois nenhuma versão em uso do Android atinge a maioria. 5. Quando se pensa em dispositivos móveis, logo surge a imagem de um smartphone. Porém, pode-se citar ainda os tablets e wearables, como os relógios inteligentes e smartbands. Sobre o desenvolvimento de aplicativos para tais dispositivos faz-se as seguintes afirmações: I – Os aplicativos para smartphones, tablets e wearables podem ser desenvolvidos em um modelo universal compatível com qualquer sistema operacional. II – Smartphones, tablets e wearables possuem restrições de hardware e software diferentes que trazem a necessidade de customização de aplicativos específicos. III – Esta diversidade de dispositivos inteligentes, quando comunicados entre si, por meio de redes sem fio, também são considerados parte dos sistemas de IoT (internet das coisas). A. Somente I B. Somente II C. Somente I e II. D. Somente II e III. E. I, II e III Resposta: D Motivo: A afirmativa I é falsa, pois existem diferentes sistemas operacionais para cada dispositivo que podem demandar aplicativos específicos para cada plataforma, mesmo que já exista frameworks que possibilitam o desenvolvimento para mais de uma plataforma, ainda não existe um que contemple todas as plataformas e versões de sistemas operacionais ao mesmo tempo com uma única base de codificação. A afirmativa II é verdadeira, pois é uma forma oposta à primeira afirmação, considerando que os componentes de hardware e sistemas operacionais de smartphones, tablets e wearables são diferentes, com diferentes capacidades de processamento, memória, tamanho de tela e etc. E por fim, a afirmativa III também é verdadeira pois a lógica da IoT é a possibilidade de integrarmos dispositivos inteligentes (conectados à internet) permitindo a comunicação e compartilhando de informações, o que se aplica principalmente, mas não somente, aos smartphones, tablets e wearables. Ambientes de desenvolvimento de aplicativos móveis 1. Ambientes integrados de desenvolvimento ajudam os programadores, disponibilizando funções como autocompletar e indicações de problema na sintaxe. Entre os itens a seguir, quais são exemplos de IDEs? A. Atom, iOS, IntelliJ e Android Studio. B. Atom, Xcode, Kotlin e Android Studio. C. Atom, Xcode, IntelliJ e TypeScript. D. Atom, Xcode, IntelliJ e Android Studio. E. Atom, Swift, IntelliJ e Android Studio. Resposta: D Motivo: Atom, Xcode, IntelliJ e Android Studio são ambientes integrados de desenvolvimento, ou IDEs. iOS é um sistema operacional. Kotlin, TypeScript e Swift são linguagens de programação. 2. Duas abordagens se destacam quando se fala em desenvolvimento para aplicativos móveis: o desenvolvimento nativo e o híbrido. Quanto ao desenvolvimento nativo, é correto afirmar que: A. Aplicações são desenvolvidas para rodar em qualquer sistema operacional. B. O desempenho é inferior se comparado ao desenvolvimento híbrido. C. Utilizam uma webview, a qual abre um navegador para exibir conteúdo ao usuário. D. As aplicações não podem acessar diretamente o GPS e o acelerômetro. E. As aplicações são desenvolvidas para um sistema operacional específico. Resposta: E Motivo: No desenvolvimento nativo, as aplicações são desenvolvidas para um sistema operacional específico, portanto, não rodam em qualquer sistema operacional. Além disso, elas podem acessar diretamente o GPS e o acelerômetro. Já no desenvolvimento híbrido, as aplicações utilizam uma webview, que abre um navegador para exibir conteúdo ao usuário. 3. Algumas linguagens de programação têm características mais específicas. Java e Kotlin, por exemplo, são linguagens estaticamente tipadas. O que isso significa? A. A declaração dos tipos de dados é opcional, não interferindo na compilação do código. B. As categorias de dados a serem armazenados precisam ser explicitamente declaradas. C. Os tipos de dados são implícitos, não sendo permitida a declaração estática. D. Essas linguagens só trabalham com dados dos tipos textuais e numéricos. E. Existe apenas um tipo genérico. Resposta: B Motivo: A declaração dos tipos de dados é obrigatória e, caso não seja definida,o código pode não compilar. As categorias de dados a serem armazenados precisam ser explicitamente declaradas, e os tipos precisam ser explícitos. Existe uma quantidade relativamente grande de tipos possíveis, como os textuais e os numéricos, por exemplo. As linguagens que contêm apenas um tipo genérico, ou nenhum tipo de dados, são mais antigas, como o Fortran. 4. Algumas linguagens de programação são evoluções, outras adicionam funcionalidades, enquanto outras não apresentam muito em comum. Qual a correlação entre o Java e o JavaScript? A. O JavaScript é uma evolução do Java para aplicativos móveis. B. Ambas são linguagens que possibilitam o desenvolvimento de aplicativos híbridos. C. Ambas são linguagens de programação orientadas a objetos. D. JavaScript é um superconjunto de Java, agregando funções ao Java. E. Javascript é uma linguagem mais antiga e mais utilizada. Resposta: C Motivo: Embora ambas sejam linguagens de programação orientadas a objetos, JavaScript e Java não são correlacionadas, inexistindo a relação de superconjunto entre elas. Em relação ao Android, Java é mais voltado para desenvolvimento nativo, sendo também uma linguagem mais antiga que JavaScript. 5. Diversos plug-ins e frameworks podem ser utilizados para apoiar o desenvolvimento para aplicativos móveis. Qual deles pode ser utilizado para facilitar a instalação de outras bibliotecas e componentes? A. Node.js. B. Npm. C. Apache Cordova. D. Ionic. E. Angular. Resposta: B Motivo: O Npm (Node Package Manager) é utilizado para ajudar na instalação de pacotes para o Node.js. O Node é um interpretador de JavaScript; e o Cordova, o Ionic e o Angular são frameworks. Plataformas de desenvolvimento: IDE e emulador Android 1. Na atualidade, um desenvolvedor de software tem disponível para utilização uma grande variedade de linguagens de programação e cada uma tem suas características. Em dispositivos móveis, as plataformas de desenvolvimento normalmente utilizam uma linguagem de programação como linguagem nativa. Considerando o sistema operacional Android, qual é a sua linguagem de programação nativa? A. Html B. C# C. Swift D. Delphi E. Java Resposta: E Motivo: Java é a linguagem de programação nativa da plataforma Android. Swift é a linguagem nativa da plataforma iOS concorrente do Android. C#, Delphi e Html são linguagens de programação de IDEs que também possibilitam o desenvolvimento de aplicativos para Android, porém não são nativas da plataforma. 2. Uma IDE poderosa ajuda o desenvolvedor de software na confecção do aplicativo, gerenciando-o, organizando a estrutura do projeto e automatizando processos nos quais o usuário, sem a ajuda dela, teria de realizar manualmente. Dentre as plataformas a seguir, qual é a plataforma indicada pela Android para desenvolver aplicativos? A. Visual Studio B. NetBeans C. Android Studio D. Eclipse E. RAD Studio Resposta: C Motivo: Android Studio é a IDE indicada e mantida pela Android para desenvolvimento de aplicativos para a sua plataforma. Visual Studio, NetBeans, Eclipse e RAD Studio são IDEs que têm a possibilidade de desenvolver aplicativos para a plataforma Android, mas não são reconhecidas pela Android como uma plataforma indicada para esse fim. 3. Em um ecossistema de dispositivos muito variados (variação está relacionada aos recursos ou até mesmo as suas características físicas, como tamanho e formas de interação), é complexo prever em que tipo de dispositivo um determinado aplicativo será executado. Ter diversos dispositivos reais para realização de testes pode não ser uma opção viável, logo a emulação é uma opção muito utilizada. O Android disponibiliza em seu SDK um emulador oficial. Selecione a opção que representa essa ferramenta: A. BlueStacks B. Android Emulator C. Android X84 D. GenyMotion E. Virtual Box Resposta: B Motivo: Android Emulator é o emulador disponibilizado pela Android no SDK da plataforma. BlueStacks, Android X84 e GenyMotion são emuladores do Android desenvolvidos por terceiros, já o Virtual Box é uma ferramenta de virtualização, na qual é possível executar os mais diversos sistemas operacionais. 4. Para identificar problemas em um código-fonte, as IDEs disponibilizam funcionalidades para ajudar o desenvolvedor a encontrar tais falhas. Existem recursos em que o aplicativo para o seu fluxo de execução em um determinado local e disponibiliza ao usuário diversas funcionalidades, para que ele possa identificar possíveis problemas na execução. Qual das opções a seguir representa a funcionalidade descrita? A. Verificador de sintaxe B. Repositórios de versionamento C. Plugins D. Rendenização dos layouts E. Break points Resposta: E Motivos: Ao inserir um break point em um determinado ponto do código de um aplicativo, durante uma execução do aplicativo, é possível realizar a verificação de várias coisas relacionadas ao aplicativo, como por exemplo o valor armazenado em cada uma das variáveis declarada. Verificador de sintaxe analisa erros de escrita do código-fonte. Os repositórios de versionamento possibilitam que equipes numerosas trabalhem em um mesmo projeto sem que ocorra perda de dados. Plugins dão versatilidade a uma IDE, e funcionalidades e recursos desenvolvidos por terceiros são disponibilizados através deles. A renderização de layouts permite ao desenvolvedor visualizar como o layout está ficando. 5. Recursos, em um dispositivo móvel, devem ser consumidos de forma responsável por um aplicativo. Se um determinado aplicativo consumir recursos de memória e processamento de um dispositivo de forma desmoderada pode comprometer o bom funcionamento dele, frustrando o usuário frente à utilização do aplicativo e levando-o a buscar outra ferramenta que atenda as suas necessidades. Indique qual opção a seguir é uma ferramenta que auxilia o desenvolvedor a evitar situações como a descrita anteriormente. A. Monitor de recursos B. Gradle C. Dispositivos reais D. Emuladores E. Boas práticas de programação Resposta: A Motivo: Monitor de recursos ajuda ao desenvolvedor a analisar a quantidade de recursos que o aplicativo está utilizando em cada estágio de sua execução. Gradle é uma ferramenta de automatização da compilação dos arquivos finais do aplicativo. Dispositivos reais e emuladores são formas de testar a aplicação, mas o desenvolvedor não tem noção se o aplicativo está ou não consumindo os recursos de forma adequada. Boas praticas de programação são sempre bem-vindas, mas um aplicativo pode ter boas práticas e assim tender a não apresentar os problemas citados, mas isso só será aferido com o uso do monitor de recursos. Publicando aplicações para Android e iOS 1. Existem normas e regras que regulamentam a publicação de aplicativos na Apple App Store e na Google Play Store. Sobre essas normas, é correto afirmar que: A. As normas são baseadas nas leis norte-americanas, mesmo que o aplicativo seja utilizado em outros países. B. As normas aplicadas são as leis e regras dos países onde o aplicativo será disponibilizado e utilizado. C. As normas são baseadas em princípios próprios de cada companhia, além da legislação local de onde o aplicativo será distribuído. D. As normas não são influenciadas por leis locais ou de qualquer país, sendo determinadas pelas empresas. E. As normas são determinadas por princípios de direitos humanos e são bastante semelhantes entre as app stores. Resposta: C Motivo: As normas são baseadas em princípios próprios de cada companhia que administra as app stores. Contudo, também sofrem influência da legislação local de cada país onde o aplicativo será distribuído. A legislação dos Estados Unidos da América pode até servir de base para a elaboração do documento em alguns aspectos, mas não é fator definitivo; o mesmo acontece com os princípios de direitos humanos. 2. A publicação de aplicativos na Google Play Store e Apple App Store é regulada por diretrizes e normativas que visam tanto a questões de segurança como de experiência do usuário. Considerando as normativas da Google Play e daApple App Store, é correto afirmar que: A. A Google mantém uma política rígida de análise de desempenho de aplicações. B. A Apple mantém uma política rígida de análise de desempenho de aplicações. C. Ambas as empresas possuem uma política rígida de desempenho de aplicações. D. O desempenho da aplicação é considerado, mas não é fator determinante na aceitação. E. O desempenho não é fator levado em consideração na aceitação por uma app store. Resposta: B Motivo: A Apple mantém uma política de controle rígida sobre desempenho e estabilidade, realizando testes em cada aplicação submetida; a não conformidade resulta em rejeição da publicação do app. Para a Google, esse não é fator preponderante para a aceitação de aplicativos. 3. Publicar uma aplicação nas lojas de aplicativos oficiais significa, necessariamente, estar em conformidade com as diretrizes de cada companhia. A esse respeito, é correto afirmar que: A. Os critérios de privacidade e transparência no uso de dados de usuários são objetivos na Apple, mas subjetivos para a Google. B. Os critérios de privacidade e transparência no uso de dados de usuários são objetivos na Google, mas subjetivos para a Apple. C. A privacidade e transparência no uso de dados de usuários são regidas por leis internacionais e não dependem da política das app stores. D. Ambas as app stores apresentam normas explícitas que regulamentam o acesso a dados e o uso que se dará aos dados coletados. E. É livre ao desenvolvedor solicitar quaisquer dados ao usuário, independentemente de fazerem sentido com a aplicação - desde que o usuário aceite os termos de uso. Resposta: D Motivo: É explícito nas políticas de ambas as app stores oficiais que os recursos devem ser solicitados dentro dos critérios da razoabilidade; ou seja, que sejam necessários para o bom funcionamento da aplicação. Os dados coletados e a destinação deles devem ser deixados claros ao usuário na política de privacidade do aplicativo. Nos casos de jurisdições que apresentem leis específicas sobre o assunto, como o caso da União Europeia, tais leis são consideradas e devem ser seguidas caso o aplicativo seja disponibilizado nesses locais. 4. Existem alguns requisitos que os desenvolvedores devem cumprir antes da publicação nas lojas de aplicativos. Sobre esses requisitos, é correto afirmar que: A. ambas as plataformas exigem conta de desenvolvedor paga e assinatura de contrato digital. B. a Google Play exige a criação de uma conta de desenvolvedor gratuita e a aceitação do contrato. C. a publicação na Apple App Store realiza a cobrança por aplicativo publicado e não pela conta de desenvolvedor. D. a publicação na Google Play Store realiza a cobrança por aplicativo publicado, e não pela conta de desenvolvedor. E. ambas as plataformas exigem o pagamento de taxa anual para publicação de apps nas lojas. Resposta: A Motivo: Google e Apple exigem criação de conta de desenvolvedor paga e concordância com um contrato digital. Contudo, a assinatura da Google é paga apenas uma vez no momento da realização do cadastro; enquanto na Apple o valor é cobrado anualmente. Além disso, não há cobrança por publicação de aplicativos. 5. O Ionic é um framework de desenvolvimento multiplataforma. Em resumo, a aplicação desenvolvida com o Ionic pode ser executada em Android e em iOS. Sobre a geração do arquivo para publicação, é correto afirmar que: A. O Ionic produz o executável de ambas as plataformas, ou seja, produz o entregável para Android e iOS via linha de comando. B. O Ionic prepara o projeto, mas a compilação é executada por cada plataforma: Android Studio para Android e Xcode para iOS. C. O Ionic gera o executável do Android via linha de comando e prepara o projeto do iOS que deve ser compilado via Xcode. D. A compilação via Ionic para ambas as plataformas pode ser realizada utilizando qualquer sistema operacional: Windows, Linux ou MacOS. E. Como o Ionic é um framework baseado em linguagens web, a aplicação não necessita de compilação para ser publicada e executada em Android e iOS. Resposta: C Motivo: Apesar do desenvolvimento via Ionic ser realizado por ferramentas de desenvolvimento web, é necessário compilar os aplicativos para os formatos originais de cada plataforma: iOS e Android. No caso do Android, tendo o SDK instalado na máquina, o próprio Ionic realiza a compilação e gera o arquivo publicável, não sendo necessária a utilização do Android Studio. Já no caso do iOS, o produto gerado pelo Ionic é um projeto Xcode; e a compilação para a plataforma da Apple é realizada pelo Xcode e não pelo Ionic. Projeto de aplicativo via mockups 1. Desenhar um mockup pode ser considerada uma boa prática a ser aplicada no desenvolvimento de aplicativos móveis, pois é uma técnica que se mostra eficaz em relação a seus objetivos. Uma das principais funções de um mockup é: A. Detalhar os requisitos não funcionais a serem implementados. B. Validar a versão final do sistema, após o desenvolvimento. C. Validar as ideias iniciais antes de desenvolver o software. D. Testar os casos de uso levantados durante a análise de requisitos. E. Escolher as tecnologias a serem utilizadas para o desenvolvimento. Resposta: C Motivo: A principal função de um mockup é validar as ideias iniciais antes de desenvolver o software. Embora possa ser usado como suporte para diversas atividades no desenvolvimento de um sistema, um mockup não se presta especificamente a detalhar requisitos não funcionais, validar a versão final do sistema, testar casos de uso ou escolher tecnologias. 2. Um protótipo, ou mockup, pode ser avaliado de acordo com a exatidão em relação ao que é esperado. Essa exatidão também é conhecida por fidelidade. Quando se avalia a similaridade da interação, se está falando de: A. Detalhamento da interface do usuário. B. Semelhança visual entre a aplicação e seu rascunho. C. Funcionalidades disponibilizadas pelo mockup. D. Sensação que o usuário tem de que o aplicativo já está semifuncional. E. Atendimento de todos os requisitos de sistema. Resposta: D Motivo: Similaridade da interação é a sensação que o usuário tem de que o aplicativo já está semifuncional, que ele pode interagir como se estivesse no aplicativo desenvolvido. O detalhamento da interface do usuário representa a dimensão de detalhamento. O refinamento estético é a semelhança visual entre a aplicação e seu rascunho. O grau de funcionalidade é medido pelas funcionalidades disponibilizadas. O atendimento de todos os requisitos de sistema não é uma dimensão utilizada na análise da fidelidade de um mockup. 3. A fidelidade de um mockup pode ser avaliada de acordo com algumas dimensões. A dimensão que trata das particularidades suportadas pelo desenho da interface gráfica é chamada de: A. Similaridade de interação. B. Testabilidade. C. Grau de funcionalidade. D. Detalhamento. E. Refinamento estético. Resposta: D Motivo: O detalhamento demonstra as particularidades da interface de usuário. A similaridade de interação se relaciona à experiência do usuário ao navegar pelo mockup. Testabilidade não é uma dimensão para categorização da fidelidade. Grau de funcionalidade trata de quão funcional é o mockup, e o refinamento estético versa sobre a similaridade em relação ao sistema esperado. 4. Mockups podem trazer algumas vantagens ou desvantagens ao seu projeto de software, de acordo com as escolhas relacionadas à sua elaboração. Em relação a uma característica dos mockups, é correto afirmar que: A. Sempre aumentam o custo final do sistema por tomarem um tempo desnecessário para a criação. B. Necessitam de pessoal altamente especializado para elaboração, pois só podem ser elaborados usando softwares específicos. C. Facilitam a ideação e o desenvolvimento colaborativo, permitindo a construção em conjunto. D. Não precisam ser discutidos com o demandante do sistema por serem apenas mais um diagrama. E. São considerados mockups apenas os rascunhos de alta fidelidade, com grande detalhamento da interface. Resposta: C Motivo: Mockups facilitam aideação e o desenvolvimento colaborativo, permitindo a construção em conjunto. Eles reduzem o custo final do sistema por permitirem que alterações sejam feitas logo no início do projeto de software. Além disso, podem ser feitos por qualquer pessoa que entenda um pouco de interface com o usuário, pois podem ser criados usando papel e caneta, sem necessitar obrigatoriamente de softwares específicos ou grandes detalhamentos. 5. Em relação à fidelidade, mockups podem ser classificados em baixa, média ou alta fidelidade, de acordo com suas características e escolhas de desenho. Em relação aos graus de fidelidade de um mockup, escolha a alternativa correta. A. Mockups de alta fidelidade podem apresentar alguma funcionalidade e acesso a dados, mas não podem ser escritos em ferramentas como o bloco de notas; precisam de softwares mais específicos B. Mockups de alta fidelidade podem ser desenvolvidos em ferramentas como o bloco de notas. C. Mockups de média fidelidade podem ser desenvolvidos usando papel e caneta. D. Mockups de baixa fidelidade precisam obrigatoriamente ser desenvolvidos em software. E. Mockups de baixa fidelidade devem apresentar alguma funcionalidade, mesmo que mínima. Resposta: A Motivo: Mockups de alta fidelidade podem apresentar alguma funcionalidade e acesso a dados. Mockups de média finalidade precisam ser desenvolvidos utilizando sistemas específicos, diferentemente dos de baixa fidelidade, que podem ser criados usando papel e caneta, e não precisam apresentar nenhuma funcionalidade de sistema. Tipos de leiaute RelativeLayout e LinearLayout 1. O Android disponibiliza muitos recursos para se trabalhar a interface com o usuário. Dentre eles, destacam-se os layouts, componentes de fundamental importância, sendo o LinearLayout o tipo mais utilizado. Assinale a alternativa correta acerca desse tipo de layout: A. O LinearLayout tem esse nome justamente porque possibilita o alinhamento de componenentes somente na horizontal. B. O LinearLayout é o mais utilizado porque permite recursos mais impressionantes que o RelativeLayout. C. O LinearLayout permite o alinhamento de componentes tanto na horizontal como na vertical. D. O LinearLayout é o componente de layout mais utilizado na plataforma Android, por ser mais fácil de trabalhar. E. O LinearLayout permite que os componentes sejam posicionados um em relação à posição do outro. Resposta: C Motivo: O LinearLayout possibilita o alinhamento de componentes tanto na vertical como na horizontal. O alinhamento de um componente em relação ao outro é possível com o RelativeLayout e sua utilização não está ligada ao fato de possuir mais recursos que outro tipo de layout ou pelo fácil manuseio. 2. O RelativeLayout, um tipo de layout muito poderoso, permite que a interface do aplicativo apresente uma experiência fantástica de interação com os usuários. Assinale a alternativa abaixo que descreve corretamente a principal característica do RelativeLayout: A. O RelativeLayout permite que um componente filho tenha a sua posição atribuída em relação à posição de outro componente. B. O RelativeLayout permite que os componentes sejam alinhados na linha da vertica ou da horizontal sempre empilhados. C. O RelativeLayout tem a vantagem, em relação ao LinearLayout, de permitir utilizar componentes em colunas. D. O RelativeLayout é um complemento do LinearLayout, sua utilização está relacionada ao primeiro. E. O RelativeLayout permite recursos fantásticos, mas sua utilização também requer componentes gráficos diferenciados. Resposta: A Motivo: A principal característica do RelativeLayout é permitir que componentes tenham sua posição determinada em relação à posição de outros. Componentes não são necessariamente empilhados como no LinearLayout e sua utilização não envolve componentes gráficos diferentes, nem a necessidade de trabalhar em conjunto com o LinearLayout. 3. No LinearLayout, tem-se a possibilidade de manipular atributos que permitem aos componentes apresentarem formatos ou comportamentos diferenciados. Um atributo que pode ser manipulado, por exemplo, é o android:layout_weight. Assinale a alternativa abaixo que descreve o que ocorre quando se manipula o valor desse atributo: A. Permite que um item de maior peso seja posicionado mais ao fim da lista. B. Permite que um item de maior peso seja posicionado mais ao topo da lista. C. Permite que um item de maior peso seja colocado mais ao fundo dos demais. D. Permite que um item de maior peso possa expandir e usar mais espaço na tela. E. Permite que um item de maior peso seja exibido com prioridade ao carregar a tela. Resposta: D Motivo: Esse atributo permite que um item com maior peso possa expandir e ocupar mais espaço da tela. Não está relacionado a aparecer ao fundo dos demais, nem mesmo no topo ou fim de uma lista de exibição. 4. O RelativeLayout permite alcançar recursos fantásticos de interação com o usuário; porém, uma das grandes desvantagens desse tipo de layout é que, quando se altera um componente, pode ser necessário alterar todos os outros. Assinale a alternativa correta sobre por que isso ocorre: A. Ocorre pelo fato da hierarquia de componentes. B. Ocorre pelo fato da relatividade da posição de um com o outro. C. Ocorre pelo fato do RelativeLayout encapsular os componentes. D. O RealtiveLayout não apresenta esse tipo de desvantagem. E. Ocorre pela necessidade de ajuste manual no posicionamento dos componentes. Resposta: B Motivo: Isso ocorre pelo fato da relação de posicionamento de um componente com o outro, não necessariamente pelas coordendas ou hierarquia ou encapsulamento de componentes. 5. "Indicado quando as posições dos componentes podem ser melhor descritas em relação a outro elemento (à esquerda) ou à área de fronteira do pai (lado direito, ou centrado)". De acordo com essa afirmativa, é correto dizer que se trata de: A. LinearLayout e RelativeLayout. B. Sistemas de layout. C. Somente LinearLayout. D. Essa afirmativa não faz sentido para layouts. E. Somente RelativeLayout. Resposta: E Motivo: Sempre que puder ser determinada a posição de um componente em relação ao outro, sem dúvida, trata-se de usar RelativeLayout. LinearLayout será quando os componentes fluem na horizontal ou vertical. Testes em aplicativos móveis 1. Para garantir a qualidade dos softwares lançados, é importante manter uma rotina de testes. Sobre os níveis de teste é correto afirmar que: A. O teste de integração é o nível mais abstrato, no qual é validada a integração do sistema com os outros sistemas da empresa. B. O teste de unidade é aquele que analisa o software como uma unidade complexa em si, avaliando se esta unidade atende aos requisitos. C. O teste de validação é o nível de testes, utilizado para validar funções, métodos, classes e objetos e suas entradas e saídas. D. O teste de integração é o tipo de teste voltado para verificar a integração entre as unidades, ou seja, um bloco inteiro da aplicação. E. O teste de sistema é todo aquele utilizado para testar sistemas computacionais, de maneira manual ou automatizada. Resposta: D Motivo: Os testes começam de unidades elementares, como funções, métodos, classes e objetos, no nível de testes unitários. Em seguida, essas funcionalidades são colocadas juntas, ou seja, integradas e validadas pelo teste de integração. O teste de sistema é realizado com todo o sistema, incluindo banco de dados, hardware, redes, etc. É a última etapa. 2. Os testes de software são divididos em algumas técnicas fundamentais denominadas Teste de caixa branca e Teste de caixa preta. Sobre estes, é correto afirmar que: A. O teste de caixa branca exige que o testador tenha conhecimento do código fonte. B. O teste de caixa preta exige que o testador tenha conhecimento do código fonte. C. Testes de caixa preta são indicados na fase de testes unitário e de integração. D. Testes de caixa branca são os mais indicados na fase de testes de aceitação e sistema. E. Testes de caixa branca são voltados para as fases de aceitação e validação. Resposta:A Motivo: Os testes de caixa branca indicam que o testador precisa ter acesso ao código fonte e são recomendados, sobretudo, nas fases de testes unitários e de integração - que são mais próximos ao nível do código. Os testes de caixa preta, como o nome sugere, tratam o software como uma caixa fechada, ou seja, o testador não possui conhecimento sobre o código fonte. Nesse caso, são indicados para as fases de integração (por meio da interface do usuário - analisando entradas e saídas de dados previsíveis), validação e sistema. 3. Codificar testes automatizados acaba por gerar uma necessidade de investimento de tempo e custos no projeto como um todo. Em relação a esses investimentos é correto afirmar que: A. Quanto mais próximo ao nível do usuário, mais abrangente é o teste e maior será o investimento de tempo e dinheiro. B. Testes de integração de unidades são considerados os mais custosos em termos de tempo e dinheiro em um projeto. C. O investimento de tempo e dinheiro é o mesmo em todas as fases de um projeto de testes de software. D. Testes unitários têm um custo maior (por teste), pois demandam maior conhecimento técnico de codificação. E. Os testes de interface de usuário não são possíveis de serem automatizados, pois requerem o uso da interface. Resposta: A Motivo: Os testes unitários, mais próximos ao código e à lógica de programação, são bem simples de serem desenvolvidos e relativamente rápidos. Os testes de integração, por sua vez, demandam um pouco mais de esforço. À medida que aproxima-se do nível do usuário, realiza-se testes de caixa preta automatizados, que simulam a ação do usuário com as telas do sistema. Todavia, esses testes são muito complexos e requerem um investimento de tempo e dinheiro maior que qualquer outra modalidade, principalmente pelo fato de testarem o sistema como um todo. 4. As aplicações desenvolvidas com o Ionic também são possíveis de serem testadas de maneira automatizada - inclusive, é recomendável. Sobre os testes com as plataformas do Ionic é correto afirmar que: A. O Ionic possui funcionalidade interna para testes unitários, não dependendo de biblioteca de terceiros. B. O Ionic integra a plataforma Jasmine e Protractor para testes unitários e end-to-end. C. A programação do Ionic se dá em TypeScript, mas os testes, utilizando Jasmine, são codificados em JavaScript. D. As bibliotecas de testes do Ionic são baseadas no JUnit e no Selenium para testes unitários e de integração respectivamente. E. Os elementos testáveis de maneira unitária no Ionic são os Services, Pipes e Components. As pages não são testáveis diretamente. Resposta: B Motivo: A plataforma Ionic traz integração com frameworks de teste de terceiros: o Jasmine e o Protractor, de maneira facilitada, inclusive, permitindo a codificação dos testes com TypeScript. Toda a aplicação, inclusive páginas - simulando a ação do usuário -, podem ser testadas com as duas plataformas embutidas no framework. 5. Por vezes, durante o desenvolvimento dos testes de unidade, é necessário acessar dados ou funções externas à unidade que se está testando. Sobre essa situação é correto afirmar que: A. É uma prática que pode ser usada, porém, não é recomendada. Nesse caso, normalmente se trata de um erro no projeto de teste. B. Pode-se testar, normalmente, as funções e dados externos em testes unitários, da mesma forma que a aplicação faria. C. Para simular os dados e funções externos à unidade testada, faz-se o uso de mocks , evitando interferências externas no teste. D. Funcionalidades que dependem de outras não podem ser enquadradas em testes unitários, devendo ser tratadas apenas em testes de integração. E. Neste caso, o correto é buscar os dados necessários e mantê-los em memória; e, então, executar os testes unitários sobre os dados. Resposta: C Motivo: O uso de mocks, que são dados fictícios - e que ainda possuem a característica de identificar quando e quantas vezes são acessados - é o indicado para testar funcionalidades que dependem de funções e dados externos. Dessa forma, programa-se o mock, sabendo dos dados, a forma e o conteúdo e se prevê a resposta da função; seguindo, assim, com um ambiente controlado. Desse modo, é possível realizar testes unitários nessas unidades, sem o risco de interferência externa. Modelagem e projeto de aplicativos móveis 1. A análise de requisitos é uma etapa fundamental para descrever as funções de cada aplicação do processo de desenvolvimento de aplicativos móveis. Pressman e Maxim (2016) afirmam que, com os modelos de requisitos, pode-se analisar de forma estruturada cada aplicação, havendo cinco conjuntos de modelos: modelo de conteúdo, modelo de interação, modelo funcional, modelo de navegação e modelo de configuração. Analise as afirmações a seguir, quanto aos enunciados dos “modelos de requisitos” apresentados por Pressman e Maxim (2016): I. O modelo de conteúdo envolve todo o conteúdo que estará visível ao usuário, desde o conteúdo criado até o manipulado a partir da interação deste. São exemplos de conteúdo: textos, links e vídeos, entre outros. II. O modelo funcional lida com os elementos de funcionamento da aplicação, como as funcionalidades observadas pelo usuário (por exemplo, as operações contidas na classe de análise, que servem para analisar todo o comportamento que está associado a essa classe). III. O modelo de navegação trata dos requisitos em relação a toda navegação que o usuário irá realizar no aplicativo. De forma geral, tratar a etapa de navegação tende a ser mais complexo, pelo fato de que esse tipo de operação tem uma hierarquia alta, até mesmo se comparado aos web apps. IV. O modelo de interação trata de todo o engajamento do usuário com o aplicativo, descrevendo toda interação que irá acontecer entre o usuário e o sistema. Está correto o que se afirma em: A. I e II, apenas. B. I, II e IV, apenas. C. I, II e III, apenas. D. III e IV, apenas. E. II e III, apenas. Resposta: B Motivo: As alternativas que correspondem corretamente às definições apresentadas por Pressman e Maxim são as que tratam dos seguintes modelos: modelo de conteúdo, que trata de todo conteúdo proposto para a aplicação; modelo funcional, que descreve as funções do aplicativo; e modelo de interação, que trata de toda e qualquer interação entre usuário e sistema. Quanto às afirmativas inconsistentes, destaca-se que, no caso do modelo de navegação, é mais simples do que web apps, porque o número de níveis referentes à hierarquia hipermídia será baixo. 2. Cada etapa que compõe o desenvolvimento de software tem sua importância. Entre elas, a de arquitetura possibilita traçar as camadas que irão definir as funcionalidades para uma aplicação. Uma empresa de desenvolvimento de aplicativos móveis foi selecionada para desenvolver um novo aplicativo para o mercado educacional. Na etapa de desenvolvimento da estrutura de arquitetura do aplicativo, ficou decidido que todas as camadas desenvolvidas deveriam estar no próprio dispositivo móvel. Sendo assim, assinale V para as afirmações verdadeiras e F para as falsas. ( ) A melhor opção para implementar a arquitetura do projeto será o modelo de cliente magro, que se baseia na interface da web. ( ) Desenvolvendo um modelo de cliente rico, as atividades não vão depender do servidor. ( ) Implementar a arquitetura do projeto utilizando o modelo de cliente rico permite residir todas as camadas no próprio dispositivo. Assinale a alternativa que apresenta a sequência correta. A. V – V – F. B. V – F – V. C. F – V – V. D. V – F – F. E. F – F – V. Resposta: C Motivo: Na arquitetura-padrão dos dispositivos móveis, será possível criar um cliente magro, em que apenas a interface do usuário reside no dispositivo móvel, enquanto as camadas do negócio e de dados residem em um servidor. Em um cliente rico, todas as camadas podem residir no próprio dispositivo móvel. Quanto às afirmativas inconsistentes, destaca-se que o cliente magro e as camadas do negócio e de dados residem em um servidor, enquanto o dispositivomóvel é a aplicação final que irá receber a arquitetura-padrão. 3. A interface do usuário, em qualquer software, é considerada um fator de extrema importância, e a maneira como será desenvolvida determinará se o usuário irá utilizar ou não a ferramenta. O foco de um projeto de interface deverá ser sempre baseado na visão do público-alvo, e alguns princípios deverão ser seguidos para buscar a melhor usabilidade para um projeto atrair o usuário. Relacione a temática “alguns princípios para desenvolver uma boa interface do usuário no projeto de aplicativos móveis” com suas respectivas características e definições: I. Antecipação II. Comunicação III. Eficiência ( ) A interface deve comunicar o estado de qualquer atividade pelo usuário. ( ) Uma aplicação deve ser projetada para prever o próximo passo do usuário. ( ) O projeto de uma aplicação deve otimizar o trabalho do usuário, e não do projetista. Assinale a opção que indica a sequência correta, de cima para baixo. A. I, II e III. B. II, III e I. C. III, I e II. D. II, I e III. E. I, III e II. Resposta: D Motivo: Devido às restrições físicas impostas pelos dispositivos móveis, o projetista de interface deve compactar a interação de forma orientada. Bruce Tognozzi (2014) define um conjunto de princípios de projeto fundamentais que conduzem a uma melhor usabilidade. Entre eles, destaca que a antecipação é uma aplicação que deve ser projetada para prever o próximo passo do usuário. No que se refere à comunicação, a interface deve comunicar o estado de qualquer atividade iniciada pelo usuário. Na eficiência, o projeto de uma aplicação e sua interface deve otimizar a eficiência de trabalho do usuário, não a eficiência do desenvolvedor que a projeta e constrói ou o ambiente cliente/servidor que a executa (PRESSMAN; MAXIM, 2016). 4. De acordo com Andreou (2005), poderá ser utilizado no projeto de aplicativos móveis o modelo de processo de engenharia espiral, por meio de seis atividades principais. Sobre a atividade planejamento, assinale a alternativa correta. A. Descreve a etapa em que serão determinados os riscos e os custos do projeto. B. Envolve o projeto arquitetural, o projeto de navegação, as metas e os recursos. C. Deverá identificar todos os itens de conteúdo que serão necessários. D. Envolve o projeto de arquitetura, o projeto de navegação e o projeto de interface do usuário, entre outros. E. Nessa etapa, são realizados o aplicativo que deverá ser codificado e o processo de teste. Resposta: A Motivo: Na atividade de planejamento, serão determinados os riscos e os custos do projeto, sendo estabelecido um cronograma e documentados os processos de incremento. Quanto às afirmativas inconsistentes, destaca-se que a atividade de formulação envolve o projeto arquitetural, o projeto de navegação, as metas e os recursos. A atividade de análise deverá identificar todos os itens de conteúdo que serão necessários. A atividade de engenharia envolve o projeto de arquitetura, o projeto de navegação, o projeto de interface do usuário, o projeto de interface e o projeto de conteúdo e produção de conteúdo. Por fim, é na atividade de implementação e teste que se codifica o aplicativo e se realiza o processo de teste. 5. Um aplicativo móvel deve atender às necessidades de seus usuários, e muitas vezes essa satisfação se deve a um bom desenvolvimento de interface de usuário, que deverá apresentar consistência e operar em diversas redes, entre outros motivos que o farão ser bem aceito no mercado. Para desenvolver modelos consistentes e possibilitar fácil desenvolvimento, é possível utilizar uma abordagem de projetos baseada em modelos. Sobre essa abordagem, é correto afirmar que: I. trabalha a partir de dois modelos diferentes: o modelo de plataforma e o modelo de tarefa; II. o modelo de plataforma descreve a aparência da interface de usuário; III. no modelo de tarefa, é realizada a representação da estrutura de tarefas que o usuário poderá executar para atingir suas metas. Assinale a alternativa com a(s) assertiva(s) correta(s). A. I. B. I e II. C. III. D. II. E. I e III. Resposta: C Motivo: A abordagem de projeto baseada em modelos utiliza três tipos de modelos diferentes (e não dois, como na assertiva I), sendo eles: modelo de plataforma, que descreve as restrições impostas por cada interface de usuário; modelo de apresentação, que descreve a aparência da interface de usuário; e modelo de tarefa, que realiza a representação da estrutura de tarefas que o usuário poderá executar para atingir suas metas. Consumo de serviços Web RESTful 1. O padrão RESTful se desenvolveu a partir do conceito de computação distribuída, em que partes de um mesmo sistema se localizam em máquinas ou em locais físicos diferentes. Partindo dessa premissa, qual alternativa a seguir está correta? A. A aplicação móvel é responsável pela maior parte do processamento dos dados do usuário e pelo armazenamento da maior parte das informações. B. A aplicação móvel é responsável, majoritariamente, pelo conceito de frontend, que é a parte que responde à interação com o usuário. C. É necessário um dispositivo com grande poder de processamento para atender às demandas atuais. D. O uso de aplicativos móveis é pouco dependente do acesso à internet, tendo em vista que as aplicações são instaladas no aparelho. E. A comunicação entre aplicação e servidores é realizada de maneira síncrona, consumindo grandes quantidades de dados a cada requisição. Resposta: B Motivo: A tecnologia das APIs, principalmente utilizando o conceito REST, faz uso de chamadas assíncronas à rede, privilegiando trafegar apenas o que é necessário, evitando o recarregamento de imagens e de outros dados considerados pesados, pois estão instalados com a aplicação ou mantidos em memória local. A aplicação, por sua vez, responde, principalmente, pela camada de interação com o usuário, também denominada frontend, responsável por armazenar preferências, filtros, login e senha, mas não os dados brutos. Dessa forma, é possível construir aplicações leves, que não necessitam de grande poder de processamento, todavia, majoritariamente, dependentes de conexões à internet. 2. Na maior parte das aplicações para dispositivos móveis, há necessidade inerente de comunicação com servidores externos, que estão acessíveis por acesso à internet. Sendo assim, o que é um REST? Marque a opção correta. A. Um protocolo de rede. B. Um conjunto de instruções predefinidas. C. Um padrão de arquitetura de interconexão de aplicações. D. Uma aplicação auxiliar que fará o intermédio entre o servidor e o dispositivo. E. Um conjunto de bibliotecas inerentes às linguagens de programação. Resposta: C Motivo: REST é um padrão de arquitetura de software que permite que os dados sejam trafegados utilizando o protocolo HTTP e a infraestrutura da própria Web. Nesse caso, um servidor, chamado de backend , expõe funções para o tratamento dos dados enviados e recebidos. 3. Uma aplicação pode ser chamada de RESTful quando é baseada no padrão REST de acesso a funcionalidades remotas por meio de APIs. Diante isso, é possível afirmar que: A. O método HTTP/GET é utilizado para buscar informações que já existem. B. O método HTTP/POST é utilizado quando já existe a URI referente ao recurso a ser inserido ou atualizado. C. O método HTTP/PUT cria uma nova URI ao inserir recursos. D. Ambos os métodos HTTP/POST e HTTP/PUT têm a mesma funcionalidade. E. O método HTTP/GET envia informações por meio do corpo da requisição. Resposta: A Motivo: Os métodos do protocolo HTTP são amplamente utilizados como "verbos" de ação para a arquitetura RESTful. O método GET é usado para buscar informações existentes. Transmite as informações pela própria URL, por isso não deve ser utilizado para dados sensíveis (como senhas, por exemplo). Os métodos POST e PUT têm funcionalidades similares, que é a de enviar e inserir dados no sistema, utilizando o corpo da requisição. Entretanto, existe uma diferença entre eles: deve-se utilizar PUT quando a URI queidentifica o recurso já existe; e o POST quando o sistema criar uma nova URI para os dados inseridos ou alterados. 4. Quando dados são transmitidos e recebidos utilizando-se as APIs RESTful, é necessária uma notação comum a ambas as partes (ambos os lados) para que as aplicações se comuniquem. Em se tratando de REST, qual alternativa apresenta uma afirmativa correta? A. O padrão REST requer o uso de documentos em padrão JSON para a transferência de dados entre aplicações. B. O retorno de uma chamada é tratado de acordo com a resposta fornecida no corpo da mensagem. C. É viável, apesar de incomum, a representação dos dados em formato XML para transferência entre aplicações. D. As APIs REST coincidem com as operações de CRUD (Create, Read, Update, Delete). E. O retorno dos dados ocorre pelo corpo da requisição enviada, com palavras-chave predefinidas entre servidor e aplicação. Resposta: C Motivo: Apesar de grande parte das aplicações baseadas em REST transferirem seus dados utilizando documentos JSON, é possível fazer essa transferência de dados em outros padrões notacionais, como o XML - mais antigo ou até mesmo texto puro. As requisições, muito frequentemente, coincidem com as operações CRUD, mas não se limitam a elas. Observe que uma requisição é uma chamada a uma função remota, que não necessariamente será um CRUD. Os dados podem ser enviados pela URL ou pelo corpo da requisição, e seu retorno é tanto por meio de palavras predefinidas, quanto por códigos de resposta HTTP. 5. As aplicações baseadas na arquitetura REST transmitem seus dados pela Web e pelo protocolo HTTP. As chamadas a dados são denominadas requisições e seus pontos de conexão remotos são nomeados de endpoints. Em relação à transmissão dos dados sobre arquitetura REST, qual alternativa está correta? A. O servidor mantém o estado da conexão, como por exemplo, qual usuário está conectado, suas preferências, etc., por meio do endereço IP do usuário. B. O servidor não mantém o estado da conexão. É necessário o envio da informação completa e, após a resposta, o ciclo se encerra. Cada requisição é única. C. O servidor mantém parcialmente os dados da conexão do usuário, mantendo uma sessão, mas não preserva as preferências do usuário ou dados específicos. D. Cada requisição é única e deve conter toda a informação necessária, incluindo o login e a senha do usuário, o que torna o padrão particularmente vulnerável. E. O padrão RESTful é voltado para redes de alto desempenho, não sendo indicado para conexões instáveis. Resposta: B Motivo: No padrão RESTful, cada requisição é única e deve ser completa, ou seja, conter todos os dados necessários para ser efetuada. Contudo, transmitir login e senha a cada requisição não é uma boa prática, existindo mecanismos para evitar o tráfego de dados sensíveis (como o JWT, por exemplo). Em relação ao servidor, este não mantém os dados após concluir a requisição e enviar a resposta à aplicação que a originou - o que diferencia de outras arquiteturas como o SOAP. Justamente por tratar cada requisição como completa e única, é ideal para redes instáveis e com velocidade variável, como as redes móveis 3G e 4G. Ionic 1. A utilização de aplicativos, que aumenta a cada dia, faz parte do cotidiano das pessoas e auxilia na execução de algumas atividades, como as transações bancárias. Isso estimula os desenvolvedores a dar uma atenção maior às possíveis tendências do mercado. O aumento do uso de aplicativos está relacionado, dentre outros aspectos, ao: A. Desenvolvimento híbrido, exposto como uma modalidade que emprega o HTML5, JavaScript e CSS como tecnologias web. B. Conceito da Arquitetura Orientada a Serviço (SOA), que se refere a um projeto que limita os aspectos relacionados à criação e ao uso dos serviços de negócio. C. Fato de o Ionic usar um framework TypeScript, criado pelo Google, denominado Angular. D. Componente nativo introduzido, que auxilia o Ionic para que seja executado como um aplicativo, cujo framework é um JavaScript. E. Uso do DevApp, recurso que apresenta os elementos de criação presentes em uma estrutura que possibilita o processo de desenvolvimento de aplicativos. Resposta: A Motivo: A Arquitetura Orientada a Serviço (SOA) é um plano que tem como finalidade nortear os aspectos relacionados ao desenvolvimento e à utilização dos serviços de negócio durante o ciclo de vida envolvendo, desde a idealização, até a descontinuação do serviço. O Ionic usa um framework JavaScript criado pela Google, denominado Angular. A introdução de um componente nativo auxilia o Ionic para que seja executado como um aplicativo nativo, quando se tratar de um framework HTML5. O Ionic Studio consiste em um recurso que apresenta os componentes de desenvolvimento presentes em uma estrutura que possibilita o processo de criação de aplicativos. O desenvolvimento híbrido é uma modalidade que utiliza o HTML5, Javascript e CSS como tecnologias web, pelo fato da sua linha de aprendizagem se apresentar em menor grau, em relação ao aprendizado, para desenvolvimento de um aplicativo nativo. 2. Um determinado documento apresenta como desenvolver um projeto HTML5 no IDE, que seja, dentre outras características, encapsulado, como uma aplicação móvel. Para criar uma aplicação HTML5, é possível utilizar um modelo de site denominado Apache Cordova, que tem como objetivo: A. Ser considerada uma escolha excelente para equipes que possuem diversos projetos simultâneos. B. Disponibilizar uma série de APIs, que possibilita a criação de uma aplicação encapsulada como uma aplicação móvel nativa. C. Serem sites com perfil de apps, no que se refere à interface e às funcionalidades. D. Ser uma solução aplicada com o objetivo de tratar de casos que necessitem de testes rápidos. E. Ser uma tecnologia criada para possibilitar ao software fazer uso do hardware de maneira plena. Resposta: B Motivo: O Ionic Studio, dentre outras características, pode ser considerado uma escolha excelente para equipes que possuem diversos projetos simultâneos. O Progressive Web Apps tem a sua criação condicionada ao Ionic, o que significa uma evolução relevante dos aplicativos, pois, são sites com perfil de apps no que se refere à interface e às funcionalidades. O Ionic DevApp tem o objetivo de direcionar e tratar dos casos que necessitem de testes rápidos. O Node é uma tecnologia criada para possibilitar ao software fazer uso do hardware, de maneira plena, aproveitando ao máximo as características do processador e evitando a ociosidade. O Apache Cordova oferece um grupo de APIs, que permite desenvolver uma aplicação com HTML, CSS e JavaScript encapsulada como aplicação móvel nativa. 3. A tecnologia Ionic apresenta uma série de aspectos relacionados ao seu desenvolvimento. Diante disso, é possível destacar, por exemplo, a Platform Continuity, que tem como função: A. Injetar na WebView do dispositivo por meio do código HTML/CSS/JavaScript. B. Tornar mais simples a manutenção e a evolução do aplicativo de acordo com as demandas dos clientes. C. Tratar da mudança e da adaptação da aparência dos componentes do Ionic. D. Ser uma plataforma para o desenvolvimento de telas. E. Transformar o código JavaScript moderno em compatível. Resposta: C Motivo: A Multiplataforma é uma funcionalidade em que há uma injeção na WebView do dispositivo por meio do código HTML/CSS/JavaScript; o que possibilita o desenvolvimento de aplicativos destinados à Android e IOS, permanecendo uma base do código. A Mais produtividade é uma funcionalidade que provém das características da multiplataforma, pois, com a disposição de uma base de código, se torna mais simples a manutenção e a evolução do aplicativo, de acordo com as demandas dos clientes. A Prototipação é a funcionalidade responsável pela criação de telas. A Transpilação consiste na transformação do código JavaScript moderno para o compatível. A Platform Continuity trata da mudança e da adaptação da aparência dos componentes do Ionic, à medida que se altera o sistema operacional encontradono dispositivo. 4. "Tem a sua criação diretamente ligada ao Ionic, o que significa uma evolução importante dos aplicativos. São sites com aspectos de apps, no que se refere à interface e às funcionalidades". O conceito exposto se refere a uma funcionalidade do Ionic definida como: A. Multiplataforma. B. Mais produtividade. C. Menor Custo. D. PWA. E. Ferramentas. Resposta: D Motivo: A Multiplataforma indica que a atual arquitetura, a qual o Ionic está estruturado, localiza-se sobre o Cordova, mantendo uma comunicação, por meio de plug-ins, com os dispositivos móveis. Existe a possibilidade de uso de desenvolvedores do tipo front-end na elaboração de um aplicativo, sendo este um dos fatores que influencia na produtividade. Para que haja um menor custo, é necessário haver uma mescla de desenvolvedores que criem aplicativos na modalidade nativa destinados para Android e iOS. O sistema do Ionic apresenta ferramentas relevantes aos desenvolvedores, como Ionic DevApp, responsável por condicionar a inserção de um aplicativo no dispositivo móvel, direcionado para testar o seu próprio desenvolvimento. O Progressive Web Apps tem a sua criação condicionada ao Ionic, o que significa uma evolução relevante dos aplicativos. São sites com perfil de apps, no que se refere à interface e às funcionalidades. 5. No ano de 2015, foi lançado pela Microsoft um editor de código com a finalidade de desenvolver aplicações web. Trata-se de uma ferramenta leve e multiplataforma disponível para Windows, Mac Os e Linux. Como é chamado esse editor? A. My App. B. JavaScript. C. Angular 7. D. Code. E. Visual Studio Code. Resposta: E MOtivo: My App é um nome designado à pasta onde o Ionic é instalado. JavaScript é uma das tecnologias web utilizadas pelo desenvolvimento híbrido. O Angular 7 é uma funcionalidade do Ionic, versão 4. O Code é um comando que permite que a pasta, onde o Ionic esteja instalado, seja executada no Visual Code. O Visual Studio Code é um editor de código com a finalidade de criar aplicações web e se caracteriza por ser uma ferramenta simples e multiplataforma, que pode ser executada em diversos sistemas operacionais, como o Windows e Linux, por exemplo. Angular e serviços 1. A injeção de dependências é um padrão de projetos muito utilizado na criação de serviços em Angular, pois, entre outras vantagens, facilita a reusabilidade de código. Dentre os itens abaixo, quais podem ser declarados como @Injectable quando se usa Angular? A. Funções, valores e serviços. B. Módulos, valores e serviços. C. Componentes, valores e serviços. D. Funções, módulos e componentes. E. Funções, componentes e serviços. Resultado: A Motivo: As injeções de dependência (@Injectable) normalmente são serviços, mas também podem ser determinadas funções ou valores. Os módulos estão acima na hierarquia, contendo containers para os componentes que, por sua vez, usam a injeção de dependências quando precisam de alguma funcionalidade específica. 2. Os serviços são implementados e muito utilizados em diversas linguagens de programação. No Angular, qual a principal responsabilidade de um serviço? A. Declarar um contexto de compilação para um conjunto de componentes. B. Armazenar a lógica do aplicativo e as classes de dados. C. Encapsular um código que implementa um comportamento específico. D. Permitir e facilitar a experiência do usuário com a aplicação. E. Conter serviços, provedores, componentes e outros códigos. Resultado: C Motivo: Os serviços implementam comportamentos específicos, que serão utilizados pelos módulos. Os módulos são responsáveis por contextos de compilação, e podem conter serviços, provedores, componentes e outros códigos. Por sua vez, os componentes objetivam facilitar a experiência do usuário e armazenar a lógica da aplicação e classes de dados. 3. Quando se cria serviços, há alguns mecanismos principais que são utilizados quando é preciso injetar dependências. Qual é o mecanismo criado pelo próprio Angular? A. Injector. B. Container. C. Provider. D. Bootstrap. E. @Injectable. Resposta: A Motivo: O injector é criado pelo Angular, quando se utiliza o decorator @Injectable em uma aplicação. O injector cria o container, que tem instâncias nas dependências e o provider ensina o container a obter ou gerar uma dependência. Bootstrap é o processo de inicialização da aplicação. 4. A dependência entre os componentes e os serviços deve ser desenvolvida no Angular, de forma que o framework saiba que precisa gerenciar essas dependências. Como o Angular sabe que um componente depende de determinado serviço para funcionar corretamente? A. O Angular somente verifica se o serviço foi importado diretamente na classe. B. Se houver uma importação de Injectable, há dependência de um serviço. C. O Angular inicializa a aplicação e, em caso de erros, verifica se faltou algum serviço. D. O Angular verifica os parâmetros do construtor da classe. E. O Angular verifica os parâmetros do serviço. Resposta: D Motivo: O Angular verifica os parâmetros do construtor da classe (e não do serviço); se houver um serviço declarado, ele sabe que há essa dependência. Adicionalmente, deve haver a importação do serviço na classe. A classe não precisa importar o Injectable; é o serviço que faz essa importação. Por fim, as falhas na aplicação serão lançadas se houver algum erro na codificação. 5. O pacote Ionic CLI facilita o processo de criação de projetos e serviços via linha de comando. Estando com todos os pré-requisitos instalados, como se cria um serviço chamado serv-banco em um projeto usando Ionic CLI? A. Em qualquer diretório, use o seguinte comando: ionic generate service serv-banco. B. Vá até a pasta do projeto e use o seguinte comando: ionic generate service serv-banco. C. Vá até a pasta do projeto e use o seguinte comando: ionic new serv-banco. D. Vá até a pasta do projeto e use o seguinte comando: ionic serv. E. Em qualquer diretório, use o seguinte comando: ionic new serv-banco. Resposta: B Motivo: Na pasta do projeto, em que deseja criar o serviço, você deve usar a linha de comando ionic generate service serv-banco. O comando ionic new <nome-app> cria uma nova aplicação, e o comando ionic serv compila a aplicação.
Compartilhar