2009-11-15 9 views
5

¿Con qué se encuentran los ingenieros de software después de otra publicación estresante? Bueno, lo primero que encontramos en nuestro grupo son los errores que hemos lanzado al aire libre. El mayor problema que nosotros, como ingenieros de software, encontramos después de una publicación estresante es el código espagueti, también llamado big ball of mud.¿Cómo demostrar mi interés y administrador mi software funciona?

El tiempo y el dinero para perseguir la perfección rara vez están disponibles, ni deberían estarlo. Para sobrevivir, debemos hacer lo que sea necesario para que nuestro software funcione y salir por la puerta a tiempo. De hecho, si un equipo completa un proyecto con tiempo de sobra, es probable que los gerentes de hoy lo tomen como una señal para proporcionar menos tiempo y dinero o menos personas la próxima vez.

que necesita para ofrecer software de calidad a tiempo y dentro del presupuesto

Costo: La arquitectura es una inversión a largo plazo. Para las personas que están pagando las facturas es fácil descartarlo, a menos que exista algún beneficio inmediato tangible, como una cancelación de impuestos, o a menos que haya dinero excedente y tiempo disponible. Tal es raramente el caso. Más a menudo, el cliente necesita algo que funcione para mañana. A menudo, las personas que controlan y gestionan el proceso de desarrollo simplemente no consideran la arquitectura como una preocupación apremiante. Si los programadores saben que la mano de obra es invisible, y los gerentes no quieren pagarla de todos modos, nace un círculo vicioso.

Pero si este fuera realmente el caso, cada proyecto de software a largo plazo siempre llevaría a una gran bola de barro.

Sabemos que eso no siempre sucede. ¿Cómo? Porque la afirmación de que los gerentes no consideran a la arquitectura como una preocupación urgente es falsa. Al menos hoy en día. Los gerentes en el campo de TI saben muy bien que la mantenibilidad es clave para el negocio.

negocio depende de los datos que lo conducen. Las empresas se han vuelto críticamente dependientes de su software y sus infraestructuras informáticas. Existen numerosos sistemas de misión crítica que deben estar en el aire las veinticuatro horas del día, los siete días de la semana. Si estos sistemas disminuyen, no se pueden verificar los inventarios, no se puede pagar a los empleados, no se pueden enrutar los aviones, y así sucesivamente. [..]

Por lo tanto, es en el corazón del negocio buscar maneras de mantener sistemas lejos de la gran bola de barro. Que el sistema todavía es mantenible. Que el sistema realmente funciona y que tú, como programador, puedes probar que sí funciona. ¿Su gerente le pregunta si ha terminado su codificación hoy, le pregunta si la versión que tiene las correcciones A, B y C se puede hacer hoy o si ella pregunta si el software que se lanzará realmente funciona? ¿Y has demostrado que funciona? ¿Con que?

Ahora mi pregunta: ¿

¿De qué manera tenemos que demostrar nuestros gerentes y/o grupos de interés que nuestras obras de software? ¿Son esas luces verdes de nuestras pruebas de unidad de software lo suficientemente buenas? Si es así, ¿no será eso solo una prueba de que nuestra gran bola de barro sigue haciendo lo que esperamos que haga? Que el software es mantenible? ¿Cómo puedes demostrar que tu diseño es el correcto?

[añadida más adelante]

Chris Pebble su respuesta a continuación es poner a mi equipo en el camino correcto. La garantía de calidad es definitivamente lo que estamos buscando. Gracias Chris.Tener una política de control de calidad acordada con las partes interesadas es más que el resultado lógico de lo que mi equipo está buscando.

La siguiente pregunta es ¿qué debería ser todo en esa política de control de calidad?

  • Tener que buildserver corriendo visibles para mis actores
  • Tener la buildserver no sólo 'sólo construir' pero la adición de pruebas que fueron parte de la política de control de calidad
  • Tener un acuerdo de mis partes interesadas en el proceso de desarrollo (donde los desarrolladores revisan los demás código es parte de)
  • más ..

Algunos más información: El equipo que estoy llevando es la construcción de servicios web que son consumidos por otro software equipos. Es por eso que un servicio web de última generación está costando dinero inmediatamente. Cuando los desarrolladores del equipo de capa de presentación, o los probadores reales no pueden avanzar estamos en el estrés inmediata y tienen que corregir los errores lo antes posible, lo que a su vez conducen a los cortes rápidos ..

[añade más adelante]

Gracias por todas las respuestas. De hecho se trata de 'confianza'. No podemos hacer un lanzamiento si las partes interesadas no confían en el software, que están probando activamente nuestro software utilizando el sitio web que está consumiendo nuestro servicio web. Cuando surgen problemas, la primera pregunta de nuestros evaluadores es: ¿se trata de un problema de capa de servicio o un problema de capa de presentación? Lo que me dirige a tener una política de control de calidad que garantice que nuestro software está bien para las pruebas que están haciendo.

Por lo tanto, la única forma en que puedo (ahora) visualizar habilitar la confianza con los evaluadores es: - Hable con el equipo de prueba actual, repase las pruebas que pueden ejecutar manualmente (desde su script de prueba y escenario) y asegúrese de que nuestro equipo tenga esas pruebas como pruebas unitarias ya contrastadas con nuestro servicio web. Eso sería un buen punto de partida para un 'sign-off' antes de que hagamos un comunicado que el presentationlayerteam tiene que integrar. Se necesitará un poco de esfuerzo para aclarar que la creación de pruebas automáticas para todos los escenarios llevará algún tiempo. Pero definitivamente será útil para garantizar que lo que construimos esté realmente funcionando.

Respuesta

4

usted no puede demostrar que más allá del alcance de las pruebas, ya menos que haya una especificación a prueba de balas (que nunca hay), entonces las pruebas nunca prueba nada más allá de lo obvio.

Lo que puedes hacer como equipo es acercarte a tu diseño de software de manera responsable y no ceder a la tentación de escribir código incorrecto para complacer a los gerentes, exigiendo los recursos necesarios y las limitaciones de tiempo, y tratar todo el proceso como un oficio como un trabajo. Las mejores escultores renacentistas sabían que nadie podría ver las estatuas de espaldas a colocarse en las esquinas de las catedrales pero aún así tomó el esfuerzo para asegurarse de que no se vendían a sí mismos corto.

Como equipo, la única forma de probar que su software es confiable es crear una trayectoria: hacer las cosas correctamente desde el principio, corregir errores antes de implementar nuevas características, nunca ceder a la solución de hackeo rápido, y asegurarse todos comparten el mismo entusiasmo y respeto por el código.

3

En todos los casos, pero no en triviales, no puede "probar" que su software es correcto.

Ese es el papel de T Ser Un CEPTACIÓN T teresante: mostrar que un aceptable nivel de utilidad ha sido alcanzado.

+0

¿Cómo pueden los usuarios saber si usted tiene una bola de barro que se comporta bien pero que aún no se puede mantener? Creo que la pregunta es sobre la calidad del software, no la usabilidad. –

+0

He actualizado: usé usabilidad cuando la palabra que estaba buscando es útil. –

+0

El punto que estaba tratando de hacer es que UAT no prueba nada sobre la calidad del código como usted ha afirmado. UAT simplemente proporciona evidencia anecdótica de que el software es "lo suficientemente bueno" a los ojos de un usuario. –

1

Creo que esto es colocar el carro antes que el caballo. Es equivalente a un soldado de a pie que intenta explicar al general qué maniobras de batalla son y por qué es importante proteger sus flancos. Si la gerencia no puede distinguir entre el código de calidad y una gran bola de barro, siempre terminará entregando una gran bola de barro.

Desafortunadamente es completamente imposible "probar" que su software funciona sin errores (los comerciales de Windows XP siempre me molestaron al anunciar "la versión más segura de Windows", eso es imposible de probar en el lanzamiento). Depende de la administración establecer y aplicar un proceso de control de calidad y establecer métricas sobre cómo se ve realmente un producto entregado y qué nivel de errores o comportamientos inesperados es aceptable en la versión final.

Dicho esto, si usted es un equipo pequeño y establece sus propias políticas de control de calidad con pocas aportaciones de la administración, creo que sería ventajoso escribir un proceso de control de calidad básico y solicitar a la administración que lo firme. Para nuestras aplicaciones web, actualmente admitimos 4 navegadores, y la administración lo sabe, de modo que cuando la aplicación se rompe en un navegador portátil oscuro, todos entienden claramente que no es algo para lo que hayamos diseñado la aplicación. También proporciona una buena influencia para contratar recursos adicionales de desarrollo o prueba cuando la administración decide que quiere comenzar a probar x.

+0

Gracias Chris. Tener una política de control de calidad acordada con los interesados ​​podría ser lo que mi equipo está buscando. Ahora la pregunta de seguimiento podría ser sobre qué debería ser todo en esa política de control de calidad ... Déjeme ver si puedo agregar esto a la pregunta de inicio. – Hace

5

Soy parte de un equipo que trabaja en un gran proyecto para un cliente gubernamental. El primer módulo de la fase 1 fue un gran desastre, el equipo no fue administrado, no había un equipo de control de calidad y los desarrolladores no estaban motivados para trabajar mejor. ¡En cambio, el gerente siguió gritando y deduciendo los salarios de las personas que no trabajaban horas extras!

El cliente, eh, no preguntes sobre eso, estaban realmente cabreados, pero se quedaron con nuestra compañía porque saben que nadie entiende el negocio como nosotros.

Entonces, ¿cuál era la solución:

  • Lo primero que separa la gestión de los programadores, y puso un jefe de equipo de amigos.
  • En segundo lugar, obtenga un equipo calificado de control de calidad. En las primeras semanas, los errores estaban en 100s.
  • En tercer lugar, ponga 2-3 desarrolladores como equipo de soporte, allí la responsabilidad no es hacer ninguna tarea nueva, solo corregir errores, trabajar directamente con el QA.
  • En cuarto lugar, motivar a los muchachos, a veces no se trata del dinero o las vacaciones adicionales, a veces una buena palabra será perfecta. Pequeño ejemplo, después de trabajar 3 días seguidos durante casi 15 horas al día, el líder del equipo le hizo una nota al gerente. Dos días después recibí una carta del director general dándome las gracias por mis esfuerzos y dándome 2 días de vacaciones.

Pronto entregaremos el 4º módulo del sistema, y ​​como uno de los miembros del equipo de asistencia podría decir que está al menos 95% libre de errores. Lo cual es un gran salto de nuestros primeros módulos.

Hoy contamos con un potente equipo de desarrollo, QA calificado y expertos solucionadores de errores.

Perdón por la larga historia, pero así es como nuestro equipo (durante 4 meses) demostró al gerente y al cliente que somos confiables, y solo necesitamos el entorno adecuado.

1

Como Billy Joel dijo una vez: "Siempre ha sido una cuestión de confianza".

Debe comprender que el desarrollo de software es "magia negra" para todos excepto para aquellos que escriben software.No es obvio (de hecho, bastante contrario a la intuición) para el resto de su empresa que muchas de sus iniciativas conducen a una calidad cada vez mayor y a una reducción del riesgo de exceso de tiempo y/o presupuesto.

La clave es construir una relación de confianza y respeto entre el desarrollo y otras partes del negocio. ¿Cómo construyes esta confianza? Bueno, ese es uno de esos problemas de personas susceptibles ... tendrás que experimentar un poco. Yo uso las siguientes herramientas: a menudo

  1. la visibilidad del proceso - asegúrese de que todo el mundo sabe lo que está haciendo y cómo las cosas están progresando. Además, asegúrese de que todos puedan ver el impacto y los cambios que ocurren durante el desarrollo.
  2. Señale las pequeñas victorias - para acumular confianza, señale cuándo las cosas salieron exactamente como había planeado. Trate de encontrar situaciones en las que deba hacer un juicio crítico y use el término "mitigó el riesgo" con su administración.
  3. No diga "ya te lo dije". - digamos que le dijiste a la gerencia que necesitabas 2 meses para realizar una tarea y dijeron: "bueno, solo tienes tres semanas". El resultado no es probable que sea bueno (suponiendo que su estimación sea precisa). Haga que la administración tome conciencia del problema y documente todo lo que debe hacer para tratar de cumplir con la fecha límite. Cuando se demuestra que la calidad es pobre, puede resolver los problemas que enfrentó (y grabó) de manera profesional en lugar de señalar con el dedo y decir: "Se lo dije".

Si tiene una buena relación con su gerente, puede sugerir que lean algunos libros específicos para el desarrollo de software para que puedan comprender las mejores prácticas de la industria.

Además, señalaría a su jefe que no permitirle actuar como un desarrollador de software profesional está perjudicando su carrera. Realmente desea trabajar en un lugar que le permita crecer profesionalmente en lugar de hacerlo en algún lugar que lo convierta en un hacker.

Cuestiones relacionadas