10 façons d'améliorer votre conception d'architecture logicielle
Quelle est la meilleure façon d'obtenir d'un prototype de code de production? Si une assez importante et l'aspect délicat du projet, a été élaboré avec succès, déchirant et le recoder en « mode de production » semble difficile, mais juste laisser tomber un prototype piraté-up dans le code de production finit par rendre les choses difficiles à maintenir. Il semblerait pourrait être d'intégrer le prototype assez bien pour faire avancer les choses de travail dans un système « réel » afin que le client peut jouer avec elle, mais le faire de telle sorte que le code prototype peut être refactorisé progressivement la plus belle approche; cela ne semble jamais fonctionner aussi bien que je l'espère, cependant. Aucune suggestion?
Il faut vraiment gérer les attentes du client en ce qui concerne les prototypes. Cela dépend entièrement de la façon dont vous avez présenté le prototype? Si vous avez présenté comme un prototype, pour obtenir rapidement des commentaires, faire une meilleure estimation de temps ou de faire la validation des performances, je ne pense que la création de la version réelle de la production serait un problème. Si vous ne le faites à l'avance clairement ce qu'un prototype est alors il sera difficile. Le client voit une application de travail et vous lui dites que vous avez à faire tout recommencer.
Est-ce pas ce que le principe d'ouverture-fermeture des principes solides est tout au sujet? Pour ajouter un nouveau type de modem que vous devez changer la classe de base? Le refactoring « Passer au Polymorphisme » il le candidat idéal pour ce type de problèmes, voir Remplacer sous condition avec Polymorphisme. Il existe plusieurs ressources SOLIDES autour de voir par exemple l'article solide solide sur mon blog.
Pour ajouter un nouveau type de modem que vous devez changer la classe de base?
Pour l'exemple un peu plus concret, supposons qu'il ya des unités sur le terrain que « téléphone » par divers moyens. La conception du logiciel d'origine ne se soucie pas de savoir si une unité est la connexion par modem, TCP, USB, ou d'autres moyens.
Plus tard, il découvre que les unités qui utilisent un Acme-457 Révision One, modem ne sont pas capables d'exécuter certaines actions de manière fiable pendant qu'une connexion est active. Lorsque vous utilisez un autre type de connexion, ou d'une variété de modem, ou même la révision de l'Acme-457, il n'y a pas la difficulté à exécuter la commande avec une connexion active.
Si la difficulté particulière avec l'Acme-457 avait été prévu, la classe de base de communication et de l'application aurait été conçu dès le départ pour y faire face. D'autre part, anticiper exactement ce que des problèmes particuliers se poseront est souvent difficile, voire impossible, jusqu'à ce qu'un dessin est aligné.
Idéalement, la classe de communication se cacherait de la couche d'application toute variation dans la méthode de communication. Que doit-on faire si cette abstraction devient intenable?
Mon vote de 1
Pas grand-chose, mais un tas de jargon technique.
Cela semble bon!
Re: On dirait bien!
Merci pour vos commentaires .