Lo más dificil de diseño es justo eso, diseñar. No por saber mucho UML, C++ o Java te conviertes en un buen diseñador. Lo más importante es adquirir experiencia.
Bien, y como lo haces ? pues haciendo diseños y luego implementándolos. La gracia de implementarlos es que validas, en cierta forma, si tu diseño es "bueno" o "malo" en base a las penurias que pasas para implementarlo, probarlo y liberarlo.
Un lenguaje "friendly" para pruebas de concepto está bien. Java es infernal si no conoces el API, C++ es mas o menos el Necronómicon de la programación, sobre todo para newbies. Ruby es escandalosamente orientado a objetos, tanto, que los objetos no te dejan ver el problema. Así que tiraría con Python, que es la solución de compromiso entre la guarrería mas procedimental y la solución mas rebuscada. Y además pruebas rápido. Y tiene serpientes.
Para empezar, no construyas catedrales. Haz pruebas de concepto. Por ejemplo, subsistemas "modelo" (una capa de acceso a base de datos, un sistema de distribución de eventos, una GUI ...). Lo mas importante es seguir el KISS y que los diseños sean entendibles, bien documentados y completos (no vale de nada poner una caja y decir "El sistema")
Cuando ya tengas algo de soltura con los diseños a boli en servilletitas, búscate una herramienta de diseño (Rose, Rhapsody) y monta una cadena de producción completa (desde que pintas una clase,
hasta que llegues a depurar su comportamiento en el banco) Algunas soportan animaciones del modelo, otras "executable UML models" y demás frivolidades que están bien para fardar con los amiguetes en el café, o dar charlas. Pero recuerda, son solo herramientas para ayudarte en tu diseño. Diseñas tu, no la herramienta.
Y si entre medias intentas aplicar patrones (pero no cortando y pegando del GoF, sino entendiendo que es lo que quieren decirte) pues entonces,
alcanzarás el nirvana de los diseños implementables (que nada tienen que ver las bizarreces teórico-chapuceras de los diseños artísticos)
Y recuerda. El objetivo principal de diseñar es dar la información necesaria para poder construir un producto que cumple el 100% de los requisitos de tu usuario. No dan puntos por hacerlo barroco, ni esotérico.
--
<your quote here> --Bjarne Stroustrup
Puntos de inicio:
4
puntos
Modificador extra 'Inspirado'
0
Total marcador:
4
1 respuesta por debajo de tu umbral de lectura actual.
Una servilletita y un boli ...
(Puntos:4, Inspirado)( http://www.jmcresearch.com/ )
Bien, y como lo haces ? pues haciendo diseños y luego implementándolos. La gracia de implementarlos es que validas, en cierta forma, si tu diseño es "bueno" o "malo" en base a las penurias que pasas para implementarlo, probarlo y liberarlo.
Un lenguaje "friendly" para pruebas de concepto está bien. Java es infernal si no conoces el API, C++ es mas o menos el Necronómicon de la programación, sobre todo para newbies. Ruby es escandalosamente orientado a objetos, tanto, que los objetos no te dejan ver el problema. Así que tiraría con Python, que es la solución de compromiso entre la guarrería mas procedimental y la solución mas rebuscada. Y además pruebas rápido. Y tiene serpientes.
Para empezar, no construyas catedrales. Haz pruebas de concepto. Por ejemplo, subsistemas "modelo" (una capa de acceso a base de datos, un sistema de distribución de eventos, una GUI ...). Lo mas importante es seguir el KISS y que los diseños sean entendibles, bien documentados y completos (no vale de nada poner una caja y decir "El sistema")
Cuando ya tengas algo de soltura con los diseños a boli en servilletitas, búscate una herramienta de diseño (Rose, Rhapsody) y monta una cadena de producción completa (desde que pintas una clase,
hasta que llegues a depurar su comportamiento en el banco) Algunas soportan animaciones del modelo, otras "executable UML models" y demás frivolidades que están bien para fardar con los amiguetes en el café, o dar charlas. Pero recuerda, son solo herramientas para ayudarte en tu diseño. Diseñas tu, no la herramienta.
Y si entre medias intentas aplicar patrones (pero no cortando y pegando del GoF, sino entendiendo que es lo que quieren decirte) pues entonces,
alcanzarás el nirvana de los diseños implementables (que nada tienen que ver las bizarreces teórico-chapuceras de los diseños artísticos)
Y recuerda. El objetivo principal de diseñar es dar la información necesaria para poder construir un producto que cumple el 100% de los requisitos de tu usuario. No dan puntos por hacerlo barroco, ni esotérico.
<your quote here> --Bjarne Stroustrup