2009-02-18 14 views
19

espero que esto no es un duplicado ...ejemplos de gran diseño e implementación de software

Cuál es el sistema de software/marco/aplicación más sólidamente diseñado e implementado que he encontrado?

Parece que TDD, principios SÓLIDOS, patrones de diseño OO, y cosas por el estilo se pueden teorizar fácilmente en podcasts y blogs utilizando ejemplos muy simples, pero es difícil imaginar el desarrollo de sistemas grandes que cumplan con estos estándares, sin una explosión de código. En mi compañía, hacer un TDD completo parece casi imposible con nuestras restricciones de tiempo.

Si alguien puede indicarme algún buen proyecto de código abierto, me gustaría profundizar y ver qué buen TDD/SOLID/etc. parece. Gracias.

Respuesta

7

El software Space Shuttle?

They Write the Right Stuff

Pero la cantidad de trabajo que hace el software es no es lo que hace que sea notable. Lo que hace notable es qué tan bien funciona el software . Este software nunca se bloquea. Nunca necesita ser reiniciado. Este software no tiene errores. Es perfecto, tan perfecto como seres humanos han logrado. Tenga en cuenta estas estadísticas de : las últimas tres versiones del programa , cada una de 420,000 líneas, tenían con un solo error cada una. Las últimas 11 versiones de este software tuvieron un total de de 17 errores. Los programas comerciales de complejidad equivalente tendrían 5,000 errores.

+0

Me parece recordar que este código fue desarrollado con mucha metodología de prueba formal. ¿Alguien puede confirmar o negar eso? – dmckee

0

Google Chrome

+0

Estoy disfrutando de cromo, pero ¿dónde está el amor de linux? Ese es mi único problema real con Chrome. –

+0

y han corregido todos los errores de bloqueo/congelación de la versión beta? –

4

TeX?

Knuth sigue ofreciendo el reward for confirmed bugs.


Por cierto: no estoy seguro de que Knuth se adhiere a cualquier palabra de moda-mecanismo para hacer el desarrollo muy robusto. No tengo idea de cómo lo hace. Tal vez solo atención a los detalles.

4

.NET Framework.

  • Es genial cuando "salpito" un espacio de nombres y sus miembros son exactamente lo que esperaría.
  • "Simplemente funciona".
0

Firefox 2,0

  • interfaz de usuario simple
  • funcionalidad robusta
  • Muy estable
+0

Espera, ¿qué? Robost? ¿Estable? ¡De ninguna manera Jose! –

+0

Funciona bien para mí ... sin duda es mejor que Internet Explorer 6/7 – Element

+1

@Element, todo es mejor que Internet Explorer 6/7. –

0

httpd Apache.

  • Limpio
  • simple
  • funcional

también: Graphviz - un ejemplo impresionante de la energía, la coherencia y la simplicidad.

El mejor código de pieza que vi fue el decoro; había sido trabajado en una cosa de verdadera elegancia y belleza. Pero lamentablemente debe permanecer en el anonimato.

Por cierto: Cualquier gran interfaz/API que podría simplificarse, ¿no sólidamente diseñado por definición. Y para muchas empresas, las grandes interfaces feas solo obtienen más grande y uglier.

Paul.

2

Muchos de los otros mensajes mencionan programas que no se han implementado con TDD y, por lo tanto, no dan respuesta a "Me gustaría investigar y ver qué buen TDD/SOLID/etc. parece." Por ejemplo, estoy bastante seguro de que las fuentes de Apache HTTPD Server y Firefox nunca han visto TDD. Solo busqué un poco sus fuentes, y solo había un par de archivos pequeños en las carpetas de prueba, y el código de producción no parecía estar escrito con TDD ni tampoco con SOLID. Por ejemplo, Fitnesse ha sido escrito usando TDD por el inventor de SOLID. Esa debería ser una buena referencia de cómo se ve ese código, especialmente las partes más nuevas del código (en su libro Clean Code, Uncle Bob tiene algunos ejemplos de código incorrecto de Fitnesse, que luego limpia, por lo que no necesariamente todo el código en Fitnesse esta limpio).

También lanzaré en mi propio proyecto, Dimdwarf Application Server, que se ha escrito al 100% con TDD/BDD y tratando de escribir el código más limpio posible (después de SOLID, etc.). También hay algunas partes feas allí (principalmente en la programación de tareas y la recolección de basura), pero esas partes todavía están en funcionamiento y se limpiarán cuando se completen esas características.

+0

Andy pide dos cosas: ejemplos de software robusto y ejemplos de código realmente bueno desarrollado utilizando TDD. El hecho de que algunos de los mejores ejemplos no usen TDD no prueba que TDD no sea bueno, pero sí prueba que no es necesario. YMMV; formalización reciente bajo el nombre TDD; etc ... – dmckee

Cuestiones relacionadas