Une société de développement (Web, mobile, applications…) souhaite disposer en interne d'un outil permettant :
L'application sera accessible en interne (Intranet destiné aux équipes de développement) mais aussi en externe, pour permettre au client commanditaire d'un projet de consulter l'avancement de celui-ci.
Les utilisateurs sont :
La connexion à l'application se fera avec email et mot de passe.
La seule autre information retenue sur les utilisateurs est leur identité :
Composée du nom et du prénom pour une personne physique, ou de la raison sociale pour une entreprise.
Les droits d'accès sont gérés par l'intermédiaire d'ACL (Control Access List).
Chaque utilisateur dispose d'un rôle, qui lui attribue des droits de faire (actions) sur les ressources de l'applications (contrôleurs).
L'application permet le suivi de projets.
Les projets sont baptisés (ils disposent d'un nom), et sont décrits par un bref commentaire.
Sont également mémorisés leur date de lancement et la date de fin prévue.
Chaque projet est découpé en cas d'utilisation (eux aussi nommés) correspondant à une fonctionnalité de l'application future.
Les cas d'utilisation sont répartis entre développeurs dans la phase d'analyse fonctionnelle : chaque cas est pris en charge par un développeur, ce qui n'empêche pas la collaboration sur un même sujet. On estime ensuite le poids que pèse le cas d'utilisation dans le cadre de la réalisation du projet, en pourcentage du travail global à réaliser dans le cadre du projet.
Exemple : On estime que la réalisation du cas “Connexion à l'application” représente 5% de la réalisation du projet.
Chaque jour, ou le plus régulièrement possible, les développeurs en charge de cas d'utilisation sur un projet doivent saisir les tâches relatives au cas qu'ils ont accomplies. Ces tâches, bien que prévisibles parfois, n'ont pas été saisies avant. Le développeur leur associe un degré d'avancement, exprimant en % ce que la tâche a apporté dans la réalisation du cas. Le pointage des tâches doit mentionner leur date de réalisation.
Que l'on soit membre de l'équipe de développement, ou client, il est possible de laisser un message sur la page relative au suivi d'un projet.
Les messages ne sont pas destinés à une personne en particulier. Un message peut par contre être ensuite accompagné d'un fil de discussion.
Les messages sont composés d'un objet, d'un contenu, d'un auteur, d'une date et heure d'émission, et éventuellement de leur fil de discussion (le message auquel ils sont rattachés.
Les membres d'une équipe affectés à un projet peuvent consulter :
Chaque membre (en interne)ne peut modifier que les informations qui le concernent.
Les clients peuvent consulter :
Faire un fork du projet : https://github.com/jcheron/increase.git
Clonez le ensuite pour travailler en local (attention de bien le mettre dans le root web).
Créer un projet (phpStorm) à cet emplacement.
Intégrer phalcon-jquery dans le projet, et l'utiliser pour les requêtes Ajax ou l'intégration de composants Bootstrap.
Les requêtes suivantes sont à réaliser en Ajax, les opérations liées à la connexion/déconnexion et vérification utilisateur sont à placer dans le contrôleur AuthController
L'accès à cette page n'est possible que pour un utilisateur connecté (on utilisera la méthode beforeExecuteRoute du contrôleur pour effectuer le contrôle d'accès.
A l'adresse user/projects/:idUser, on souhaite afficher la liste des projets d'un client tel que celui-ci pourra la consulter (ce sera ensuite le client connecté).
L'avancement est calculé de la façon suivante :
Soit le projet composé des uses cases suivants :
use case | poids | Avancement |
---|---|---|
UC-1 | 20 | 50% |
UC-2 | 10 | 100% |
UC-1 | 20 | 0% |
On exprime le poids de chaque UC en % du total
use case | poids en % | Avancement |
---|---|---|
UC-1 | 40% | 50% |
UC-2 | 20% | 100% |
UC-1 | 40% | 0% |
L'avancement du projet est de 40%,
Avancement projet = somme sur les uc des (poids relatif*avancement)
On considère qu'il y a retard dans l'avancement d'un projet si le pourcentage d'avancement est inférieur au pourcentage de temps écoulé.
Pour apprécier les éventuels retards ou avances dans l'avancement, on utilise les codes couleur suivants sur la progressBar d'avancement :
Couleur /classe | Signification |
---|---|
<fc #5CB85C>Vert/success</fc> | % d'avancement>= % Temps écoulé |
<fc #F0AD4E>Orange/warning</fc> | % d'avancement< % Temps écoulé |
<fc #D9534F>Rouge/danger</fc> | dateFinPrevue dépassée |
L'ouverture d'un projet par le click sur l'un des boutons Ouvrir doit se faire en Ajax.
A l'adresse user/project/:id, on souhaite afficher le projet dont l'id est passé en paramètre, conséquence de l'ouverture mentionnée précédemment. Toutes les informations affichées sont en lecture.
La zone Equipe sera chargée en Ajax au chargement de la page dans une div #detailProject, à partir de l'adresse project/equipe/:id ou id est l'identifiant du projet.
Elle contient la liste des développeurs affectés au projet (par des cas d'utilisation). Le renseignement poids désigne le poids en % que représente l'intervention du dévelopeur dans le cadre du projet, compte tenu des uses cases dans lesquels il intervient, et du poids de ceux-ci.
Exemple sur un projet :
use case | poids | Développeur |
---|---|---|
UC-1 | 20 | John DOE |
UC-2 | 10 | John DOE |
UC-1 | 20 | Martin SMITH |
John DOE intervient sur UC-1 et UC-2 qui pésent (20+10)/(20+10+20) = 30/50 = 60%
Son poids dans le projet est de 60%, 40% pour SMITH.
La zone message devient visible sur click du bouton #btnMessages, et affiche les messages liés au projet : project/messages/:id
Certains messages appartiennent à un fil de discussion (ils ont été émis en réponse à un autre message ⇒ clé étrangère idFil dans la table message) :
Un bouton doit permettre de fermer le projet, et de retourner à la liste des projets du client (en ajax/Jquery)