Pregunta

Cuando empiezas un nuevo proyecto, ¿cómo lo planificas o cuánto tiempo lleva?

¿Pseudocódigo?¿Diagramas de flujo?

¿Intentas pensar en todas las clases con antelación?

TBH, nunca planeo nada.Voy directo a ello y pienso en soluciones a medida que surgen los problemas.Principalmente porque las pocas veces que intenté planificar con anticipación, siempre olvidaba algo importante y, por lo tanto, la lógica de la planificación sería defectuosa.

¿Fue útil?

Solución

Después de la experiencia de un montón de proyectos inconclusos , que tienden a poner en práctica una versión simplificada de mis procesos de negocio en mi metodología de desarrollo personal.

Por lo general siguen la siguiente estructura:

  1. Crea una breve así que tengo un objetivo en mente.
  2. href="http://en.wikipedia.org/wiki/Class_diagram" de entender los datos que se van a tratar.
  3. Implementar todas las clases.
  4. Elaborar un diagrama de casos de uso para delinear las actividades.
  5. Andamio la disagram caso de uso (en HTML para webapps)
  6. Alambre del andamio, mediante la aplicación de pruebas de unidad y la construcción pase a ellos.
  7. decidir liberar el producto para su éxito comercial, y luego olvidarse de él.

Otros consejos

mucho menos de lo que debería

Siempre a bucear, ensucian y luego cuenta de que he hecho un lío. A continuación, volver atrás y plan, y hacerlo bien.

y la fase errores desordenado me da grandes ideas que no iba a tener aunque, por medio de un proceso formal de diseño.

Editar me da principalmente en este tipo de aplastar el teclado líos cuando se juega con mayor / compleja. Interesante ver hasta qué punto se pongan las cosas antes de darse cuenta de que su 'está en mi cabeza, así que está bien' diseño es 100% defectuoso.

Probablemente no es la mejor técnica ... pero ... planeo en el código .

A menudo me descubro clase / métodos / etc. que necesito simplemente por hacerlo de esta manera. Dicho esto, siempre que supongo que mi código de planificación no va a ser la solución final.

Además voy a escribir notas que detallan los principales "características" y "características de menor importancia / deseos".

Cuando estaba en el camino "cascada" de hacer las cosas que me gustaría escribir varios cientos de documentos de página que aparezcan todos los detalles que podrían ser descubiertos durante la investigación. Para llegar a este macizo volumen de la documentación que lo haría en general

  1. conocer y saludar a todos los involucrados en el proyecto
  2. tomar muchas notas relativas a los requisitos percibidos
  3. crear largas listas de viñetas de requisitos de alto nivel
  4. empezar a romper los requisitos de alto nivel en detalles bien definidos
  5. comenzar a llenar plantilla de la palabra Requerimientos de Software: SRS
  6. crear marcos de alambre en Photoshop, Excel, o (mi favorito) Balsamiq
  7. Haz una lista de datos que deben ser capturados y empezar a construir un esquema áspero
  8. estructuras de clase fuera de la lista en UML
  9. definir cronograma del proyecto
  10. bla bla bla
  11. código de escritura
  12. la esperanza de que lo solicitado es lo que todavía se deseaba cuando el código está completo!

En los últimos años he estado siguiendo ágil (SCRUM) y han adoptado un enfoque totalmente diferente.

  1. se reúnen con el dueño del producto para conocer acerca de las tareas que se construirá
  2. descomponen en tareas historia (planificación básica)
  3. asignar tiempo para tareas
  4. realizar una planificación más detallada
  5. -> prueba de escritura, escribir código para pasar la prueba, refactor -> comprobar en la danza
  6. demostrar producto / función de trabajo
  7. proceso de puesta sobre

Tengo que decir que Ágil reduce la cantidad de tiempo dedicado a escribir documentos que se descomponen tan pronto como los drys tinta. El dueño del producto llega a ver los resultados de una manera mucho más rápida. Lo que significa que pueden quedarse con el proyecto va en la dirección correcta con el tiempo -. Incluso si que cambia de dirección que estamos desarrollando

Tenga en cuenta que hay un tiempo y un lugar para ambas formas de desarrollo. No me gustaría que para construir el software Jet utilizando ágil!

Todo depende de lo grande que es el proyecto. A veces puede tomar meses para simplemente reunir todos los requisitos y saber exactamente lo que tiene que hacer.

Cuando se llega a la parte de codificación, todo depende de lo complicado que es. Si es extremadamente complicado, voluntades empezar simplemente dibujando lo que yo quiero que haga. A continuación voy a escribir mi pseudo código en los comentarios. A continuación voy a codificar en torno a esos comentarios.

Sin embargo, si se trata de codificación simple. Yo por lo general acaba de escribir lo que está en mi mente y probarlo.

Utilizamos un enfoque muy ágil en el que vamos a trabajar en piezas grandes y, por supuesto, las cosas siempre están llegando a aparecer en los requisitos. Así que vamos a acomodar para aquellos que vayan surgiendo. Nunca vas a conocer plenamente exactamente lo que desea crear en el inicio del ciclo de creación.

Esa es mi opinión.

Depende. La mayoría de las cosas que escribo son bastante sencillo y un diseño más grande que se construye paso a paso y noto lo que todavía falta y lo que ya está completa. Había unas pocas cosas más peludas que requerían extensa dibujo y el pensamiento de hacerlo bien, aunque yo aún no he encontré con muchos problemas arquitectónicos que requerían por lo que (todavía joven y esas cosas). Sobre todo los que eran cosas difíciles aritméticas.

En mi pasantía del año pasado, mi jefe se sorprendió gratamente de que utilizara diagramas de flujo para un problema.Pensó que era un arte perdido entre los estudiantes de estos días.No me sorprendió tan gratamente que se los considerara anticuados.

De todos modos, para mí depende del cronograma del proyecto, los plazos son lo más importante, por supuesto.

La mayoría de las veces, yo por lo menos tratar de tener un diagrama general (aunque sólo en mi cabeza) de cómo el módulo / sistema va a trabajar. Me gusta saber lo que voy a hacer antes de hacerlo. Esto hace que la programación sea más fácil y más rápido (que son por lo general con plazos muy ajustados en la que trabajo). Cada vez que yo no, me encuentro con problemas que por lo general me lleva a sacar y poner el código está en otra parte. Voy a admitir, mi proceso de vino a través de la experiencia amarga y me dieron muy, muy bueno en el uso de expresiones regulares en el código junto con la búsqueda global y reemplazar.

Alguien trajo un buen punto, a veces hay un sistema muy grande y que lo ponga difícil. Trato y descomponerlo en trozos. Voy a trabajar en algo y lo entiendo concretarse, y trabajar en otra cosa durante un rato y ver cómo interactúan. Incluso con la debida anticipación, echo de menos cosas y tienen que refactorizar código, pero al menos yo no estoy haciendo de nuevo todo desde que al menos tenía algún tipo de un plan de trabajo.

Depende de la complejidad del problema es que usted está tratando de resolver. Si usted está tomando en un proyecto de programación grande, es necesario tener un cierto grado de planificación antes de empezar. Si no lo hace, obtendrá terriblemente perdido en los detalles de cosas que no acaba de comunicarse con las otras partes en ningún momento.

Básicamente, intenta conseguir una vista de pájaro de los problemas que hay que resolver. A ver si alguno de los problemas son lo suficientemente pequeño que se puede resolverlos y averiguar lo que podría necesitar para comunicarse con el resto de su solución. Piense en ello como un recuadro negro con una API para el mundo exterior.

Una vez que haya todos sus bloques descubierto, ver si necesita dividir el problema en pequeños sub-problemas, o que tienen una visión lo suficientemente detallada de todo el proyecto que se puede comenzar con el código.

Mi experiencia es que la planificación le ayuda a evitar problemas en el futuro, hará pensar más acerca de cómo se supone que el código para crecer en el futuro si es necesario agregar nada, etc.

En la mayoría de los casos se ahorrará el tiempo que pasó en la planificación cuando se está depurando o extender el proyecto. Además, tener un esbozo del diseño del proyecto significa que será más fácil conseguir ayudar a la construcción de las cajas negras que necesita, para que pueda trabajar en él con más personas que sólo a ti mismo.

En función de la complejidad del proyecto, por lo general comienzan con la almohadilla y el papel, y escribir una especificación, y algunos pseudo-código del flujo de control. A continuación, siempre se puede hacer referencia a que, si bien estoy de codificación. Esto hace que sea más fácil y requiere menos refactorización porque no cree que el problema a través de.

En lo personal que depende del alcance y la complejidad del proyecto, la cantidad de gente que estoy trabajando en él, y las expectativas generales sobre la entrega.

Es muy importante entender las expectativas generales de las partes que van a utilizar el software. Todos los involucrados en el proyecto debe tener un entendimiento común de lo que se está trabajando -. ¿Cómo se comunica que va en muchas direcciones

Con demasiada frecuencia, las partes involucradas en el desarrollo de software no se dan cuenta de que la comunicación entre las partes es a menudo la parte más crítica e infravalorado del proyecto -. Y la principal causa de accidentes de proyectos

Me preparo un poco de café y artesanía un par de sándwiches.

Realmente depende del proyecto. He trabajado en algunos proyectos en la industria de defensa que se llevaron a 2 años de planificación detallada antes de escribir una sola línea de código, y me he sentado y produjo algunas pequeñas utilidades de sólo unas pocas peticiones en un correo electrónico desde un 3D o textura artista en una sola sesión con una bolsa de pretzels y una taza de Joe.

Ser capaz de desarrollar diagramas de flujo, diagramas UML, los diccionarios de casos de uso, y extensos estándares de codificación antes de mano es una buena manera de mantener las cosas organizadas, y es sin duda vale la pena hacerlo en proyectos más grandes, los equipos más grandes, y proyectos de misión crítica. Pero estas cosas toman tiempo y son a menudo excesivo para proyectos más pequeños.

Lo único que realmente tiene que garantizar es que usted tiene una comprensión adecuada del dominio del problema. Si no es así, pasar el tiempo en la delantera a la investigación hasta que lo haga es siempre vale la pena el tiempo.

OMI 5 minutos de la planificación por delante = 1 hora de codificación ....

Así que muchas veces tenemos que volver atrás y reconsiderar toda la situación, debido a que no tenemos pensado nada.

La parte más importante debe ser el diagrama de flujo.

Los demás detalles a veces pueden ser atendidos sobre la marcha.

Cuando toma en un problema de cualquier tamaño, siempre planes de escribir al menos dos veces.

Todavía estoy en la universidad y que todavía no tienen experiencia con la creación de sistemas de software a gran escala, pero ...

Lo primero que hay que hacer es trabajar en lo que se quería. Hasta ahora para mí, esto es normalmente una especificación de asignación, pero en el mundo real que implica hablar con el cliente. Una gran cantidad.

A continuación, yo trabajo la manera de hacer lo que se requiere. Para los programas relativamente pequeños que he estado trabajando, normalmente se formo en mi mente una idea aproximada de lo que mi programa va a ser similar (lo que las partes importantes del programa son y cómo interactúan entre sí). Esto puede implicar los picos si tengo ni idea de cómo alguna parte del programa funcionará. No creo que este enfoque (hacerlo todo en mi mente) se escala muy bien, pero la pregunta estaba preguntando lo que realmente hacemos ...

Una vez que sé más o menos lo que estoy tratando de hacer, me siento a escribir el código. Es aquí donde descubro ningún problema en lo que estaba pensando.

No creo que he utilizado todos los pseudocódigo para diseñar un algoritmo. Creo pseudocódigo es demasiado bajo nivel para diseñar grandes trozos del programa.

Sólo he utilizado una diagrama de flujo en una ocasión para ayudar con el diseño de un programa - cuando yo estaba aprendiendo el montaje y era bastante nuevo en la programación (y era útil). El mes laboral mítico dice lo siguiente: ". El diagrama de flujo detallado golpe por golpe, sin embargo, es una molestia obsoletos, apto sólo para el inicio de principiantes en el pensamiento algorítmico ... nunca he visto un programador experimentado que habitualmente se hizo diagramas de flujo detallados antes de comenzar a escribir programas ".

Dibujo diagramas de flujo extensas y escribo pseudo código para las funciones más complicadas. Siento que dibujar el diagrama de flujo me permite refactorizar sin introducir errores por accidente. Hacer un diagrama visual en papel como un diagrama de flujo también ayuda a averiguar si mi lógica es realmente correcta. Esto sólo funciona para las pequeñas -. Proyectos de mediano donde se sabe que la mayor parte de las especificaciones

Con más experiencia, la necesidad de elaborar diagramas de flujo extensas y escribir pseudocódigo función entera se convertirá en más redundante sin embargo antes de que llegue a ese punto, sugerimos que planea antes de código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top