Quelle est la conception de logiciels, avilay
« Mais ce n'est pas un bon design .. » est un refrain que je l'ai entendu dans d'innombrables arguments des réunions de conception de logiciels. Et généralement, ces arguments délèguent assez rapidement dans des désaccords philosophiques fondées sur des opinions plutôt que des faits. Cela pose évidemment la question - donc ce qui est la conception de logiciels? Je vais ajouter ma propre opinion à ce discours permanent avec les 7 principes de conception de la conception de logiciels.
2. robuste
Je montrais de mon skillz codage fou asp.net/mvc à un ami de mon moi qui se trouve être un architecte logiciel. Il m'a donné un regard aimable paternels et dit: « tout cela est amusant et bon, mais pouvez-vous écrire un code qui perdurera pendant des années et des années? Ce téléphone que vous utilisez est un morceau de code que je l'ai écrit il y a 5 ans ». Ce qui m'a amené à mon deuxième épiphanie au sujet de la conception de logiciels. Son se doit d'être robuste. Mais qu'est-ce robuste signifie vraiment? Pour moi, cela signifie trois choses - le logiciel est résistant aux échecs, il est capable de reconnaître en cas d'échec, et il est en mesure de récupérer des logiciels failures.Good est robuste.
3. mesurable
Mon troisième principe de conception n'a pas été un moment un ha soudain pour moi. Mais plutôt il a grandi sur moi peu à peu, en raison de travailler dans des environnements qui ont été extrêmement guidée par les données, parfois sans pitié ainsi. Il devrait être possible de mesurer la façon dont le logiciel fait dans la nature, en dehors des limites de mes montages d'essai. Bien sûr, les paramètres de mesure réels différeraient en fonction de l'entreprise et la nature du logiciel. Une mesure souvent utilisée pour les applications web est le nombre de HTTP 500 qui sont retournés ISE. Pour les applications d'interface utilisateur, il est généralement le nombre de secondes pour l'interface utilisateur de répondre. Mais si vous trouvez un logiciel d'écriture vous sans mettre aucune pensée quant à la façon de la mesurer (quelle que soit la mesure signifie pour vous), sachez que vous violez un bon principe de conception. Un bon logiciel est mesurable.
4. débogable
Je me souviens des jours de travail en tant que développeur dans une entreprise de commerce électronique (oui, celui-là), où je repaginés parce que le système de commande a été conduit mal. Je serais le seul développeur de débogage du système en direct, tout le temps entouré d'un tas de gestionnaire-types qui demande « statut de » toutes les deux minutes. Marcher à travers le code dans cette situation était - pour le moins - pas amusant. Et il m'a fait prendre conscience que tout logiciel j'écrire devrait avoir l'exploitation forestière qui ne sont pas juste là pour le plaisir, mais cela me aiderait vraiment debug quand le besoin se faisait sentir. Depuis, je l'ai mis dans les API de débogage sur mes services web, mis en capacité à vider l'état de débogage sur demande, etc. Un bon logiciel est débogable.
6. réutilisable
Les développeurs de logiciels s'inquiètent sans cesse écrire des logiciels réutilisables. Un grand nombre d'interviews des développeurs de logiciels que je siège en (à titre d'observateur, enquêteur, personne interrogée) pose toujours une question d'algorithme - « comment pouvez-vous trouver le moins ansector commun dans un arbre », le suivi est - « comment pouvez-vous rendre plus générale ». Mais notez, que ce n ° 6 sur ma liste. C'est parce que generilizing une solution spécifique est difficile et prend du temps. Et beaucoup de fois personne ne finit réutilisant ce morceau de code de toute façon (bien sûr, vous pouvez faire valoir qu'il est parce que le code ne suffisait pas réutilisable pour commencer ...). Donc, sauf si vous êtes absolument sûr que vous allez utiliser ce morceau de fonctionnalité ailleurs, et vous pouvez l'effort limité dans le temps de le rendre réutilisable, ne pas essayer à la maison. Néanmoins, un bon logiciel est réutilisable.
7. Extensible
Étonnamment, le sujet du nombre maximum d'arguments de conception que j'ai assisté à fait dans ma dernière liste. Habituellement, cela est élevé lorsque vous créez des logiciels d'infrastructure. Et il commence habituellement avec - « mais supposons que quelqu'un demain veut ajouter X ici ... ». Méfiez-vous de ce principe de conception. Soyez très prudent. À moins que « demain » est une date réelle à l'avenir, et « quelqu'un » est une personne réelle, ce principe de conception peut vous conduire dans un trou de lapin profond avec rien, mais la saleté au fond. Mais je dois dire - vraiment un bon logiciel est extensible.