Sección 8: Control de la configuración general
El Control de la Configuración es un subproceso del proceso de Gestión de la Configuración, en el que se establecen los mecanismos para el control de los cambios en los procesos de Diseño y Desarrollo de productos médicos. Será entendido como cambio a toda propuesta de mejora (modificación o requerimiento) y resolución de anomalías (problemas, defectos o no conformidades). Se define entonces una Solicitud de Cambio (SC) como un mecanismo para llevar adelante un cambio.
Una SC es una especificación documentada, cuyo origen presunto se recomienda esté documentado. Un Ítem de Configuración (IC) sólo podrá ser modificado ante una SC, ya sea que la misma surja en la etapa de desarrollo o en la de mantenimiento. Como la implementación de la SC puede derivar en una re-clasificación de la seguridad de la unidad/elemento/componente de software, la evaluación de la implementación del cambio debe estar por lo tanto relacionada con el proceso de Gestión de Riesgos del Software (RSKM).
En el marco del Proyecto MoSimPa, en este Plan se propone un subproceso dentro de la gestión de configuración general cuyas actividades estén relacionadas a la gestión de los cambios. Una vez implementada, la SC debe ser verificada, y esta verificación tiene que ser coherente con los procesos en los cuales impacte, tanto de desarrollo como de mantenimiento, testing y gestión de modificaciones y problemas. La norma exige trazabilidad entre los procesos de verificación, implementación, solicitud de cambios e Informe de Problemas (IP), y esta evidencia se consigue a partir de la realización de auditorías, las cuales pueden dispararse en función de un cronograma establecido, o luego de ser implementado el cambio. Cabe aclarar que no todo IP precede a una SC, sino que un IP puede quedar en un estado final.
Para gestionar las SC y lograr trazabilidad se utilizarán en Gitlab issues, sus etiquetas (labels) y su feature etiquetas con scope.
De esta manera una etiqueta se puede determinar de la forma:
<scope>::<etiqueta>
Los etiquetas dentro de un mismo scope son mutualmente exclusivas, por lo que solo se puede aplicar una de ellas a un issue en particular.
Cada issue tendrá su propio workflow configurado y sus estados. La documentación y el registro de las SC se realizarán a través de los mismos issues. Asimismo, los IP, con el análisis y registro del comportamiento real o potencial que sea considerado no seguro, inapropiado para el uso previsto o contrario a especificación, serán documentados en los mismos issues de defectos o no conformidades. Todos los issues deberán estar relacionados, de manera de lograr la trazabilidad solicitada por la norma.
Se propone identificar los siguientes elementos:
- Tipos de issues: se identificarán a partir del uso de etiquetas con scope "Issue". Ver la tabla de etiquetas definidas para este scope.
- Tableros (Board): se identificarán tres boards: Project Backlog; Product Backlog; Problem and Change Backlog. Ver tabla de boards definidos y la tabla de etiquetas a utilizar en los boards.
- Workflows: se evidencian con la configuración de boards, para lo cual deben identificarse etiquetas.
- Líneas de base: se identificarán con milestones. Una línea de base puede tener varias versiones de un repositorio.
- Versiones: se identificarán con tags en repositorios.
8.1 Definiciones de boards y etiquetas
8.1.1 Etiquetas dentro del scope Issue
Etiquetas de tipo de peticiones | Descripción | Relaciones | Board Relacionado | Nomenclatura Propuesta | Repo |
Requirement | Etiqueta para Requerimientos. Expresan requisitos de alto nivel, tanto funcionales como no funcionales | No requieren relación. Pero pueden vincularse a algún issue que les de origen, e.g.: “Elicitar Requerimientos” | Product backlog |
REQ_FUNC_YYY:Nombre_Descriptivo; REQ_NFUNC_YYY: Nombre_Descriptivo; donde YYY es un número consecutivo. Asimismo puede ser un issue relacionado a ingeniería de requerimientos y no un requerimiento en sí mismo. |
Documentation o código |
Use case | Etiqueta para los Casos de Uso | Issues relacionados a los Requirement | Product backlog | UC_YYY: Nombre_Descriptivo; donde YYY es un número consecutivo | |
Test Case | Etiqueta para los Casos de Prueba, por escenario | Issues relacionados a Use Case como también al issue que da origen a la actividad, e.g.: “Redactar Casos de Prueba”; “Correr Caso de Prueba”, etc. | Product backlog | TC_UC_YYY_ZZZ; donde CU_YYY identifica al caso o porción de caso de uso que el escenario prueba y ZZZ el escenario. | |
Issue | Etiqueta genérica para toda actividad diferente de las anteriores | Cualquiera que sea necesario trazar | Product backlog | No aplica | Cualquiera |
Change | Etiqueta para los issues tipo cambios/modificaciones | Se podría relacionar a los Requirement or Use Case que modifica | Change Backlog | No aplica | Documentation y luego repo código |
Bug | Etiquetas para los issues tipo errores, anomalías, no conformidades, es decir todo desvío respecto a la especificación. | Con los Test Case cuando estos fallaron o bloquearon, como así también a un issue de auditoría | Problem Backlog | No aplica | |
Planning | Estado para issues relacionados a planificación | Product backlog | No aplica | ||
Testing | Estado para issues relacionados a actividades de verificación y validación | Product backlog | No aplica | ||
Design | Estado para actividades relacionadas con el diseño (Arquitectura, diseño detallado) | Product backlog | No aplica | ||
Integration and delivery | Estado para actividades relacionadas paquetizado, integración y liberación de software | Product backlog | No aplica | Documentation o código | |
Risk Management | Estado de actividades relacionadas con el proceso de gestión de los riesgos | Product backlog | No aplica | Documentation |
8.1.2 Boards y sus etiquetas
Board | Scope | Descripción | Etiquetas (tipo de issues) |
Problem and Change Backlog | PCB | Tablero para issues tipo Bug | Open; Bug; CCB Review; CCB Approved; To Do; Doing; CCB Rejected; Closed |
Product Backlog | PB | Tablero para issues empleados en la planificación del proyecto, diseño, desarrollo, testing (excepto Test Cases) integración y despliegue, gestión de riesgos | Open; To Do; Doing; Closed |
Testing Backlog | TB | Tablero para issues tipo Test Case | Open; To Do; Doing; Pass; Failed; Locked; Closed |
Etiquetas | Descripción | Estados Relacionados | Boards Relacionados |
Open | Estado por defecto, inicio |
Anterior: - Siguiente: To Do o CCB Review |
Todos (estado predefinido de Gitlab) |
To Do | Estado para peticiones que estén aceptadas/asignadas para desarrollar |
Anterior: - Siguiente: |
Product Backlog; Problem and Change Backlog; Testing Backlog |
Doing | Estado para peticiones que se estén desarrollando |
Anterior: - Siguiente: |
Product Backlog; Problem and Change Backlog; Testing Backlog |
Closed | Estado por defecto, fin |
Anterior: cualquiera Siguiente: - |
Todos (estado predefinido de Gitlab) |
CCB Review | Denota estado de análisis |
Anterior: Open Siguiente: CCB Approved or CCB Rejected |
Problem and Change Board |
CCB Approved | Aprobación por CCB |
Anterior: CCB Review Siguiente: To Do |
Problem and Change Board |
CCB Rejected | Rechazo por CCB |
Anterior: - Siguiente: Closed or Open |
Problem and Change Board |
Failed | Caso de Prueba fallido |
Anterior: Doing Siguiente: - |
Testing Backlog |
Pass | Caso de Prueba pasado |
Anterior: Doing Siguiente: - |
Testing Backlog |
Locked | Caso de Prueba bloqueado |
Anterior: Doing Siguiente: - |
Testing Backlog |
8.2 Workflows empleados
A continuación se detallan los tipos de issues que serán gestionados en el proyecto, como así también los flujos de trabajo para los mismos, y se describen los procesos que se utilizarán para implementar el circuito de control de cambios en cada caso.
Los flujos describen los diferentes estados para los diferentes tipos de cambio. Cada issue deberá contar con su propio workflow, pero como se expresó anteriormente estos deberán relacionarse entre sí, con el objetivo de garantizar la trazabilidad.
8.2.1 Issues de tipo Change o Bug
Los issues de tipo Change ("modificación") sólo podrán pasar al repositorio de código para su implementación si previamente se encuentran en estado CCB Approved (es decir, aprobados por el Comité de Control de Cambios).
A continuación, se expone el flujo de trabajo que describe el circuito de control de cambios para este issue aplicable a GitLab.
Los issues de tipo Bug ("error") podrán pasar al repositorio de código para su corrección si previamente se encuentran en estado CCB Approved (es decir, aprobados por el Comité de Control de Cambios).
En los siguientes workflows se exponen los flujos de trabajo que describen los circuitos de control de cambios para cada uno de estos issues, aplicables a GitLab.
Un issue de tipo Change o Bug estará asignado al board de Problem and Change Backlog, y por lo tanto los posibles estados serán:
-
Open: Estado por defecto en la creación.
-
CCB Review: Cuando un issue de tipo Bug o *Change es tomado para revisión, donde se evaluará y registrará:
-
Tipo:
- Correctivo;
- Preventivo;
- Adaptación a un nuevo entorno;
- Etc.
-
Riesgos:
- ¿Implica riesgos reales y/o potenciales para la seguridad (safety)? (En este punto debe aplicarse el proceso de Gestión de Riesgos).
- ¿La petición realizada implica algún riesgo en la salud del usuario del producto (safety)?
- ¿La petición realizada implica algún riesgo para la integridad del producto?
- ¿La petición realizada supone algún riesgo para continuar con el desarrollo del proyecto?
-
Urgencia:
- ¿La petición realizada requiere un tratamiento urgente?
-
Complejidad:
- ¿La petición requiere un tratamiento especial por su complejidad?
- ¿El pedido requiere del análisis de un experto? ¿Se cuenta con un experto en el tema?
- ¿En función del análisis se modifica o crea algún Ítem de Configuración?
- ¿Es necesario introducir modificaciones en la línea de base (LB) de desarrollo actual; o la petición puede ser incluida en una LB posterior?
- ¿Exige un tratamiento inmediato?
- ¿Puede ser resuelta con los recursos disponibles?
- En caso de no contar con los recursos en forma inmediata, ¿puede ser diferida esta petición?
- ¿Requiere de personal externo para su tratamiento?
- ¿Necesita llegar a nuevos acuerdos con el/los cliente/s? (En este caso se requiere de la intervención del área de ventas.)
-
Del análisis anterior, el CCB asignará un peso al issue tal como se detalle en la sección Clasificación de la Severidad de las Solicitudes de Cambio.
Como resultado de esta actividad puede ser necesaria la creación de branch de desarrollo o fix. El análisis anterior denota el INFORME DEL PROBLEMA (IP) o SOLICITUD DE CAMBIO (SC), según corresponda, y por lo tanto debe documentarse/evidenciarse en el mismo issue.
- CCB Approved: Estado que denota la aprobación por parte del Comité de Control de Cambios para su atención/implementación.
- CCB Rejected: Estado que denota el rechazo del Comité de Control de Cambios para su resolución/implementación. Un estado CCB Rejected puede ser luego reabierto.
Cuando un issue de tipo Change, Bug es tratado y aprobado puede ser pasado al repositorio de código correspondiente para su resolución. Todo el análisis debe quedar asentado en la misma petición, constituyendo la Solicitud de Cambio o Informe de Problema, según corresponda.
Un Informe de Problema puede derivar en un Cambio (Change); si esto sucede se cargarán los issues como relacionados.
8.2.2 Issues de tipo Test Case
Los issues de tipo Test Case (“caso de prueba”) estarán asignados al board de Testing Backlog, por lo tanto los estados serán:
- Open: Estado por defecto en la creación.
- To Do: Asignados a un sprint listos para correr.
- Doing: Corriendo el escenario.
- Failed: Escenario fallido.
- Locked: Caso de prueba bloqueado, es decir cuando alguna precondición no se encontraba satisfecha.
- Pass: Caso de éxito en la corrida.
- Closed: Cuando el escenario fue exitoso, posterior a Pass.
En el siguiente workflow se expone el flujo de trabajo que describe el circuito de control de cambios para este issue, aplicable a GitLab.
8.2.3 Issues de tipo Issue, Requirement, Use Case, Planning, Testing, Design, Integration and Delivery, Risk Management
Los issues de tipo Issues, Requirement, Use Case, Planning, Testing, Design, Integration y Delivery estarán asignados al board de Product Backlog, por lo tanto los estados serán:
- Open: Estado por defecto en la creación.
- To Do: Asignados a un sprint/incremento listos para ser desarrollados.
- Doing: Ejecutando la actividad.
- Closed: Cuando se finalizó la petición.
Para los issues de tipo Requirement y Use Case los estados denotan:
- Open: Estado por defecto en la creación.
- To Do: Asignados a un sprint/incremento listos para ser modelados / elicitados / especificados / desarrollados.
- Doing: En el caso de Requirement elicitando y modelando interacción o comportamiento, ejemplo Modelo de Casos de Uso con CUs que implementen el Requerimiento y redacción de alto nivel, como así también escenarios de atributos de calidad. En el caso de Use Case este estado involucra las actividades de especificación e implementación.
- Closed: Estado de finalización del issue, para Use Case daría lugar a las peticiones de tipo Test Case.
El siguiente workflow muestra el flujo de trabajo que describe los circuitos de control de cambios para cada uno de estos issues y que son aplicables a GitLab.
El mismo debe considerarse como un template, es decir, el mismo workflow es aplicable a cada uno de los tipos de Issues considerados en este inciso, conformando un workflow único en cada caso. Si a futuro fuese necesario modificar alguno de los Issues contemplados en este inciso se deberá agregar como un caso mas a la lista.
Reemplazar <tipo> por Issue, Requirement, Use Case, Planning, Testing, Design, Integration and Delivery o Risk Management.
8.3. Comité de Control de Cambios
El Comité de Control de Cambios (CCB) del Proyecto MoSimPa será el órgano encargado de tomar las decisiones relacionadas a la gestión de los cambios que se susciten. El propósito del CCB es asegurar que cada cambio es evaluado y coordinado adecuadamente.
La siguiente tabla muestra la estructura del CCB. La misma podrá ser ajustada acorde a las definiciones realizadas.
Miembros/Rol | Apellido y nombre |
Redacción 1 | PÉREZ MEYER, Lisandro |
Redacción 2 | AYMONINO, Andrés |
Revisión 1 | ROSSI, Esteban |
Aprobación | MANDOLESI, Pablo |
Se deberá identificar la frecuencia con la que deberá reunirse el CCB para el proyecto, la cual podrá variar de acuerdo a las necesidades.
Cabe aclarar que el poder de aprobación final recae sobre el rol "Aprobación" del CCB.
8.3.1 Listado de cambios del CCB
- 20210104: siguiendo la decisión del CCB se dá de baja del CCB a Josué Albornoz Laferrara, quedando en disponibilidad para futuras consultas.
8.4. Clasificación de la Severidad de las Solicitudes de Cambio
La siguiente tabla describe las posibles severidades asignadas a las solicitudes de cambio que pudieran generarse durante el ciclo de vida del Proyecto MoSimPa. Al tipo de severidad se le aplica el número entre paréntesis que deberá ser usado en el campo “Peso” de GitLab.
Tipos de severidad | Descripción |
<Identificación del tipo de cambio> | <Descripción del tipo de cambio> <Descripción del circuito definido para soportar el pedido de cambio> |
BAJA (2) | Corresponde al tipo de cambio cuyo tratamiento podría efectuarse en el largo plazo, no peligrando ni la seguridad, ni la continuidad del proyecto. En general, asociado a sugerencias. |
NORMAL (4) | Corresponde al tipo de cambio, cuyo tratamiento debería efectuarse en el mediano plazo. |
ALTA (6) | Corresponde al tipo de cambio, cuyo tratamiento debería efectuarse en el corto plazo. |
URGENTE (8) | Corresponde al tipo de cambio, en general asociado a errores, que podría significar un retraso o compromiso económico de alto impacto. |
INMEDIATA (10) | Corresponde al tipo de cambio, cuyo no tratamiento podría implicar un riesgo de no continuación del proyecto. |
8.5. Criterios de Evaluación de las Solicitudes de Cambio
La evaluación de los cambios que pudieran suscitarse a lo largo del ciclo de vida del Proyecto MoSimPa debería estar orientada a los siguientes interrogantes:
Criterios de evaluación de las solicitudes de cambio - Checklist
Pregunta | Hecho |
---|---|
¿Es posible atenderla en función de la disponibilidad de recursos, tiempo y costos asignados al Proyecto? | |
¿Implica una modificación del alcance en la especificación de requerimientos del producto? | |
¿Es necesario un ajuste en el presupuesto acordado? | |
¿Cumplirá todavía el producto los requisitos especificados del mismo? | |
¿Resultará afectada la utilización prevista? | |
¿Resultará afectada la evaluación de los riesgos existentes? | |
¿Supone algún riesgo para la continuidad del Proyecto? | |
¿Necesita adecuarse el cronograma previamente definido? | |
¿Es necesario efectuar consultas a expertos externos para su tratamiento? | |
¿Implica la modificación/actualización de activos? ¿Cuáles? |