# Réalisation d'un Cahier des Charges Techniques (CDT)
## Formation Master Informatique - Expert Systèmes
### Introduction
Le cahier des charges techniques est un document essentiel qui définit les spécifications techniques détaillées d'un projet informatique. Il traduit les besoins fonctionnels en exigences techniques concrètes et sert de référence tout au long du projet.
### 1. Objectifs pédagogiques
À la fin de ce cours, les étudiants seront capables de :
- Analyser les besoins fonctionnels pour en déduire les exigences techniques
- Structurer et rédiger un CDT professionnel
- Identifier et documenter les contraintes techniques
- Définir l'architecture technique d'une solution
- Établir les critères de validation technique
# 2. Structure du CDT
## 2.1 Présentation du contexte technique
## A. Description de l'environnement technique existant
### Infrastructure actuelle
- Inventaire détaillé des serveurs (physiques et virtuels)
- Caractéristiques techniques (CPU, RAM, stockage)
- Systèmes d'exploitation et versions
- Rôles des serveurs (production, préproduction, développement)
- Architecture réseau
- Topologie du réseau
- Bande passante disponible
- Équipements réseau critiques
- Solutions de stockage
- Types de stockage (SAN, NAS, locale)
- Capacités disponibles
- Performances actuelles
### Applications existantes
- Cartographie des applications
- Versions déployées
- Interdépendances
- Flux de données
- Bases de données
- Types et versions
- Volumétrie
- Schémas principaux
- Middlewares utilisés
- Serveurs d'applications
- Message brokers
- Outils de monitoring
## B. Identification des systèmes connexes
### Systèmes internes
- Applications métier connectées
- Points d'interface existants
- Protocoles utilisés
- Volumes de données échangés
- Outils transverses
- Système de monitoring
- Solution de sauvegarde
- Outils de déploiement
### Systèmes externes
- Applications tierces
- Interfaces exposées
- Contrats de service
- Contraintes d'utilisation
- Services cloud utilisés
- Types de services (IaaS, PaaS, SaaS)
- Limitations techniques
- SLA existants
## C. Contraintes techniques héritées
### Contraintes d'infrastructure
- Limitations matérielles
- Capacités maximales
- Points de saturation connus
- Obsolescence programmée
- Contraintes réseau
- Limitations de bande passante
- Latences existantes
- Zones de fragilité
### Contraintes applicatives
- Dette technique
- Composants obsolètes
- Code legacy à maintenir
- Dépendances critiques
- Contraintes de versions
- Versions imposées
- Incompatibilités connues
- Cycles de mise à jour
### Contraintes de sécurité
- Politiques de sécurité
- Règles d'authentification
- Gestion des accès
- Chiffrement requis
- Conformité
- Normes à respecter
- Certifications requises
- Audits périodiques
## D. Normes et standards à respecter
### Standards techniques
- Standards d'architecture
- Patterns imposés
- Framework de référence
- Bonnes pratiques internes
- Standards de développement
- Langages autorisés
- Conventions de code
- Outils de qualité
### Normes métier
- Normes sectorielles
- Réglementations spécifiques
- Standards professionnels
- Certifications requises
- Normes qualité
- ISO 9001
- ISO 27001
- Autres certifications
### Standards d'entreprise
- Charte technique
- Outils standardisés
- Processus imposés
- Documentation requise
- Gouvernance IT
- Processus de validation
- Comités techniques
- Cycles de décision
## E. Documentation requise
### Documentation technique
- Architecture détaillée
- Diagrammes techniques
- Matrices de flux
- Cartographies applicatives
- Procédures opérationnelles
- Guides d'installation
- Procédures de déploiement
- Plans de reprise
### Documentation de maintenance
- Procédures de maintenance
- Maintenance préventive
- Maintenance corrective
- Gestion des incidents
- Documentation des changements
- Gestion des versions
- Journaux de modifications
- Procédures de rollback
## F. Points d'attention particuliers
### Risques identifiés
- Risques techniques
- Points de défaillance
- Limitations connues
- Zones de fragilité
- Risques de performance
- Goulots d'étranglement
- Pics de charge
- Limites de scalabilité
### Opportunités d'amélioration
- Optimisations possibles
- Améliorations techniques
- Modernisation
- Automatisation
- Évolutions futures
- Roadmap technique
- Migrations prévues
- Montées de version
### Exercice partie 2.1
# Exercice pratique : Analyse du contexte technique
Durée estimée : 2 heures
## Contexte
L'entreprise "MédiSoft" souhaite moderniser son système de gestion des dossiers patients. Vous êtes chargé(e) de rédiger la section "Contexte technique" du CDT pour ce projet.
## Situation actuelle de MédiSoft
- Application existante développée en 2015
- 50 médecins utilisateurs simultanés
- 100,000 dossiers patients
- 3 cliniques connectées
- Croissance prévue : +20% par an
### Infrastructure actuelle
- 2 serveurs physiques (HP ProLiant)
- Windows Server 2016
- 32 GB RAM chacun
- Processeur Intel Xeon
- Base de données SQL Server 2016
- Application client lourd .NET Framework 4.5
- Stockage local de 2TB
- Sauvegarde quotidienne sur bandes
### Intégrations existantes
- Connexion laboratoire d'analyses
- Système de facturation
- Agenda en ligne
- Système d'imagerie médicale
## Mission
1. Analyser et documenter le contexte technique actuel selon la structure vue en cours
2. Identifier les contraintes techniques majeures
3. Lister les normes et standards à respecter
4. Repérer les points d'attention critiques
## Livrables attendus
1. Document structuré présentant le contexte technique (3-4 pages)
2. Schéma de l'architecture technique actuelle
3. Matrice des contraintes techniques
4. Liste des points d'attention prioritaires
## Critères d'évaluation
- Exhaustivité de l'analyse
- Structuration de l'information
- Pertinence des points d'attention
- Qualité des schémas
- Identification des contraintes critiques
## Éléments de corrigé
### 1. Structure attendue du document
#### A. Description de l'environnement technique existant
- Infrastructure serveurs
- Caractéristiques détaillées des serveurs HP ProLiant
- Analyse de la capacité actuelle
- État des systèmes d'exploitation
- Architecture applicative
- Stack technique (.NET)
- Structure de la base de données
- Système de stockage et backup
#### B. Systèmes connexes
- Cartographie des intégrations
- Flux avec le laboratoire
- Interface de facturation
- Système d'agenda
- Système d'imagerie
- Points d'interface
- Protocoles utilisés
- Volumes de données
- Fréquence des échanges
#### C. Contraintes techniques identifiées
- Limitations actuelles
- Client lourd à maintenir
- Version SQL Server obsolète
- Capacité de stockage limitée
- Contraintes de performance
- Temps de réponse actuels
- Gestion de la concurrence
- Pics d'activité
#### D. Normes et standards
- Normes médicales
- RGPD
- HDS (Hébergement de Données de Santé)
- Interopérabilité médicale
- Standards techniques
- Sécurité des données
- Protection des accès
- Traçabilité
### 2. Points d'attention critiques attendus
1. Obsolescence technique
- Windows Server 2016 proche de fin de support
- .NET Framework 4.5 obsolète
- SQL Server 2016 à upgrader
2. Scalabilité
- Croissance de 20% par an à supporter
- Limites des serveurs physiques
- Capacité de stockage insuffisante
3. Sécurité
- Mise en conformité RGPD
- Sécurisation des données médicales
- Authentification forte à implémenter
4. Performance
- Gestion de la concurrence utilisateurs
- Temps de réponse des requêtes
- Performance des intégrations
### 3. Schéma d'architecture attendu
Le schéma doit montrer :
- Les serveurs physiques
- Les composants applicatifs
- Les flux de données
- Les systèmes externes
- Les points d'intégration
- Le système de sauvegarde
# 2.2 Architecture technique
## A. Architecture globale du système
### 1. Principes fondamentaux
- **Découpage en couches**
- Présentation
- Métier
- Données
- Infrastructure
- **Patterns architecturaux**
- Microservices vs Monolithique
- Event-driven vs Request/Response
- CQRS (Command Query Responsibility Segregation)
- Domain-Driven Design (DDD)
- **Qualités architecturales**
- Scalabilité
- Maintenabilité
- Résilience
- Performance
### 2. Vues architecturales
- **Vue logique**
- Organisation des composants
- Dépendances principales
- Flux de données
- **Vue physique**
- Déploiement
- Infrastructure
- Réseaux
- **Vue processus**
- Séquences d'exécution
- Parallélisme
- Synchronisation
## B. Diagrammes techniques
### 1. Diagrammes UML
- **Diagrammes structurels**
- Diagramme de classes
- Diagramme de composants
- Diagramme de déploiement
- Diagramme de packages
- **Diagrammes comportementaux**
- Diagramme de séquence
- Diagramme d'activité
- Diagramme d'état
- Diagramme de cas d'utilisation
### 2. C4 Model
- **Niveau 1 : Context**
- Système global
- Utilisateurs
- Systèmes externes
- **Niveau 2 : Containers**
- Applications
- Bases de données
- File systems
- **Niveau 3 : Components**
- Services
- Modules
- Librairies
- **Niveau 4 : Code**
- Classes
- Tables
- Fonctions
### 3. Autres diagrammes pertinents
- **Diagrammes de flux de données**
- **Diagrammes d'architecture réseau**
- **Diagrammes de sécurité**
- **Matrices de traçabilité**
## C. Description des composants
### 1. Structure de description
- **Identification**
- Nom du composant
- Version
- Responsabilité principale
- **Caractéristiques techniques**
- Langage/Framework
- Dépendances
- Configuration requise
- **Interface publique**
- Services exposés
- Contrats d'interface
- Protocoles supportés
### 2. Documentation des composants
- **Spécifications fonctionnelles**
- Fonctionnalités couvertes
- Règles métier implémentées
- Contraintes spécifiques
- **Spécifications techniques**
- Performance attendue
- Sécurité
- Monitoring
- **Guide d'utilisation**
- Configuration
- Déploiement
- Maintenance
## D. Interfaces et interactions
### 1. Description des interfaces
- **APIs**
- REST/GraphQL
- SOAP
- WebSockets
- **Formats d'échange**
- JSON/XML
- Protobuf
- Messages queue
- **Protocoles**
- HTTP/HTTPS
- gRPC
- AMQP
### 2. Patterns d'interaction
- **Synchrone vs Asynchrone**
- **Publish/Subscribe**
- **Request/Response**
- **Event-driven**
### 3. Gestion des interactions
- **Circuit breaker**
- **Retry policies**
- **Timeout handling**
- **Error handling**
## E. Choix technologiques
### 1. Critères de sélection
- **Adéquation fonctionnelle**
- Couverture des besoins
- Extensibilité
- Flexibilité
- **Performances**
- Capacité de traitement
- Temps de réponse
- Scalabilité
- **Maintenance**
- Support disponible
- Documentation
- Communauté
- **Coûts**
- Licences
- Infrastructure
- Formation
### 2. Justification des choix
- **Arguments techniques**
- Benchmarks
- Tests de charge
- Preuves de concept
- **Analyse des risques**
- Identification
- Impact
- Mitigation
- **Alternatives étudiées**
- Comparaison
- Avantages/Inconvénients
- Raisons du choix final
## F. Bonnes pratiques de documentation
### 1. Principes généraux
- Documentation claire et concise
- Mise à jour régulière
- Versioning de la documentation
- Accessibilité
### 2. Outils recommandés
- Outils de modélisation UML
- Générateurs de documentation
- Wiki technique
- Gestionnaire de versions
### 3. Templates et standards
- Modèles de documentation
- Conventions de nommage
- Standards de représentation
- Formats de livraison
# Exercice pratique : Conception d'architecture technique
Durée estimée : 3 heures
## Contexte
La startup "ShopExpress" souhaite développer une plateforme e-commerce moderne pour la vente de produits locaux. L'application doit gérer 1000 vendeurs, 100 000 clients actifs et un catalogue de 50 000 produits.
## Besoins fonctionnels clés
- Inscription et gestion des vendeurs
- Catalogue produits avec recherche avancée
- Panier d'achat et processus de commande
- Paiement en ligne sécurisé
- Système de notation et avis
- Tableau de bord pour vendeurs
- Application mobile pour les clients
- Notifications en temps réel
## Contraintes techniques
- Haute disponibilité (99.9%)
- Temps de réponse < 2 secondes
- Pic de charge : x5 pendant les soldes
- Conformité RGPD
- Budget infrastructure limité
- Équipe de 5 développeurs
## Mission
1. Concevoir l'architecture technique complète
2. Produire les diagrammes nécessaires
3. Justifier les choix technologiques
## Livrables attendus
### 1. Document d'architecture
- Vue d'ensemble de l'architecture
- Description des composants principaux
- Justification des choix techniques
- Analyse des points critiques
### 2. Diagrammes techniques
- C4 Model niveau 1 (Context)
- C4 Model niveau 2 (Containers)
- Diagramme de composants
- Diagramme de déploiement
### 3. Spécifications des interfaces
- API REST pour le front-end
- API mobile
- Intégration paiement
- Système de notification
### 4. Choix technologiques justifiés
- Stack technique front-end
- Stack technique back-end
- Solution de base de données
- Solution de cache
- Messagerie
## Éléments de corrigé
### 1. Architecture proposée
#### Front-end
- Application web React avec Next.js
- Application mobile React Native
- État global avec Redux
- PWA pour le mode hors ligne
#### Back-end
- API Gateway (Nginx)
- Microservices en Node.js
- Base de données PostgreSQL
- Cache Redis
- Message broker RabbitMQ
- Elasticsearch pour la recherche
#### Infrastructure
- Conteneurisation Docker
- Orchestration Kubernetes
- CDN pour les assets
- Stockage objet S3
- Monitoring ELK Stack
### 2. Justification des choix
#### React + Next.js
- Performance optimale
- SEO friendly
- Rendu côté serveur
- Grande communauté
- Facilité de recrutement
#### Microservices
- Scalabilité indépendante
- Déploiement flexible
- Isolation des domaines
- Maintenance facilitée
- Évolution progressive
#### PostgreSQL
- Fiabilité prouvée
- Transactions ACID
- Scalabilité horizontale
- Support JSON natif
- Coût maîtrisé
### 3. Points d'attention critiques
#### Performance
- Mise en cache stratégique
- Optimisation des requêtes
- CDN pour les assets
- Index de recherche
- Pagination efficace
#### Scalabilité
- Architecture sans état
- Cache distribué
- Sharding base de données
- Auto-scaling Kubernetes
- Queue de messages
#### Sécurité
- Authentication JWT
- Rate limiting
- Validation des données
- Chiffrement TLS
- Audit logs
## Critères d'évaluation
- Cohérence de l'architecture
- Pertinence des choix techniques
- Qualité des diagrammes
- Prise en compte des contraintes
- Justification des décisions
# 2.3 Spécifications techniques détaillées
## A. Exigences matérielles
### 1. Infrastructures serveurs
- **Serveurs de production**
- Capacité processeur (nombre de cœurs, fréquence)
- Mémoire RAM (taille, type, vitesse)
- Stockage (capacité, type, IOPS)
- Redondance et haute disponibilité
- **Serveurs de développement/test**
- Configuration minimale
- Environnements virtualisés
- Outils de test de charge
- **Équipements réseau**
- Bande passante requise
- Latence maximale acceptable
- Équipements spécifiques (load balancers, firewalls)
### 2. Postes clients
- **Configuration minimale**
- Processeur
- Mémoire
- Espace disque
- Résolution d'écran
- **Configuration recommandée**
- Spécifications optimales
- Périphériques supportés
- Configurations mobiles
## B. Exigences logicielles
### 1. Systèmes d'exploitation
- **Côté serveur**
- Versions supportées
- Patches requis
- Configurations spécifiques
- **Côté client**
- OS compatibles
- Versions minimales
- Dépendances système
### 2. Logiciels requis
- **Serveurs d'applications**
- Types et versions
- Modules nécessaires
- Configuration requise
- **Bases de données**
- Systèmes supportés
- Versions compatibles
- Extensions requises
- **Middlewares**
- Message brokers
- Caches
- Serveurs web
### 3. Frameworks et bibliothèques
- **Côté serveur**
- Frameworks backend
- ORM
- Bibliothèques utilitaires
- **Côté client**
- Frameworks frontend
- Bibliothèques UI
- Outils de build
## C. Spécifications des interfaces
### 1. Interfaces utilisateur
- **Web**
- Compatibilité navigateurs
- Responsive design
- Accessibilité
- **Mobile**
- Versions OS supportées
- Tailles d'écran
- Mode offline
### 2. Interfaces applicatives
- **API REST**
- Endpoints
- Méthodes HTTP
- Authentification
- Rate limiting
- **Services web**
- Contrats SOAP
- Description WSDL
- Sécurisation
### 3. Interfaces système
- **Intégration OS**
- Accès système fichiers
- Services système
- Droits requis
- **Interfaces matérielles**
- Ports utilisés
- Protocoles spécifiques
- Drivers nécessaires
## D. Protocoles de communication
### 1. Protocoles réseau
- **HTTP/HTTPS**
- Versions supportées
- Configuration TLS
- Certificates
- **WebSocket**
- Handshake
- Heartbeat
- Reconnexion
### 2. Protocoles applicatifs
- **REST**
- Conventions de nommage
- Versioning
- Pagination
- **gRPC**
- Définitions protobuf
- Streaming
- Intercepteurs
### 3. Messagerie
- **Message queuing**
- Formats de messages
- Quality of Service
- Dead Letter Queue
- **Pub/Sub**
- Topics
- Abonnements
- Rétention
## E. Format des données
### 1. Formats d'échange
- **JSON**
- Schémas
- Validation
- Conventions
- **XML**
- XSD
- Namespaces
- Transformation
### 2. Stockage
- **Base de données**
- Schémas
- Types de données
- Indexation
- **Fichiers**
- Formats supportés
- Organisation
- Nommage
## F. Performances attendues
### 1. Métriques clés
- **Temps de réponse**
- Latence moyenne
- Percentile 95
- Timeout
- **Débit**
- Transactions par seconde
- Bande passante
- Concurrence
### 2. Scalabilité
- **Charge**
- Utilisateurs simultanés
- Volume de données
- Taux de croissance
- **Resources**
- CPU/RAM
- Stockage
- Network
## G. Sécurité technique
### 1. Authentification/Autorisation
- **Mécanismes**
- OAuth/OIDC
- JWT
- SSO
- **Gestion des accès**
- RBAC
- ACL
- Audit
### 2. Protection des données
- **Chiffrement**
- En transit
- Au repos
- Clés
- **Validation**
- Entrées utilisateur
- Injection
- XSS
### 3. Infrastructure
- **Réseau**
- Firewalls
- WAF
- VPN
- **Monitoring**
- Logs
- Alertes
- Incidents
# Exercice pratique : Spécifications techniques détaillées
Durée estimée : 2h30
## Contexte
Une école de formation professionnelle souhaite mettre en place une plateforme d'apprentissage en ligne (LMS - Learning Management System) pour :
- 5000 étudiants actifs
- 200 formateurs
- 300 cours simultanés
- Contenus vidéo HD
- Examens en ligne
- Classes virtuelles
## Besoins spécifiques
- Disponibilité 24/7
- Support multi-appareils
- Streaming vidéo fluide
- Examens sécurisés
- Visioconférence jusqu'à 50 participants
- Stockage des travaux étudiants
## Mission
Rédiger les spécifications techniques détaillées pour cette plateforme en couvrant tous les aspects vus en cours.
## Livrables attendus
### 1. Exigences matérielles
- Serveurs (production et backup)
- Stockage
- Réseau
- Configuration minimale clients
### 2. Exigences logicielles
- Stack technique complète
- Dépendances
- Compatibilité navigateurs/OS
### 3. Interfaces et protocoles
- API nécessaires
- Formats d'échange
- Protocoles de streaming
### 4. Performance et sécurité
- Métriques de performance
- Mesures de sécurité
- Plan de monitoring
## Éléments de corrigé
### 1. Exigences matérielles
#### Serveurs de production
- 4 serveurs application :
- CPU : 16 cœurs, 3.0 GHz
- RAM : 64 GB
- SSD : 500 GB
- 2 serveurs base de données :
- CPU : 32 cœurs, 3.5 GHz
- RAM : 128 GB
- SSD : 2 TB
- Serveur média :
- CPU : 8 cœurs
- RAM : 32 GB
- Stockage : 10 TB
#### Configuration client minimale
- CPU : Dual core 2.0 GHz
- RAM : 4 GB
- Bande passante : 5 Mbps
- Webcam : 720p
- Micro : Qualité voix
### 2. Exigences logicielles
#### Serveurs
- OS : Linux Ubuntu 22.04 LTS
- Node.js 20.x
- PostgreSQL 16
- Redis 7.x
- Nginx 1.24
- Docker + Kubernetes
#### Clients
- Navigateurs :
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- OS Mobile :
- iOS 14+
- Android 10+
### 3. Spécifications interfaces
#### API REST
- Authentication : OAuth 2.0 + JWT
- Endpoints :
- /api/v1/courses
- /api/v1/sessions
- /api/v1/assignments
- /api/v1/exams
- Format : JSON
- Compression : gzip
#### Streaming
- Protocole : HLS
- Qualités : 720p, 1080p
- Adaptation débit
- WebRTC pour visio
### 4. Performance
#### Métriques
- Temps de réponse API < 200ms
- Latence vidéo < 2s
- Uptime : 99.9%
- Support 1000 utilisateurs simultanés
#### Monitoring
- Métriques serveur
- Logs applicatifs
- Alerting
- Dashboard temps réel
### 5. Sécurité
#### Authentification
- SSO
- 2FA pour examens
- Session timeout : 2h
- Rate limiting
#### Protection données
- Chiffrement TLS 1.3
- Stockage chiffré
- Sauvegarde chiffrée
- Audit logs
## Critères d'évaluation
- Exhaustivité des spécifications
- Cohérence technique
- Précision des métriques
- Justification des choix
- Prise en compte des contraintes
#### 2.4 Contraintes techniques
- Compatibilité système
- Scalabilité
- Performances
- Sécurité
- Maintenance
- Sauvegarde et reprise
#### 2.5 Infrastructure technique
- Configuration serveurs
- Réseau
- Stockage
- Sauvegardes
- Surveillance système
### 3. Méthodologie de rédaction
#### 3.1 Phase préparatoire
1. Analyse du cahier des charges fonctionnel
2. Identification des contraintes techniques
3. Études de faisabilité technique
4. Benchmarks technologiques
#### 3.2 Phase de rédaction
1. Organisation de l'information
2. Utilisation de schémas et diagrammes
3. Description précise des spécifications
4. Validation technique progressive
#### 3.3 Bonnes pratiques
- Utiliser un vocabulaire technique précis
- Être exhaustif mais concis
- Structurer l'information de manière logique
- Inclure des schémas explicatifs
- Définir des métriques mesurables
- Anticiper les évolutions futures
### 4. Validation du CDT
#### 4.1 Critères de validation
- Cohérence technique
- Exhaustivité
- Faisabilité
- Mesurabilité des exigences
- Traçabilité
#### 4.2 Processus de validation
1. Revue technique par pairs
2. Validation par experts techniques
3. Tests de faisabilité
4. Validation finale avec les parties prenantes
### 5. Exercice pratique
#### Énoncé
Réaliser le CDT pour un projet d'implementation d'une application web de gestion de stock avec les caractéristiques suivantes :
- Interface web responsive
- Base de données relationnelle
- API REST
- Authentification SSO
- Génération de rapports PDF
- Intégration avec un système ERP existant
#### Livrables attendus
1. Architecture technique complète
2. Spécifications des composants
3. Schémas techniques
4. Exigences de performance
5. Plan de déploiement
6. Stratégie de backup
### 6. Évaluation
#### Critères d'évaluation
- Qualité et précision des spécifications techniques
- Pertinence des choix architecturaux
- Exhaustivité des contraintes identifiées
- Clarté des schémas et documentation
- Faisabilité des solutions proposées
- Prise en compte des aspects critiques (sécurité, performance, scalabilité)
### Conclusion
La réalisation d'un CDT est un exercice rigoureux qui demande à la fois des compétences techniques pointues et une capacité à communiquer clairement des spécifications complexes. La qualité du CDT impacte directement le succès du projet d'implémentation.
### Ressources complémentaires
- Templates de CDT
- Exemples de diagrammes UML
- Outils de modélisation recommandés
- Documentation de référence