Cómo planear una aplicación de software

En mi experiencia, la clave es describir su software de una manera que todos los interesados ​​entiendan. Esto significa evitar los marcos técnicos formales rígidos que no son accesibles para usuarios no técnicos.

En nuestra empresa, donde creamos aplicaciones web y móviles para empresas, utilizamos las siguientes herramientas:

  1. Historias: alguna forma de describir lo que ciertos usuarios deben poder hacer en el sistema.
  2. Conceptos: Estas son las “cosas” en su aplicación. Usuarios, tarjetas de crédito, documentos, eventos, etc. Esto incluye una lista de las propiedades que tiene cada concepto, qué significa la propiedad, cómo se usa y qué se permite que sea. Nota: los conceptos generalmente se traducen en un conjunto de tablas de la base de datos: una tabla primaria con el nombre del concepto y tablas secundarias que describen las relaciones y los meta adicionales necesarios para que el concepto funcione.
  3. Mapa de páginas : enumere las páginas / interfaces que la aplicación necesita para cumplir con sus requisitos funcionales.
  4. Maquetas de páginas: páginas completamente diseñadas.
  5. Algoritmos / Procesos: Este es importante. Cree algún tipo de patrón de pseudocódigo simple para describir cómo funcionan los aspectos no estándar de su sistema. Asegúrese de que el pseudocódigo sea lo suficientemente claro como para mostrar a los usuarios no técnicos, porque si no es así, es probable que desarrolle correctamente lo incorrecto.
  6. Planes de integración: Similar a los Algoritmos / Procesos anteriores, pero con la advertencia de que las dependencias de terceros pueden ser su mayor riesgo, así que asegúrese de validar sus casos de uso previstos a fondo.

Todos los artefactos anteriores se pueden desarrollar en paralelo. Espere múltiples iteraciones para cada artefacto, posiblemente resultando en un reprocesamiento completo. A medida que se refina un artefacto, a menudo dará lugar a cambios o adiciones a otros artefactos. Este proceso puede consumir una gran cantidad de tiempo y energía.

Una vez que se hayan desarrollado los artefactos anteriores, debe estar listo para proporcionar una estimación. No significará que su estimación sea precisa, pero significará que todos sabrán lo que se acordó.

¿Parece que esto es demasiado trabajo? Una cosa que puedo garantizar por experiencia es que no documentar ninguno de los artefactos anteriores dará como resultado un desarrollo fallido que resultará en la necesidad de volver a trabajar. La diferencia es que puede llevar 2 horas volver a trabajar el diseño de una página durante la planificación, puede llevar 2 meses volver a trabajar el concepto subyacente una vez que se ha desarrollado incorrectamente.

A menos que esté facturando por hora y no le importe la experiencia de sus partes interesadas, está demasiado ocupado para no planificar .

Escribe puntos clave

Investigue las partes desconocidas: demostraciones de tecnología, etc.

Escribir una especificación para los puntos clave

Dibuja una GUI (o pide una)

Solicite decisiones sobre las partes que se pueden implementar de varias maneras.

Comience a programar

More Interesting

¿Alguna vez has hecho un software que hizo algo genial que no sabías?

¿Qué es lo que te apasiona y técnicamente, en qué estás más interesado en trabajar? Software

¿Está bien que un ingeniero senior con 7 años de experiencia trabaje continuamente en un campo técnico durante 3 años más?

¿Cuáles son los conceptos que necesito cubrir antes de ir a una prueba de selección para un puesto de ingeniero de software?

Cómo conseguir un trabajo en desarrollo de software sin título y desde cero

¿Qué es necesario o valioso saber sobre el desarrollo de software industrial para un estudiante universitario?

¿Cómo debo administrar mi tiempo para ser productivo?

¿Por qué tengo tanto miedo de escribir mi propio código? Leo mucho código y los entiendo, diablos, casi termino con esta aplicación que estoy creando, usando bibliotecas

¿Qué hace un ingeniero mecánico en una empresa de software como puesto de ingeniero de control de calidad?

¿Cuáles son las deficiencias de UML (Unified Modeling Language)?

¿Existe algún software que pueda usar para tomar reservas de mis clases en línea?

¿Cómo evitan los ingenieros experimentados en las startups el estancamiento debido al exceso de problemas operativos?

Al aprender un nuevo lenguaje de programación, ¿debo tener en cuenta una aplicación que quiero desarrollar o seguir el flujo del libro y luego trabajar en la aplicación?

¿Cuál es la diferencia entre un SILC y un SDLC?

¿Merece la pena convertirse en programador / desarrollador / codificador en este momento?