Questão de Arquitetura de Software — Software — IF-MT 2023
Arquitetura de Software›Software
Código
qq952011
Banca
IF-MT
Órgão
IF-MT
Ano
2023
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Avalie as seguintes sentenças sobre o framework Django:I. O termo “project" descreve uma aplicação web Django. O pacote de projeto Python é definido primariamente por um modelo de usuário, com declarações específicas utilizadas para a criação e manutenção do banco de dados.II. A camada de modelos é utilizada para descrever as funcionalidades do modelo de negócio do usuário com o objetivo de otimizar o desempenho da aplicação gerada e a integridade referencial do banco de dados utilizado.III. O comando makemigrations é utilizado para realizar a migração do software desenvolvido para a versão mais recente, de acordo com o suporte do sistema operacional utilizado no desenvolvimento.De acordo com documentação oficial do Django, é CORRETO afirmar que:
AApenas I está correta.
BApenas II está correta.
CApenas III está correta.
DTodas as sentenças estão corretas.
ENenhuma sentença está correta.
Revelar gabarito e comentário▾
GabaritoE — Nenhuma sentença está correta.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Framework Django – Sentenças sobre projeto, modelos e migrations
Gabarito: letra E — nenhuma das três sentenças está correta conforme a documentação oficial do Django. A banca testa o conhecimento básico sobre a estrutura de projetos, a função da camada de modelos e o comando makemigrations, e todas as afirmativas contêm erros conceituais ou factuais.
A questão exige familiaridade com os conceitos fundamentais do Django: o que é um projeto (project) versus uma aplicação (app), o papel dos modelos (models) e o ciclo de migrações (makemigrations/migrate). Vamos analisar cada item.
Item
Afirmação sobre Django
Correto?
Motivo da incorreção
I
“project” descreve uma aplicação web; pacote definido primariamente por modelo de usuário
❌
Projeto é contêiner de apps; modelo de usuário fica em app específica, não no escopo primário do projeto
II
Camada de modelos descreve funcionalidades do negócio para otimizar desempenho e integridade referencial
❌
Modelos definem estrutura de dados (tabelas/relacionamentos), não funcionalidades; otimização de desempenho não é objetivo primário
III
Comando makemigrations realiza migração para versão mais recente conforme suporte do SO
❌
makemigrations cria arquivos de migração; migrate aplica ao banco; não há relação com versão do SO
Item I — ❌ Incorreto
A sentença afirma que o termo "project" descreve uma aplicação web Django e que o pacote de projeto é definido primariamente por um modelo de usuário. Isso está errado por dois motivos:
No Django, um project é um conjunto de configurações e aplicações (apps) para um site. Uma única aplicação web é geralmente um app, não o projeto. O projeto contém apps, mas não é descrito como "aplicação web" — ele é o contêiner.
O pacote do projeto não é definido "primariamente por um modelo de usuário". O modelo de usuário (User) é definido em uma aplicação específica (geralmente django.contrib.auth ou em um app customizado). O projeto pode nem ter um modelo de usuário se usar o padrão. Além disso, as "declarações específicas para criação e manutenção do banco de dados" são os modelos (classes que herdam de models.Model), mas elas ficam nos apps, não no escopo primário do projeto.
Portanto, a afirmação confunde projeto com aplicação e atribui ao projeto uma responsabilidade que é das apps e dos modelos.
Item II — ❌ Incorreto
A sentença diz: "A camada de modelos é utilizada para descrever as funcionalidades do modelo de negócio do usuário com o objetivo de otimizar o desempenho da aplicação gerada e a integridade referencial do banco de dados utilizado." Erro principal: a camada de modelos no Django define a estrutura dos dados (tabelas, campos, relacionamentos) e fornece uma abstração ORM. Ela não tem como objetivo primário "otimizar o desempenho" — isso é uma consequência indireta, mas não a finalidade. A integridade referencial é garantida pelo banco de dados, não pelos modelos em si (embora os relacionamentos ajudem). A frase "funcionalidades do modelo de negócio do usuário" é vaga e enganosa; modelos representam entidades de negócio, não funcionalidades. A principal função dos modelos é mapear objetos para o banco de dados, permitindo consultas e persistência. Otimização de desempenho é papel de índices, queries eficientes e cache, não dos modelos como camada.
Item III — ❌ Incorreto
A sentença: "O comando makemigrations é utilizado para realizar a migração do software desenvolvido para a versão mais recente, de acordo com o suporte do sistema operacional utilizado no desenvolvimento." Dois erros graves:
makemigrationscria novos arquivos de migração com base nas alterações detectadas nos modelos, mas não as aplica ao banco de dados. Quem aplica as migrações é o comando migrate. Portanto, dizer que "realizar a migração" é função do makemigrations está incorreto.
A menção "de acordo com o suporte do sistema operacional utilizado no desenvolvimento" é absurda: o comando makemigrations é independente de sistema operacional. Ele gera migrações que são portáveis entre qualquer SO suportado pelo Python/Django.
Concluindo, todas as três sentenças contêm imprecisões ou erros conceituais, portanto nenhuma está correta.
NÃO CAIA NESSA!
Para acertar questões sobre Django, foque nos conceitos fundamentais: distinção entre projeto e app, função da camada de models (definição de esquema de dados, ORM) e o fluxo de migrações (makemigrations cria, migrate aplica). Memorize esses papéis – a banca costuma inverter as responsabilidades.
Gabarito: letra E — nenhuma sentença está correta.