web-dev-qa-db-fra.com

Front end first ou Back end first. Des deux, quelle est une bonne pratique de conception de système?

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 vs back-end (mon avis)

Ma vision personnelle

Encore une fois, c'est une question de formation, quelques généralisations générales des AVC:

Développeurs frontaux

  • En règle générale, nous n'avons pas de diplôme CS ni de 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 me 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
30
drexsien

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 fini, 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 faire un travail compliqué pour marier l'avant vers l'arrière, alors qu'un frontal plus approprié aurait été plus simple.

OMI, vous devriez d'abord travailler dessus. Écrivez les extrémités avant et 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.

42
Paul Butcher

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.

Développeurs front-end vs back-end (mon avis)

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.

9
S.Lott

Ni. De quoi votre application a-t-elle besoin pour pouvoir faire? Assurez-vous que la vanne chaude fournit de l'eau chaude, la vanne froide fournit 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 au basique (voir PHP est Basique)

Parce que PHP est une technologie côté client? Ou parce que JavaScript, qui a été inspiré principalement par Scheme, a plus en commun avec Basic que Visual Basic qui n'est désormais plus une préoccupation permanente et jamais était vraiment, mais est toujours disponible pour les applications Web .NET back-end? Le blog compare les développeurs Web open source autodidactes avec les développeurs Web diplômés CS utilisant la technologie populaire à ce stade, je pense. Je suis tombé sur insupportable et compétent dans l'égalité partage des deux côtés de ce combat particulier, mais il est toujours là OT 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 devons apprendre ces choses au niveau Jr. et c'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 du type de langages libres

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 vous trompez pas à OOP ce que la plupart des gens qui aiment se vanter d'une langue n'ayant pas de cours techniquement, en fait, en général, 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". * cough * Java devs */cough *

6
Erik Reppen

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 réellement 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 vers l'intérieur de 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, 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 .

5
Péter Török

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:

  1. Concevoir une API simple
  2. Les deux équipes développent et testent sur la base de l'API
  3. Test d'intégration
  4. Montrez au client et recevez des commentaires.
  5. Améliorez l'API et répétez.
1
m3th0dman

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.

0
JeffO

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 de base de données détaillée. 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 le FE manipule.

Ok, il y aura des problèmes et des ajustements ultérieurs, et je fais d'accord qu'il est bon d'obtenir un simple GUI échantillon devant le client ASAP, car cette pointe particulière de l'iceberg est ce que la plupart la plupart comprennent.

Cependant, je 1) stress que ce n'est qu'une maquette grossière, pour les marsouins de discussion, et 2) délibérément rendez-le laid, mais fonctionnel , de sorte que ceux qui ne comprennent pas peuvent me toucher et me dire de faire cette zone de saisie exactement 400 pixels de 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.

Oui, j'ai réalisé que l'OP avait demandé il y a quelque temps. Commencez par 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.

0
Fabasard