الوكالة الوطنية للسلامة الطرقية: مهندسون من الدرجة الأولى، التنمية المعلوماتية، 26 دجنبر 2021

موضوع امتحان كتابي · Agence nationale de la sécurité routière (NARSA) — Ingénieurs 1er grade, développement informatique · 2021

موضوع حقيقي منقول حرفياً من النسخة المنشورة؛ بدون تصحيح رسمي.

Copie publiée par wadifa-info.com (modèle n°957). Sujet transcrit mot pour mot ; aucun corrigé officiel publié. QCM, architecture de services web et étude de cas UML / SQL.

Agence Nationale de la Sécurité Routière (NARSA)Concours de recrutement des ingénieurs du 1er grade — spécialité : développement informatique (التنمية المعلوماتية) — 26 décembre 2021Épreuve écrite — coefficient : 6 — durée : 2 heures

Consignes générales à lire attentivement :- L'épreuve étant anonyme, aucun signe distinctif ne devra être porté sur les copies d'examen (signature, inscription de votre nom et votre prénom ailleurs que dans le cadre réservé à cet effet, etc.) ;- L'usage de tout document, téléphone mobile, calculatrice ou support électronique est formellement interdit ;- L'épreuve comporte 3 parties ;- Les différentes parties peuvent être traitées dans l'ordre de votre choix.

Partie 1 : QCM (6 points) [0,5 point par question]

Pour chaque question, une ou plusieurs réponses sont possibles. Les réponses au QCM doivent être rédigées de la manière suivante : numéro de la question : lettre ou lettres des réponses (ex : Q1 : A ou Q1 : A-D).

1. Dans une architecture Web Services qui repose sur le protocole SOAP, l'interface de définition d'un service est décrite par :A – Un fichier écrit au standard IDLB – Un fichier écrit au standard UDDIC – Un fichier écrit au standard WSDL

2. Que signifie le principe d'encapsulation ?A – Cela désigne un mécanisme de gestion de la mémoire propre à l'orienté objetB – Cela désigne le regroupement d'une collection d'objets dans un nouvel objetC – Cela désigne le principe consistant à différencier les propriétés internes et les propriétés externes (nécessaires à son utilisation) d'un objetD – Cela désigne un principe de mise en relation des objets d'une application

3. Dans la méthode Merise le concept de synchronisation est relatif au :A – Diagramme de fluxB – MCTC – MLDD – MPT

4. Dans une classe, un attribut déclaré « static » est :A – Un attribut dont la valeur ne peut pas être modifiéeB – Un champ protégé hérité par une sous-classeC – Un attribut qui existe dès que sa classe est évoquée indépendamment de toute instanciation

5. Lequel des éléments suivants n'est pas un type de données valide dans .Net ?A – DoubleB – Int32C – Int16D – Aucune des réponses

6. La règle de style CSS suivante « p.ville { … } » s'applique :A – Aux paragraphes <p value="ville">…</p>B – Aux paragraphes <p><span "ville">…</span></p>C – Aux paragraphes <p class="ville">…</p>D – Aux paragraphes <p id="ville">…</p>

7. Une procédure stockée est :A – Une tâche planifiéeB – Une série d'instructions SQL(Les propositions C et D sont coupées sur la copie ; seule la fin « … des tâches répétitives » est lisible.)

8. L'EDI, l'acronyme de « Electronic Data Interchange » désigne :A – Un système qui permet à deux partenaires d'échanger des informationsB – Un système de communication par courrier, mails et faxC – Un système de contrôle de tractionD – Aucune des réponses

9. Spring Boot embarque par défaut un serveur d'application :A – JettyB – TomcatC – Websphere

10. La norme ISO 27001 permet de :A – Mettre en œuvre et améliorer le système de management de la sécuritéB – Définir un ensemble de « bonnes pratiques » en matière de sécuritéC – Définir des lignes directrices relatives à la gestion des risques de sécurité

11. Laquelle des affirmations suivantes sont correctes :A – Le développement agile est géré en unités de « sprints »B – DevOps correspond aux développements, tests et livraison constantsC – L'intégration continue est une pratique qui nécessite que les développeurs intègrent le code dans un référentiel partagé de code source d'une manière continueD – Toutes ces réponses

12. Dans la méthode agile Scrum, quel est le rôle du Scrum Master :A – Faire du développement informatiqueB – Gérer les projets des clients grands comptesC – Maintenir une bonne ambiance au sein de l'équipeD – Aider une équipe à appliquer les méthodes agiles

Partie 2 : Questions (7 points)

Afin d'assurer les missions qui lui sont dévolues, l'Agence Nationale de la Sécurité Routière a pour objectif stratégique d'accompagner les citoyens, les usagers et les partenaires. En particulier, elle devrait apporter le conseil et l'expertise à ces derniers pour mieux intégrer la sécurité routière dans leur environnement.

Dans ce contexte, la NARSA veut élaborer des échanges de données dans les deux sens, avec ses différents partenaires, en interconnectant son Système d'Information avec les différents Systèmes de ces derniers à travers une architecture applicative performante et sécurisée permettant de tenir en considération de ce qui suit :- Assurer un faible couplage entre les différents Systèmes interconnectés ;- Assurer la possibilité d'un déploiement continu afin de tenir compte des mises à jour et nouvelles fonctionnalités rapidement et facilement ;- Assurer l'indépendance entre les différents Systèmes interconnectés par rapport aux technologies utilisées.

1. Spécifiez le type d'architecture proposé, le protocole d'échange adopté et justifiez votre choix. (1,5 point)

2. Proposez des mesures applicatives et organisationnelles permettant de sécuriser l'architecture proposée. (1,5 point)

3. Définir les notions suivantes : a. REST ; b. SOAP ; c. JSON ; d. JWT. (2 points)

4. Citer quelques outils utilisés pour tester les services web. (1 point)

5. Quels sont les codes réponses HTTP que vous connaissez, et quelle est leur signification ? (1 point)

Partie 3 : Étude de cas (7 points)

En vue de s'affranchir de la saisie manuscrite sur papier des données relatives aux infractions et d'améliorer l'efficience et garantir un meilleur suivi de l'activité de contrôle routier, la NARSA souhaite automatiser le processus de contrôle effectué par les agents de contrôle routier en mettant en place une application mobile qui répond à ce besoin. Ladite application sera installée sur des tablettes connectées à des lecteurs de carte à puce (la carte grise et le permis de conduire électroniques).

Lors de la constatation d'une infraction, l'agent de contrôle établit un procès-verbal (PV) au nom du conducteur du véhicule au moment de l'infraction.

Après authentification de l'agent de contrôle, ce dernier doit géolocaliser le lieu de l'infraction puis introduire le support de la carte grise pour consulter les informations relatives au véhicule et son propriétaire.

Un véhicule est identifié par son numéro d'immatriculation et caractérisé par le genre, le type et le numéro de châssis.

Le propriétaire du véhicule peut être une personne physique identifiée par son numéro de la carte nationale d'identité électronique CNIE, nom, prénom et adresse ou une personne morale caractérisée par sa raison sociale et son adresse.

Les informations relatives au conducteur du véhicule au moment de la constatation de l'infraction seront lues à partir de la puce du permis de conduire. Ce dernier est identifié par un numéro unique et il a une date de fin de validité et un solde de point.

[…] (une ligne est coupée sur la copie) l'agent de contrôle […] est identifié par un numéro unique et qui concerne une ou plusieurs infractions. Il reprend les informations relatives au véhicule, aux infractions constatées (date, lieu, code d'infraction et le montant de l'amende), au conducteur ainsi que le nom et le prénom de l'agent de contrôle.

Le retrait de points est opéré après chaque infraction sanctionnée de retrait de points sur la base du statut du PV qui peut être modifié suite : au paiement du montant de l'amende (PV payé) ; à une décision judiciaire définitive prononcée par le tribunal compétent (PV jugé).

Un véhicule peut être objet de plusieurs mutations (acte de vente) et ne peut être attribué qu'à un seul propriétaire qui dispose d'un certificat de propriété mentionnant la date d'achat du véhicule.

Questions :

1. Établir le diagramme de classes. (2 points)

2. Modéliser le processus d'établissement d'un procès-verbal par un diagramme de séquence. (2 points)

3. Écrire les requêtes SQL permettant (3 points) : a) d'afficher la liste des infractions sanctionnées par une amende de 700 DH (1 point) ; b) d'afficher tous les procès-verbaux établis suite aux infractions commises par la personne physique propriétaire du permis de conduire numéro « 01/123456 » (1 point) ; c) d'afficher le montant total des amendes relatives aux infractions verbalisées par les agents de contrôle en date du « 26-12-2021 » (1 point).

تصحيح مقترح من فريق KounKour

ليس تصحيحاً رسمياً: حرره مشرفو KounKour.

Corrigé proposé par l'équipe KounKour (aucun corrigé officiel n'est publié). D'autres solutions correctes sont acceptées si elles sont justifiées.

Partie 1 : QCM

Réponses : Q1 C ; Q2 C ; Q3 B ; Q4 C ; Q5 D ; Q6 C ; Q7 B (une série d'instructions SQL enregistrée sur le serveur de bases de données) ; Q8 A ; Q9 B ; Q10 A ; Q11 A-B-C-D ; Q12 D. Les explications sont dans la série interactive du même dossier.

Partie 2 : Questions

1. Architecture orientée services, de préférence en microservices exposés par des API REST (échanges JSON sur HTTPS), derrière une passerelle d'API. Justification : faible couplage (les partenaires ne dépendent que du contrat d'interface), indépendance technologique (HTTP et JSON sont universels), déploiement continu (services indépendants, conteneurs, chaîne d'intégration et de livraison continues).

2. Mesures applicatives : HTTPS / TLS, authentification et autorisation par OAuth 2.0 et jetons JWT, passerelle d'API avec quotas et limitation de débit, validation des entrées, chiffrement des données sensibles, journalisation et supervision, tests de sécurité. Mesures organisationnelles : politique de sécurité, conventions d'échange avec les partenaires, gestion des accès et des clés, revue de code, plan de réponse aux incidents, sensibilisation.

3. a. REST : style d'architecture fondé sur HTTP, où chaque ressource a une adresse (URI) et est manipulée par les verbes GET, POST, PUT, DELETE, sans état côté serveur. b. SOAP : protocole d'échange de messages XML normalisé, décrit par un WSDL, avec des extensions (WS-Security). c. JSON : format texte léger d'échange de données (objets, tableaux, valeurs). d. JWT : jeton signé (en-tête, contenu, signature), encodé en base64, qui transporte l'identité et les droits d'un utilisateur.

4. Outils : Postman, SoapUI, Insomnia, curl, JMeter (charge), Swagger / OpenAPI.

5. Codes HTTP : 1xx information ; 2xx succès (200 OK, 201 créé, 204 sans contenu) ; 3xx redirection (301 déplacé définitivement, 302 trouvé, 304 non modifié) ; 4xx erreur du client (400 requête invalide, 401 non authentifié, 403 interdit, 404 introuvable, 409 conflit) ; 5xx erreur du serveur (500 erreur interne, 502 passerelle invalide, 503 service indisponible).

Partie 3 : Étude de cas

1. Diagramme de classes (proposition) : Agent (numAgent, nom, prénom, login) ; Véhicule (immatriculation, genre, type, numChâssis) ; Propriétaire (abstraite : adresse), spécialisée en PersonnePhysique (CNIE, nom, prénom) et PersonneMorale (raisonSociale) ; Mutation (dateAchat, numCertificat) entre Véhicule et Propriétaire (un véhicule a plusieurs mutations, un seul propriétaire courant) ; Permis (numPermis, dateFinValidité, soldePoints) rattaché à une PersonnePhysique ; PV (numPV, dateHeure, latitude, longitude, statut : en attente, payé, jugé) établi par un Agent, pour un Véhicule et un Permis ; Infraction (code, libellé, montantAmende, pointsRetirés) ; association PV (1..*) – Infraction (0..*).

2. Diagramme de séquence : Agent → Application : s'authentifier ; Application → Serveur : vérifier les identifiants ; Agent → Application : géolocaliser ; Application → Lecteur : lire la carte grise ; Application → Serveur : rechercher véhicule et propriétaire ; Application → Lecteur : lire le permis ; Agent → Application : saisir les infractions ; Application → Serveur : créer le PV ; Serveur → Application : numéro du PV ; Application → Agent : PV affiché et transmis.

3. Requêtes SQL (tables PV, INFRACTION, PV_INFRACTION, PERMIS) :

a) SELECT * FROM INFRACTION WHERE montant_amende = 700;

b) SELECT PV.* FROM PV JOIN PERMIS ON PV.num_permis = PERMIS.num_permis WHERE PERMIS.num_permis = '01/123456';

c) SELECT SUM(I.montant_amende) AS total_amendes FROM PV JOIN PV_INFRACTION PI ON PV.num_pv = PI.num_pv JOIN INFRACTION I ON I.code = PI.code WHERE PV.date_pv = '2021-12-26';

في نفس التخصص : Ingénieurs : systèmes, réseaux, développement, sécurité

مباريات مفتوحة

كل دعامات الملف « تقنيو ومهندسو المعلوميات »