J'ai un client qui me demande actuellement de développer un système d'inscription scolaire. C'est la première fois que je rencontre ce genre de défi. La plupart des anciens logiciels que j'ai créés ne sont pas si complexes.
Je sais que la plupart d'entre vous ont créé des logiciels complexes, je veux juste votre avis à ce sujet. Dois-je d'abord concevoir l'extrémité avant ou arrière?
Merci!
Voici la conclusion d'un article que j'ai trouvé sur Internet il y a quelque temps. Je veux juste partager
http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157
Développeurs frontaux et back-end (mon avis)
Ma vision personnelle
Encore une fois, c'est une question de formation, quelques généralisations générales de l'AVC:
Développeurs frontaux
- En règle générale, vous n'avez pas de diplôme CS ou un diplôme CS d'une école de troisième niveau.
- Travailler dans des langages similaires à ceux de base (voir PHP is Basic)
- Avoir une compétence visuelle dans la conversion de documents Photoshop en CSS / HTML / etc.
- Avoir une tolérance élevée pour la programmation itérative, en raison des langages libres de type
Développeurs back-end
- Avoir un diplôme CS ou beaucoup d'expérience
- Tendance à moi plus systématique dans leur approche de résolution de problèmes
- Cela ne vous dérange pas de passer des jours à trouver le seul objet qui fuit
- Essayez de créer des outils pour résoudre les problèmes
Réponses:
Si vous commencez à l'arrière et allez de l'avant, vous courez le risque de mal comprendre le client. Comme vous créerez des choses qu'ils ne peuvent pas facilement voir et comprendre, ils ne peuvent pas participer très facilement à la vérification du respect des exigences. Cela signifie que vous pourriez perdre beaucoup de travail.
Si vous commencez par l'avant et que vous reculez, vous courez le risque que le client pense que c'est presque terminé, alors que tout ce que vous avez fait est de dessiner un formulaire simple à l'écran. Ils peuvent alors se demander pourquoi cela prend autant de temps, car vous l'avez surtout terminé en quelques jours. Vous courez également le risque de vous peindre dans un coin, lorsque vous vous rendez compte que vous devez effectuer un travail compliqué pour marier le devant à l'arrière, alors qu'un frontal plus approprié aurait été plus simple.
OMI, vous devriez d'abord travailler dessus. Écrivez l'avant et l'arrière ensemble, pour chaque fonction du système. Cela donne au client une plus grande visibilité des progrès et lui donne la possibilité de dire «non, ce n'est pas ce que je voulais dire», sans vous causer trop de détresse.
Cela dit, s'il s'agit d'un très grand projet dans lequel vous devez considérer le matériel du serveur ou les capacités de tout logiciel sur lequel vous vous appuyez (par exemple, la base de données que vous utilisez), alors vous devriez probablement avoir une bonne réflexion sur cette partie en premier.
la source
Le logiciel a de nombreuses dimensions, par conséquent, un front-vs trop simpliste est une mauvaise question et il est très, très difficile de fournir une réponse sensée et utile.
Une vue est la structure statique des données. Cette vision comporte au moins trois dimensions: les couches architecturales ("front-to-back"), les cas d'utilisation et les acteurs, ainsi que les coûts ou les risques de mise en œuvre.
Une vue est la structure dynamique du traitement. Cette vue comporte également au moins trois dimensions.
Une troisième vue concerne les composants architecturaux, qui tombent naturellement en couches, prennent en charge les cas d'utilisation et présentent des coûts et des risques.
Je pourrais continuer, mais le point est le suivant.
Est à peu près le moyen le moins utile pour examiner le problème. Les développeurs réels - et vos opinions à leur sujet - importent très, très peu ici. Ce qui compte
Cas d'utilisation et acteurs
Modèle de données logique pour prendre en charge ces cas d'utilisation
Processus effectué dans le cadre du cas d'utilisation
Composants que vous utiliserez pour créer les éléments logiques et de traitement du cas d'utilisation.
C'est pourquoi la plupart des gens disent que vous devez décomposer votre système par histoire d'utilisateur ou cas d'utilisation.
Ne pas faire de généralisations générales sur les personnes qui feront du développement.
la source
Ni. De quoi votre application a-t-elle besoin pour pouvoir faire? Assurez-vous que la vanne chaude délivre de l'eau chaude, la vanne froide délivre de l'eau froide, que l'eau coule en premier lieu, que vous pouvez prolonger les tuyaux où vous en avez besoin et ensuite vous soucier de mettre en œuvre la plomberie réelle dans toutes les pièces de la maison ou ce que la maison va ressemblent en fait exactement.
La partie avant est juste un masque avec quelques interrupteurs et leviers. Le back-end est juste une chose qui reçoit des demandes de récupération et de traitement de données. Arrivez à un point où vous pouvez mettre en œuvre rapidement les deux dans n'importe quelle combinaison souhaitée en premier.
Mais quoi que vous fassiez, ne laissez pas la conception de l'un dicter la conception de l'autre. De cette façon, la folie se trouve.
Mettez les outils en place pour permettre à vos développeurs de construire tout ce dont ils ont besoin pour votre client, quel que soit le nombre de fois où ils changent d'avis. Ensuite, construisez-le selon les spécifications et réactivez-le jusqu'à ce que les petits bus soient enfin satisfaits.
De plus, comparer les développeurs frontaux aux développeurs back-end en 2008 remonte à bien des années Web. Pour le plaisir, je voudrais corriger / ajouter quelques choses à ce vieux châtaignier puisque nous l'avons lié dans la question, mais aussi (espérons-le) intégrer quelques conseils dans:
Développeurs frontaux
En règle générale, vous n'avez pas de diplôme CS ou un diplôme CS d'une école de troisième niveau.
Vote à main levée. Combien de personnes titulaires de diplômes CS ont appris les meilleures pratiques en amont? Ou comment ne pas faire de dégâts avec JavaScript? Ou comment gérer les problèmes CSS d'IE6-IE9? L'industrie des manuels scolaires, qui gère le monde universitaire, est trop paresseuse et gonflée pour gérer une technologie en constante évolution, de sorte qu'elle a reçu très peu d'attention «sérieuse» dans les collèges. Cela a été excellent pour les floraisons tardives comme moi.
Travailler dans des langages similaires à ceux de base (voir PHP is Basic)
Parce que PHP est une technologie côté client? Ou parce que JavaScript, qui a été principalement inspiré par Scheme, a plus en commun avec Basic que Visual Basic, qui n'est plus une préoccupation permanente sur le front-end et qui ne l'a jamais vraiment été, mais qui est toujours disponible pour les applications Web back-end .NET? Le blog compare les développeurs web open source autodidactes aux développeurs web diplômés CS utilisant une technologie populaire à ce stade, je pense. Je suis tombé sur insupportable et compétent en parts égales des deux côtés de ce combat particulier, mais il est toujours en train de faire de l'ergot là-bas.
Avoir une compétence visuelle dans la conversion de documents Photoshop en CSS / HTML / etc.
Plus d'attention aux détails que la "compétence visuelle" qui est un peu large. Nous n'avons pas tous des compétences en conception esthétique. Mais oui, la plupart d'entre nous doivent apprendre ce genre de choses au niveau Jr. et il est en fait assez critique pour écrire une bonne interface utilisateur qui n'utilise pas de marteaux JS lorsque les scalpels CSS feront l'affaire.
Avoir une tolérance élevée pour la programmation itérative, en raison des langages libres de type
C'est pourquoi vous voulez que les pièces que j'ai mentionnées plus tôt soient mises en place en premier. Nous passons les boutons enfoncés, vous produisez / récupérez la marchandise. Nous les emballons et les livrons. Il n'y a aucune raison que ces choses soient étroitement liées les unes aux autres. De plus, un typage strict ne devrait pas interférer avec un processus itératif si vous ne craignez pas la POO, ce que la plupart des gens qui aiment se vanter d'une langue n'ayant pas de cours techniquement, en fait, le font généralement. Mais même s'ils pue, le front-end n'a besoin que d'un point d'accès prévisible et vous pouvez faire tout ce que vous voulez sur le back-end tant que vous ne faites pas quelque chose de stupide comme écrire dynamiquement du JavaScript qui n'est pas JSON ou lier étroitement le comportement de back-end réussi à la structure HTML étant "juste ainsi". * toux * java devs * / toux *
la source
Il n'y a pas de bonne réponse à cela. L'une ou l'autre approche peut être bonne (et mauvaise) dans certaines situations.
Je vous recommande de considérer l'approche TDD, où l'on est conduit par des tests (d'acceptation et unitaires).
Commencez par assembler un squelette du système: l'infrastructure de base, avec la fonctionnalité minimale absolue. C'est juste pour montrer que votre concept fonctionne et que les différents composants peuvent fonctionner ensemble. Cela comprend également une interface utilisateur nue (le cas échéant), juste assez pour faire et / ou montrer quelque chose de minimal.
Ensuite, vous étoffez les détails, fonctionnalité par fonctionnalité : écrivez un test d'acceptation pour une fonctionnalité / un scénario spécifique, faites-le échouer, puis écrivez du code pour le satisfaire. Cela vous fait travailler de l'intérieur vers l'extérieur : le système reçoit un message d'entrée, vous devez donc gérer / convertir ce message, faire quelque chose avec lui, puis propager les résultats vers l'interface utilisateur. Sur le chemin, vous découvrirez les concepts de domaine et les représenterez avec de nouvelles classes, de l'interface utilisateur vers la couche de domaine et vice-versa.
Pour cette approche, une lecture recommandée est Growing Object-Oriented Software, Guided by Tests .
la source
API d'abord
Les ingénieurs des deux équipes doivent travailler ensemble sur l'API entre le front-end et le back-end. Ensuite, les deux équipes peuvent commencer à travailler sur la base de l'API conçue. Cela a l'avantage qu'une autre équipe front-end peut également commencer le travail (peut-être mobile, après le client Web) en plus de l'avantage évident que les équipes peuvent commencer à travailler en parallèle.
Combinez avec une approche itérative et devrait ressembler à ceci:
la source
Commencez par le frontend, mais d'abord, pourquoi ne peuvent-ils pas trouver une application qui existe déjà? Cela donnerait plus d'informations sur ce projet. Ont-ils des exigences uniques ou pensent-ils que vous pouvez construire moins cher?
Obtenez une compréhension complète de leurs attentes en matière de sécurité et de ce que la loi exige. Je ne sais pas de quel type d'école il s'agit, mais les informations sur les élèves nécessitent généralement une certaine confidentialité.
Si les étudiants potentiels saisissent les données sur un site Web, la conception graphique sera plus problématique.
En fonction de leurs demandes, dessinez des maquettes du front-end. Si vous pensez que l'interface utilisateur n'est pas directe, vous devrez peut-être faire quelque chose de fonctionnel, afin qu'ils puissent le voir en action. Ils peuvent voir l'inscription comme un certain type d '«assistant» qui se ramifie dans différentes directions en fonction de la saisie des données.
Ensuite, vous pouvez commencer à obtenir des informations persistantes dans la base de données.
la source
Oui, j'ai réalisé que l'OP avait demandé il y a quelque temps. Commencez à l'arrière mais MAQUETTEZ l'extrémité avant pour permettre à l'utilisateur de voir ce que vous envisagez. L'avant, pour tout ce qu'il vaut, n'est que les cloches et les sifflets. L'arrière est l'endroit où se trouve l'argent, et une fois que vous avez ce droit, le FE est juste la sauce sur la viande.
la source
Développant mon commentaire:
Rassemblez d'abord les exigences, puis transformez-les en cas d'utilisation et en conception.
Vient d'abord une définition détaillée de la base de données. Je me fiche que le client ne le comprenne pas complètement, je le force à s'asseoir et à le regarder - et à le signer (éventuellement en forçant ensuite à se rendre compte qu'une fois que leurs gars plus avertis en technologie devraient le faire) ), avant de procéder.
Comment commencer avec FE, sans BE? FE pour quoi ??? Définissez votre base de données !! C'est ce que manipule le FE.
Ok, il y aura des problèmes et des ajustements ultérieurs, et je ne conviens qu'il est bon d'obtenir un simple exemple, l' interface graphique en face du client le plus tôt possible, car cette pointe particulière de l'iceberg est ce que la plupart comprennent plus.
Cependant, je 1) souligne qu'il ne s'agit que d'une maquette grossière, pour les marsouins de discussion, et 2) que c'est délibérément laid, mais fonctionnel , afin que ceux qui ne comprennent pas puissent me taquiner et me dire de faire cette boîte de saisie exactement 400 pixels. large et le fond bleu clair.
Je suis tombé que la plupart des réponses ici (et je les ai suivies) ont tendance à trop se concentrer sur le client, mais, d'un point de vue purement et simplement, je soutiens que vous ne pouvez pas concevoir un FE pour manipuler un BE sans d'abord la conception de ce BE.
la source