Seleccionar el talento y los recursos apropiados: Captar y seleccionar el talento humano con las destrezas necesarias y experiencia relevante es vital para garantizar el éxito del proyecto. Es importante asignar el trabajo apropiado a la persona indicada. Por otro lado, invertir en herramientas que aumentan la productividad y eficiencia del equipo de desarrollo es muy importante. Buenos equipos, hardware moderno, software y plataformas de desarrollo y de pruebas actualizado, y herramientas automatizadas ayudan a que el equipo pueda imprimir todo su conocimiento y buenas prácticas para garantizar un producto sólido, fiable y robusto.
Escoger el proceso de desarrollo apropiado: El ciclo de vida del desarrollo del software tiene una fuerte dependencia del proceso elegido. El modelo en cascado, la metodología ágil, el enfoque iterativo en espiral, son todos formas contrastadas de alcanzar el éxito. La dificultad está en elegir bien qué metodología le conviene más a cada tipo de proyecto. Esto es de suma importancia. La adhesión efectiva y el hecho aplicar a rajatabla la metodología elegida es lo que determina que el proyecto llegue a buen puerto. En ocasiones es bueno hacer un pequeño prototipo para evaluar la viabilidad o investigar nuevas tecnologías. Hacer presupuestos y estimaciones razonables: Muchos proyectos fracasan o se prolongan en plazos por hacer estimaciones poco realistas. Una planificación razonable depende de fijar bien los tiempos, el presupuesto, los recursos y los esfuerzos. Lo mejor es
usar técnicas de estimación y presupuestarias contrastadas. Intentar apretar las estimaciones para intentar acortar un proyecto normalmente termina en catástrofe.
Fijar hitos más pequeños: Los grandes proyectos e hitos deben complementarse con mini-hitos para poder hacer mejor seguimiento, más control y mejor gestión de riesgos, y en general para mitigar incidencias de una forma más controlada. Los miembros del equipo deben reunirse para fijar estos mini-hitos y alinearlos con los grandes hitos para cumplir plazos y reducir los retrasos que pueden surgir por las interdependencias de las tareas que tienen asignadas.
Definir bien los requisitos: Documentar de manera efectiva los requisitos es la columna vertebral para poder alinear el producto final con los objetivos empresariales. Es imperativo que se reúnan todas las partes (clientes, los responsables de empresa y los líderes de los equipos) para documentar los requisitos de forma clara y concisa, sin dejar lugar a lagunas o a la improvisación. Es necesario definir los requisitos básicos, los derivados y los implícitos, tanto funcionales como no funcionales. La funcionalidad se puede obtener mediante escenarios de casos de uso. Los requisitos en torno al rendimiento, funcionamiento a prueba de fallos, de sistema, diseño y arquitectura, todos deben estar bien documentados y tenidos en cuenta.
Definir la arquitectura del sistema: Un buen arquitecto de aplicaciones garantizará una elección de arquitectura del sistema apropiada, teniendo en cuenta tanto los requisitos como las limitaciones y restricciones, si las hubiera. Buenas prácticas, tales como la identificación de amenazas y anti-patrones dentro del sistema son muy útiles.
Optimizar el diseño de la aplicación: El diseño debe ser modular y estar optimizado. Equilibrar y distribuir funcionalidad entre varios módulos puede hacer que el proyecto funcione bien o que rompa. Un enfoque orientado a objetos es una técnica que garantiza modularidad. Depende de los diseñadores garantizar que el enfoque elegido se aplique bien para poder lograr la máxima cohesión con un acoplamiento mínimo. La reutilización del código es un aspecto muchas veces infrautilizado en el diseño de la aplicación, y si está bien implementado, puede ahorrar mucho esfuerzo y reducir costes a la larga en cualquier proyecto.
Implementar el código de manera efectiva: El uso de módulos más pequeños que están auto-probados, probados unitariamente y que se integran continuamente es una buena práctica muy extendida. La automatización de herramientas build y la ejecución automatizada de pruebas de regresión para cada funcionalidad incluida se recomienda para garantizar que la funcionalidad ya implementada no rompe.
Pruebas rigurosas y validación: La planificación de pruebas, la creación de conjuntos de pruebas y la ejecución de estas son muy importantes con el fin de validar la funcionalidad desarrollada. De hecho, la planificación de las pruebas debe hacerse en paralelo a la fase de desarrollo. Igual de importante es la documentación que hagamos de las pruebas, informar de forma efectiva los errores, el rastreo de los errores y la corrección de estos. El uso de herramientas automatizadas al igual que procesos contrastados que aseguren que los errores se identifiquen en la fase más temprana posible y resuelto con el menor coste. Las pruebas unitarias, las de integración, las de funcionalidades, las del sistema y las del rendimiento son algunos tipos de pruebas. Cada nivel de prueba requiere su pericia, planificación y ejecución.
Documentación: Aun siendo importante el propio software, igual de importante es toda la documentación sobre el que se apoya –el plan del proyecto, requisitos y especificaciones, Diseño de Alto Nivel (HLD), Diseño de Bajo Nivel (LLD), planes de pruebas, informes de las pruebas, informes de estado y la documentación para los usuarios. Muchas veces estos documentos son parte de los entregables especificados por el cliente o las partes interesadas en un proyecto determinado. Estos documentos ayudan a garantizar el entendimiento del software, trazabilidad y eliminar la dependencia del equipo de desarrollo original. Pueden usarse como referencia en el futuro por otras personas que necesites mantener, mejorar o usar el software.
Planificar sesiones de revisión de código: Las revisiones de código muchas veces son más efectivas, y sin duda menos costoso, para encontrar errores que si solo hacemos pruebas. Las revisiones de todos los entregables, del código y de la documentación es algo que siempre se debe hacer. Estas sesiones de revisión del código, su gestión y la resolución de conflictos que puedan darse en las mismas se hacen siguiendo una serie técnicas contrastadas y buenas prácticas. Tanto la revisión a pares como las revisiones por terceros expertos siempre son útiles.
Garantizar la gestión del control de las fuentes del software: El uso de una gestión efectiva del código fuente y la documentación, para que estén controlados según la versión, es fundamental para poder mantener la trazabilidad y la reversión controlada del código si fuera necesario. En el mercado hay mucho software disponible para este tipo de tareas.
Control de calidad: El control de calidad ayuda a sacar adelante los proyectos de desarrollo sin graves trastornos y de forma más rápida. Desde la detección de fallos hasta el establecimiento de métricas claves, las mejores prácticas en este terreno han demostrado ser un éxito a la hora de determinar si un proyecto está en condiciones de pasar a una nueva fase o si está listo para ser lanzado o entregado al cliente. Se deben fijar métricas y objetivos para asegurar que los requisitos, el diseño, el código, las pruebas y otras tareas vayan coordinadas y alienadas.
Instalación y despliegue eficaz: En multitud de ocasiones cuando ya hemos probado el software de puertas a dentro y todo va bien, de repente el proyecto fracasa en casa del cliente o cuando estamos en fase de implementación y despliegue. Es muy importante tener un buen plan de despliegue y hacer una lista a modo de “checklist” para evitar desastres.
Estrategia de soporte y mantenimiento: Incluso cuando el software desplegado está funcionando, debe haber un proceso de soporte y mantenimiento en marcha, previamente diseñado y pensado, para poder informar y reportar errores y mejoras al equipo de desarrollo de forma eficaz.
Metodologías del desarrollo de sistemas de informaciónSon métodos que indican cómo hacer más eficiente el desarrollo de sistemas de información. Para ello suelen estructurar en fases la vida de dichos sistemas con el fin de facilitar su planificación, desarrollo y mantenimiento.
Deben definir: objetivos, fases, tareas, productos y responsables
Objetivos:
- Mejorar la calidad del sistema
- Satisfacer las necesidades de los usuarios del sistema
- Ajustar Plazos y costos en planeación
- Definir actividades a llevarse a cabo en un Proyecto de S.I.
- Facilitar el mantenimiento posterior de los sistemas
Modelo Cascada
Utilizado cuando existen especificaciones amplias de los requerimientos del cliente.
o El inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior.
o Cualquier error de diseño detectado en la etapa de prueba conduce necesariamente alrediseño.
Ventajas/desventajas
- No todos los requisitos son expuestos, al principio, de forma explícita como requiere este modelo.
- El cliente debe tener paciencia, ya que la aplicación sólo estará disponible en un estadomuy avanzado del proyecto.
Modelo prototipos
Se utiliza si en el mercado no se encuentra el producto, pero el cliente desea resultados inmediatos
- No posee la funcionalidad total del sistema, pero si condensa la idea principal del mismo, Paso a Paso crece su funcionalidad, alto grado de participación del usuario.
- El cliente puede pensar que el prototipo es una versión acabada.
- Pueden llegar a pasarse por alto la calidad del software global o el mantenimiento a largo plazo.
- La clave del éxito de este modelo consiste en definir bien, desde el principio, las reglas del sistema.
- Alto grado de participación del usuario.
Modelo Incremental Evolutivo
Reemplazar el antiguo desarrollo con uno nuevo que satisfaga las nuevas necesidades según las redefiniciones del problema
- Este proceso se repite hasta la obtención de un producto completo.
- Los requisitos son priorizados. Los requisitos con una más alta prioridad se incluyen en
- los incrementos más tempranos.
- Los clientes no tienen que esperar hasta tener el sistema completo. El primer
- incremento satisface los requisitos más críticos.
- Los primeros incrementos sirven como prototipo y ayudan en la tarea de detectar los
- posteriores requisitos.
- Existe un riesgo bajo de fallar en el proyecto total.
- Puede ser difícil ajustar los requisitos a los incrementos.
Modelo Espiral
Utilizado para el desarrollo de aplicaciones complejas y/o específicas. (Ej. Investigación Genética)
- Es una mejora del Modelo Basado en prototipos.
- Cada vuelta en la espiral representa una fase del proceso.
- La dimensión radial representa el coste acumulado en la financiación de las fases.
- Un ciclo a través de la espiral es simular un paso a través de un modelo en cascada.
- Requiere comunicación permanente con el cliente.
- Cliente debe ser gran conocedor del sistema.
Esquema de Desarrollo de Sistemas
1. Estudio de Factibilidad
- Determina si es posible o no ofrecer solución automatizada a los problemas actuales
- Descripción del entorno
- Identificación del problema
- Identificación de los procedimientos actuales
- Presentación de las posibles soluciones al problema
- Validación de las posibles soluciones
- Ventajas y desventajas de cada posible solución
- Cuadro comparativo de costos y tiempos de ejecución
- Recomendación
2. Acciones Preliminares
- Designación del equipo de proyecto
- Elaboración de la planificación del proyecto
3. Análisis de Sistemas
- Objetivo general y objetivos específicos del sistema propuesto
- Identificación de usuarios
- Diagrama de Flujo de Datos del sistema actual (DFD)
- Diccionario de Datos del sistema actual (DD)
- Recopilación de reportes del sistema actual
- Elaboración de procedimientos propuestos
4. Diseño de Sistemas
- Diagrama de Flujo de Datos del sistema propuesto (DFD)
- Diccionario de Datos del sistema propuesto (DD)
- Diagrama Entidad Relación (DER)
- Diagrama Estructurado de Datos (DED)
- Carta Estructurada (CE)
- Diagramas de Acción (DA)
- Diseño de interfases
- Selección de la plataforma de desarrollo
5. Programación
- Diagrama de Flujo de Datos del Sistema Propuesto (DFD)
- Diccionario de Datos del Sistema Propuesto (DD)
- Diagrama Entidad Relación (DER)
- Diagrama Estructurado de Datos (DED)
- Carta Estructurada (CE)
- Diagramas de Acción (DA)
- Diseño de Interfases
- Selección de la plataforma de desarrollo
- Código fuente y código objeto
- Creación de la base de datos
6. Implantación
- Prueba
- Conversión
- Instalación de hardware y software
- Adiestramiento de usuarios
- Elaboración de la documentación
- Entrega al usuario
No hay comentarios.:
Publicar un comentario