Por donde comenzar?
Es la pregunta de mis alumnos, la respuesta es simple:
Requerimientos
Planificación del proyecto
Análisis y diseño de la arquitectura del sistema
Diseño del plan de pruebas de la arquitectura
Análisis y diseño del framework base
Diseño del plan de pruebas del framework base
Análisis y diseño del API del sistema
Diseño del plan de pruebas del API
Creación del plan de desarrollo usando SCRUM
Programación y pruebas unitarias del framework base
Programación y pruebas unitarias del SDK para la construcción del sistema
Programación y pruebas unitarias del sistema
Pruebas del sistema
Programa piloto de uso
Suena largo y extenso, si, pero es la única forma de tener un sistema comercial.
Que diferencia un sistema comercial de un sistema interno de una empresa? La respuesta es el número de usuarios y el costo de soporte, en un sistema comercial el precio de venta está definido por mercadeo, el costo de soporte está supeditado a la calidad del sistema, menor calidad mayor costo de soporte, por eso los esquemas de open source que algunas organizaciones ponen en su desarrollo, el costo del soporte lo comparten con los usuarios … en realidad son subsidiados por ellos.
La otra diferencia es la durabilidad de un sistema comercial, conozco productos de software que tienen mas de 10 años de uso, con mejoras contínuas, donde la primera versión no tiene relación con la última, desde el punto de vista del usuario, pero tiene un gran porcentaje del mismo código fuente desde el punto de vista de los programadores.
Otro punto importante es la documentación para el usuario, el control de calidad del producto y el soporte al usuario final. Los productos mas exitosos en el mercado no han sido los mejores sino los que cuentan con mejor soporte.
Por años he escuchado la misma opinión de gerentes generales y gerentes de tecnología: «no es el mejor producto, pero tienen el mejor soporte» y pagan por eso.
Requerimiento 1: El sistema debe estar enfocado a pequeñas (< 10 usuarios) y medianas empresas (< 50 usuarios). Dando todas las facilidades para la operación diaria y facilitando el crecimiento de la solución hasta cubrir las necesidades de la organización.
Nota 1: Lo que cuenta son los usuarios del sistema, no los empleados o los montos de la organización. En la actualidad un pequeña empresa puede tener cientos de empleados (factorías, tercerizadoras, agrícolas, distribución) y solo unos pocos usuarios del sistema.
Requerimiento 2: El sistema debe estar enfocado en la operación diaria de la empresa, no en el seguimiento de transacciones. Todo debe estar enfocado en la administración del proceso.
Requerimiento 3: Todo el sistema debe ser declarativo, configurable y modificable por el que instala o por el usuario final.
Requerimiento 4: Todo debe tener un «wizard» para facilitar el proceso de creación de componentes como empresa, usuarios, productos.
Requerimiento 5: Debe existir una versión de 1 usuario que utilice pocos recursos, pero que se integre con la versión general.
Asi que, tenemos que empezar por la arquitectura de la aplicación y que herramientas vamos a usar.
Por que .NET?
La razón es simple, me gusta .NET. He trabajado con productos de Microsoft durante años y ésta es la primera vez que estoy de acuerdo con Microsoft: .NET es una maravilla (comparado con lo anterior de Microsoft) y tengo acceso a las herramientas y componentes.
Herramientas
Microsoft .NET Framework 3.5, Visual Studio 2008, SQL Server 2008.
Red-Gate Sqltoolbelt, Embarcadero ER-Studio, VersionONE
TODO COMENTARIO ES BIENVENIDO.
Ivan, situas Scrum en la novena posición, cuando en scrum se comienza en los requisitos o incluso antes, en el plan de negocio y las prueba unitarias en la 9 posición, entiendo que estas se deben crear durante todas las fases del desarrollo, es mas existen buenas practicas que incluso pasan por desarrollarse antes que el propio programa, no se si la posición es algo indicativo ?
Desde luego las herramientas estan muy bien, yo te recomendaria Resharper y CodeRush para mejorar la escritura de código y por supuesto la adopción de fxcop desde el principio.
Muy interesantes los post sobre aplicaciones reales, saludos.
Interesante post, yo he utilizado el ER-Studio con muy buenos resultados. Ojalá que comentes mas acerca del requerimiento 4, ¿Qué herramienta usarías para crear los ‘wizards’?.
Saludos
No se si el orden que has puesto es correcto, por ejemplo Scrum comienza al inicio en los requerimientos, para mi podria empezar incluso antes, en el diseño del proyecto o el plan de negocio.
Yo te recomendaria la adopción de fxcop desde el comienzo y la utilización de herramientas como resharper o coderush que te avisaran de errores en la escritura de tu código y cuenta con varias utilidades que permitiran escribir más rápido.
Muy interesante tu post. Salu2.
El orden puesto es debido a una realidad de este proyecto, los 8 primeros pasos son conceptuales, en una organización existente, las definiciones de herramientas, framework, api ya existen.
En este proyecto solo tengo en este momento un esquema mental que debo construir y con apoyo, el llegar a un producto.
EL proceso real de construcción empieza en el punto 9, con el SCRUM, donde se organizaría como primer story del primer sprint el plan de negocio y la amplitud del primer release.
Podría decir que los 8 primeros pasos son del «cliente», y desde el 9 del proveedor de servicios de tecnología.
Y por eso los requerimientos son tan generales, en realidad son requerimientos de arquitectura, no del producto.