Diseño y arquitectura de software desde cero [duplicado]

7

Sé mucho sobre programación sintácticamente. Lo que no estoy seguro es sobre cómo debo ir para construir un software desde cero. Cómo deben diseñarse los objetos y cómo deben interactuar unos con otros.

Para saber cómo se escriben los softwares buenos, he intentado leer el código de algunos softwares de código abierto buenos, pero no tuve la menor idea de cómo están diseñados, ya que no hay documentación disponible sobre el código.

Quiero convertirme en un programador más capacitado, pero no podría ir más lejos, estoy bien versado en programación pero ahora estoy atascado ya que no tengo manera de seguir adelante.

Por favor, guía sobre cómo debo aprender el diseño del software y qué debería seguir para mejorar las habilidades.

P.S: Soy un programador más hobbiest, nunca he trabajado en una casa de software ni lo estoy esperando.

    
pregunta S. A. Malik 08.04.2013 - 20:59

2 respuestas

4

Comience a crear pequeños proyectos "completos" desde cero utilizando su conocimiento existente por su cuenta como "proyectos" secundarios ... solo invéntelos. Luego refine / refactor el diseño identificando e implementando Patterns / "buenos principios" que ha aprendido de su lectura / aprendizaje. Una vez que el proyecto se haya completado y "refactorizado a fondo", hazlo de nuevo ...

Definitivamente hay algunos "puntos de partida" arquitectónicos como mantener varias " capas de código " separadas (Capa de acceso a la base de datos, capa de lógica de Biz, etc.). Además de tratar de identificar dónde se pueden usar "Interfaces" para que pueda "extraer" sus "implementaciones" y comenzar a introducir algún tipo de marco de Inyección de Dependencia ... Pero eso se puede hacer durante los últimos pasos de sus esfuerzos de "refactorización" ( si ese es un camino que incluso quieres bajar).

Yo diría que no hay una "bala de plata" o "así es como lo haces" porque los proyectos varían mucho. Puede ver presentaciones de pod y leer libros, lo que ayuda a convertirse en un experto, pero hasta que pueda implementar lo que ha aprendido, todavía hay una brecha bastante grande, y la única manera de implementar lo que ha aprendido es a través de hazlo y aprende de tus propios errores, o encuentra un buen mentor que pueda enseñarte lo que ha aprendido de sus errores.

"El simple hecho de tener el mapa no te lleva a tu destino"

    
respondido por el hanzolo 08.04.2013 - 23:45
4

Básicamente estás preguntando cómo diseñar programas. Resulta que hay un libro que te enseña eso, y se llama ... Cómo diseñar programas (también conocido como HtDP ). Te enseña, bueno, cómo diseñar programas. Y lo hace dándole recetas a seguir para analizar problemas, resolverlos, transformarlos en algoritmos y más en programas de trabajo.

Tenga en cuenta que "receta" es básicamente otra palabra para "programa", por lo que en otras palabras, el libro le enseña programas para que los humanos los ejecuten en sus cabezas con el fin de generar programas para ser ejecutados por computadoras. ¿Cuan genial es eso? :-)

Los autores están trabajando actualmente en un borrador para una segunda edición de HtDP , que es posible que desee leer en lugar de la primera edición. El material sobre la programación imperativa se eliminó y se cubrirá en el segundo volumen hasta ahora no escrito Cómo diseñar componentes , pero puede leer los capítulos que faltan de la primera edición.

Tenga en cuenta que HtDP no asume ningún conocimiento de programación y está dirigido a estudiantes de secundaria. Pero no dejes que eso te detenga: solo significa que probablemente podrás terminar algunos primeros capítulos más rápido, pero no creo que te aburras.

Abstracciones concretas también es una buena lectura a lo largo de vetas similares. Al igual que HtDP, no asume ningún conocimiento de programación.

Otro libro que podría escuchar mencionado es Estructura e interpretación de programas de computadora , también conocido como SICP. Es uno de los mejores libros de programación jamás escritos, y una vez más, no asume ningún conocimiento de programación.

Se está , sin embargo, está diseñado para completar a los novatos que estudian en el MIT . Y así, aunque no asume ningún conocimiento de programación, asume un poco de conocimiento de dominio , por ejemplo. En los campos de la ingeniería eléctrica, física y matemática. Nota: estos no tienen nada que ver con los conceptos que se enseñan, solo se necesitan para entender los ejercicios y ejemplos . Por lo tanto, podría ser mejor leer primero HtDP o Concrete Abstractions, y luego leer SICP.

    
respondido por el Jörg W Mittag 09.04.2013 - 01:06

Lea otras preguntas en las etiquetas