¿Podría sugerirme algunos buenos libros sobre el diseño de software, es decir, el proceso de definición de la arquitectura, componentes, interfaces, etc.?

Recientemente (febrero ’17), se realizó un análisis [1] sobre cuarenta millones de preguntas que aparecen en stackoverflow.com, un importante sitio de programación / intercambio de información. Había estado deseando reunir una lista de los mencionados que eran lo suficientemente generales como para aplicar a cada proyecto, excluyendo los centrados en el lenguaje; entonces, gracias por hacer esta pregunta para motivarme.

Aquí están los mejores libros de ese análisis que probablemente cumplan con sus (es decir, nuestros) criterios:

  • # 1 trabajando eficazmente con código heredado – Michael C. Feathers
  • # 2 Patrones de diseño: Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
  • # 3 Código limpio – Robert C. Martin
  • # 5 Diseño impulsado por el dominio – Eric Evans
  • # 8 Código completo – Steve McConnell
  • # 9 Refactorización – Martin Fowler, Kent Beck
  • # 10 Patrones de diseño de Head First: Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates
  • # 13 Desarrollo impulsado por pruebas – Kent Beck
  • # 14 Introducción a los algoritmos, 3a edición – Thomas H. Cormen
  • # 15 Dominando las expresiones regulares – Jeffrey Friedl
  • # 23 Patrones de prueba de XUnit – Gerard Meszaros
  • # 25 Compiladores – Alfred V. Aho
  • # 29 Estructuras de datos puramente funcionales – Chris Okasaki
  • # 30 El arte de las pruebas unitarias – Roy Osherove

He leído algunos de estos, y los encontré ciertamente esenciales para una buena práctica de programación, y dado que aparecen en esta lista sobre dónde espero que lo hagan, creo que esto le da a la lista más influencia. ¡Los mejores deseos para tus proyectos!

Notas al pie

[1] Libros mencionados en stackoverflow.com

Todo esto depende de dónde se encuentre en el diseño del aprendizaje. Si conoce algunos conceptos básicos y necesita un conjunto de herramientas para reunir lo que sabe: “Patrones de diseño: elementos de software orientado a objetos reutilizables” Gamma, Helm, etc.

Vería algunos de los libros clásicos de principios de diseño, que es lo que solía usar en la escuela. Si bien pueden parecer arcaicos, son muy útiles. Amazon.com: Patrones de diseño: Elementos de software orientado a objetos reutilizables (Adobe Reader) eBook: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch: Kindle Store Este es un libro que tiene algunos buenos principios y es un valioso leer.