¿Cuáles son las limitaciones del desarrollo de software?
La mayoría de los proyectos de software fracasan. De hecho, Standishgroup informa que más del 80% de los proyectos no tienen éxito, ya sea porque exceden el presupuesto, se retrasan, están incompletos, faltan funciones o una combinación de estos factores. Además, el 30% de los proyectos de software se ejecutan tan mal que se cancelan antes de finalizar. Según nuestra experiencia, incluso si se utilizan tecnologías modernas como Java, J2EE, XML y servicios web, los proyectos de software han cumplido esta regla sin excepción. Este artículo describe los diez factores más importantes que pueden ayudar a mejorar la tasa de éxito de los proyectos de desarrollo de software. Los líderes de la industria como StandishGroup también proporcionan documentación sobre importantes factores de éxito para proyectos de software. ¿Factores para el éxito del proyecto? 1. Contratación de personal capacitado y experimentado: el entorno actual es más complejo que nunca. ?
Las herramientas como WebSphere Studio son útiles, pero en manos de empleados sin experiencia tienden a producir resultados mediocres en el mejor de los casos y fallan la mayor parte de las veces porque no saben cómo usarlas. Es la gestión de proyectos y mejores prácticas para la aplicación de nuevas tecnologías. Excelentes gerentes de proyecto y arquitectos de proyecto o directores técnicos formarán la fuerza de liderazgo del proyecto. Determinan cómo se llevará a cabo el proyecto y tienen un gran impacto en el éxito final del proyecto. Si tienes personas así, trátalas bien, y muy bien. Es necesario que el director del proyecto y el director técnico entrevisten a otros miembros del equipo y decidan quiénes pueden unirse al equipo. El resto del equipo también debe tener habilidades y experiencia superiores a la media. Los que tienen un desempeño deficiente necesitan atención constante, pero por lo general “se quedan cortos”. En última instancia, siempre frenan al equipo, haciendo que el proyecto avance lentamente. Sin embargo, eso no significa que no pueda haber nadie de nivel junior en el grupo. Normalmente, estos miembros están más motivados para hacer lo mejor que pueden si se les da la oportunidad. Por ejemplo, en un grupo de 20 personas, puede haber 2 líderes, 6 personas de nivel superior, 9 personas de nivel medio y 3 personas de nivel inferior. De esta forma, un grupo de 20 personas se puede subdividir en 4 o 5 grupos, teniendo cada grupo un líder de grupo. IBM Software Services e IBM Global Services (IGS) cuentan con gerentes de proyectos, arquitectos de proyectos, orientación técnica y consultores experimentados que pueden ayudarlo con su proyecto. ? 2. ¿Aplicar tecnologías de vanguardia, pero no extremadamente vanguardistas?
Muchas empresas de Fortune 500 han aplicado con éxito tecnologías maduras (como las líneas de productos J2EE y WebSphere) en proyectos de software, estos proyectos lo han hecho. tuvo un gran impacto en el modelo de negocio de la empresa. En algunos casos, es necesario aplicar tecnología de punta para ayudarlo a obtener una ventaja significativa sobre la competencia. Sin embargo, esta estrategia conlleva riesgos y, en este caso, es más importante contar con un buen personal de proyecto. Dado que pocas personas tienen experiencia con tecnologías de vanguardia, es igualmente importante obtener ayuda de expertos externos. Los proyectos que utilizan tecnologías extremadamente vanguardistas o que aún no han sido probadas deben considerar sus propios planes de investigación. Esto puede resultar útil para la validación temprana de conceptos en tecnologías emergentes. Sin embargo, no es realista ejecutar un proyecto basado en dicha tecnología de la misma manera o al mismo costo que un proyecto que utiliza una tecnología más madura. 3. ¿Utilizar el proceso de desarrollo correcto? - Las características de los proyectos de software modernos requieren el uso de un proceso de desarrollo en espiral (como el Proceso Unificado Racional (RUP)), algún tipo de método IGS iterativo o incluso un método flexible (como el programación extrema) (eXtremeProgramming)). ?
El proceso de desarrollo en espiral tiene múltiples etapas de desarrollo, que pueden reducir gradualmente los riesgos del proyecto. Al final de cada etapa se debe tomar la decisión de continuar o detenerse. En las primeras etapas, los grupos pueden utilizar prototipos para estudiar nuevas tecnologías o para estudiar interfaces de usuario. Por ejemplo, el método RUP define roles, tareas y componentes para cada fase, que sirven como pistas para el equipo del proyecto al considerar asuntos relacionados con el proyecto. Lo más importante de cualquier proyecto no es qué proceso se utiliza, sino qué tan bien se aplica.
Los gerentes de proyecto y directores técnicos deben prestar atención y comprender cómo ajustar el proceso de acuerdo con los problemas encontrados y cómo aplicar las mejores prácticas para ejecutar el proceso. Los procesos proporcionan orientación y sugerencias sobre lo que se debe hacer. Por otro lado, alejarse demasiado de los principios del proceso puede conducir a resultados desastrosos. Puede encontrar información detallada en el artículo relacionado Mejores prácticas para proyectos de desarrollo de software. 4. Proporcionar herramientas adecuadas: cualquier proyecto de software requiere herramientas adecuadas para ayudar al equipo a aumentar la productividad. ?
Estas herramientas incluyen dispositivos de hardware apropiados, así como herramientas de diseño, programación y prueba. La justificación de los costes de las herramientas es relativamente sencilla de explicar. Por ejemplo, suponiendo que un entorno IDE como WebSphere Studio Application Developer puede ahorrarle a un programador cinco horas a la semana, en promedio, este programador le cuesta a la empresa $50 por hora. Es fácil ver que el retorno de la inversión (ROI) vale la pena. Del mismo modo, asegúrese de que su equipo tenga las PC más recientes y rápidas para el desarrollo y proporcione un entorno de prueba adecuado para el control de calidad, la validación del usuario y las pruebas de implementación. Es necesaria la formación en la aplicación de nuevas herramientas o técnicas para aprovechar plenamente sus beneficios. IBM tiene una enorme biblioteca de recursos de capacitación, incluidos cursos presenciales y en línea. Los consultores de IBM Software Services e IGS también pueden ofrecer seminarios, consultoría y capacitación in situ. ? 5. ¿Aplicar la gestión de control de documentos fuente?
Se debe aplicar un sistema de gestión de control de documentos fuente (SCM) al comienzo del proyecto. No solo el código fuente, sino todos los documentos deben tener una versión controlada por el sistema SCM. Esto permite al equipo revisar el historial del proyecto y obtener toda la documentación relevante de versiones anteriores del proyecto, como casos de uso, documentos de arquitectura y diseño, así como scripts de prueba y planes de prueba. Le recomiendo que utilice productos SCM de nivel empresarial como RationalClearCase/ClearQuest. ? 6. ¿Aplicar métodos de evaluación efectivos?
La mayoría de los proyectos excederán el tiempo esperado entre un 25% y un 100% durante la ejecución, pero también hay algunos proyectos que llegan a tiempo, siendo la diferencia horaria con respecto al cronograma. menos del 10%. Si no se puede estimar con precisión el progreso, no hay forma de planificar de forma eficaz. Sin embargo, las estimaciones de tiempo y esfuerzo en las primeras etapas de un proyecto son muy vagas. Estas estimaciones incluyen muchas contingencias y pueden duplicar el valor estimado. El desarrollo de software es un proceso de refinamiento incremental, al igual que la estimación. A medida que avanza el proyecto, las estimaciones se vuelven más precisas. El tiempo y esfuerzo real del proyecto se conocerán al final del mismo. La mayoría de los ingenieros de software tienden a subestimar y, naturalmente, es probable que aumente el costo del proyecto. Al estimar el cronograma, tenga cuidado de no comprimirlo demasiado. Si el equipo no sigue un calendario apretado, es probable que acabe lejos del progreso esperado. ? 7. ¿Refinar el trabajo en metas pequeñas?
Las metas pequeñas son el resultado de refinar las metas grandes. El objetivo principal es el final de una fase o incremento. Para llegar a ese punto, los proyectos deben tener objetivos granulares durante todo el proceso. Se pueden lograr pequeñas metas en uno o dos días, medidas en horas. Tiene los siguientes beneficios: puede mejorar los informes de estado; puede lograr un control detallado porque puede saber si una pequeña meta no se ha completado; puede motivar mejor a los empleados porque una pequeña meta se puede completar aproximadamente todos los días; puede reducir el progreso de la ejecución. Para evitar diversos problemas en el proyecto, se recomienda establecer pequeños objetivos desde el inicio del proyecto. La mejor manera es utilizar una hoja de cálculo para registrar y seguir el progreso de los objetivos pequeños. Los planes de proyecto generados por herramientas como Microsoft Project se utilizan mejor sólo para tareas de nivel superior. Por supuesto, solo la etapa actual se divide en múltiples tareas objetivo pequeñas. Las etapas posteriores se dividen cuando es necesario. Aunque los desarrolladores ven el establecimiento de objetivos pequeños como una molestia, este problema compensa la capacidad de los líderes de grupo y de los desarrolladores individuales para definir sus propios objetivos y distribuir la gestión del proyecto y el seguimiento de la carga de trabajo del proyecto. A menudo, una tarea definida mediante orientación técnica se vuelve más grande una vez que los desarrolladores la dividen en múltiples objetivos más pequeños. En ocasiones el director técnico ofrece soluciones alternativas, más rápidas y más mantenibles, y en otras ocasiones coincide con la descomposición de la tarea y dedica más tiempo a la tarea.
La implementación temprana de esfuerzos de planificación con objetivos pequeños puede evitar resultados potencialmente catastróficos. ?
8. ¿Hacer un seguimiento de todo el tiempo del proyecto en horas?
No solo el tiempo dedicado por los consultores y contratistas pagados por horas, sino también el tiempo dedicado por cada miembro del proyecto. El tiempo también es importante. La ventaja de esto es que puedes comparar tu tiempo personal con el tiempo planificado para el proyecto. Hay pasos a seguir si el individuo ha pasado a otras tareas. Asimismo, los tiempos reales se pueden comparar con los tiempos estimados, lo que a su vez puede proporcionar información sobre los métodos de estimación de tiempos para la siguiente fase del proyecto o para el siguiente proyecto. Las estimaciones del tiempo total para objetivos pequeños pueden limitar el exceso de los límites de tiempo, por lo que estos límites de tiempo pueden revisarse. La aplicación de tecnología para objetivos pequeños requiere tiempo y esfuerzo de todos los aspectos, incluida la orientación técnica, el liderazgo del equipo y de cada desarrollador. Al menos cada semana, cada desarrollador envía su estado de trabajo en una hoja de cálculo para que el gerente del proyecto pueda actualizar el porcentaje de finalización de cada tarea de nivel superior. Esto distribuirá la carga de trabajo de gestión de proyectos a otros miembros del equipo. El seguimiento del tiempo del proyecto lleva más tiempo, pero permite una gestión de proyectos muy eficaz. ? 9. ¿Responder a los cambios en curso?
Para la mayoría de los proyectos, el cambio de demanda mensual del proyecto no será superior al 5%. Estos cambios se producen por muchas razones, como no hacer las preguntas correctas en el momento adecuado, el problema con el que se está tratando cambia, los usuarios cambian de opinión o de concepto, el entorno empresarial cambia o el mercado cambia. La proliferación de funciones puede fácilmente impulsar los costos y los cronogramas de ejecución más allá de las estimaciones previas. En las primeras etapas de un proyecto, existe mucha confusión en los requisitos del mismo. Cuando la ejecución llega a una determinada etapa (generalmente al final de la segunda etapa), se deben determinar los requisitos del proyecto y bloquear su contenido principal. Un proceso de gestión de cambios se lleva a cabo mediante el llamado "changeboard", que está compuesto por representantes de cada área involucrada en el proyecto, como negocios, marketing, desarrollo, control de calidad, documentación de usuario, atención al cliente y gestión de proyectos, etc. La Junta de Cambios es responsable de hacer llegar los cambios a las personas adecuadas, explicar los cambios y realizar estimaciones de tamaño de todas las partes. Después de obtener suficiente información, el Comité de Cambio puede decidir si acepta o rechaza el cambio. Una vez que se acepta un cambio, se agrega al plan y se cambia el cronograma de ejecución. El proyecto con cambios se presenta más tarde que el proyecto original sin cambios, pero aún así tiene éxito porque aún cumple con el cronograma de ejecución revisado y las expectativas de los accionistas. Si un proyecto tiene más del 5% de cambios luego de habilitar un comité de cambio, indica que el proyecto está mal desarrollado o ha perdido el control y es probable que fracase. ? 10. ¿Liderazgo del proyecto?
Es crucial que los directivos de la empresa designen a un ejecutivo que asuma la responsabilidad de los resultados del proyecto de software. Este ejecutivo clave no solo tiene una visión general, sino que también obtiene y controla los recursos necesarios para que el proyecto ayude y respalde al equipo. También es importante que el ejecutivo no tenga que interferir ni gestionar asuntos triviales en el grupo. El ejecutivo debe creer que al grupo se le pueden confiar tareas importantes. ?Conclusión?
Este artículo enumera diez factores que ayudan a mejorar la tasa de éxito de los proyectos de desarrollo de software. Si sigue estas pautas, podrá completar mejor los proyectos dentro del presupuesto y el cronograma, mantener un equipo productivo y minimizar los cambios de funciones.
De hecho, el método utilizado para desarrollar software depende de muchos factores y también está restringido por el entorno. Editor de métodos de desarrollo de ingeniería de software Grandes empresas e instituciones de software extranjeras han estado estudiando el aspecto conceptual del método de desarrollo de software. Y también se han propuesto muchos métodos de desarrollo prácticos, como: método del ciclo de vida, método de creación de prototipos, método orientado a objetos, etc.