Contexte de la situation professionnelle
Le besoin
Le comité d’entreprise de GSB permet à l’ensemble des collaborateurs du groupe de bénéficier de conditions attractives lors de l’achat de produits d’épicerie fine auprès de la Société Northwind.
Les objectifs
A cet effet, le comité d’entreprise GSB nous demande de développer une application pour gérer les commandes des collaborateurs du groupe GSB.
L’existant
L’équipe projet a déjà procédé à l’analyse de l’expression des besoins. Cette analyse a permis d’élaborer la modélisation des données. Le résultat de ce travail vous est fourni ci-après :
Environnement de développement
IDE mis en œuvre
Microsoft Visual Studio Entreprise 2017
Microsoft Visual Studio est une suite de logiciels de développement pour Windows et Mac OS conçue par Microsoft. La dernière version s’appelle Visual Studio 2017.
Visual Studio est un ensemble complet d’outils de développement permettant de générer des applications web ASP.NET, des applications bureautiques et des applications mobiles. Visual Basic, Visual C++, Visual C# utilisent tous le même environnement de développement intégré (IDE), qui leur permet de partager des outils et facilite la création de solutions faisant appel à plusieurs langages. Par ailleurs, ces langages permettent de mieux tirer parti des fonctionnalités du Framework .NET, qui fournit un accès à des technologies clés simplifiant le développement d’applications web ASP.
Langage(s) utilisé(s)
C#
C# (C sharp en anglais) est un langage de programmation orienté objet, commercialisé par Microsoft depuis 2002 et destiné à développer sur la plateforme Microsoft .NET.
Il est dérivé du C++ et très proche du Java dont il reprend la syntaxe générale ainsi que les concepts, y ajoutant des notions telles que la surcharge des opérateurs. Il est utilisé notamment pour développer des applications Web sur la plateforme ASP.NET.
LINQ (Sugar Syntax – Méthodes extension – Expression Lambda)
LINQ (Language-Integrated Query) est le nom d’un ensemble de technologies basées sur l’intégration de fonctions de requête directement dans le langage C#. En règle générale, les requêtes de données sont exprimées comme de simples chaînes, sans vérification de type au moment de l’exécution.
Sugar Syntax est une expression imaginée par Peter J. Landin pour désigner les extensions à la syntaxe d’un langage de programmation qui :
ne modifient pas son expressivité,
le rendent plus agréable à écrire comme à lire.
Le Sugar Syntax exprime le fait de donner au programmeur des possibilités d’écriture plus succinctes ou plus proches d’une notation usuelle.
L’expression Lambda de requête est écrite selon une syntaxe de requête déclarative. En utilisant la syntaxe de requête, il est possible d’effectuer des opérations de filtrage, de classement et de regroupement sur des sources de données avec un minimum de code.
SQL
SQL (Structured Query Language, en français langage de requête structurée) est un langage informatique normalisé servant à exploiter des bases de données relationnelles. La partie langage de manipulation des données de SQL permet de rechercher, d’ajouter, de modifier ou de supprimer des données dans les bases de données relationnelles.
Environnement d’exploitation
Windows 10.x
Windows 10 est un système d’exploitation de la famille Windows développé par la société américaine Microsoft. Officiellement présenté le 30 septembre 2014, il est disponible publiquement depuis le 29 juillet 2015
Environnement de travail collaboratif
Ce projet a été conçu en mode collaboratif, partagé sur la plateforme GitHub.
Github est un service web d’hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de version Git. Le site assure également un contrôle d’accès et des fonctionnalités destinées à la collaboration comme le suivi des bugs, les demandes de fonctionnalités, la gestion de tâches et un wiki pour chaque projet.
Framework utilisé(s)
Application ASP.NET
ASP.NET est un Framework permettant de générer à la demande des pages web, lancée par Microsoft en juillet 2000, et utilisée pour mettre en œuvre des applications Web. Il s’agit d’une évolution majeure d’Active Server Pages (ASP, alias Classic ASP), par laquelle cette technique a été incorporée dans la plateforme Microsoft .NET.
Répartition des rôles
Couche de persistance des données : SQL Server 2016
Elle correspond à la gestion de la persistance des données réfère au mécanisme responsable de la sauvegarde et de la restauration des données. Ces mécanismes font en sorte qu’un programme puisse se terminer sans que ses données et son état d’exécution ne soient perdus.
Ces informations de reprise peuvent être enregistrées sur disque, éventuellement sur un serveur distant (un serveur de bases de données relationnelles, par exemple).
Du fait de la différence de modèles entre les bases de données et les langages de programmation (notamment les langages objet) la notion de correspondance entre modèles (en anglais : mapping) est centrale.
Couche d’accès aux données et couche métier : Entity Framework 6.x
Elle correspond à la partie fonctionnelle de l’application, celle qui implémente la logique métier, et qui décrit les opérations que l’application opère sur les données en fonction des requêtes des utilisateurs, effectuées au travers de la couche de présentation.
Les différentes règles de gestion et de contrôle du système sont mises en œuvre dans cette couche.
La couche d’accès aux données offre des services applicatifs et métier à la couche de présentation. Pour fournir ces services, elle s’appuie, le cas échéant, sur les données du système, accessibles au travers des services de la couche supérieure. En retour, elle renvoie à la couche de présentation les résultats qu’elle a calculés.
Couches présentation : Windows Forms
Elle correspond à la partie visible et interactive de l’application pour les utilisateurs. On parle d’interface homme-machine. Elle peut être réalisée par une application graphique ou textuelle. Elle peut aussi être représentée en HTML pour être exploitée par un navigateur Web.
La couche de présentation relaie les requêtes de l’utilisateur à destination de la couche de traitement, et en retour lui présente les informations renvoyées par les traitements de cette couche. Il s’agit donc ici d’un assemblage de services métiers et applicatifs offerts par la couche supérieure.
Intérêt de cette architecture (trois-tiers)
L’objectif premier d’un système d’information quel qu’il soit est de permettre à plusieurs utilisateurs d’accéder aux mêmes informations. Pour cela il faut donc regrouper les informations utilisées par l’entreprise.
En terme technique, cela se traduit par la centralisation des données au sein d’une base de données. L’évolution des systèmes d’information s’est donc basée sur une meilleure subdivision entre les tâches à réaliser pour permettre l’exploitation de ces données par les utilisateurs finaux. Ceci permet de structurer plus efficacement les informations ce qui entraîne à la fois une meilleure organisation de l’entreprise et une meilleure efficacité technique.
Cette subdivision a été facilitée par l’avènement des technologies orientées objets qui s’appliquent aussi bien au modèle client-serveur qu’au modèle Internet. Ces technologies permettent une séparation entre les différents composants du système. Il devient alors possible de réaliser de nouvelles architectures permettant la mise à disposition des informations sous différentes formes tout en diminuant les temps de développement.
Entity Framework
Principes d’un ORM
Un mapping objet-relationnel (en anglais object relational mapping ou ORM) est un type de programme informatique qui se place en interface entre un programme applicatif et une base de données relationnelle pour simuler une base de données orienté objet. Ce programme définit des correspondances entre les schémas de la base de données et les classes du programme applicatif. On pourrait le désigner par-là, « comme une couche d’abstraction entre le monde objet et monde relationnel». Du fait de sa fonction, on retrouve ce type de programme dans un grand nombre de Framework sous la forme de composant ORM qui a été soit développé, soit intégré depuis une solution externe.
Les Classes Partielles
Mécanisme de classes partielles
Il est possible de fractionner la définition d’une classe, d’une interface ou d’une méthode entre plusieurs fichiers sources. Chaque fichier source contient une section de la définition de méthode ou de type, et toutes les parties sont combinées au moment où l’application est compilée.
Doter les entités concernées par l’ajout de nouvelles propriété (Amount, FullName, GetAgeFromBirthDay)
DataBinding
Principes
Le databinding se traduit en français par « liaison de données ». Il s’agit de la possibilité de lier un contrôle à des données. Le principe consiste à indiquer à un contrôle où il peut trouver sa valeur et celui-ci se débrouille pour l’afficher.
Le binding permet de positionner automatiquement des
valeurs aux propriétés des contrôles en fonction du contenu de la source de
données. En effet, il est très fréquent de mettre des valeurs dans des TextBox
, dans des TextBlock
ou dans
des ListBox
. Le binding est
là pour faciliter tout ce qui peut être automatisable et risque d’erreurs. De
plus, si la source de données change, il est possible de faire en sorte que le
contrôle soit automatiquement mis à jour. Inversement, si des modifications
sont faites depuis l’interface, alors on peut être notifié automatiquement des
changements.
Tests unitaires
Principes des tests unitaires
En programmation, le test unitaire (ou « T.U. », ou « U.T. » en anglais) ou test de composants est une procédure permettant de vérifier le bon fonctionnement d’une partie précise d’un logiciel ou d’une portion d’un programme.
Projet de tests unitaires avec test des propriétés FullName et GetAgeFromBirthDay
Conclusion
Difficultés rencontrées
Lors du développement de cette application, l’équipe technique a rencontré quelques difficultés à la conception des Tests unitaires ainsi qu’aux Filtrages dans les différentes interfaces.
Améliorations possibles
Pouvoir utiliser les statistiques représentées dans l’application sur un intranet via une nouvelle couche web à la racine du projet. Le WindowsForm utilisé dans ce projet, étant dépassé, il serait possible d’utiliser Windows Presentation Foundation (WPF) (nom de code Avalon) qui est la spécification graphique de Microsoft .NET 3.0. Il intègre le langage descriptif XAML qui permet de l’utiliser d’une manière proche d’une page HTML pour les développeurs.
Productions associées :
https://drive.google.com/open?id=1a1CEywptG3COeu13kA3t_o4K6kZ6IYrO