NUESTRO ENFOQUE PARA GESTIONAR LA COMPLEJIDAD: DESCOMPONERLA SISTEMÁTICAMENTE EN PEQUEÑAS FUNCIONES

MÉTODOS

Enfoque holístico

Nuestra experiencia en proyectos de desarrollo de sistemas complejos lo demuestra: Cada proyecto requiere su propio enfoque. No hay un único método que conduzca a la realización del objetivo, sino que se necesita una combinación hecha a medida de enfoques y herramientas adecuados. Dicho conjunto de medidas no solo se toma en función del producto que se vaya a desarrollar, sino que debe incluir el contexto y la constelación del equipo que lo va a realizar.

Adoptamos una visión holística del producto en su totalidad. El punto de partida es siempre nuestra comprensión del cliente y sus necesidades. La tarea central de nuestro enfoque de ingeniería de sistemas colaborativa es crear un entendimiento común entre todos los participantes, desde el análisis del problema hasta la identificación de opciones para la solución y durante las pruebas. La perspectiva del usuario respecto al sistema sirve de hilo conductor para identificar las posibles soluciones Es la base del análisis y el diseño, así como el punto de partida de la integración incremental. La especificación asociada constituye la base para la definición de los casos de prueba del sistema y la documentación del usuario.

Core Modeling

Una cuestión central en el desarrollo de sistemas es: ¿Cómo puede encontrarse e implementarse una solución que se ajuste de forma óptima al problema real?

Para ello, es necesario que todas las partes implicadas en el desarrollo del sistema tengan una comprensión uniforme y consensuada del problema a resolver.
Core Modeling se basa en el enfoque Usage-Centered Design, que se ha desarrollado en Siemens AG como un método para la ingeniería de sistemas basada en modelos con un enfoque en el análisis de negocio y la ingeniería de requisitos y se ha aplicado con éxito en varios proyectos de ingeniería de sistemas.

Con la aplicación del Core Modeling, las partes interesadas en el desarrollo del sistema crean un modelo común del problema. El modelo sirve como punto de partida y orientación para los siguientes pasos del desarrollo de soluciones (“modelo central”).

¿Cuál es la diferencia con otros métodos?

A menudo es difícil determinar una “Big Picture” del problema que hay que resolver. Esto hace que los usuarios (arquitectos, desarrolladores, ingenieros de prueba, etc.) tiendan a ver los requisitos de forma demasiado atómica. Además, los requisitos suelen proceder de distintas fuentes, con granularidad variable y una separación poco clara entre la descripción del problema y los detalles de la solución.

El método de “Core Modeling” inicia el proceso de ingeniería de sistemas mediante un análisis sistemático del dominio del problema en términos de sus propiedades básicas funcionales y no funcionales. Son incluidas, por un lado, las tareas de las partes interesadas (jobs-to-be-done), y por otro, intereses propios de estos interesados.

Estos aspectos son descritos en el modelo de forma independiente de la solución y, por tanto, son estables en el tiempo, comprensibles para todas las partes interesadas y utilizables, ya sea como elemento de modelo trazable, como diagrama o como documento derivado.

¿Cuáles son las ventajas para nuestros clientes?

Mediante Core Modeling se crea un modelo del problema que

  • se crea conjuntamente, con lo que se rompe el pensamiento de silo y se fomenta la comunicación sobre la base de una comprensión uniforme del problema.
  • Se extrae el conocimiento del dominio de las cabezas de los expertos y se pone permanentemente a disposición de toda la organización de forma consolidada y estructurada
  • Se representan y se resaltan aquellas características del problema que son especialmente relevantes para determinar el valor agregado de una solución.
  • Se proporciona una base estable para la toma de decisiones enfocadas en el valor agregado.
  • Permite la identificación sistemática de conflictos y sinergias en el espacio del problema y, por tanto, el aprovechamiento del potencial de innovación en múltiples escenarios.

El modelo central resultante está estructurado de forma que puedan trabajar con él diferentes partes interesadas: Propietarios de producto, arquitectos de sistemas, ingenieros de requisitos, ingenieros de usabilidad, desarrolladores, ingenieros de pruebas, personal comercial y redactores de manuales.

Anatomía funcional

Nuestra fundadora y directora general, Herna Muñoz-Galeano, aprendió la aplicación de la anatomía funcional de Jack Järkvik, quien desarrolló el método y con quien trabajó en Ericsson. Además de participar en el desarrollo de las redes globales de telecomunicaciones, ha aplicado con éxito el método en diversos proyectos en los campos de la tecnología médica y la automatización ferroviaria.

La anatomía funcional describe y estructura un producto desde el punto de vista del usuario: ¿Qué funciones debe cumplir el sistema? ¿Cómo debe utilizarse? El método se basa en un enfoque descendente desde la perspectiva de los niveles funcionales. Permite definir las funciones, mostrar la dependencia entre las distintas funciones y proporciona información sobre qué funciones no tienen interrelaciones.

La anatomía funcional permite así proporcionar a todos los participantes en el proyecto en poco tiempo una imagen uniforme de los requisitos del proyecto y una comprensión común de las tareas.

¿Cuál es la diferencia con otros métodos?

En los métodos tradicionales, las tareas complejas se dividen en unidades más pequeñas y se desarrollan de forma independiente. Esto conlleva grandes riesgos para la integración y comprobación del sistema y rápidamente provoca retrasos importantes y un aumento de los costes. En cambio, la Anatomía Funcional adopta un enfoque de desarrollo incremental e integración paso a paso para completar un proyecto de desarrollo de forma predecible y rentable.

La filosofía central es planificar y verificar el sistema en la misma secuencia en que se realiza.

El proceso consta de 7 pasos:

  1. Definición del sistema junto con nuestros clientes a partir de casos de uso.
  2. Creación de un “árbol de funciones” e identificación de dependencias.
  3. Definición de la arquitectura mediante la asignación de funciones, casos de uso y la vista de implementación.
  4. Definición de la integración para obtener primero un sistema básico que funcione.
  5. Creación de un plan de integración (bottom-up).
  6. Definición de pruebas incrementales y verificación para obtener la funcionalidad y estabilidad definidas.
  7. Definición del plan de entrega y control del progreso del desarrollo mediante visualizaciones y diagramas para crear una base de confianza para las entregas a los clientes.
¿Cuáles son las ventajas para nuestros clientes?

Los mejores resultados se obtienen si el método de la Anatomía Funcional se utiliza ya durante la especificación del sistema y como herramienta global de planificación y control del proyecto.

A menudo nos consultan para que ayudemos a nuestros clientes a aplicar nuestro método cuando la finalización a tiempo del proyecto está en peligro debido a su complejidad.

Nuestros clientes valoran nuestro trabajo con el método de la Anatomía Funcional por las siguientes razones:

  • La Anatomía Funcional proporciona una comprensión transparente de las dependencias y funciones del sistema.
  • El “árbol funcional” muestra todas las tareas y casos de uso necesarios en una sola página. Así, constituye la plataforma ideal para los debates y la base para la comprensibilidad de todo el sistema.
  • La posibilidad de desarrollar y probar en paralelo y de forma controlada ahorra tiempo.
  • Los errores del sistema pueden detectarse en una fase temprana.
  • Las pruebas y verificaciones incrementales garantizan la estabilidad del sistema.
  • La integración incremental permite mantener un sistema que sigue funcionando continuamente.
  • El progreso del proyecto se conoce en todo momento y constituye una base segura para la toma de decisiones.
  • La contribución de cada parte interesada se hace transparente.

Pruebas basadas en modelos

Los resultados del desarrollo deben probarse para verificar que cumplen su propósito, es decir, si los requisitos han sido implementados correctamente. Para decidir qué, dónde, cuándo y cómo probar, todos los implicados necesitan una idea del comportamiento del sistema que sea independiente del punto de vista del arquitecto y del desarrollador: el modelo de pruebas.

Si el comportamiento del sistema se modela de forma coherente desde el dominio del problema hasta el dominio de la solución en forma de casos de uso, se pueden aprovechar muchas sinergias y reducir así considerablemente el esfuerzo de modelado de las pruebas.Una especificación de pruebas basada en modelos proporciona una aproximación visual de fácil acceso y discusión. Permite además identificar pasos que pueden ser redundantes, y/o rutinas que pueden ser no solo utilizadas en varios planes de pruebas o diferentes proyectos, sino que ayuda a identificar pasos de prueba que pueden ser automatizados.