¿Cuáles son los mejores métodos para la estimación de proyectos de software?

Gran pregunta He usado muchos procesos de estimación diferentes, y no sabría cómo elegir cuál era “el mejor”. Depende mucho de la situación y de las personas involucradas. Creo que hay una serie de pautas que ayudan a hacer una mejor estimación.

  1. Averigüe si esta estimación es para el ‘siguiente paso’ o ‘solución final’. Cuando los usuarios de negocios solicitan estimaciones, a veces no está claro si están solicitando la estimación de la primera o la siguiente iteración de una solución, o si están solicitando la solución completa y completa. El resultado es que, a veces, las empresas creen que están obteniendo una solución completa con una estimación que es para una primera implementación parcial. Este es el alcance y la gestión de expectativas, y es el punto de partida para la estimación.
  2. Obtén la mejor documentación de requisitos que puedas . Los mejores medios (a) son lo más completos posible (b) expresados ​​de manera sucinta (c) utilizando diagramas para el UX (d) utilizando diagramas de flujo para la toma de decisiones complejas. Asegúrese de que coincida con el resultado del paso (1) anterior. es decir, si la estimación solicitada es para la “solución completa”, haga una “estimación completa”, etc.
  3. Haga primero un diseño de alto nivel temprano. Tener una vista inicial de la arquitectura y un modelo de datos en bruto. Esto ayuda con el siguiente paso. Mantenga esto funcional, no específico a ninguna tecnología.
  4. Divide el problema en unidades más pequeñas. ¿Hasta dónde dividir es una llamada de juicio? Si puede bajar a unidades de aproximadamente 2 a 3 semanas de tamaño, eso es bastante bueno. En general, cuanto más se divide, mejor, sin embargo, no desea abrumar a su equipo (ni a usted mismo) tratando de hacer un seguimiento de más subunidades de las que puede manejar.
  5. Consigue un desarrollador o un líder tecnológico para estimar las unidades más pequeñas. No siempre es posible, pero intente si puede. Estás buscando 2 cosas. Primero, una estimación. En segundo lugar, las complejidades ocultas o los riesgos que deben ser gestionados. Este segundo elemento es de importancia crítica. Dile a tu equipo que estás buscando estos.
  6. Conozca el equipo que está estimando. Diferentes equipos pasan a través de cargas de trabajo a tasas muy diferentes. Algunos equipos son agresivos que toman riesgos, otros son más conservadores. Desea saber esto para poder ajustar las estimaciones en consecuencia.
  7. Conozca la tecnología que está estimando. Las tecnologías maduras tienden a tener menos riesgos técnicos que las tecnologías maduras. Las nuevas tecnologías a veces pueden ofrecer formas más rápidas de hacer las cosas. Si puede hacer un perfil del conjunto de tecnologías en uso, combinado con el conocimiento del equipo, esto puede ayudar a hacer una mejor estimación.
  8. Compruebe los ratios. Hay algunos índices generales que tienden a jugar en la mayoría de los proyectos de desarrollo. Por ejemplo, la prueba total y el esfuerzo de control de calidad serán aproximadamente del mismo tamaño que el esfuerzo de desarrollo. En una solución bien diseñada, la arquitectura estará entre el 10% y el 20% del esfuerzo de desarrollo. Estas son las reglas generales, si sus estimaciones son diferentes, vuelva atrás y vuelva a verificar.
  9. Asigne tiempo para las inevitables actividades no relacionadas con el proyecto. Por ejemplo, si está estimando en días, recuerde que hay un máximo de 4.5 días por semana. Debe permitir reuniones de organización, eventos, interrupciones, etc.
  10. Supongamos que solo se ve una fracción del total. Nunca verás el 100% del total del proyecto al principio. Puede expresarlo con una “medida de confianza” expresada como un porcentaje. Si se siente seguro de haber visto y estimado todos los requisitos, vaya al 80%. Escala hacia abajo desde su Si no puede dar una puntuación de más del 60%, regrese y haga más estimaciones. Esto no es lo mismo que agregar tiempo de búfer a su estimación. Trae a la superficie su nivel de confianza en la estimación, que a su vez es significativo. Descubrí que con los clientes, si expresaba una medida del 70% o inferior, entendían y aceptaban la necesidad de hacer más estimaciones.
  11. La calidad de las estimaciones es proporcional al tiempo puesto en ellas. casi como todo lo demás. Las “estimaciones rápidas” no son mucho mejores que una conjetura. Mi experiencia ha sido que para que una estimación esté dentro del 10% del valor real final, como los clientes a menudo solicitan, debe gastar aproximadamente el 15% del esfuerzo total del proyecto en la estimación. Esto no es un trabajo “desperdiciado” o general, sino que es casi totalmente el análisis y la planificación lo que ayuda al trabajo de desarrollo de todos modos.
  12. Averigüe para qué se está utilizando la estimación. Si es para la planificación presupuestaria, y el tamaño del proyecto lo pondrá en el radar del CEO / CFO, entonces tendrá que dedicar bastante tiempo y esfuerzo a una estimación sólida, junto con las contingencias apropiadas. Es casi un mini-proyecto en sí mismo. Si la estimación es más acerca de establecer expectativas para un proyecto que va a suceder de todos modos, es posible que no necesite poner el mismo nivel de esfuerzo y recursos en él. Si se está utilizando para actuar como un punto de negociación con otro proveedor / proveedor, tenga cuidado de no caer inadvertidamente en una mentalidad competitiva y reducir sus estimaciones sin un razonamiento sólido.

Sí, eso es todo.

¿Qué es la estimación de prueba de software, quién estima, la importancia de la estimación de prueba de software, las técnicas de estimación de prueba de software y consejos para la estimación de prueba de software?

La Estimación de prueba de software es una tarea de alto nivel en el Proceso de prueba de software, por lo general, el Gerente de prueba / Responsable de prueba es responsable de la Estimación de prueba.

1. ¿Qué estimación de prueba de software?

Una estimación es una aproximación de presupuesto, tiempo y un cálculo aproximado de la cantidad.

2. Factores considerables para la estimación de la prueba

. Alcance del proyecto

. Presupuesto

. Hora

. Recursos Ambientales Disponibles

. Recursos humanos calificados disponibles

. Experiencia de organizacion

3. Importancia de la estimación de la prueba

Un estudio realizado por KPMG Pete Marwick encontró estas causas de fugas de software,

. Objetivos del proyecto no totalmente especificados (51%.

. Mala planificación y estimación (48%.

. Tecnología nueva en la organización (45%.

. Metodología Inadecuada / Sin Gestión de Proyectos (42%.

. Insuficiente personal senior en el equipo (42%.

. Mal desempeño de los proveedores de Hardware / Software (42%.

4. Técnicas de estimación de prueba

yo. Análisis de puntos de función (FPA):

Este método tiene como objetivo medir el tamaño de la funcionalidad de un sistema de información. La medida es independiente de la tecnología. Esta medición se puede utilizar como base para la medición de la productividad, la estimación de los recursos necesarios y el control del proyecto.

ii. Estimación de prueba de software de 3 puntos:

La técnica de estimación de pruebas de software de 3 puntos se basa en métodos estadísticos en los que cada tarea de prueba se divide en subtareas y luego se realizan tres tipos de estimación en cada tarea.

La fórmula utilizada por esta técnica es:

Estimación de prueba = P + (4 * N. + E / 6

Considerando que P = Escenarios positivos N = Escenarios negativos E = Escenarios excepcionales

iii. Utilice el método de punto de caso:

El método de uso de puntos de caso se basa en los casos de uso en los que calculamos las ponderaciones de actor no ajustadas y las ponderaciones de caso de uso no ajustadas para determinar la estimación de prueba de software.

iv. Técnicas basadas en la experiencia:

En este enfoque, la estimación se puede realizar en base a la experiencia previa (Dominio, Nivel de prueba, Tipo de prueba. Es un método informal de estimación de prueba, pero confiable.

Técnicas basadas en expertos:

Expertos de la industria (personas mayores. Estiman el proceso de prueba según su experiencia en la industria, estudio y estándares de la industria.

5. Consejos para la estimación de la prueba

yo. Añadir un poco de tiempo de búfer

Incluir algún tiempo de búfer, que es realista. El uso del tiempo de búfer puede ajustarse y es posible una mejor cobertura de prueba, pero no incluye mucho tiempo de búfer.

ii. Intenta medir la fuerza del equipo de desarrollo.

El diseño de la prueba depende de los requisitos y el alcance del proyecto, pero el informe y seguimiento de los defectos depende de la fortaleza del desarrollo.

iii. Considerar entorno de prueba (Laboratorio de pruebas.

Alojamiento, configuraciones de hardware, soporte técnico también factores importantes, influyen en el proceso de ejecución de la prueba.

iv. Alcance del proyecto

Considere el alcance del proyecto, el alcance depende del negocio del cliente y los grupos de usuarios, generalmente las aplicaciones financieras tienen más alcance que la aplicación ERP.

Nota: Hoy en día la calidad es importante para cada aplicación de software.

mi. Considerar tipos de prueba

Considere los tipos de prueba, ejemplo de prueba funcional, prueba de rendimiento y

Pruebas de usabilidad, etc.

La estimación del costo del software incluye la estimación de lo siguiente:
a) Costo del recurso humano (es decir, esfuerzo para desarrollar el software): implica el esfuerzo requerido para reunir los requisitos, diseñar, codificar y probar el software. Puede utilizar métodos de estimación WBS o FPA para calcular eso.

b) Costo de otros recursos (por ejemplo, costo de la licencia del software, costo del hardware): estos costos incluyen el costo de la licencia del software o el costo del hardware, si corresponde. En la mayoría de las grandes compañías de TI, solo una parte del costo es aplicable, si el software o el hardware pueden ser reutilizados por otros proyectos también.

c) Costo de viaje: en caso de que el proyecto requiera viajar, también debe considerar el costo de la visa, el costo del boleto, el costo de alojamiento, etc.

Además de eso, podría haber un costo adicional, pero será muy específico para un proyecto.

Existe la mecánica de la estimación de costos, y luego los factores de la gente giran en torno a los números. Basado en la pregunta, limitaré el alcance a la mecánica.

Supongo que te refieres a “trabajo de proyecto por contrato”. Las personas en las empresas de productos de software y tiendas de TI que se desarrollan para uso interno enfrentan fuerzas diferentes y las cosas tienden a ser diferentes, aunque la mecánica es similar.

Amit ha resumido razonablemente la mayoría de los mecánicos.

  1. Llegue a un entendimiento compartido con el cliente de lo que va a hacer.
  2. Mira los resultados de proyectos anteriores similares.
  3. Obtenga información de aquellos que harán el trabajo, especialmente para las partes que son nuevas para su organización.

Cualquiera de estos se puede hacer de forma rápida y sencilla, o con mayor profundidad y precisión (pero no necesariamente de precisión). Deberías hacer un poco de todos ellos.

Puede detener el n. ° 1 en los requisitos aproximados, o ir hasta una especificación completa con wireframes, reglas de negocios, casos de uso detallados y reglas de negocios. O cualquier cosa en el medio.

El análisis # 2 de su proyecto anterior puede detenerse en analogías aproximadas, o puede usar métricas como el número de formularios, informes y tablas de base de datos (si es ese tipo de software) o incluso puntos de función ISO. No estoy de acuerdo con Amit sobre las líneas de código fuente (SLOC). ¡Usamos esos y encontramos que eran tan difíciles de estimar como el costo!

Los avances recientes en la comprensión de los sesgos cognitivos han demostrado la importancia del # 2.

Su aporte de expertos # 3 puede ser una “comprobación de detalle” para todo el proyecto, o una estructura detallada de desglose del trabajo con estimaciones a nivel de tarea, resumidas. Una cosa que apoyo sobre la respuesta de Amit es la estimación por característica, no por tarea. Al cliente no le importa cuánto cuestan los análisis, el diseño, la codificación y las pruebas, y usted no quiere estar negociando estas cosas. La unidad de negociación debe ser la característica, de modo que también debe ser la unidad de estimación.

¿Hasta dónde vas y con cuál de las tres actividades? Depende de dos cosas:

  1. Quien esta pagando
  2. ¿Está reduciendo el riesgo de estimación lo suficientemente rápido como para que valga la pena?

Si la estimación es el costo de ventas (en el caso del trabajo de proyectos por contrato), necesita realmente concentrarse en reducir su riesgo, nada más. Tuvimos un éxito limitado haciendo que los clientes “paguen para decirnos cuánto costaría”, particularmente porque no garantizamos un precio y alcance fijos al final de ese compromiso inicial. Sabíamos que el error de estimación todavía era demasiado alto, y esas tienden a ser relaciones adversas.

Por lo tanto, el enfoque de las actividades de estimación adicionales, además de comenzar a construir la cosa, debería ser eliminar el sesgo de la estimación y reducir la incertidumbre de la estimación, ambos contribuyen al riesgo.

Si el equipo, la tecnología e incluso el cliente están familiarizados, entonces el riesgo realmente se debe principalmente a una mala interpretación de la amplitud y profundidad de lo que se está creando. Enfoque el análisis adicional en requisitos difíciles de entender y costosos, y en piezas críticas de diseño interno. Este escenario es también donde los proyectos anteriores proporcionan la mejor orientación.

Si la tecnología también es relativamente desconocida, entonces una prueba (¿poof?) Del concepto, “Buying a Vowel”, del famoso programa de juegos estadounidense, puede valer la pena. Los marcos sofisticados en uso hoy en día hacen esto más importante.

Si el equipo está recién ensamblado y el cliente es nuevo, también es una gran fuente de incertidumbre, incluso si tiene especificaciones perfectas e invariables (no las tiene). Si realmente puede colaborar con el cliente y construir una parte del proyecto, puede ser un excelente calibrador del costo de todo el proyecto y la relación, lo cual es un factor importante en el costo de todo el proyecto.

Ahora que tiene una estimación (es un rango), la forma en que la presenta y navega por las conversaciones resultantes es igual de importante, pero está fuera del alcance de esta pregunta.

Realmente depende de qué objetivos, propósitos tiene su empresa, qué procesos tiene, cuál es el grado de complejidad de estos procesos. Como puede ver, hay muchas aplicaciones y sistemas listos que puede usar.

Sin embargo, cada empresa tiene sus propios requisitos, objetivos y características de trabajo específicas. Es por eso que a veces es necesario desarrollar una aplicación desde cero.

Por ejemplo, nuestro cliente nos solicitó construir una aplicación SaaS desarrollada para que las organizaciones automaticen los procesos de negocios. Mejora el proceso de seguimiento, la responsabilidad y la gestión en tiempo real. La aplicación combina las características de una pequeña solución SAP, que brinda la capacidad de administrar de manera efectiva los flujos de trabajo, visualizar los procesos con el diagrama de Gantt y mejorar las interacciones entre los diferentes departamentos.

El equipo de XB Software puede desarrollar soluciones de primer nivel para personalizar las tareas basadas en la web y asignar y programar horas de trabajo, realizar un seguimiento de los informes, simplificar la gestión del flujo de trabajo y la cooperación eficiente del equipo interno. Además, creamos sistemas de gestión de proyectos que permiten construir y ajustar la gestión de recursos altamente automatizada, simplificando y automatizando la mayoría de las transacciones actuales. Además, dichos sistemas pueden procesar flujos de trabajo de negocios y proporcionan a las empresas una visión general del rendimiento, información en tiempo real y pronósticos dinámicos de indicadores y costos importantes, así como formas eficientes de gestión de equipos.

Nuestro equipo capacitado puede crear herramientas de gestión de proyectos robustas para administrar registros / informes de empleados (empleados despedidos también), proyectos y tareas en un solo lugar, ayudar a PM a analizar y planificar el flujo de trabajo de un proyecto. Además, podemos crear salas de reuniones (calendario de negociación) y aplicaciones para administrar los recursos internos de la empresa.

Por ejemplo, puede ver nuestra aplicación XB Staff Manager para el manejo sencillo de la información personal del personal y la planificación de todos los proyectos y tareas de la empresa.

  • Herramienta web de vanguardia para la gestión de servicios de campo

  • Herramienta de gestión de proyectos para el portal de comunicaciones

  • Suite de Gestión de la Fuerza Laboral e Instalaciones

Nuestros proyectos recientes – https://xbsoftware.com/case-stud

Todo depende del tipo de proyecto que vas a estimar. El mejor método para estimar el desarrollo de una tienda en línea no será bueno para una aplicación móvil. Puede haber un enfoque básico, pero de todos modos, durante cada procedimiento de estimación, variará las etapas y las direcciones de cualquier método.

Para evitar errores comunes durante el proceso de estimación y encontrar mejores soluciones para futuros proyectos de software, consulte un artículo Cómo calcular con precisión el costo y la duración del proyecto.

Aquí, en Quora, me gustaría compartir un método que usamos en RubyGarage para una estimación de desarrollo de sitios web. Hay varios pasos.

Primero, es importante para nosotros entender el concepto de un producto, el público objetivo, sus problemas y las formas sugeridas de resolverlos. Recopilamos toda la información necesaria sobre un sitio web esperado.

Después de obtener toda la información que necesitamos, dividimos las tareas grandes en muchas tareas más pequeñas. Descomponemos las tareas de acuerdo con la siguiente estructura: Epopeyas – Historias de usuarios – Casos de uso. En la siguiente etapa, analizamos si tuvimos una experiencia similar en la creación de dichos productos y transferimos las horas que nos tomó antes de construir, por ejemplo, un sitio web. Confiar en la experiencia previa asegura estimaciones más precisas. Pero podemos usar el enfoque análogo para la estimación solo si un producto anterior contiene tareas que son muy similares a las del proyecto que estamos estimando.

Si nuestros nuevos proyectos requieren características que aún no hemos desarrollado, tomamos un enfoque de juicio experto para la estimación. Los expertos que confían en su experiencia para estimar proyectos de desarrollo de software llegan a un consenso y podemos finalizar la estimación.

Cuando un gerente de proyecto considera los resultados de estimaciones de juicios expertos y análogos y llega a una estimación final, presentamos esta estimación a nuestro cliente.

Lo que me funciona bien al realizar cálculos aproximados de desarrollo de software es seguir un proceso de tres pasos:

Preparación

  • Evaluar qué parte del problema nunca resolví antes.
  • verifica quién en la empresa (o el mundo) ya resolvió el problema
  • Evaluar los riesgos específicos que puedan aparecer.
  • Comprender bien la necesidad del cliente y la motivación para la necesidad.
  • estructurar la solución en bloques más pequeños hasta que cada bloque tenga un tamaño manejable
  • identificar tareas comunes y secuencias de tareas comunes
  • Identificar experiencias anteriores y crear analogías.
  • Identificar los entregables de la solución.
  • delimitar claramente el alcance (lo que está dentro y lo que está fuera)

Estimacion

  • Anote en una hoja de cálculo las etapas comunes del proyecto.
  • Anota en una hoja de cálculo las tareas comunes del proyecto.
  • Mapa de entregables a tareas
  • estimar el esfuerzo a nivel de tarea con la técnica de estimación de tres puntos (ninguna tarea menor de 0,5 MD y ninguna tarea mayor de 5.0 MD)
  • Multiplique el resultado o partes del con un factor de riesgo.

Comprobación cruzada

  • Pregunte a otras personas por una estimación de la misma solución.
  • comparar mi estimación con la estimación de los demás
  • toma la estimación más convincente

Un elemento crucial en este proceso son las conversaciones continuas con las partes involucradas para tener una idea de las expectativas y temores que todos tienen.

Este método no es tan bueno para hacer estimaciones detalladas y no es bueno para obtener un compromiso de un equipo de desarrollo. Es bueno tener una idea de la magnitud del esfuerzo para calcular un precio para un cliente con un nivel razonable de riesgo y esfuerzo.

Para profundizar más en el tema, recomendaría echar un vistazo a COCOMO (la biblia), Punto de función (bueno, pero complicado), Método Delphi (eso es genial), Planear el póker (genial con el equipo).

La estimación de proyectos de software es muy difícil de hacer. Hace muchos años (a fines de la década de 1990), utilicé varias herramientas de estimación de software como COCOMO, puntos de función, etc. Nunca lo volveré a hacer porque me doy cuenta de cuán imprecisas pueden ser esas estimaciones.

El desafío con la estimación de software es que ninguna estimación puede ser más precisa que los requisitos para el proyecto; y, en el mundo de hoy, hay típicamente una gran cantidad de incertidumbre en los requisitos. Por esa razón, muchas empresas se están moviendo rápidamente hacia un enfoque de desarrollo ágil.

En un entorno Agile, es común utilizar puntos de historia como una medida de estimación, pero generalmente es solo una estimación de muy alto nivel. En la mayoría de los casos, puede ser una tontería, una pérdida de tiempo y ser muy engañoso tratar de desarrollar estimaciones más precisas.

Lo importante es hacer coincidir el nivel de precisión en la estimación con el nivel de incertidumbre en los requisitos y tener un buen entendimiento mutuo con el cliente sobre el nivel de precisión en las estimaciones.

Chuck Cobb
Autor de “La guía del gestor de proyectos para dominar Agile”
Echa un vistazo a: Agile Project Management Academy

ESTIMACION

Es difícil incluso hablar sobre técnicas de estimación y es peor si tengo que hablar sobre la técnica MÁS EFECTIVA.

Básicamente solo hay una cosa central: HOJA DE TRABAJO

HOJA DE TRABAJO: Consta de varios materiales, mano de obra, maquinaria, etc.

Así que mira el siguiente Ejemplo: Para un artículo de movimiento de tierras

HOJA DE TRABAJO consiste en una excavadora, volquete y mano de obra no calificada

Ahora llegando a la TÉCNICA: para llegar a una tarifa para un artículo en particular, podemos confiar en

  1. Cálculos teóricos de productividad que se pueden obtener de varias fuentes como DELHI ANALYSIS OF RATES (DAR), British Manual, etc.
  2. Productividad Llegada de Casos Prácticos

Desde mi punto de vista, optaré por la PRODUCTIVIDAD PRÁCTICA obtenida de la experiencia, pero debería verificarse con la productividad teórica

Un ejemplo citado a continuación:

Hay tantas soluciones de software para facilitar la estimación.

Estoy usando CCS CANDY (SOFTWARE PREMIUM CON COSTO DE LICENCIA ALREDEDOR DE 1 LAKH POR AÑO) – Ejemplo anterior del software

PLANIFICACIÓN

En la planificación hay tantas técnicas. Pero sólo estoy diciendo la técnica efectiva.

Es decir, MÉTODO CRÍTICO DE RUTA DE LA PLANIFICACIÓN.

Use cualquier paquete de software que trabaje en este método y planifique las actividades como se muestra a continuación:

CCS CANDY PLANNING SE MUESTRA ARRIBA

Los proyectos de desarrollo de software son difíciles de medir con precisión, a diferencia de otros objetos cotidianos como la mesa, que viene con una longitud, anchura y altura fijas. La mayoría de los objetos se pueden dimensionar utilizando uno o más parámetros. Líneas de código (LOC) es lo más cercano a un software de dimensionamiento. El resto de los datos derivados, como el esfuerzo y el calendario de entrega, dependen del tamaño de su software. En el desarrollo de software, es difícil determinar con precisión cuánto tiempo y cuánto tiempo llevará entregar un producto.

Si ha lidiado con estimaciones de desarrollo web o móvil en el pasado, es probable que el costo final no coincidiera con la estimación inicial que recibió. Con una estimación deficiente, corre el riesgo de no poder completar su proyecto dentro del presupuesto. Cuando se trata del desarrollo de software, la estimación cuidadosa de la duración y el costo son fundamentales para tomar decisiones estratégicas de negocios. A continuación se muestra cómo hacemos para estimar proyectos.

1. Recopilación de requisitos

Cada vez que un posible cliente solicita una cotización, proporcionamos una estimación general en horas-persona en función de nuestros datos históricos y nuestra experiencia con proyectos similares. No obstante, para obtener una estimación cercana a la precisión, debemos comprender su visión o el concepto de su producto. Le pediremos que nos proporcione una lista de todas las funciones que desea, un prototipo si tiene una y una lista de productos de la competencia. Este proceso de recopilación de información llevará algún tiempo, pero como resultado, podremos formalizar el alcance de nuestro trabajo potencial y, por lo tanto, alcanzar una estimación más realista.

2. Examinando las diferentes características.

Una vez que tenemos toda la información que necesitamos y hemos entendido sus requisitos, comenzamos a analizar y ubicar las funciones utilizando el método de abajo hacia arriba. El modelo de abajo hacia arriba comienza juntando características específicas y necesarias, luego continúa con la composición de un nivel más alto de características, utilizando las funciones básicas o de nivel inferior. Continúa creando funciones de nivel superior hasta que el producto final evoluciona en un sistema único e interconectado. En palabras más simples, dividimos las tareas grandes en tareas más pequeñas y las examinamos individualmente, teniendo en cuenta la imagen más grande. Una vez que averiguamos el alcance del trabajo, pasamos a la etapa de estimación.

3. Una estimación primaria.

Una vez que tengamos los requisitos a mano y una buena comprensión de las características que necesita, los comparamos con un proyecto similar anterior para estimar el costo y la duración del proyecto actual. Aquí, primero, debemos identificar un proyecto que ya hayamos completado, lo cual es análogo a esto con respecto a los requisitos. Luego echamos un vistazo a las horas que nos llevó construir un proyecto similar para alcanzar una estimación de la duración. Este enfoque de confiar en proyectos y experiencias anteriores asegurará que lleguemos a una estimación más precisa. Podemos usar este método para estimar, solo si hemos trabajado en requisitos similares, que contienen tareas que son muy análogas a las del proyecto que estamos estimando. Hay ocasiones en que un cliente potencial viene con requisitos y características que no hemos desarrollado antes. En estos casos, tomamos en consideración la opinión del equipo antes de llegar a una estimación en lugar de arriesgar una conjetura.

4. Estimación de expertos

La evaluación de expertos se dirige a un grupo de expertos técnicos que confían en su experiencia para estimar proyectos de desarrollo de software. Nuestro equipo investiga las características necesarias para ser estimado. Después, nuestro gerente de proyecto organiza una reunión con el equipo para aclarar el alcance del trabajo y los expertos ayudan a estimar la cantidad de horas necesarias para las implementaciones adicionales.

5. La estimación final.

Al final, el gerente de proyecto asignado a su proyecto considerará todos los resultados de estimaciones análogas y de expertos y llegará a la estimación final. Hay ocasiones en que el cliente propone algunos cambios en función de la estimación final que les enviamos. Pueden optar por eliminar algunas funciones para ahorrar tiempo o también agregar más funciones. Si este es el caso, re-estimamos y nos comunicamos con usted. Dado que nuestras estimaciones se basan en nuestros datos anteriores, la estimación final es lo más precisa posible. De esta manera, reduce el riesgo de exceder su presupuesto. [1]

Notas al pie

[1] ¿Cómo las compañías de desarrollo de software suelen estimar proyectos?

Gracias por la A2A. Veo que ya se han dado algunas respuestas.

Para ser honesto, yo mismo todavía no tengo una respuesta satisfactoria a esta pregunta.

Algunos comentarios, basados ​​en mi experiencia personal:

  • Aunque el análisis de puntos de función (FPA) dice ser objetivo, a menudo hay tantas formas de interpretar el diseño / funcionalidad de una aplicación, que en mi experiencia es a menudo muy subjetiva.
  • Creo que la combinación de dividir el trabajo que se debe hacer en partes pequeñas y hacer estimaciones de expertos con respecto a esas piezas pequeñas puede ser una muy buena forma de hacer una estimación. El método Delphi (Wideband delphi) es un método que se puede utilizar. Se describe como un proceso muy formal, pero también puede hacerse de una manera mucho más informal. Y, de hecho, la planificación del póquer está hecha, está muy inspirada por este método de estimación:
    – Pida a un grupo de expertos que estimen el esfuerzo que se necesita.
    – Haga que el experto con la estimación más baja y el experto con la estimación más alta expliquen su razonamiento y lo discutan con el grupo de expertos.
    Si es necesario, en función de los conocimientos adquiridos, realice una nueva ronda de estimación
  • Es importante tener en cuenta que:
    – los gastos generales (reuniones, coordinación) a menudo no se consideran
    podría considerar usar un porcentaje fijo del tiempo total estimado para esto (por ejemplo, 15%)
    – Siempre habrá sorpresas y contratiempos. Determine cómo quiere manejar esos
    – Puede ser útil para determinar ciertos parámetros que lo ayudan a obtener información sobre los factores que determinan el tiempo necesario. Por ejemplo, el número de campos en una pantalla, el número de botones en una pantalla, el número de tablas de base de datos involucradas, las relaciones entre los datos que deben mostrarse en una pantalla, etc. Cuando usa parámetros, puede ajustar los las estimaciones más adelante, cuando los parámetros cambian o puede ajustar el impacto de un determinado parámetro en la planificación si la experiencia demuestra que toma mucho más tiempo (o menos) que lo estimado inicialmente

Nota adicional: para proyectos ágiles es cada vez más habitual estimar en mediciones aproximadas. Por ejemplo, una camiseta de planificación de historias de usuario, utilizando las categorías Pequeña, Mediana y Grande como una categoría, y determina el contenido de una publicación basada en la estimación del equipo en el que caben las combinaciones de números de historias de usuario Pequeña, Mediana y Grande.

A veces los gerentes de proyecto están demasiado enfocados en los números, y no en las personas. El buen proceso de gestión de proyectos, incluidas las técnicas de estimación, se basa en relaciones sólidas. Las relaciones de trabajo sólidas tienden a hacer que el proceso de estimación sea más fácil, porque cuanto más sepa sobre el trabajo y el proceso de una persona, más fácil será crear estimaciones para su trabajo. ¿Quieres ser aún mejor en la estimación? Pídale a su equipo que sea parte del proceso de estimación. Una mejor comprensión o colaboración con su equipo lo ayudará a lograr que sus proyectos se acerquen más a los presupuestos de sus proyectos.

  1. Comprenda la experiencia y las responsabilidades de su equipo
  2. Conviértete en el experto en el proceso de proyectos de tu empresa.
  3. Amplía tu conjunto de habilidades de PM
  4. Historia de estimación de estudio
  5. Haz más de las preguntas correctas
  6. Aplicar una estructura de desglose del trabajo.
  7. Llegar a la planificación y estimación.

Fuente y más en: Cómo estimar proyectos en 8 pasos

También puedes leer:

No se hace de esa manera, un buen programador simplemente escribe lo que sigue. El análisis es parte del proceso de pensamiento. Si tiene que analizar el análisis, no se convertirá en un buen programador, el análisis debe ser su forma de pensar. (Es como preguntar cómo, al medir 5 pies de altura, puedes convertirte en un jugador profesional de baloncesto. No puedes).

Un programador analiza el problema y presenta una solución, una función, una estructura de control, una estructura de datos, lo que sea necesario para resolver esa parte específica del problema. (SDLC es trivial en estos días: hay chips Intel que lo hacen todo por usted en un solo chip).

Consejos sobre cómo trabajar en una casa de software. ¿Como programador? Piense de nuevo. ¿Siempre has analizado todo en la vida? Si no, encuentra una línea de trabajo diferente, porque los buenos programadores, los que siempre han analizado todo, siempre serán mejores en la programación que tú. No puedes “aprender” a ser analítico, o lo eres o no lo eres.

Si es así, se sienta, se le da un problema y, mientras aún se le explica, comienza a ver posibles soluciones.

Si no es así, se te presenta un problema y luego pasas semanas intentando descubrir cómo resolverlo. Entonces te rindes y consigues un trabajo en un campo en el que eres bueno.

En algunas “casas de software” en estos días, contratan a los tipos no analíticos. Ahí es de donde viene el dicho “el 95% del código está escrito por el 5% de los programadores”. El otro 95% de los “programadores” sigue preguntando al 5% “¿cómo puedo …?” Y los programadores, al no querer que su departamento parezca un fracaso, dan el código a los no programadores. (Algunos códigos son evidentes: usted observa el problema y sabe qué escribir para resolverlo. No tiene que pensar en ello. Si piensa analíticamente. Si no lo hace, todos los problemas le parecen iguales – no solucionable. Preguntar “Punto de función o punto de fractura, caso de uso u otro” dice que eres uno de los 95% – no puedes ver el problema y ver la solución. Por lo tanto, la programación siempre será una Slog cuesta arriba con pesas para ti.)

La obtención de requisitos es el proceso de extraer la información de los interesados. Sirve de base para documentar los requisitos.

Aquí están las pocas técnicas principales-

  1. Reunión creativa
  1. Se puede hacer en grupos o individualmente para generar ideas innovadoras y luego determinar qué idea es la mejor solución. Funciona identificando todos los problemas y resolviendo la solución.
  2. Elabora una amplia red al determinar varias posibilidades discretas . La priorización de tal posibilidad es vital para localizar las agujas en el pajar.
  3. Ayuda a desarrollar una definición clara y concisa del área de interés.
  4. Los participantes varían de 6 a 8 y también incluyen un facilitador para habilitar y dirigir el espectáculo.
  5. Lo habitual comienza estableciendo criterios para evaluar y calificar la idea.
  6. Todas las ideas discutidas son registradas.
  7. Los pensamientos deben ser compartidos sin ninguna crítica, o inhibición.
  8. Las ideas no deben limitarse a ningún número específico ya que el objetivo es obtener tantas ideas como sea posible dentro del período de tiempo.
  9. Al final, cree una lista condensada de ideas y elimine los duplicados.
  10. Califica la idea utilizando el voto múltiple.
  11. Distribuye la lista final de ideas.
  • Análisis de documentos
    1. Utilice documentos ya existentes que incluyen detalles de la interfaz, manuales de usuario y manuales de proveedores de software.
    2. Es un paso importante en AS-IS.
    3. Un inconveniente importante es que los documentos existentes a menudo pueden ser antiguos y desactualizados.
    4. Además, el sistema, las interfaces, los procesos y los informes pueden haber cambiado de todo reconocimiento.
  • Ingeniería inversa
    1. Se aplica en escenarios donde el software para un sistema existente tiene poca documentación o está desactualizada.
    2. Una de las técnicas de lluvia de ideas, para extraer documentos de proceso al conducir análisis de brechas
    3. Los pasos realizados en orden son preparar, analizar, publicar el resumen del documento y obtener respuestas a las preguntas de seguimiento.
    4. Se clasifica adicionalmente a los siguientes dos tipos:
    5. Ingeniería inversa de caja negra, donde se estudia el sistema o el producto sin examinar su estructura interna.
    6. Caja blanca de ingeniería inversa, donde se estudia el trabajo interior.
  • Grupo de enfoque
    1. Es un medio para obtener ideas y actitudes sobre un producto o servicio específico en un entorno grupal interactivo.
    2. Sirve de foro para compartir impresiones, necesidades y preferencias.
    3. Grupos homogéneos donde se juntan individuos con características similares. Sin embargo, la falla principal que viene con es que las diferentes perspectivas no serán compartidas.
    4. Entorno heterogéneo donde los individuos con diversos antecedentes y perspectivas vienen y comparten, los individuos pueden autocensurar la calidad inferior de la producción.
  • Observación
    1. También conocido como sombreado, donde el observador nota ideas para mejorar y elimina actividades innecesarias.
    2. Relativamente lento
    3. Se siguen dos enfoques básicos: pasivo / invisible y activo / visible.
    4. En el modo Pasivo, el analista de negocios observó a la PYME pero no hizo preguntas. La idea principal es simplemente observar y tomar notas.
    5. Por el contrario, en el modo activo se pueden intercambiar diálogos. Se pueden hacer preguntas en ese momento, se puede cambiar la rutina y el observador incluso puede participar.
  • Taller / Requisitos taller
    1. Es una forma estructurada de capturar requerimientos.
    2. Puede utilizarse para determinar, definir, definir y alcanzar el cierre de los requisitos de un sistema de destino.
    3. Los talleres bien dirigidos se consideran una de las maneras más efectivas de entregar requisitos de alta calidad.
    4. Esto funciona más rápido que las entrevistas grupales y conlleva bastante preparación.
    5. Preparación para el taller de requisitos necesita los siguientes pasos –
      • Aclarar las necesidades y el propósito de los interesados.
      • Identificar a los interesados ​​críticos que deberían participar.
      • Definir la agenda de los talleres.
      • Programar la sesión.
      • Organización de la logística de la sala.
      • Enviar material con antelación para preparar a los asistentes.
      • Realizar entrevista previa al taller.
      • Establecer consenso sobre puntos de vista conflictivos.
      • Establecer tono profesional y objetivo.
      • Introducir metas y objetivos.
      • Seguimiento con preguntas de sondeo.
    • F. El rol de los escribas es documentar los requisitos comerciales en un formato determinado antes del taller.
    • Escuchar y elaborar sobre la información que se transmite.
    • Puede reflejar ideas preconcebidas que pueden influir en las respuestas.
    • 7. Prototipado
    • Estas son maquetas que ayudan a visualizar la funcionalidad del sistema.
    • Sin embargo, cuando se capturan los requisitos en las maquetas de la pantalla sin documentos o listas de apoyo, se hace imposible medirlos y otros requisitos se pasan por alto a menudo.
    • Sin una funcionalidad congelada, ni siquiera deberían pensar en la pantalla al principio.
    • Para proyectos estándar, use técnicas de estimación de tiempo “estándar”, que serán adecuadas el 10% del tiempo, generalmente porque algo no es estándar después de todo …

      Para los proyectos que involucran investigación, que tienen un resultado incierto o que usan tecnología que no se ha probado y probado exactamente, no recomiendo estimar cuánto tiempo tomará. Nunca se sabe. Las preguntas más importantes aquí son:

      • ¿Todavía hay progreso?
      • ¿Las personas adecuadas siguen trabajando en el trabajo?
      • ¿Seguimos creyendo que es posible lograr nuestro objetivo?
      • No: ¿el proyecto ya está terminado? Pero, ¿ya hay resultados que podamos usar para proyectos estándar?

      Lo comparo con un artista en el escenario, por ejemplo, un acróbata. El acróbata puede realizar un show, que es un proyecto estándar. Durante el espectáculo, todo va bien, siempre y cuando se adhiera a su plan. Probar nuevos trucos durante un show es peligroso.

      Pero cuando el acróbata trata de mejorar su programa, él descubre cosas nuevas una y otra vez. No está seguro de poder hacerlo. Pero al final, vale la pena probar cosas nuevas, porque de vez en cuando se puede agregar un nuevo truco al programa. Un nuevo truco atraerá a nuevas personas a su programa, y ​​las personas volverán para ver todas las cosas nuevas, incluso si ya han visto el programa anteriormente.

      En cuanto al desarrollo de software, cada desarrollador de software tiene implícita o explícitamente un conjunto de herramientas, bibliotecas, programas, idiomas, paradigmas y marcos que se encuentran en el “nivel de rendimiento”. Con el kit de herramientas, las soluciones se pueden componer, a veces en minutos.

      Además del “nivel de rendimiento”, un programador también tiene un “nivel de referencia”, todas las cosas que conoce, pero en las que tiene menos experiencia. El nivel de referencia es un punto de partida para proyectos no estándar. Es donde las soluciones se buscan y se prueban, pero es imposible estimar qué tan difícil será o cuánto tiempo tomará.

      Depende del programador o del equipo, qué proyectos son estándar y cuáles no. Por lo tanto, a veces es difícil estimar cuánto tiempo tomará un proyecto desde una vista externa. Las posibilidades de lo que una persona o un equipo pueden lograr son infinitas, pero algunas personas lograrán metas que otras no. Algunas personas pasan mucho tiempo en cosas que otros pueden hacer en minutos. Y eso ni siquiera hace que un programador sea mejor o peor que el otro.

      Por lo tanto, mi respuesta a la pregunta es: no hay un mejor método para estimar el desarrollo de software, solo use su cerebro y manténgase al día con el proyecto.

      Desde mi experiencia, que puede no ser representativa, por supuesto, la técnica más utilizada es no usar una técnica. En lugar de seguir una verdadera metodología de obtención de requisitos, como Volere, el gerente del proyecto reúne a un grupo de usuarios en una sala y comienza a recopilar declaraciones de requisitos. Los usuarios pueden no ser una sección representativa, sino simplemente las más vocales o las más accesibles. Es probable que las afirmaciones no se sometan a la prueba SMART (Específica, Medible, Realizable, Relevante, Limitada por el Tiempo) ni se organicen en un modelo coherente de nivel superior (a veces denominado arquitectura de referencia). Es como un asalto frontal en masa , que en términos militares suele ser un acto desesperado de última instancia.

      Luego, el equipo del proyecto se apaga y documenta estos requisitos en la especificación de los requisitos, y desde ese momento, la mayoría del diálogo sobre los requisitos se canaliza a través del gerente del proyecto. Luego, al final del proceso, los usuarios vuelven a participar como parte de las pruebas de aceptación y, como era de esperar, comienzan a señalar todos los puntos en los que la aplicación no cumple con sus expectativas.

      La metodología Agile tiene la intención de eludir el enfoque problemático anterior al documentar, en efecto, los requisitos en el propio código desarrollado, a través de ciclos repetidos de interacción con los usuarios. Lo que es excelente y ciertamente es un enfoque menos riesgoso que no tener ninguna técnica, pero depende en gran medida de la participación frecuente y constante de usuarios representativos. Y es ese nivel de compromiso del usuario que puede ser el elemento más difícil de controlar para el gerente de proyecto.

      Ninguna técnica garantiza un resultado exitoso, pero seguir una técnica específica de manera disciplinada tiene tres ventajas principales. Primero, si se aplica durante todo el proceso, tenderá a mejorar la consistencia y la coherencia de todos los requisitos establecidos y filtrar los requisitos extraños e irrelevantes. En segundo lugar, la participación en discusiones repetidas de requisitos que se ejecutan de manera consistente de acuerdo con la técnica elegida llevará a los usuarios a adoptar una disciplina similar entre ellos. Y tercero, y esta es realmente la clave para evitar el rechazo del producto por parte de los usuarios: aumentará el sentido de propiedad de los usuarios del proyecto.

      Parece que hay un cierto umbral en muchos proyectos (un número mágico de horas dedicadas a las salas de reuniones que hablan sobre los requisitos, el estado y las compensaciones) que producen una fuerte inversión psicológica en sus resultados. Hasta que pase ese umbral, es fácil para los usuarios sentirse como espectadores y no como propietarios, lo que hace que rechacen el producto final de forma segura.

      La Elicitación de Requisitos es el proceso para conocer los requisitos para desarrollar un producto de software mediante la comunicación con el cliente, los usuarios finales y otros que tienen interés en el desarrollo del sistema de software.

      Hay varias formas de descubrir los requisitos que se enumeran como:

      a) entrevistas

      b) Encuestas

      c) cuestionarios

      d) análisis de tareas

      e) Análisis de dominio

      f) Lluvia de ideas

      g) Prototipado

      h) Observación:

      Puedes ir a través del enlace para más detalles:

      Técnicas de Elicitación de Requisitos – Notas Daami


      Apreciado por Upvotes 🙂

      El primer paso en este método es estimar el tamaño de las pruebas de software utilizando el análisis de puntos de caso de prueba (TCPA). El tamaño estimado en TCPA se utiliza para calcular el esfuerzo utilizando un índice de productividad histórico simple. Las estimaciones de esfuerzo para futuros ciclos de prueba se refinan, y se espera que sean más precisas, utilizando una retroalimentación de circuito cerrado. Estos pasos se muestran en la figura siguiente.

      Lea el artículo completo y podrá explorar los pasos específicos y el método utilizado para estimar el esfuerzo de los proyectos de automatización de pruebas.

      Técnicas de diseño de pruebas de software
      i) Técnicas estáticas

      La prueba estática es la prueba de los productos de trabajo del software manualmente o con un conjunto de herramientas, pero no se ejecutan.

      Ejemplo: Revisiones, Recorrido, Inspección, etc.

      ii) Técnicas dinámicas

      > Pruebas que involucran la ejecución del software de un componente o sistema.

      a) Caja blanca de técnicas de diseño de pruebas.
      Prueba de declaración
      Prueba de condición
      Pruebas de decisión, etc.

      b) Técnicas de diseño de prueba de caja negra
      Particionamiento de equivalencias / Clases equivalentes
      Análisis del valor límite
      Tablas de decisiones
      Pruebas de transición del estado
      Prueba de casos de uso, etc.

      c) Técnicas basadas en la experiencia.
      Adivinando errores
      Pruebas exploratorias, etc.

      • Retorno de la inversión
      • Técnicas de prueba por pares como la matriz ortogonal
      • Complejidad ciclomática
      • Técnicas de prueba de muñones
      • Técnicas de prueba del conductor

      Referencia para el manual: Libros ISTQB

      • Automatización: método de ruta crítica, pruebas dirigidas por datos, pruebas controladas por tablas,

      Referencia para la automatización: