Articles-4797 Esquema Contratar Proyectos PDF
Articles-4797 Esquema Contratar Proyectos PDF
Articles-4797 Esquema Contratar Proyectos PDF
Alexandra Parra
Revisó: Asesora Conceptual
Corporación Colombia Digital
Diego Campos
Asesor Conceptual
Corporación Colombia Digital
Jorge Bejarano
Dirección Estándares y Arquitectura
Ministerio de Tecnologías de la Información y las Comunicaciones
Aprobó:
Johanna Pimiento
Dirección Gobierno en Línea
Ministerio de Tecnologías de la Información y las Comunicaciones
Información Adicional: No Aplica
Ubicación: No Aplica
HISTORIA
TABLA DE CONTENIDO
Tabla de contenido
1 GLOSARIO.............................................................................................................................................................. 19
2 INTRODUCCIÓN................................................................................................................................................... 26
2.1 ANTECEDENTES............................................................................................................................................... 26
2.2 DESAFÍOS ........................................................................................................................................................... 26
2.3 SITUACION ACTUAL ....................................................................................................................................... 37
2.3.1 VARIABLES Y HERRAMIENTAS DE EVALUACIÓN DEL PROYECTO ....................................................................... 40
2.3.1.1 EVALUACIÓN DE LA COMPLEJIDAD DEL PROYECTO..................................................................................... 41
2.3.1.2 EVALUACIÓN DEL NIVEL DE ESTABILIDAD DE UN PROYECTO. .................................................................... 48
2.3.1.3 EVALUACIÓN DE PROYECTOS PARA DETERMINAR SI PREDOMINA LA INNOVACIÓN O LA EXPERIENCIA. . 50
2.3.1.4 EVALUACIÓN DE LA CLARIDAD DE LOS OBJETIVOS...................................................................................... 52
2.3.1.5 EVALUACIÓN DEL NIVEL DE COSTO DE LOS PROYECTOS. ............................................................................ 55
2.3.1.6 EVALUACIÓN DE PROYECTOS EN LOS QUE PREDOMINA LA ORIENTACIÓN AL PRODUCTO O AL PROCESO.56
2.3.1.7 EVALUACIÓN DE LA FLEXIBILIDAD DE LOS PROYECTOS.............................................................................. 57
2.3.1.8 CONSIDERACIONES PARA DETERMINAR LA EXTENSIÓN EN TIEMPO DE UN PROYECTO. ........................... 60
2.3.1.9 PROYECTOS IN-HOUSE VS PROYECTOS TERCERIZADOS. ............................................................................ 61
3 ALCANCE ................................................................................................................................................................ 86
ÍNDICE DE TABLAS
TABLA 36. PROCESO DE PRUEBAS DE SISTEMA. FUENTE: INTECO. (2009). GUÍA DE MEJORES
PRÁCTICAS DE CALIDAD DE PRODUCTO. 217
TABLA 37. PROCESO DE PRUEBAS DE ACEPTACIÓN. FUENTE: INTECO. (2009). GUÍA DE MEJORES
PRÁCTICAS DE CALIDAD DE PRODUCTO. 218
TABLA 38. PLAN DE PRUEBAS DE ACEPTACIÓN. FUENTE: CORPORACIÓN COLOMBIA DIGITAL. 221
TABLA 39. DESCRIPCIÓN DE LOS TIPOS DE PRUEBA DEL SOFTWARE. FUENTE: CORPORACIÓN
COLOMBIA DIGITAL. 229
TABLA 40. OWASP TOP 10 – 2013 DE RIESGOS DE SEGURIDAD EN APLICACIONES. LICENCIA CC
(CREATIVE COMMONS). FUENTE: HTTPS://WWW.OWASP.ORG. 236
TABLA 41. PRUEBAS DE SEGURIDAD A SISTEMAS DE INFORMACIÓN. FUENTE:
HTTPS://WWW.OWASP.ORG. 239
TABLA 42. MATRIZ DE INTERESADOS. FUENTE: CORPORACIÓN COLOMBIA DIGITAL - CCD. 269
TABLA 43. ELEMENTOS DEL PLAN DE SENSIBILIZACIÓN. FUENTE: CORPORACIÓN COLOMBIA
DIGITAL - CCD. 272
TABLA 44. ESTRUCTURA TÍPICA DE UN DOCUMENTO DE PLAN DE SENSIBILIZACIÓN. FUENTE:
CORPORACIÓN COLOMBIA DIGITAL - CCD. 274
TABLA 45. MODELO DE COMUNICACIÓN. FUENTE: CORPORACIÓN COLOMBIA DIGITAL - CCD. 275
TABLA 46. MEDICIÓN DEL NIVEL DE SATISFACCIÓN, ADOPCIÓN E IMPACTO A TRAVÉS DE
INDICADORES. FUENTE: CORPORACIÓN COLOMBIA DIGITAL - CCD. 284
ÍNDICE DE ILUSTRACIONES
FIGURA 15. NIVEL DE SOSTENIBILIDAD DE LA TECNOLOGÍA SEGÚN LA EL CICLO DEL VIDA DEL
PRODUCTO TECNOLÓGICO. FUENTE: AN APPROACH TO TECHNOLOGY RISK MANAGEMENT –
RICARDO VALERDI – RON KHOL. 66
FIGURA 16. VARIABLES DEL COMPORTAMIENTO DEL EQUIPO Y LA ESTRUCTURA
ORGANIZACIONAL QUE DETERMINAN IDONEIDAD DE LA METODOLOGÍA. FUENTE:
CORPORACIÓN COLOMBIA DIGITAL. 67
FIGURA 17. MATRIZ DE EVALUACIÓN DEL NIVEL DE EMPODERAMIENTO DEL EQUIPO DE
PROYECTO CON RESPECTO A NIVEL DE MADUREZ DE LAS HABILIDADES BLANDAS
REQUERIDAS. FUENTE: AN APPROACH TO TECHNOLOGY RISK MANAGEMENT – RICARDO
VALERDI – RON KHOL. 68
FIGURA 18. MEDIOS DE CONTACTO DOMINANTES EN LA COMUNICACIÓN ENTRE EL EQUIPO
DESARROLLADOR Y USUARIO FINAL. FUENTE: ORGANIZATIONAL BEHAVIOUR HUCZYNSKI Y
BUCHANAN. 70
FIGURA 19. ESTILO DE LIDERAZGO EN LOS EQUIPOS DE PROYECTO. FUENTE: MODELO DE
VROOM – YETTON. 74
FIGURA 20. ACTITUD DE LOS INDIVIDUOS FRENTE AL CAMBIO. FUENTE: CHANGE MANAGEMENT -
HARVARD BUSINESS REVIEW. 75
FIGURA 21. MODELOS QUE DESCRIBEN LAS DOS PRINCIPALES CONFIGURACIONES DE LA
ESTRUCTURA ORGANIZACIONAL. FUENTE: ORGANIZATIONAL BEHAVIOUR – ROBBINS JUDGE.
78
FIGURA 22. MODELO CONCEPTUAL. FUENTE: CORPORACIÓN COLOMBIA DIGITAL. 84
FIGURA 23. CICLO DE VIDA DE UN PROYECTO DE DESARROLLO DE SOFTWARE. FUENTE:
CORPORACIÓN COLOMBIA DIGITAL. 85
FIGURA 24. ESTRUCTURA DOCUMENTO DE LAS FICHAS TIPO. FUENTE: CORPORACIÓN COLOMBIA
DIGITAL 85
FIGURA 25. ESQUEMA DE TRABAJO. FUENTE: PMBOK GUIDE – 5TH EDITION. 91
FIGURA 26. OBJETIVOS DEL PROYECTOS. FUENTE: CORPORACIÓN COLOMBIA DIGITAL. 91
FIGURA 27. EVALUACIÓN CUALITATIVA DE RIESGOS. (PMBOK GUIDE – 5TH EDITION). 94
FIGURA 28. EVALUACIÓN CUANTITATIVA DE RIESGOS. FUENTE: PMBOK GUIDE – 5TH EDITION. 95
FIGURA 29. FACTORES QUE DEFINEN EL NIVEL DE TOLERANCIA AL RIESGO. FUENTE: PMBOK
GUIDE – 5TH EDITION. 97
FIGURA 30. COMPORTAMIENTO FRENTE AL NIVEL DE TOLERANCIA AL RIESGO. FUENTE: PMBOK
GUIDE – 5TH EDITION. 98
SECCIONES PRELIMINARES
DERECHOS DE AUTOR
A menos que se indique de forma contraria, el copyright (traducido literalmente como
derecho de copia y que, por lo general, comprende la parte patrimonial de los derechos de
autor) del texto incluido en este documento es de El Ministerio de Tecnologías de la
Información y las Comunicaciones (MINTIC) de Colombia. Se puede reproducir
gratuitamente en cualquier formato o medio sin requerir un permiso expreso para ello, bajo
las siguientes condiciones:
El texto particular no se ha indicado como excluido y por lo tanto no puede ser copiado
o distribuido.
La copia no se hace con el fin de ser distribuida comercialmente.
Los materiales se deben reproducir exactamente y no se deben utilizar en un contexto
engañoso.
Las copias serán acompañadas por las palabras "copiado/distribuido con permiso de
la República de Colombia. Todos los derechos reservados”.
El título del documento debe ser incluido al ser reproducido como parte de otra
publicación o servicio.
Si se desea copiar o distribuir el documento con otros propósitos, debe solicitar el permiso
entrando en contacto con el Viceministerio de TI del Ministerio de Tecnologías de la
Información y las Comunicaciones de la República de Colombia.
CRÉDITOS
Este documento se elabora dentro del marco de la ejecución del Contrato Interadministrativo
N° 000376 de 2015 el cual tiene por objeto Contratar Servicios de acompañamiento
especializado al Ministerio TIC en la implementación de las iniciativas: Fortalecimiento de la
Gestión de TI en el estado y la Estrategia de Gobierno en línea . Este documento hace parte
integral del desarrollo de la ejecución del Contrato Interadministrativo No. 000376 de 2015,
definiendo las actividades y actores que en este intervienen.
Este documento es un instrumento aplicable por los actores del Contrato Interadministrativo
No.000376 de 2015 el cual tiene por objeto “Contratar los servicios de acompañamiento
especializado al Ministerio TIC en la implementación de las iniciativas: Fortalecimiento de la
Gestión de TI en el estado y la Estrategia de Gobierno en línea.”
1 GLOSARIO
Caso de uso: Es una descripción de los pasos o las actividades que deben realizarse para
llevar a cabo un proceso. Las personas o entidades que participan se denominan actores.
CMMI: Es un modelo para medir la calidad del software y conocer la madurez de los
procesos de su producción. Este modelo clasifica las empresas por niveles de madurez.
Gestión del cambio: Acciones con las que se apoya directamente el desarrollo y
mantenimiento del software, mediante la conservación de la integridad del producto antes y
después de su puesta en producción.
Línea base: Se refiere a una especificación o software que ha sido formalmente revisado o
acordado, de tal forma que sirva como base para futuros desarrollos, y que sólo puede
cambiarse por medio de un proceso formal de control de cambios.
Mantenibilidad: Facilidad con la que un software puede ser modificado para corregir
defectos, satisfacer nuevos requisitos, modificar para hacer el mantenimiento futuro más
sencillo, o adaptar a cambios de entorno.
Portabilidad: Facilidad con la que un producto software puede ser trasladado de un entorno
a otro.
Prueba basada en requisitos: Enfoque de pruebas cuyos casos se diseñan con base en
los objetivos y condiciones obtenidas de los requisitos de software.
Prueba de caja negra: Test, tanto funcional como no funcional, sin referencia de la
estructura interna del componente o sistema.
Prueba de caso de uso: Técnica de diseño de caja negra (appliance) con la que los casos
de prueba se formulan para ejecutar escenarios de usuario.
Riesgo residual: Es aquél que permanece después de que la dirección desarrolle sus
respuestas a los riesgos. El riesgo residual refleja el riesgo remanente una vez se han
implantado de manera eficaz las acciones planificadas por la dirección para mitigar el riesgo
inherente.
Seguridad: Atributos del producto software que se relaciona con su capacidad para prevenir
accesos no autorizados, bien sean accidentales o deliberados, a programas o datos.
Scrum: Metodología ágil que aplica de manera regular un conjunto de buenas prácticas
para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un
proyecto. Utiliza la ejecución de iteraciones (sprint: bloques cortos y fijos), que proporcionan
un resultado completo y, un incremento en la producción final que es entregado con mínimo
esfuerzo al cliente en el tiempo planeado. Un principio clave de Scrum es reconocer que
durante la ejecución de un proyecto los clientes pueden cambiar de idea sobre lo que
quieren y necesitan.
Tasa de defectos: Medida de fallos de una categoría dada en unidades de medida dada,
por ejemplo fallos por unidad de tiempo o número de transacciones.
Usabilidad: capacidad del software de ser atractivo, entendido, aprendido y usado por el
usuario.
2 INTRODUCCIÓN
2.1 ANTECEDENTES
2.2 DESAFÍOS
Como resultado del diagnóstico y análisis que se exponen en este documento, se identificó
que el proceso de desarrollo de software es una labor que requiere un tratamiento con
El último eslabón del esquema de generación de valor es la gestión del desarrollo de los
sistemas de información que hace referencia a cada una de las etapas del ciclo de vida de
desarrollo de software. Es importante resaltar que la estrategia de mejoramiento que
propone este documento se concentra en este último eslabón del proceso de generación de
valor sin perder de vista la fuerte dependencia e interrelación que existe con los demás
componentes del modelo.
Modelo de mercado
Este modelo representa todas las fuerzas vivas que participan en el proceso de desarrollo
de software y se entienden principalmente a partir de la oferta y demanda, que interactúan
bajo un esquema de adquisición en el que ambas partes buscan generar valor. La figura
que se muestra a continuación ilustra el modelo de mercado descrito:
La oferta
Dentro de la investigación realizada para conocer los detalles de la oferta, se estableció que
la componen empresas con los siguientes perfiles y portafolios de servicios:
La demanda
En el lado opuesto a la oferta, es decir la demanda, está integrada por las áreas de TI, los
CIO, los equipos de desarrollo interno (In-house) y las áreas funcionales de las entidades.
El tipo de bienes y servicios que requieren las entidades incluyen: asesoría en los procesos
para dimensionar los esfuerzos, desarrollo de soluciones a la medida, desarrollo de
sistemas funcionales y misionales, servicios de fábricas de software, servicios para levantar
requerimientos, desarrollo de pruebas, servicios de aseguramiento de la calidad y asesoría
general en la gestión de proyectos de desarrollo de software.
Al igual que con la oferta, el equipo de estructuración hizo reuniones con varias entidades
(ver figura No. 4), con el fin de conocer, desde la óptica de la demanda, cuáles eran las
oportunidades de mejora, problemas y buenas prácticas que se identificaban en el proceso
de contratación de proyectos de desarrollo de software.
La calidad de la documentación se debe mejorar para que incluya un nivel de detalle que
le permita a la entidad y a los proveedores trabajar y seguir el desarrollo original.
Se necesita mejorar la comunicación entre las áreas de tecnología y las demás
dependencias de una entidad para evitar duplicidad de esfuerzos
Se requieren profesionales especializados en proyectos de desarrollo de software para
supervisar y gestionar los contratos de este tipo de conocimiento.
Es necesario mejorar el estudio e implementación de los requerimientos de integración
de los sistemas en desarrollo con las plataformas existentes.
Se requieren mecanismos que permitan asegurar que los proveedores asignen al
proyecto los recursos humanos con los perfiles descritos en la oferta, para evitar
demoras y problemas de calidad generados por falta de experiencia o de conocimiento.
Aseguramiento en las entregas del software desarrollado desde etapas tempranas del
proyecto, a partir de entregas parciales, por ejemplo de las funcionalidades
desarrolladas. Es decir, posibilitar que la entidad saque provecho de las funcionalidades
desarrolladas en cada una de las iteraciones.
Con base en la anterior descripción del escenario, se concluye que la problemática en los
proyectos de desarrollo de software para las entidades puede ser modelada como un
sistema de retroalimentación negativa (ver figura No. 5), que inicia con las malas prácticas
en la gestión. Como consecuencia, el producto final no cumple con las expectativas de la
organización, lo que ocasiona deficiencias en la generación de valor y en el cumplimiento
de objetivos de mayor nivel para la organización. La alta visibilidad que tiene el fracaso de
los proyectos de desarrollo de software provoca desconfianza entre los líderes de las
entidades, que se traduce en recortes significativos de los recursos disponibles para este
tipo de proyectos. Esta decisión empeora aún más el escenario debido a que las limitaciones
en recursos significan un deterioro aún más pronunciado de las prácticas de gestión de
proyectos.
Finalmente, otro de los principales puntos que debe ser incluido dentro de los aspectos
prioritarios para revisar, corresponde a la necesidad de contar con personal experto que
pueda detectar sinergias para seleccionar los proyectos de software, teniendo como criterio
una fuerte base de conocimiento y buenas prácticas para la gestión durante todo el ciclo de
vida del proyecto.
La tasa de éxito de los proyectos de software ha sido una preocupación constante desde
que el Grupo Standish publicó en 1994 el reporte Chaos, en el que indicaba que el 31% de
los proyectos de TI eran cancelados o abandonados. Un estudio más reciente (2006)
muestra que esta tasa disminuyó al 19%; sin embargo, continúa siendo un porcentaje alto
de fracaso (El Emam & Koru, 2008). De acuerdo con el último estudio, las principales causas
que determinan el fracaso de los proyectos, en orden de relevancia, son:
En conclusión, es importante tener en cuenta que aunque hay espacio de mejora a través
del uso de diferentes herramientas y técnicas, todavía se requiere su diseño y
robustecimiento para tener tasas de éxito que coincidan con las expectativas de cualquier
organización (El Emam & Koru, 2008).
De acuerdo con el análisis de la información recopilada en las entrevistas con las entidades
y los proveedores, se ha evidenciado una creciente necesidad del Estado de contar con
herramientas que faciliten la contratación de proyectos de desarrollo de sistemas de
información. Específicamente, se busca que el proceso de contratación entregue un
producto o servicio que cumpla con las expectativas de los interesados, en términos de
calidad, bajo un modelo que gestione de forma eficiente los recursos disponibles.
Con el fin de establecer cuáles son las herramientas apropiadas para cada tipo de proyecto
de desarrollo de software, uno de los aspectos importantes es seleccionar la metodología
de desarrollo adecuada según las características expuestas más adelante, en el capítulo de
variables y herramientas de evaluación del proyecto. En la actualidad, el mercado ofrece
principalmente dos categorías de metodologías: metodologías tradicionales y metodologías
ágiles. Por una parte, las primeras se caracterizan por desarrollar cada una de las etapas
que componen el ciclo de vida del proyecto en forma secuencial. En contraste, las
metodologías ágiles se desarrollan en forma incremental e iterativa, por lo que el ciclo de
vida completo se ejecuta múltiples veces; es decir, todas las etapas se efectúan en un
tiempo más corto para entregar una funcionalidad específica y el proceso se repite hasta
entregar todas las funcionalidades pactadas.
Otra de las características importantes del enfoque de cada metodología consiste las
aproximaciones para gestionar la triple restricción: alcance, recursos y tiempo. Las
metodologías tradicionales se caracterizan por estar muy orientadas al plan, lo que se
evidencia en que el primer paso es establecer el alcance del proyecto para, posteriormente,
determinar cuáles son los recursos y tiempos requeridos para cumplir con el alcance
propuesto. Por su parte, las metodologías ágiles abordan el tema desde una orientación
hacia generar valor; es decir, establecen cuáles son los recursos y tiempo disponibles para
luego pensar qué se puede alcanzar, teniendo en cuenta las restricciones que suponen esas
dos variables. La representación gráfica de estos dos enfoques se detalla en la siguiente
figura:
La tasa de éxito de los proyectos que usan metodologías ágiles es mayor, como se
evidencia en los resultados de la siguiente figura. Sin embargo, es importante tener en
cuenta que para que las metodologías ágiles funcionen apropiadamente, el equipo
involucrado y la naturaleza del proyecto deben tener características muy particulares.
Figura 7. Comparación metodologías tradicionales vs ágiles. (The CHAOS Manifesto – The Standish
Group).
Figura 8. Variables del proyecto que determinan idoneidad de la metodología. Fuente: Corporación
Colombia Digital.
A continuación también se explican las herramientas para evaluar cada una de las variables.
Es importante resaltar que la evaluación rápida deja a un lado una serie de parámetros que
hacen más dispendiosa la evaluación de la complejidad de un proyecto y que el costo que
tiene esta simplificación puede ser que no se dimensione apropiadamente la complejidad.
Para los casos en que se disponga de tiempo y recursos para hacer una evaluación más
rigurosa, se sugiere que un experto evalúe cada una de las siguientes dimensiones:
Duración.
Costo.
Costo < 200 millones Entre 200 y 800 millones > De 800 millones de COP
(Entidades grandes) de COP de COP
Costo < 100 millones Entre 100 y 300 millones > De 300 millones de COP
(Entidades pequeñas) de COP de COP
Composición del equipo Todo el equipo ha •El equipo está compuesto •El equipo es altamente
trabajado en grupo en por personas internas y heterogéneo: equipos
oportunidades anteriores. externas a la organización. tercerizados + equipos
virtuales + equipos con
•Parte del equipo ha diferencias culturales,
trabajado en grupo en entre otros.
oportunidades anteriores.
•El equipo no ha trabajado
en grupo antes.
Desempeño del equipo •El equipo cuenta con •El equipo cuenta con •El equipo no cuenta con
fuertes habilidades de suficientes competencias experiencia suficiente en
liderazgo de proyectos en en el liderazgo de el liderazgo de proyectos
el tema de interés. proyectos del tema de del tema de interés.
interés.
•El proyecto cuenta con
procedimientos y
Urgencia e importancia.
Dimensión Complejidad baja Complejidad moderada Complejidad alta
Urgencia e importancia •El proyecto no es urgente •El proyecto tiene: alta •El proyecto tiene alta
ni tiene alta importancia urgencia y baja importancia y urgencia
para la organización. importancia o baja para el negocio.
urgencia y alta
•El proyecto se ejecuta importancia. •El proyecto debe
después de estudiar ejecutarse
cuidadosamente su •El proyecto puede inmediatamente y hay
viabilidad y realizar todo el planearse de forma fuertes restricciones de
proceso de planeación. aceptable. tiempo para completar
adecuadamente el
•El proyecto no tiene como •En las situaciones en que proceso de planeación.
objetivo solucionar un el equipo de proyecto debe
problema que esté improvisar el impacto de •El proyecto tiene como
generando consecuencias una mala decisión es bajo. objetivo solucionar un
negativas para la problema que esta
organización. generado costos
adicionales, perjuicios
legales, desastres
ambientales, etc.
Flexibilidad de la triple •El proyecto tiene pocos •El presupuesto puede •El alcance del proyecto es
restricción: Alcance, costo hitos. variar aproximadamente ambicioso.
y tiempo. un 10% pero los tiempos
•Existe alta flexibilidad no son negociables. •El cronograma de trabajo
para modificar el es ambicioso.
presupuesto. •Según el juicio de
expertos el alcance •La fecha límite es difícil
•El alcance del proyecto es planteado y los hitos se de cumplir y no se puede
moderado según el juicio puede cumplir sin mayores modificar.
de expertos. inconvenientes.
•No existe flexibilidad en
cuanto a presupuesto,
alcance, tiempo y calidad.
Claridad del problema o la •Los objetivos de la •Los objetivos de la •Los objetivos de negocio
oportunidad organización son claros. organización están son confusos o no se ha
formalmente definidos definido formalmente la
•La oportunidad o pero hay oportunidades de relación del proyecto con
problema están mejora en su la estrategia de la
completamente definidos, comunicación. organización.
han sido apropiadamente
comunicados a todas las •El problema u •El problema que intenta
partes interesadas y se oportunidad está siendo resolver el proyecto no
articula con la estrategia definido o está en proceso está completamente claro.
de la organización. de aclaración.
•La oportunidad que el
proyecto busca
aprovechar no ha sido
claramente identificada.
Importancia estratégica.
Dimensión Complejidad baja Complejidad moderada Complejidad alta
Importancia • Hay apoyo visible de • Cuenta con adecuado apoyo de • Tiene soporte insuficiente o
estratégica la alta gerencia. la alta gerencia. inexistente de la alta gerencia.
Nivel de impacto dentro de •Impacta solo un área, •Impacta dos o tres áreas, • Significa un cambio a
la organización unidad de negocio, unidades de negocio, gran escala, que impacta a
proceso o sistema. procesos o sistemas. toda la organización.
Riesgos, limitaciones y • Riesgos de bajo impacto • Riesgos de mediano • Riesgos de alto impacto y
dependencias. y probabilidad impacto y probabilidad probabilidad
Una vez se tenga la evaluación del proyecto, se retoma la matriz de la figura 8 del numeral
2.3.1 Variables y herramientas de evaluación del proyecto, para ubicar el resultado que
permite establecer el tipo de metodología que favorece el desarrollo del proyecto de la
siguiente manera:
Resultado esperado.
Proyectos semi
Dimensión Proyectos estáticos Proyectos dinámicos
estáticos
Propósito.
Proyectos semi-
Dimensión Proyectos estáticos Proyectos dinámicos
estáticos
Se espera atender
cambios en las
necesidades del negocio.
Participación.
Dimensión Proyectos estáticos Proyectos semi- Proyectos dinámicos
estáticos
Participación Se espera que la mayoría Se espera que la mayoría Se espera que la mayoría
de los cambios puedan ser de los cambios puedan ser de los cambios puedan ser
gestionados por el grupo gestionados involucrando gestionados involucrando
respetando los a los interesados las máximas autoridades
procedimientos relevantes para resolver el dentro del proyecto y la
establecidos. problema. organización.
Proceso.
Proyectos semi-
Dimensión Proyectos estáticos Proyectos dinámicos
estáticos
Una vez se tenga la evaluación del nivel de estabilidad del proyecto, se retoma la matriz de
la figura 8 del numeral 2.3.1 Variables y herramientas de evaluación del proyecto, para
ubicar el resultado que permite establecer el tipo de metodología que favorece el desarrollo
del proyecto de la siguiente manera:
Figura 10. Alineación de los diferentes niveles de objetivos dentro de una organización. Fuente: Goal
Setting– Harvard Business Review.
Una vez se ha establecido la relación entre los objetivos de proyecto y los objetivos
estratégicos de la entidad, se procede a verificar si los interesados tienen claros cuáles son
los objetivos críticos, habilitantes y deseados, que se entienden como:
Objetivos críticos:
Son las metas cruciales que el proyecto debe cumplir para ser calificado como exitoso. Se
identifican con facilidad en los proyectos con objetivos claros.
Objetivos habilitantes:
Son las metas o condiciones deseadas que facilitan la normal evolución del desarrollo
planeado. Se identifican con facilidad en los proyectos con objetivos claros.
Objetivos deseados:
Son las metas o condiciones que permiten que el proyecto se desarrolle de forma más fácil
y rápida. Se identifican con facilidad en los proyectos con objetivos claros.
Seguido a esta identificación, se debe verificar que los objetivos planteados cumplan con
cinco características que favorecen su claridad y comprensión entre los interesados:
El objetivo es específico:
Contiene detalles suficientes para que pueda ser comprendido por cualquiera de los
interesados.
El objetivo es medible:
Puede ser medido de forma cuantitativa o cualitativa para verificar su cumplimiento.
El objetivo es lograble:
Puede ser alcanzado según el criterio de expertos en desarrollo de software y en el área de
negocio a la que pertenece el objetivo.
El objetivo es realista:
Tiene en cuenta las limitaciones de tiempo y recursos disponibles.
el resultado que permite establecer el tipo de metodología que favorece el desarrollo del
proyecto de la siguiente manera:
Si el resultado indica que los objetivos son poco claros, en la matriz se ubica en el rango
con el mismo nombre, el cual se identifica con el color verde
Si el resultado indica que no todos los objetivos son claros, en la matriz se ubica en la
mitad del rango entre objetivos claros y poco claros, el cual se identifica con los colores
naranja y amarillo
Si el resultado indica que los objetivos son claros, en la matriz se ubica en el rango con
el mismo nombre, el cual se identifica con el color rojo
Una vez se tenga el nivel de costo del proyecto, se retoma la matriz de la figura 8 del numeral
2.3.1 Variables y herramientas de evaluación del proyecto, para ubicar el resultado que
permite establecer el tipo de metodología que favorece el desarrollo del proyecto de la
siguiente manera:
Figura 11. Restricciones en el modelo de gestión del proyecto orientado al producto. Fuente:
Differences between product and project management – Hector del Castillo.
En contraste con el tipo anterior, en los proyectos orientados al proceso se observa que las
decisiones están enmarcadas por las variables: calidad, alcance, tiempo y recursos. Es
decir, el enfoque en este caso va dirigido a gestionar las actividades que deben ser
ejecutadas para crear el desarrollo de software y el avance y estado se miden respecto al
cumplimiento de dichas actividades según el plan establecido. La siguiente figura muestra
las variables que enmarcan un proyecto orientado al proceso.
Figura 12. Restricciones en el modelo de gestión del proyecto orientado al proceso. Fuente:
Differences between product and project management – Hector del Castillo.
Una vez se tenga la evaluación del proyecto para determinar si predomina la orientación al
producto o al proceso, se retoma la matriz de la figura 8 del numeral 2.3.1 Variables y
herramientas de evaluación del proyecto, para ubicar el resultado que permite establecer el
tipo de metodología que favorece el desarrollo del proyecto de la siguiente manera:
Cambios en el alcance:
Este tipo de proyectos se caracteriza por contar con el apoyo y seguimiento cercano del
equipo de liderazgo de la entidad. Desde el principio los interesados son conscientes
que se pueden producir eventuales cambios y por eso tienen mecanismos
Figura 13. Flexibilidad de los proyectos a lo largo del ciclo de vida. Fuente: Agile benefits–
VersionOne.
si un proyecto es extenso o poco extenso. La siguiente tabla presenta las dimensiones y los
rangos de evaluación sugeridos para cada caso:
Horizonte de planeación Largo y mediano plazo: > 1 año Corto plazo: < 1 año
Distancia temporal entre el usuario Más de una hora. Menos de una hora.
final y el desarrollador
Tiempo para detectar problemas Mayor a ocho semanas. Menor a ocho semanas.
Rapidez para responder al cambio Inferior a dos semanas Superior a dos semanas.
Tabla 2. Dimensiones que permiten establecer si un proyecto es extenso o poco extenso. Fuente:
Agile vs Waterfall Project Management– Venveo.
Una vez se tenga la evaluación para determinar la extensión en tiempo, se retoma la matriz
de la figura 8 del numeral 2.3.1 Variables y herramientas de evaluación del proyecto, para
ubicar el resultado que permite establecer el tipo de metodología que favorece el desarrollo
del proyecto de la siguiente manera:
metodología que más se ajusta a la dinámica de trabajo. Las variables que determinan si el
desarrollo será in-house o tercerizado son principalmente: el nivel de criticidad y el nivel de
competencia de la entidad en el tema. La matriz que se muestra a continuación ilustra los
casos en que resulta conveniente cada tipo de desarrollo:
Figura 14. Variables que determinan que un proyecto sea tercerizado. (Proposed Outsourcing Matrix
– Hunger y Wheelen).
Existen otras seis variables que también influyen sobre el proceso de tercerización de un
proyecto:
Calidad.
Variable In-house Tercerizado
Calidad Se tiene control sobre las iniciativas de calidad que El proveedor está especializado en el tipo de
se desean implementar en el proyecto. proyecto y por lo tanto cuenta con iniciativas de
calidad mucho más robustas.
Costo.
Variable In-house Tercerizado
Costo Es difícil lograr economías de escala en proyectos Se generan economías de escala ya que el
In-house. proveedor gestiona y ejecuta varios proyectos
similares.
Velocidad.
Variable In-house Tercerizado
Velocidad Se pueden programar los tiempos de las Los tiempos quedan estipulados en el contrato y su
actividades del proyecto de acuerdo a las incumplimiento implica penalidades para el
necesidades del negocio. proveedor.
Flexibilidad.
Variable In-house Tercerizado
Flexibilidad Este tipo de proyecto se ajusta fácilmente a Se tiene mayor flexibilidad y capacidad para
realidad y necesidades específicas del responder a eventos inesperados.
negocio.
La demanda de recursos adicionales significa
Pueden presentarse limitaciones de capacidad retos para balancear los requerimientos de todos
debido a la disponibilidad limitada de los los clientes.
recursos.
Experiencia.
Variable In-house Tercerizado
Experiencia La experiencia en el proyecto puede ser Ya que el foco del negocio está en una clase
reducida y no tener el grado de especialización específica de proyectos se tiene más experiencia
que el proyecto demanda. y recursos altamente especializados.
Comunicación.
Variable In-house Tercerizado
Sostenibilidad Dentro del ciclo Dentro del ciclo Dentro del ciclo Dentro del ciclo Dentro del ciclo
de la tecnología de vida del de vida del de vida del de vida del de vida del
producto la producto la producto la producto la producto la
tecnología está tecnología está tecnología está tecnología está tecnología se
ubicada en la ubicada al inicio ubicada al final ubicada al inicio ubica en la fase
fase de o al final de la de la fase de de la fase de de desarrollo o
estabilización. fase de desarrollo de desarrollo de de
estabilización. producto o al producto o al obsolescencia.
comienzo de la final de la fase
fase de de declinación
declinación del del producto.
producto.
Obsolescencia Se cuenta con Se cuenta con Se cuenta con Se cuenta con La tecnología ya
tecnología que tecnología que tecnología tecnología no es vigente y
corresponde al corresponde al vigente pero vigente pero no debe ser
estado del arte estado del arte existen existen usada en nuevos
de la industria. de la industria. desarrollos en desarrollos que proyectos. El
La La curso que remplazarán la soporte es
obsolescencia obsolescencia remplazarán la tecnología en el escaso.
no es un no es un tecnología en el corto plazo.
problema en el problema en el futuro.
momento. momento.
de alto impacto, amarillo es riesgo moderado y verde riesgo bajo. El eje Y muestra la
sostenibilidad de la tecnología en aspectos como desarrollo de la tecnología, desarrollo del
producto, estabilización del producto, declinación del producto y obsolescencia.
Figura 15. Nivel de sostenibilidad de la tecnología según la el ciclo del vida del producto tecnológico.
Fuente: An Approach to Technology Risk Management – Ricardo Valerdi – Ron Khol.
Figura 16. Variables del comportamiento del equipo y la estructura organizacional que determinan
idoneidad de la metodología. Fuente: Corporación Colombia Digital.
Las herramientas para evaluar cada una de las variables se explican a continuación:
Figura 17. Matriz de evaluación del nivel de empoderamiento del equipo de proyecto con respecto a
nivel de madurez de las habilidades blandas requeridas. Fuente: An Approach to Technology Risk
Management – Ricardo Valerdi – Ron Khol.
Una vez se tenga la evaluación del empoderamiento del equipo, se retoma la matriz de la
figura 16 del numeral 2.3.2 Variables y herramientas de evaluación del equipo y la entidad,
para ubicar el resultado que permite establecer el tipo de metodología que favorece el
desarrollo del software de la siguiente manera:
Una vez se tenga la evaluación del tamaño de un equipo del proyecto, se retoma la matriz
de la figura 16 del numeral 2.3.2 Variables y herramientas de evaluación del equipo y la
entidad, para ubicar el resultado que permite establecer el tipo de metodología que favorece
el desarrollo del software de la siguiente manera:
La siguiente gráfica ilustra una forma de evaluar la cercanía al cliente según el medio de
contacto que se usa con mayor frecuencia en la comunicación. En los casos en que los
documentos y el correo electrónico dominan la comunicación entre usuario y desarrollador,
se puede decir que la relación es lejana. En los casos en que las reuniones personales y
virtuales dominan la comunicación entre usuario y desarrollador se puede decir que la
relación es mucho más cercana
Espacio
Coincide No coincide
Finalmente, la evaluación de la dispersión cultural del grupo puede ser hecha calificando
nueve aspectos que determinan la cercanía entre usuarios finales y el equipo desarrollador.
El evaluador se puede basar en la siguiente matriz que califica la cercanía entre tres niveles:
bajo o lejano, medio y alto o lejano.
Entendimiento de la tecnología
Cercanía cultural
Sincronía de la comunicación
Frecuencia en la comunicación
Calidad de la comunicación
Cohesión de grupo
Enfoque preventivo:
El equipo identifica los riesgos
El equipo diseña estrategias de protección
El equipo implementa las estrategias de prevención
El equipo prueba las estrategias de prevención
El equipo asegura el uso y apropiación de las estrategias preventivas
El equipo cuenta con un plan de mejoramiento continuo para esas estrategias
Enfoque correctivo:
El equipo identifica y describe el problema
El equipo controla las consecuencias no deseadas
Una vez se tenga la evaluación de la respuesta del equipo frente a los problemas, se retoma
la matriz de la figura 16 del numeral 2.3.2 Variables y herramientas de evaluación del equipo
y la entidad, para ubicar el resultado que permite establecer el tipo de metodología que
favorece el desarrollo del software de la siguiente manera:
Figura 19. Estilo de liderazgo en los equipos de proyecto. Fuente: Modelo de Vroom – Yetton.
Una vez se tenga la evaluación del estilo de liderazgo en el equipo, se retoma la matriz de
la figura 16 del numeral 2.3.2 Variables y herramientas de evaluación del equipo y la entidad,
para ubicar el resultado que permite establecer el tipo de metodología que favorece el
desarrollo del software de la siguiente manera:
construcción del cambio. Cada una de esas tres actitudes está fuertemente ligada al nivel
de entendimiento de las motivaciones que suscitaron la necesidad de cambio y las
consecuencias que tiene el proceso para los interesados y la entidad.
Figura 20. Actitud de los individuos frente al cambio. Fuente: Change management - Harvard
Business Review.
Las características que permiten identificar la actitud que tiene un equipo frente al cambio
se describen a continuación para cada una de las tres categorías definidas:
Tipos de
Características Sugerencias
individuos
Se involucran en la planeación e
implementación del programa de
cambio.
Confían en que el cambio traerá
ganancias personales.
Disfrutan los retos y la emoción
que implican los programas de
cambio.
Tabla 6. Características de un equipo frente al cambio. Fuente: Corporación Colombia Digital.
Una vez se tenga la evaluación de la actitud del equipo frente al cambio, se retoma la matriz
de la figura 16 del numeral 2.3.2 Variables y herramientas de evaluación del equipo y la
entidad, para ubicar el resultado que permite establecer el tipo de metodología que favorece
el desarrollo del software de la siguiente manera:
Figura 21. Modelos que describen las dos principales configuraciones de la estructura
organizacional. Fuente: Organizational Behaviour – Robbins Judge.
Las características principales que permiten identificar a cada uno de estos modelos se
presentan a continuación:
Modelo mecánico.
Alta especialización de los funcionarios.
Jerarquía rígida.
Clara línea de mando.
Alta formalización.
Centralización.
Niveles de control muy acodados.
Modelo orgánico.
Equipos cros-funcionales
Jerarquía flexible.
Libre flujo de información.
Baja formalización.
Descentralización.
Niveles de control muy amplios
Enfoque individualista:
Prevalecen los intereses personales y de su círculo inmediato dentro de la organización
Alta orientación al YO
Privilegia el derecho a la privacidad
Prevalece la opinión individual
Los incentivos están orientados a premiar: logros personales, independencia,
competencia, respeto a la jerarquía y capacidad para cambiar las circunstancias
El incumplimiento de los lineamientos se traduce en sentimientos de culpabilidad
Enfoque colectivo:
Prevalecen los intereses colectivos de toda la organización
Alta orientación a NOSOTROS
Una vez se tenga la evaluación del ambiente de trabajo del equipo, se retoma la matriz de
la figura 16 del numeral 2.3.2 Variables y herramientas de evaluación del equipo y la entidad,
para ubicar el resultado que permite establecer el tipo de metodología que favorece el
desarrollo del software de la siguiente manera:
Alta complejidad en la gestión de las cargas laborales: los recursos están disponibles
tiempo completo en la organización y la disponibilidad no es aprovechada eficientemente
para el proyecto.
Los recursos contratados son altamente especializados: Cada posición en la
organización tiene formalmente definida las responsabilidades y tareas por desarrollar.
Las personas son contratadas de acuerdo con perfiles especializados definidos según
el rol. Se observa alta resistencia y dificultades para asumir responsabilidades y tareas
que estén fuera del rol.
Si el resultado indica que son roles flexibles, en la matriz se ubica en el rango con el
mismo nombre, el cual se identifica con el color verde
Si el resultado indica que son roles rígidos, en la matriz se ubica en el rango con el mismo
nombre, el cual se identifica con el color rojo
Equipos cros-funcionales:
Grupos formales de trabajo que están constituidos por funcionarios de igual jerarquía
pertenecientes a diferentes áreas de la organización, para cumplir con los objetivos de
un proyecto.
Tienen las habilidades y conocimiento para abordar un problema o necesidad desde
múltiples perspectivas, ofrecen soluciones robustas a proyectos de alta complejidad.
Representan retos importantes en términos de la gestión de la comunicación, ya que sus
integrantes manejan diferentes leguajes especializados.
Experimentan mayores dificultades para armonizar los diferentes estilos de trabajo, por
lo que requieren de una curva de aprendizaje prolongada para trabajar conjuntamente.
Equipos lineales:
Grupos formales de trabajo que están constituidos por funcionarios que pertenecen a
una misma área de la organización, para cumplir con los objetivos de un proyecto.
Son altamente especializados en un área de conocimiento.
Manejan un mismo lenguaje del área de conocimiento que dominan, por lo que la
comunicación fluye con mayor facilidad.
Tienen mayor afinidad en términos del estilo de trabajo y por lo tanto generar resultados
de forma más rápida.
El propósito final es que las entidades del Estado cuenten con sistemas de información que
se conviertan en fuente única de datos útiles para la toma de decisiones, que garanticen la
calidad de la información, dispongan recursos de consulta de información, sean fáciles de
mantener, escalables, interoperables, seguros, funcionales y sostenibles, tanto financiera
como técnicamente.
Las fichas tipo se crean a partir del modelo conceptual que se ilustra a continuación:
La siguiente etapa consiste en construir las fichas tipo teniendo como marco los hallazgos
del análisis preliminar, la evaluación de la idoneidad de la metodología y el ciclo de vida de
un proyecto de desarrollo de software como se muestra en la siguiente gráfica. Es
importante resaltar que para el uso de las fichas tipo se debe tener en cuenta la metodología
seleccionada para el proyecto, a partir de esto se escogen las herramientas y mejores
prácticas.
Figura 23. Ciclo de vida de un proyecto de desarrollo de software. Fuente: Corporación Colombia
Digital.
En consecuencia, la estructura definida para la ficha tipo integra los siguientes elementos:
el ciclo de vida de los proyectos de software, la naturaleza iterativa o secuencial de cada
una de sus fases, los problemas frecuentes y oportunidades de mejora encontradas en la
etapa de diagnóstico del modelo conceptual, los puntos clave en cada fase, las mejores
prácticas de la industria y los componentes esenciales que deben considerarse en los
elementos transversales.
Figura 24. Estructura documento de las fichas tipo. Fuente: Corporación Colombia Digital
3 ALCANCE
Definir el alcance del proyecto es el proceso mediante el cual se desarrolla una descripción
detallada del objetivo, fases y entregables. Durante este proceso, se analizan los riesgos,
los supuestos y las restricciones existentes. Definir de manera acertada el alcance del
Procesos Descripción
Declaración del problema o necesidad Se identifican los problemas o necesidades
Recopilación de información Se hace el levantamiento de la información relevante
Se determinan cuáles son las limitaciones y variables que afectan el
Restricciones y supuestos de alto nivel
proyecto
Análisis de alternativas Se busca entender la naturaleza de la necesidad y generar alternativas
Objetivos del proyecto Se identifica qué se quiere realizar o alcanzar con el proyecto
RESTRICCIONES SUPUESTOS
Limitaciones de tiempo Disponibilidad de recursos
Limitaciones del presupuesto Costos
Limitaciones del mercado Inflación
Tabla 8. Restricciones y supuestos del proyecto. Fuente: PMBOK Guide – 5th edition.
Procesos Descripción
Se planea cómo se planificarán y ejecutarán las actividades de
Planificar la gestión de riesgos
identificación, análisis, respuesta y seguimiento de los riesgos.
Identificar los riesgos Se identifica qué riesgos afectan al proyecto
Realizar un análisis cualitativo de Se estima de manera cualitativa la probabilidad y el impacto de cada
riesgos riesgo para hacer una priorización de los mismos.
Realizar un análisis cuantitativo de Se estima numéricamente la probabilidad y el impacto, para priorizar los
riesgos riesgos con mayor precisión.
Se planifican las acciones que se llevarán a cabo para mejorar las
Planificar la respuesta a los riesgos
oportunidades y reducir las amenazas.
Controlar los riesgos Se monitorean y ejecutan los planes de respuesta al riesgo.
Tabla 9. Procesos de gestión de riesgos. Fuente: PMBOK Guide – 5th edition.
Una vez realizado el plan de gestión de riesgos, es necesario comenzar con la identificación
de los eventos que pudiesen afectar el resultado del proyecto, ya sea de modo positivo o
negativo. Se debe prestar especial atención a la identificación de los sucesos que puedan
afectar seriamente al proyecto, aun cuando su probabilidad de ocurrencia fuese muy baja.
Las herramientas para realizar esta actividad pueden ser: la revisión de documentación,
recolección de información (entrevistas, lluvias de ideas, análisis de causa raíz, etc.), listas
de chequeo, análisis de supuestos, diagramas causa – efecto, análisis DOFA y los juicios
de expertos.
La experiencia indica que los imprevistos son los tipos de riesgos más peligrosos para la
viabilidad de un proyecto, debido a que son desconocidos es muy fácil omitirlos. De allí que
una de las tareas más importantes durante la gestión de riesgos es la identificación de la
mayor cantidad posible de eventos riesgosos, a pesar de la indudable dificultad que
presenta esta tarea para el caso de los imprevistos.
Evaluación de riesgos
El proceso para realizar la evaluación cualitativa de riegos se muestra en la siguiente figura,
cuyo objetivo es identificar en la matriz el nivel de riesgo según su impacto y probabilidad
de ocurrencia, para luego tomar los correctivos necesarios para mitigarlo. (PMBOK Guide –
5th edition).
Figura 28. Evaluación cuantitativa de riesgos. Fuente: PMBOK Guide – 5th edition.
Nivel Definición
Alta = 5 La amenaza está altamente motivada y es capaz de llevarse a cabo
Media - Alta =4 La amenaza es fundamentada y posible
Media = 3 La amenaza es posible
Media - Baja = 2 La amenaza no posee la suficiente capacidad
Baja = 1 La amenaza no posee la suficiente motivación y capacidad
Tabla 10. Probabilidad de ocurrencia de un evento determinado. Fuente: PMBOK Guide – 5th edition.
Mejor Práctica: Se puede obtener una buena estimación de los beneficios o costos
esperados de un evento riesgoso si se multiplica su probabilidad de ocurrencia por el
impacto.
Para los riesgos identificados y cuantificados, se puede estimar una reserva monetaria para
contingencias, estas últimas forman parte de la línea base de costo del proyecto. Por otra
parte, los riesgos desconocidos no se pueden gestionar de manera proactiva, sin embargo
para estos se podría asignar una reserva de gestión general, que no forma parte de la línea
base de costo, pero que se incluye en el presupuesto total del proyecto.
A continuación se listan los riesgos más comunes en los proyectos de desarrollo de sistemas
de información. Esto se hace con carácter informativo, la matriz debe ser definida por la
entidad de acuerdo con el proyecto:
Errores en la estimación del presupuesto
Retrasos en el cronograma
Que los costos sobrepasen los límites establecidos
Cambios en la definición del alcance
Cambios en la planeación del proyecto
Tener recursos técnicos insuficientes
Problemas de confiabilidad
Cambios en las especificaciones
No ejercer a tiempo los controles correctivos
Cambios en precios iniciales
Realizar una planeación demasiado optimista
No tener recursos disponibles de acuerdo con el plan
Que las tareas precedentes estén incompletas
Cambios en la regulación o generados por la entidad
Mejor Práctica: Utilice una metodología marco, guía de buenas prácticas o directrices como
el PMBOK, pero adapte los insumos, herramientas, técnicas y salidas según las
necesidades y la complejidad del proyecto.
Figura 29. Factores que definen el nivel de tolerancia al riesgo. Fuente: PMBOK Guide – 5th edition.
Figura 30. Comportamiento frente al nivel de tolerancia al riesgo. Fuente: PMBOK Guide – 5th edition.
Tabla 11. Documentación de los riesgos. Fuente: PMBOK Guide – 5th edition.
Figura 31. Información de cronograma y presupuesto. Fuente: PMBOK Guide – 5th edition.
Figura 32. Ciclo de gestión de los intersados. Fuente: Shwalbe, 2014 - Wiegers y Beatty, 2013.
Con el fin de facilitar dicha identificación, la siguiente es una lista de los posibles interesados
para un proyecto de esta naturaleza. Es importante resaltar que este listado no es
exhaustivo y puede estar sujeto a los cambios que el usuario de esta ficha tipo considere
pertinentes:
Adicionalmente, se recomienda determinar qué tan involucrados están cada uno de los
interesados con el proyecto, según la siguiente tabla:
Una vez los interesados en el proyecto han sido identificados, deben ser evaluados en
términos de su poder dentro del proyecto y de su nivel de interés. La siguiente figura
muestra la estrategia para seguir con cada interesado de acuerdo a esta evaluación:
Tabla 14. Matriz de gestión de interesados de acuerdo a su Interés/Poder. Fuente: Schwalbe, 2014.
Mejor Práctica: Al enfrentarse a situaciones difíciles con los interesados se sugiere ser
claro desde el comienzo, explicar detalladamente las consecuencias, diseñar planes de
contingencia, evitar sorpresas y tener siempre definida una posición sobre el asunto por
discutir.
Para “vender” la iniciativa, el gerente debe explicar los beneficios y el impacto que tienen
en los indicadores operativos o financieros, dependiendo de la audiencia objetivo.
Figura 33. Estructra acta de constitución. Fuente: PMBOK Guide – 5th edition.
El plan para la dirección del proyecto debe ser realista y aprobado por los principales
interesados. Suele incluir lo siguiente:
Ciclo de vida del proyecto
Procesos que se utilizarán en cada fase del proyecto
Herramientas y técnicas que se emplearán
Detalle de cómo se ejecutará y controlará el trabajo
Plan de gestión del cambio
Registro de cómo se realizará la gestión de la configuración
Líneas base: alcance, tiempo y costo
Registro de riesgos, análisis de vulnerabilidad y mitigación
Todos los planes: alcance, requisitos, tiempo, costo, calidad, mejora de procesos,
recursos humanos, comunicaciones, riesgos, adquisiciones y grupo de interesados
Los responsables de implementar las tareas deberían participar en la elaboración del plan
del alcance. (PMBOK Guide – 5th edition).
Aspectos a considerar en el desarrollo del plan de gestión del alcance
Factores ambientales de la organización: Variables políticas, variables económicas,
variables culturales, tecnología, variables socio-culturales, tendencias mundiales,
Figura 34. Herramientas para la gestión de los recursos humanos. Fuente: PMBOK Guide – 5th
edition.
Figura 35. Herramientas para la gestión de las comunicaciones. Fuente: PMBOK Guide – 5th edition.
Figura 36. Herramientas para el plan de gestión de riesgos. Fuente: PMBOK Guide – 5th edition.
Figura 37. Herramientas para el plan de gestión de adquisiciones. Fuente: PMBOK Guide – 5th
edition.
Figura 38. Herramientas para la gestión de los interesados. Fuente: PMBOK Guide – 5th edition.
Figura 40. Descripción detallada del proyecto. Fuente: PMBOK Guide – 5th edition.
El plan de gestión del alcance es un documento que define cómo se definirá, validará y
controlará dicho alcance.
Las herramientas para crear el plan de gestión del alcance son: juicio de expertos, análisis
del producto, lluvia de ideas para generar alternativas, sesiones de trabajo y casos de uso.
Mejor Práctica: Al planificar el alcance, seguramente el plan del proyecto tendrá poco
detalle, pero debería incluir como mínimo: las fases o el ciclo de vida del proyecto, qué
procesos y herramientas se van a utilizar y cómo se realizará la gestión de la configuración.
El análisis del producto se utiliza para aquellos proyectos en los que el entregable es un
producto. Por otro lado, la identificación de alternativas se emplea para obtener diferentes
enfoques para ejecutar y desarrollar el trabajo necesario, en esta actividad participan el
gerente del proyecto, analistas y gerentes de TI.
- Objetivos del proyecto: incluyen los criterios de éxito que se puedan medir. Los
proyectos pueden tener una amplia variedad de objetivos de negocio, de costos, de
cronograma, técnicos y de calidad.
- Requisitos del proyecto: Condiciones que deben cumplir o las capacidades que deben
tener los productos entregables del proyecto. Se refieren a los requisitos necesarios para
satisfacer un contrato, norma, especificación o cualquier otro documento formalmente
impuesto.
- Límites del proyecto: Identifican las restricciones de tiempo, recursos y procedimientos.
- Productos entregables del proyecto: Incluyen las salidas que constituyen el producto
o servicio resultado del proyecto, y los materiales adicionales como informes y
documentación relativa a la dirección del proyecto.
- Criterios de aceptación de productos: Definen el proceso y los criterios para que sean
aceptados los productos completados a los largo del proyecto.
- Restricciones: Enumeran y describen las restricciones relacionadas con el alcance que
limiten las opciones del equipo.
Mejor Práctica: Defina el entorno tecnológico que se requiere para dar respuesta a las
necesidades de información, especifique los posibles condicionantes y restricciones. Esta
información se obtiene mediante sesiones de trabajo con los usuarios y con el apoyo de los
responsables de las áreas de TI.
Reforzar los objetivos planteados por el proyecto al identificar las actividades principales
que se deben cumplir.
Identificar las tareas clave que requieren atención, las subtareas y el flujo lógico que las
relaciona.
Crear una guía de seguimiento de los elementos que componen el proyecto.
Comunicar la situación del proyecto en cualquier momento, a partir de la información
contenida.
Suministrar lineamientos sobre el proceso de control.
Facilitar el proceso de delegación.
Componentes de la EDT
Niveles de la EDT: determinan la jerarquía de trabajo dentro del proyecto, como se
muestra en la siguiente figura:
Enunciado del alcance del proyecto: incluye la descripción del alcance del proyecto y del
software, los principales entregables, los supuestos y las restricciones consideradas.
Estructura de desglose del trabajo (EDT): Descomposición jerárquica del alcance del
proyecto que contiene los entregables y los paquetes de trabajo necesarios para cumplir
con los resultados propuestos.
Diccionario de la EDT: Descripción detallada que proporciona información sobre los
entregables, actividades, planes, supuestos y restricciones de cada uno de los componentes
de la EDT.
Ajustes aprobados al alcance: Dentro de los procedimientos definidos, se considera la
eventual gestión de cambios en el alcance del proyecto. Las modificaciones que sean
pactadas y aprobadas según el procedimiento definido, deben ser incluidas en este
documento para garantizar su trazabilidad.
Figura 43. Proceso de validar el alcance. Fuente: PMBOK Guide – 5th edition.
Elemento transversal – Talento TI: El personal asociado a la gestión del proyecto debe
tener las siguientes capacidades:
El analista de negocio es un rol que se requiere con mayor frecuencia cuando se tiene que
actuar como enlace entre un grupo de stakeholders (cualquier persona o grupo de personas
afectados por una iniciativa de negocio en una entidad) y un gerente del proyecto, con el fin
de analizar cómo reducir cuestiones complejas a un nivel más manejable.
El Gerente del Proyecto y otros miembros del equipo de dirección de proyectos serán los
responsables de monitorear y controlar las actividades del proyecto durante todo el grupo
de procesos. Monitorear es observar lo que está ocurriendo en el proyecto y controlar es
implementar acciones correctivas cuando algo está fuera de lo normal. (Lledo, Pablo,
(2013). Director de proyectos).
Dentro del proyecto de desarrollo de sistemas de información es muy importante tener claro
cómo se tomarán las decisiones. La siguiente tabla resume los estilos de toma de decisiones
que se observan usualmente. Es importante definir desde un comienzo quienes serán los
encargados de decidir y qué metodología será usada para esto:
Tabla 15. Estilos de toma de decisiones. Fuente: Wiegers & Beatty, 2013.
Durante la ejecución del proyecto, el gerente y su equipo, entre los que se encuentran
analistas y personal experto, deben reunirse para intercambiar información, evaluar
alternativas y tomar decisiones.
Mejor Práctica: El gerente del proyecto no debería aprobar cambios, sino que él
generalmente solicita cambios al comité de cambios. Ahora bien, el gerente suele tener
autoridad para aprobar algunos cambios preestablecidos en la matriz de roles y
responsabilidades, por ejemplo cambios de emergencia.
- Expertos: El perfil requerido para este grupo de participantes incluye a personas con un
nivel alto en la dirección de la organización, de conocimiento de los objetivos estratégicos
y de negocio que se persiguen, y de autoridad para validar y aprobar cada uno de los
procesos realizados durante el desarrollo del sistema de información. Los expertos
deben tener un conocimiento del entorno y de la organización para proporcionar, a lo
largo del proyecto, unos requisitos del sistema adecuados, completos y suficientes para
considerarlos en el catálogo definitivo de requisitos.
Los directores de las áreas funcionales y los usuarios afectados por el proyecto aportan
información sobre las necesidades planteadas y validan los resultados con el fin de
garantizar la identificación, comprensión e incorporación de todos los requisitos con las
prioridades adecuadas. Esta misma función la desempeñan con mayor nivel de detalle
los usuarios expertos de nivel directivo.
El seguimiento y control del desarrollo del proyecto es responsabilidad del comité de
seguimiento, que se ocupa de resolver cualquier contingencia durante la ejecución y
asegura la disponibilidad de recursos humanos con los perfiles adecuados, además de
participar en las actividades en las que sea necesaria su colaboración.
Figura 44. Modelo del proceso de cambios. Fuente: PMBOK Guide – 5th edition.
Solicitud de cambio
En este proceso se identifican dos tipos de cambios: mayores y menores
Mayores: Afectan los requisitos o actividades que se encuentran en la ruta crítica, tienen un
impacto significativo en el proyecto y requieren recursos adicionales.
Menores: No tiene impacto en la ruta crítica y las actividades que afectan o las dependencias
no generan mayor impacto en el desarrollo del proyecto. No requieren recursos adicionales.
La información requerida en una solicitud de cambio es: Descripción del cambio, motivo del
cambio, impacto en el alcance, estimación de los recursos y el trabajo requerido, estimación
del costo adicional, estimación del tiempo requerido y el cronograma, riesgos preliminares
detectados y especificaciones de calidad que afectan los cambios.
Figura 45. Roles y responsabilidades en la gestión de cambios. Fuente: PMBOK Guide – 5th edition.
Análisis de variación
Estudia si los desvíos en el alcance comparados con la línea base son significativos como
para aplicar acciones correctivas. Las herramientas utilizadas se muestran en la siguiente
figura:
Figura 46. Herramientas para análisis de variación. Fuente: PMBOK Guide – 5th edition.
Los planes a actualizar son: Plan para la dirección del proyecto, gestión del alcance, gestión
de los requisitos, gestión del cronograma, gestión de los costos, gestión de la calidad,
mejoras de proceso, gestión de los recursos humanos, gestión de comunicaciones, gestión
de riesgos, gestión de adquisiciones y gestión de los interesados.
Estas actividades están relacionadas con el aseguramiento para que un producto consiga
el nivel de calidad requerido. Incluyen la definición adecuada de estándares y procesos de
calidad y el cumplimiento de los mismos. Estas acciones deberían estar dirigidas a
desarrollar una cultura de calidad que otorgue responsabilidades a todo el mundo.
Entre las actividades que se llevan a cabo en la gestión de la calidad están el aseguramiento,
la planificación y el control, entre otras.
Figura 47. Elementos influyentes sobre la calidad. Fuente: Inteco. (2009). Guía de mejores prácticas
de calidad de producto.
La calidad en la ingeniería del software depende en gran medida de la pericia del equipo
que desarrolla, se debe tener en cuenta un conjunto de características o cualidades, tales
como: eficiencia, fiabilidad, usabilidad, funcionalidad, mantenibilidad, portabilidad, etc. La
importancia de cada una de ellas varía de un producto a otro.
Interna: calidad medible a partir de las características intrínsecas, como el código fuente.
Externa: calidad medible en el comportamiento del producto, como en una prueba.
En uso: durante la utilización efectiva por parte del usuario.
Para poder ofrecer un producto software de calidad, las entidades deben hacer hincapié en
todo el ciclo de vida del producto, tal como lo muestra la siguiente figura:
Figura 48. Ciclo de vida de la calidad del producto. Fuente: Corporación Colombia Digital.
El proceso debe empezar con un buen entendimiento y recolección de los requisitos, hasta
llegar a pruebas de aceptación del usuario una vez que el software está desarrollado.
Mejor Práctica: La gestión de los defectos es un proceso que se ejecuta durante todo el
ciclo de vida. Se debe hacer hincapié en la importancia de detectar estos defectos en etapas
tempranas para que el costo de su corrección sea menor.
El control de la calidad (QC) y el aseguramiento de la calidad (QA) son dos conceptos vitales
para la gestión de la calidad que no siempre están bien definidos y que no se diferencian
con claridad.
Al hablar del control de la calidad (QC) se hace referencia al conjunto de técnicas operativas
y actividades utilizadas para cumplir con las demandas o requisitos de la calidad.
Figura 49. Pasos típicos del QC. Fuente: Inteco. (2009). Guía de mejores prácticas de calidad de
producto.
Figura 50. Pasos típicos del QA. Fuente: Inteco. (2009). Guía de mejores prácticas de calidad de
producto.
Tabla 16. Comparativa QA vs QC. Fuente: Inteco. (2009). Guía de mejores prácticas de calidad de
producto.
La entidad debe establecer los lineamientos para asegurar los niveles de calidad requeridos,
técnicos y funcionales, para el desarrollo de las aplicaciones/software. Para esto se deben
tener en cuenta las metodologías y estándares de desarrollo, de interoperabilidad y de
integración, tales como CMMI, arquitectura basada en servicios, metodologías de desarrollo
ágil o extremo, normas legales, etcétera.
3.3.2 Normas
Es importante anotar que estas normas son solo una guía que puede cambiar de acuerdo
con las condiciones particulares de cada proyecto, por lo tanto la implementación de este
modelo debe ser evaluada por el lector.
ISO/IEC 25000, conocida como System and Software Quality Requirements and Evaluation
(SQuaRE), es una familia de normas que tiene por objetivo la creación de un marco de
trabajo común para evaluar la calidad del producto software. La familia ISO/IEC 25000 es
el resultado de la evolución de otras normas anteriores, especialmente de las normas
ISO/IEC 9126, que describe las particularidades de un modelo de calidad del producto
software, e ISO/IEC 14598, que abordaba el proceso de evaluación de productos software.
La ISO/IEC 25000 tiene cinco divisiones (http://iso25000.com/):
La calidad del producto software se puede interpretar como el grado en que dicho producto
satisface los requisitos de los usuarios, lo que aporta valor a la entidad. Son precisamente
El modelo de calidad del producto definido por la ISO/IEC 25010 se encuentra compuesto
por las ocho características de calidad que se muestran en la siguiente figura:
Usabilidad: capacidad del producto software de ser entendido, aprendido, usado y resultar
atractivo para el usuario, cuando se emplea bajo determinadas condiciones. Esta
característica se subdivide en:
Capacidad de reconocer su adecuación: permite al usuario entender si el software es
adecuado a sus necesidades.
Capacidad de aprendizaje: permite al usuario comprender su uso y aplicación.
Capacidad para ser usado: facilita al usuario operarlo y controlarlo con facilidad.
Protección contra errores de usuario: capacidad del sistema de protegerse de
equivocaciones de los usuarios.
Amigabilidad de la interfaz de usuario: capacidad de la interfaz de usuario de agradar y
satisfacer la interacción con el usuario.
Accesibilidad: capacidad del producto que le permite ser utilizado por usuarios con
determinadas características y discapacidades.
Seguridad: capacidad de proteger la información y los datos para que personas o sistemas
no autorizados no puedan leerlos o modificarlos, permite prevenir equivocaciones
imprevistas. Esta característica se subdivide en:
Confidencialidad: capacidad de proteger contra el acceso de datos e información no
autorizados, ya sea accidental o deliberadamente.
Integridad: capacidad del sistema o componente de prevenir accesos o modificaciones
no autorizados a datos o programas.
Responsabilidad: capacidad de rastrear de forma inequívoca las acciones de una
entidad.
Autenticidad: capacidad de demostrar la identidad de un sujeto o un recurso.
adecuada para todos los proyectos. Cada una de las metodologías disponibles tiene
ventajas y desventajas que debe adecuarse al tipo específico.
Son muchas las ventajas que puede aportar el uso de una metodología. A continuación se
exponen algunas de ellas, clasificadas desde distintos puntos de vista:
Según la filosofía de desarrollo, se pueden clasificar las metodologías en dos grupos: las
metodologías tradicionales, que se basan en una fuerte planificación durante todo el
desarrollo, y las metodologías ágiles, en las que el desarrollo de software es incremental,
cooperativo, sencillo y adaptado.
Estas metodologías imponen una disciplina de trabajo con el fin de conseguir un software
más eficiente, para ello se hace énfasis en la planeación total del trabajo, tras lo que se
inicia el ciclo de desarrollo. Las metodologías tradicionales se centran especialmente en el
control del proceso, mediante una rigurosa definición de roles, actividades, artefactos,
herramientas y notaciones para el modelado y documentación detallada. Otra de las
características importantes dentro de este enfoque son los altos costos al implementar un
cambio y la falta de flexibilidad para entornos volátiles, pues no se adaptan adecuadamente
a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno donde
los requisitos no pueden predecirse o pueden variar.
Ventajas:
Se evalúa cada fase, lo que permite realizar cambios de objetivos
Funciona bien en proyectos de innovación
Es sencilla ya que sigue los pasos intuitivos necesarios para desarrollar el software
Hace seguimiento detallado en cada una de las fases
Desventajas:
La evaluación de riesgos es compleja
Hay una excesiva flexibilidad para algunos proyectos
El cliente debe ser capaz de describir y entender a un gran nivel de detalle para poder
acordar un alcance del proyecto con él
El RUP está dirigido por casos de uso, centrado en la arquitectura, es iterativo e incremental.
Se basa en un conjunto de módulos o elementos de contenido que describen lo que se
producirá, las habilidades requeridas y la explicación paso a paso de cómo se consiguen
los objetivos de desarrollo. Los módulos principales o elementos de contenido son:
El RUP determina cuatro fases para el ciclo de vida, que permiten presentar el proceso en
un alto nivel de forma similar a como sería presentado un proyecto basado en un estilo en
cascada, aunque en esencia la clave del proceso recae en las iteraciones de desarrollo
dentro de las fases. Además, cada fase tiene un objetivo clave y un hito al final que expresa
el logro de ese objetivo.
Las cuatro fases en las que divide el ciclo de vida del proyecto son:
Figura 52. Fases del ciclo de vida RUP. Fuente: Corporación Colombia Digital.
Fase de inicio: se busca ayudar al equipo de proyecto a decidir cuáles son los verdaderos
objetivos del proyecto. Las iteraciones exploran diferentes soluciones y arquitecturas
posibles. Es la fase más corta del proyecto, en la que se describe el producto final, se
presenta el análisis del negocio y se identifican y priorizan los riesgos más importantes. La
fase finaliza con el hito de objetivos del ciclo de vida, el cual se alcanza cuando el equipo
de proyectos y los interesados llegan a un acuerdo sobre:
Cuál es el conjunto de necesidades del negocio y qué grupo de funciones las satisfacen
La planificación preliminar de iteraciones
La arquitectura preliminar
Fase de elaboración: se analizan con mayor detalle las necesidades del negocio, se
definen sus principios arquitectónicos, se captura la mayoría de los requisitos del sistema y
se identifican los riesgos. La fase de elaboración finaliza con el hito de la arquitectura del
ciclo de vida, que se alcanza cuando el equipo de desarrollo y los interesados llegan a un
acuerdo sobre:
Los casos de uso que describen la funcionalidad del sistema
La línea base de la arquitectura
La mitigación de los mayores riesgos
El plan del proyecto
Fase de construcción: es la fase más larga del proyecto, en ella se crea el diseño de la
aplicación y el código fuente. Esta fase finaliza con el hito de capacidad operativa inicial, el
cual se alcanza cuando el equipo de desarrollo y los interesados llegan a un acuerdo sobre:
La estabilidad del producto para ser usado
El producto provee alguna funcionalidad de valor
El inicio de la transición para que todas las partes estén listas
En los años noventa surgieron metodologías ligeras de desarrollo de software, luego las
llamaron ágiles. Están dirigidas a reducir la probabilidad de fracaso de los proyectos por
subestimación de costos, tiempos y funcionalidades. Se gestaron como alternativa a las
metodologías tradicionales, específicamente para reducir la carga burocrática en proyectos
de pequeña y mediana escala. A diferencia de las tradicionales, las metodologías ágiles son
adaptativas no predictivas y están orientadas a las personas, no a los procesos. Por su
flexibilidad, pueden ser modificadas para que se ajusten a la realidad de cada equipo y
proyecto.
Los proyectos ágiles se subdividen en proyectos más pequeños mediante una lista
ordenada de características. Cada proyecto es tratado de manera independiente y
desarrolla un subconjunto de características durante un periodo corto, de entre dos y seis
semanas. La comunicación con el cliente es constante, al punto de requerir un representante
de él durante el desarrollo. Este tipo de proyectos es altamente colaborativo y se adapta
mejor a los cambios, de hecho, el cambio en los requerimientos es una característica
esperada y deseada, al igual que las entregas constantes al cliente y su retroalimentación.
Tanto el producto como el proceso son mejorados frecuentemente.
Mejor Práctica: hoy por hoy, más del 90% de las iniciativas son desplegadas bajo Scrum.
Recomendamos utilizar metodologías ágiles porque, con la experiencia, son más
productivas, menos riesgosas y más económicas que otras aproximaciones “tradicionales”.
Como lo dice Jeff Sutherland, uno de los padres del movimiento ágil, “Scrum busca hacer
el doble del trabajo en la mitad del tiempo”.
Las metodologías que buscan ser predictivas como las RUP o ‘en cascada’, las
metodologías ágiles (Scrum o XP) no pretenden conceptualizar ni diseñar la totalidad de un
software, previo a comenzar su construcción o codificación. Por el contrario, reconocen que
un software es un emprendimiento flexible, que durante su ciclo de construcción sufrirá
cambios, modificaciones y mejoras. En consecuencia, estas metodologías generan un ciclo
de vida que permite incorporar nuevas ideas en cualquier momento, sin sacrificar la
productividad o el tiempo de entrega del proyecto.
En esta misma línea, las aproximaciones ágiles apuntan a desarrollar software de manera
iterativa e incremental, entregándole al cliente un producto ejecutable cada mes, el cual
puede ser explorado y mejorado por el cliente. Como cada iteración (o Sprint) incorpora
nuevos conocimientos, despliega un proceso de constante aprendizaje y refinamiento del
producto final.
Para que el desarrollo ágil funcione, es necesario acompañar la etapa de codificación con
prácticas de calidad (QA) tales como el Test Driven Development o TDD (desarrollo
La metodología ágil más utilizada es Scrum: Es un marco de trabajo diseñado para lograr
la colaboración eficaz de equipos en proyectos, emplea un conjunto de reglas y artefactos,
y define roles que generan la estructura necesaria para su correcto funcionamiento.
La Scrum utiliza un enfoque incremental que tiene como fundamento la teoría de control
empírico de procesos. Esta teoría se basa en la transparencia, inspección y adaptación; la
transparencia que garantiza la visibilidad en el proceso de las cosas que pueden afectar el
resultado; la inspección que ayuda a detectar variaciones indeseables en el proceso; y la
adaptación que realiza los ajustes pertinentes para minimizar el impacto de las mismas
La Scrum se focaliza en priorizar el trabajo en función del valor que tenga para el negocio,
lo que maximiza la utilidad de lo que se construye y el retorno de la inversión. Está diseñada
especialmente para adaptarse a los cambios en los requerimientos, por ejemplo en un
mercado de alta competitividad. Las necesidades y prioridades se revisan y ajustan durante
el proyecto en intervalos muy cortos y regulares, en tiempo real, según las necesidades del
cliente. Se busca entregar software que realmente resuelva las necesidades y aumenten la
satisfacción del cliente.
En Scrum, el equipo se focaliza en una única cosa: construir software de calidad. Por otro
lado, la gestión se centra en definir cuáles son las características que debe tener el producto
(qué construir, qué no y en qué orden) y en remover cualquier obstáculo que pueda
entorpecer la tarea del equipo de desarrollo. Se busca que los equipos sean lo más efectivos
y productivos posible.
Scrum tiene un conjunto de reglas muy pequeño y simple, está basado en los principios de
inspección continua, adaptación, autogestión e innovación. Como resultado, el cliente se
entusiasma y se compromete con el proyecto, dado que ve crecer el producto iteración a
iteración y encuentra las herramientas para alinear el desarrollo con los objetivos de negocio
de su empresa.
Juego de póker - Planning poker o poker game: permite calcular estimaciones basadas
en el consenso de todo el equipo de trabajo. Principalmente es empleada para estimar el
esfuerzo o el tamaño relativo de las tareas de desarrollo de software, mediante una variación
del método Delphi. Al ser estimaciones colaborativas y consensuales entre todo el equipo
de trabajo (tanto el equipo técnico como de negocios), los resultados obtenidos usualmente
comprometen a todo los participantes y, según estudios realizados por académicos, son
incluso menos optimistas y más precisas que las estimaciones obtenidas a través del uso
de cálculos individuales de las mismas tareas. Es una técnica muy utilizada en proyectos
de desarrollo de software bajo una metodología ágil.
Puntos de casos de uso: cuando no se dispone de los casos de uso de manera detallada,
algunos practicantes utilizan la técnica de puntos de caso de uso. Este método asigna
niveles de esfuerzo a los casos de uso no detallados, dependiendo de la complejidad, y da
una idea del tamaño, lo que lleva a dimensionar el esfuerzo y costo. Es supremamente
impreciso y solo puede ser utilizado por una compañía que lo haya calibrado dentro de sus
grupos desarrollo.
Con los métodos de estimación aquí descritos se puede llegar a comprender el esfuerzo
requerido para las actividades asociadas directamente con opciones o funcionalidades del
sistema, es decir, desarrollo, revisiones, pruebas, y retrabajo. Se pasa a los puntos de
función o puntos de historia de usuario y de allí se calcula el esfuerzo, basándose en las
Ahora, para calcular el esfuerzo de las labores como la administración del proyecto, la
administración de la configuración, el entrenamiento, labores que no están asociadas con
una funcionalidad sino con el proyecto o sprint general, es necesario contar con líneas base
de distribución de esfuerzos, por etapas de proyectos similares.
También es muy usada para conocer, en ciertas plataformas, cuántas líneas de código
producirán un esfuerzo determinado o cuántas horas requieren unas líneas de código
conocidas.
4 REQUERIMIENTOS
Hay una retroalimentación poco adecuada por parte del usuario final sobre los requisitos
funcionales del desarrollo.
Se hacen cambios en los requerimientos levantados inicialmente, causados por
variaciones dentro de los objetivos o prioridades de las entidades. Este tipo de
modificaciones se producen por rotación en el equipo de liderazgo de la entidad o por
situaciones en las que el contexto de la entidad cambia.
Alteraciones en los requerimientos ocasionados por las largas esperas en el proceso de
contratación del diseño y la arquitectura. Estos cambios se producen por
desactualización en el tiempo de los requerimientos inicialmente levantados.
Levantamiento incompleto de los requerimientos debido a la falta de experiencia en el
tema de la persona responsable de esta actividad.
Baja comprensión de los objetivos de la entidad y de cómo el proyecto de desarrollo de
software contribuye a alcanzar dichos objetivos.
Dificultad en la comunicación durante el levantamiento de los requerimientos. Los
problemas más frecuentes de este tipo son: recolección informal de la información,
funcionalidades implícitas que no son detalladas, supuestos no discutidos en el proceso,
documentación pobre y un proceso de gestión de cambios informal.
Dificultad para plantear los lineamientos básicos para realizar un estudio de viabilidad de
los requerimientos identificados.
Problemas para plantear los lineamientos básicos para detallar requerimientos que estén
alineados con la necesidad del negocio.
Oportunidades de mejora en la interacción entre las áreas de TI y las áreas funcionales,
con el fin de hacer un adecuado levantamiento de requerimientos.
Problemas al plantear los lineamientos básicos para evaluar la factibilidad y priorizar los
requerimientos identificados.
Necesidad de contar con personal experto en levantamiento y definición de
requerimientos.
Los requerimientos de producto deben ser clasificados según el tipo de información como
se muestra en la siguiente tabla.
Limitación Cualquier limitación en las opciones disponibles para el desarrollo del software.
Descripción de la conexión entre el software diseñado y cualquier otro sistema con el
Requisito externo de interface
que deba interactuar.
Uno o varios elementos del sistema que generan valor para el usuario y que son
Característica
descritos a partir de requisitos funcionales.
Descripción del comportamiento del sistema bajo condiciones específicas de
Requisito funcional
operación.
Requisito no funcional Descripción de una característica o propiedad con la que debe contar el sistema.
Descripción de las características de servicio o desempeño del software. Incluye
Atributo de calidad además la descripción de las características deseadas en términos de seguridad,
disponibilidad y portabilidad.
Descripción de un requisito de alto nivel de un producto que está conformado por
Requisito del sistema
varios subsistemas.
Descripción de una meta o tarea específica que el usuario debe estar en capacidad
Requisito del usuario de realizar con el desarrollo. Detallan lo que el usuario podrá hacer con el sistema.
Tabla 19. Clasificación de los requerimientos de producto según el tipo de información. Fuente:
Wiegers y Beatty, 2013.
Figura 54. Relación entre los diferentes tipos de requisitos y entregables asociados. Fuente:
Wiegers y Beatty, 2013.
Es esencial tener en cuenta que los requisitos de un proyecto de desarrollo de software son
diferentes a los requisitos de producto descritos anteriormente. Los requisitos de proyecto
se describen en la tabla que se presenta a continuación:
Tabla 20. Clasificación de los requerimientos del proyecto. Fuente: Wiegers y Beatty, 2013.
Figura 55. Subfases y pasos en la fase de requerimientos. Fuente: Wiegers y Beatty, 2013.
conoce como línea base de requerimientos para una versión o iteración del producto, tal
y como muestra la siguiente figura:
Figura 56. Descripción del proceso en la fase de requerimientos. Fuente: Wiegers y Beatty,
2013.
Asimismo, la subfase de desarrollo contiene varios elementos que se deben ejecutar en los
cuatro pasos mencionados anteriormente. La siguiente tabla muestra el detalle de cada uno
de estos elementos:
Por otro lado la subfase de gestión de requerimientos contiene varios elementos que se
deben ejecutar en los pasos mencionados anteriormente. La tabla siguiente muestra el
detalle de cada uno de estos elementos:
El objetivo principal de este paso es conocer la voz del usuario, eso se logra ejecutando las
siguientes tres actividades:
Identificar las diferentes clases de usuario del producto que será desarrollado.
Seleccionar y trabajar con un grupo que represente cada clase de usuario identificado y
a los interesados que sean relevantes durante la fase de requerimientos.
Acordar de antemano quién o quiénes serán las personas a cargo de las decisiones en
las fases de desarrollo y gestión de los requerimientos.
Para identificar y clasificar los usuarios, se debe tener en cuenta criterios como:
Mejor práctica: Se sugiere no ignorar las necesidades de los usuarios indirectos, ya que
en la mayoría de casos este grupo tiene perfiles menos operativos y, por lo tanto, mayor
poder dentro de la entidad.
Mejor practica: Se sugiere tener en cuenta que es posible identificar usuarios que no son
humanos sino sistemas que dependen del producto desarrollado. Los requerimientos de
estos usuarios son igualmente importantes, por lo que este tipo de usuarios debe
identificarse y clasificarse. Por otro lado, es posible que bajo esta clasificación se detecten
usuarios no deseados, con los que se deben establecer los requerimientos que el desarrollo
no debe atender.
Mejor practica: Para identificar los usuarios, se sugiere agendar una reunión con el
patrocinador del proyecto, con el fin de desarrollar una lluvia de ideas para definir tantas
clases de usuarios como se pueda. Posteriormente, los perfiles identificados deben ser
condesados aproximadamente en 15 clases de usuarios, que deben ser agrupados teniendo
en cuenta necesidades comunes.
Tabla 23. Matriz de identificación y clasificación de usuarios. Fuente: Corporación Colombia Digital –
CCD.
Para resolver este problema se sugiere establecer puntos de contacto con los interesados
en los momentos clave del proyecto, mediante herramientas como entrevistas, reuniones
de revisión de requerimientos, presentaciones de los avances, presentaciones de
prototipos, etc.
Figura 58. Relación entre los puntos de contacto con los interesados y la brecha de
expectativas. Fuente: Sharp, Galal & Finkelstein, 1999.
Las siguientes son las cuatro actividades claves que se sugiere incluir para cubrir el proceso
de levantamiento de requisitos:
Identificar los posibles tipos de usuarios del producto y el universo de interesados que
están de alguna forma relacionados con el proyecto.
Entender los objetivos y las tareas de los usuarios y como estos se encuentran alineados
con la estrategia de la entidad.
Mejor práctica: Se sugiere tener muy presente el alcance y visión de proyectos durante
este paso, con el fin de validar la pertinencia de cada requerimiento encontrado.
Mejor práctica: Se debe recordar que otros sistemas pueden ser usuarios del desarrollo,
por lo tanto se deben listar los eventos externos que el sistema puede experimentar, que
pueden ser de tres tipos: señales de control o datos enviados por otros sistemas, eventos
temporales que se activan con determinada periodicidad y eventos de negocio que se
producen cuando ocurren situaciones que afectan de manera directa o indirecta la operación
normal del negocio.
Genere empatía: para iniciar la entrevista preséntese, revise la agenda, recuerde los
objetivos de la sesión y atienda las preguntas iniciales o preocupaciones de los
participantes.
No salga del alcance del proyecto: mantenga el foco en el proceso de levantamiento,
dentro de los lineamientos del proyecto. En caso que los cometarios se dispersen, tome
el control de la conversación, agradezca los aportes y enfoque el grupo nuevamente
recordando el alcance y el objetivo del proyecto y la entrevista.
Prepárese con anticipación: escriba las preguntas de la entrevista y los modelos que se
utilizarán durante la sesión, esto le permitirá guiar la conversación y crear un punto de
partida sobre el cual pueda comenzar a construir.
Participe: el rol de quien hace el levantamiento de los requerimientos no se limita a
transcribir lo que escucha. Sugiera ideas y haga observaciones desde el punto de vista
del desarrollador. Si observa opciones de mejora, valide las alternativas con el grupo
entrevistado.
Escuche activamente: el lenguaje corporal revela el interés que usted tiene sobre el tema
que está siendo discutido. Es importante inclinar levemente el cuerpo hacia el
interlocutor, dar retroalimentación sobre el tema discutido, parafrasear para garantizar
que se ha comprendido una idea y hacer preguntas adicionales cuando hay dudas
(Wiegers & Beatty, 2013).
Mejor practica: Las entrevistas son una herramienta útil para levantar requerimientos, en
particular cuando la persona entrevistada dispone de poco tiempo. Las entrevistas son
particularmente útiles como un paso de preparación para los talleres.
Talleres: es una reunión de un grupo multidisciplinario que cuenta con perfiles escogidos
cuidadosamente para lograr colaboración en la identificación y refinamiento de los
requerimientos. Por lo general el grupo multidisciplinario está compuesto por usuarios,
gerentes de negocio, desarrolladores e integrantes del equipo de pruebas. Un taller no debe
contar con más de cinco personas para lograr que sea una actividad realmente efectiva.
El equipo definido para trabajar el taller debe contar con un líder que sea responsable de
planear el taller, seleccionar los participantes y moderar el desarrollo para cumplir con el
propósito final. Para evitar que esta actividad se convierta en una pérdida de tiempo y
esfuerzo, contemple las siguientes pautas:
Observación: con frecuencia los usuarios en las entrevistas, talleres y grupos de enfoque
olvidan mencionar características relevantes o dan información incorrecta. Con el fin de
mitigar este riesgo es muy importante destinar tiempo para observar en vivo la ejecución de
las tareas. Desafortunadamente, esta actividad consume bastante tiempo y, en el caso de
la metodología ágil, esta herramienta debe tener un uso muy limitado. El proceso de
observación puede ser silencioso o interactivo, depende de la disponibilidad de tiempo del
usuario.
Cuestionarios: son una herramienta que permite indagar sobre la necesidad de un grupo
grande de personas. Una de las principales ventajas de los cuestionarios es que pueden
ser aplicados fácilmente en sitios remotos a los cuales el equipo de levantamiento no tiene
fácil acceso.
Mejor práctica: se sugiere utilizar los cuestionarios como una herramienta de apoyo para
enfocar apropiadamente los esfuerzos de levantamiento de información.
Mejor práctica: en los casos en que sea posible, reutilice requerimientos existentes, esto
permitirá emplear con mayor eficiencia el tiempo y profundizar en temas de análisis y
validación de requerimientos.
Tenga en cuenta que durante el proceso, se pude obtener una descripción detallada de la
tarea que el usuario final desea realizar, pero no de todos los requisitos funcionales que el
desarrollador debe implementar para cumplir con esa tarea.
Para mejorar la probabilidad de éxito del levantamiento, se puede usar como guía la
siguiente tabla que ilustra la clasificación de los interesados relevantes. Es importante anotar
que este modelo es solo una guía que puede cambiar de acuerdo con las condiciones
particulares de cada proyecto, por lo cual su implementación debe ser evaluada por el lector:
Tabla 24. Interesados relevantes en el levantamiento de requisitos. Fuente: Wiegers & Beatty, 2013.
Las actividades que se ejecutan cada vez que se utiliza una de las herramientas de
levantamiento se resumen en la siguiente figura:
Documentar y
Decidir el Desarrollar la
Preparar los compartir los
alcance de la Definir el plan Preparar sesión de
recursos hallazgos y
iteración o de trabajo herramientas levantamiento
necesarios asuntos
versión
pendientes
Mejor práctica: no olvide dar seguimiento a los puntos que quedaron abiertos: información
adicional requerida, inconsistencias, dependencias, etc. Implemente algún instrumento que
le permita organizar y seguir cada punto según su criticidad.
Dependiendo del tipo de sistema que se desea desarrollar, se sugiere el uso las
herramientas planteadas en este documento, tal y como se observa en la siguiente tabla:
Análisis de la interface de
Análisis de la interface de
Análisis de documentación
Grupos de enfoque
Cuestionarios
Observación
Entrevistas
Talleres
sistema
usuario
Software de uso masivo X X X
Software de uso interno en la entidad X X X X X X
Software que sustituye un sistema existente X X X X X X
Software que amplía el alcance de un sistema
X X X X X
existente
Nueva aplicación X X X
Personalización de un software X X X X X
Sistemas embebidos X X X X
Interesados diseminados geográficamente X X X
Tabla 25. Herramientas de levantamiento sugeridas según el tipo de desarrollo. Fuente: Wiegers &
Beatty, 2013.
Mejor práctica: no olvide que existen requerimientos que los usuarios definen como obvios
o implícitos, que pueden estar quedando por fuera de la identificación. Para mitigar este
riesgo siempre formule preguntas como: ¿cuáles son los supuestos de este escenario? o
descomponga requerimientos complejos en requerimientos simples para profundizar en su
significado.
Mejor práctica: asegurar la calidad de los requisitos es una tarea casi imprescindible para
culminar un proyecto de desarrollo de software con éxito. Existen varias técnicas
ampliamente aceptadas y documentadas para mejorar la calidad de los requisitos, como
pueden ser revisiones formales, inspecciones, listas de verificación, ontologías, auditorias,
matrices de rastreabilidad, métricas de calidad, etc.
generar mayor valor para el cliente agregando características que no han sido solicitadas.
Ambas conductas generan riesgos para el proyecto de desarrollo de software porque
comprometen su éxito.
Mejor práctica: para requerimientos muy complejos o de muy alto nivel, se sugiere
comenzar el proceso de análisis descomponiendo el requerimiento de tal forma que se logre
un nivel de detalle suficiente para facilitar su comprensión. Adicionalmente, se puede
representar el requerimiento de forma gráfica para dar mayor claridad o para encontrar
elementos importantes que inicialmente no hayan sido tenidos en cuenta.
El proceso de análisis comienza modelando el ambiente bajo el cual debe operar el sistema.
Esta primera actividad se puede lograr utilizando alguna de las siguientes herramientas:
Diagrama de contexto: permite definir los límites del sistema, las interfaces con las que debe
interactuar, las interconexiones y dependencias con otros sistemas, el tipo de datos que se
intercambian, los procesos de control y el flujo de información del contexto. La siguiente
gráfica muestra un ejemplo muy básico de un diagrama de contexto:
Figura 60. Ejemplo básico de un diagrama de contexto. Fuente: Wiegers & Beatty, 2013.
Mapa de ecosistema: Este es otro tipo de diagrama sobre el cual se puede apoyar el análisis.
El mapa del ecosistema ilustra todos los sistemas que interactúan con el sistema en
desarrollo, la naturaleza de dichas interacciones y el alcance del proyecto de desarrollo
frente a los otros sistemas. La siguiente gráfica muestra un ejemplo básico de un mapa de
ecosistema:
Figura 61. Ejemplo básico de un mapa de ecosistema. Fuente: Wiegers & Beatty, 2013.
Diagrama de causa y efecto: Esta herramienta profundiza sobre un evento o tarea a través
de la identificación lógica y organizada de los prerrequisitos que permiten que ese evento o
tarea se lleve a cabo. Asimismo, este tipo diagrama organiza las causas de forma jerárquica
y las agrupa de acuerdo con su naturaleza. El siguiente es un esquema genérico de un
diagrama de causa y efecto (Heizer & Render, 2009):
Figura 62. Ejemplo básico diagrama causa y efecto. Fuente: Wiegers & Beatty, 2013.
En el diagrama anterior es importante tener en cuenta que las ramas o agrupaciones sobre
cada requisito que se muestran en la figura anterior son solo un ejemplo. En la realidad las
agrupaciones deben ser definidas de acuerdo con las características del proyecto y de los
requerimientos levantados.
Listas de eventos: contienen los eventos externos que pueden disparar determinada
conducta en el sistema. Esta herramienta permite visualizar todos los eventos posibles y
validar si hace falta alguno. Asimismo, facilita establecer si se han identificado los
requerimientos necesarios para cada tipo de evento (Wiegers & Beatty, 2013).
Una vez se ha modelado el ambiente en el cual debe operar el sistema, se puede proceder
a crear una interface o prototipo para los casos en los que no se tiene seguridad sobre la
Es importante resaltar que los prototipos no solo se usan para aclarar requerimientos. Es
posible observar en proyectos de desarrollo de software que las fases de definición de
arquitectura, diseño y codificación también usan prototipos.
De acuerdo con esta información, el analista de negocio puede plantear un primer borrador
con los requerimientos priorizados. Después debe preguntar sobre cada requerimiento, para
evaluar su primer modelo de priorización:
¿Existe otra forma de satisfacer la necesidad que este requerimiento plantea?
¿Cuáles son las consecuencias de omitir o relegar este requerimiento?
¿Cuál sería el impacto en el objetivo de negocio del proyecto de demorar varios meses
la implementación de este requerimiento?
¿Por qué el cliente estaría molesto si este requerimiento se desarrolla más tarde?
¿Es este requerimiento tan importante como los que quedaron calificados con este
mismo nivel de criticidad?
Totales
relativos
Urgente
T1
Evaluación en una escala de 1 a 9 por parte de los Beneficio P1=2
clientes del beneficio que ofrece el requerimiento
No tan urgente
relativo
continuación:
T2
Evaluación en una escala de 1 a 9 por parte de los Penalidad P2=1
clientes de impacto que tiene no implementar el relativa
requerimiento
T3
Se calcula con la siguiente formula: 𝑽𝒂𝒍𝒐𝒓 𝒕𝒐𝒕 = Valor total
(𝑷𝟏 × 𝒃𝒆𝒏𝒆𝒇𝒊𝒄𝒊𝒐 𝒓𝒆𝒍𝒂𝒊𝒗𝒐) + ( 𝑷𝟐 ×
𝒑𝒆𝒏𝒂𝒍𝒊𝒅𝒂𝒅 𝒓𝒆𝒍𝒂𝒕𝒊𝒗𝒂)
100%
% 𝒗𝒂𝒍𝒐𝒓 = 𝒗𝒂𝒍𝒐𝒓 𝒕𝒐𝒕𝒂𝒍⁄𝑻𝟑
Prioridad alta
Prioridad media
T4
Evaluación en una escala de 1 a 9 por parte de los Costo relativo P3=1
desarrolladores del grado de dificultad, tiempo y
Importante
100%
% 𝒗𝒂𝒍𝒐𝒓 = 𝒄𝒐𝒔𝒕𝒐 𝒓𝒆𝒍𝒂𝒕𝒊𝒗𝒐⁄𝑻𝟒
T5
Evaluación en una escala de 1 a 9 por parte de los Riesgo relativo P4=0.5
desarrolladores de los riesgos técnicos derivados
Estrategia de Gobierno en línea
el primer intento
Ministerio TIC en la implementación de las iniciativas:
100%
𝑹𝒊𝒆𝒔𝒈𝒐 𝒓𝒆𝒍𝒂𝒕𝒊𝒗𝒐⁄
% 𝒗𝒂𝒍𝒐𝒓 = 𝑻𝟓
% 𝒅𝒆 𝒗𝒂𝒍𝒐𝒓
𝑷𝒓𝒊𝒐𝒓𝒊𝒅𝒂𝒅 =
acuerdo fácilmente consiste en utilizar una matriz de evaluación como la que se muestra a
% 𝒅𝒆 𝒄𝒐𝒔𝒕𝒐+% 𝒅𝒆 𝒓𝒊𝒆𝒔𝒈𝒐
Contrato Interadministrativo N° 000376 de 2015
Servicios de acompañamiento especializado al
Ministerio TIC en la implementación de las
iniciativas: Fortalecimiento de la Gestión de TI en el
estado y la Estrategia de Gobierno en línea
Tabla 27. Matriz de priorización de requerimientos de acuerdo con pesos. Fuente: Wiegers & Beatty,
2013.
Tipos de datos
Valores permitidos
Criterios de validación de datos
Complementos al glosario del proyecto
Acrónimos
Términos técnicos o de negocio
Abreviaciones
Durante el proceso de levantamiento, los requerimientos han sido agrupados según criterios
de negocio, funcionalidad o de usuarios. Adicionalmente, al utilizar las herramientas de
análisis se han empleado otros criterios de proyecto o de la naturaleza misma de los
requerimientos para agruparlos. Como último paso del análisis, se sugiere hacer un proceso
final de clasificación como el que se muestra en la tabla a continuación:
Descomposición y derivación
Los requerimientos pueden se representados de varias formas, las más comunes son las
siguientes tres:
valor agregado. Los casos de uso se escriben iniciando con un verbo y luego con un objeto,
por ejemplo: revisar el estado de una orden.
En contraste, las historias de usuario describen las características deseadas de forma breve
y concreta, desde la perspectiva del usuario. A continuación se muestra el formato que suele
tener una historia de usuario:
La diferencia entre los dos tipos de representación es muy sutil inicialmente, pero se
evidencia en los pasos que se deben seguir bajo cada modelo. La siguiente figura muestra
las diferencias para cada tipo de representación:
Figura 63. Pasos a seguir según el modelo de representación seleccionado. Fuente: Wiegers &
Beatty, 2013.
Modelos visuales: como los que se explicaron en la sección de análisis, pero ajustados
con los hallazgos hechos durante el análisis de los requerimientos.
Definición formal: a través del uso de lenguaje matemático preciso.
Sin importar cuál opción de representación se seleccione, se deben tener en cuenta los
siguientes puntos para garantizar que en efecto se cuenta con requerimientos que pueden
ser comprendidos por cualquier tipo de audiencia:
Utilizar un formato preestablecido para organizar toda la información que sea necesaria.
1.1 Propósito: Descripción de las audiencias a las que está dirigido el documento y qué sistema, iteración o versión cubren los requerimientos
descritos
1.2 Convenciones del documento: Explicación de la metodología de etiquetado y las convenciones usadas en el texto para identificar cada
elemento
1.3 Alcance del proyecto: Resumen breve de la descripción del sistema, iteración o versión y su objetivo
2 Descripción general: Descripción del producto, ambiente en que será usado, posibles usuarios, limitaciones, supuestos y dependencias
2.1 Perspectiva del producto: Descripción del contexto del producto y su origen. Especifica si es un desarrollo nuevo, una versión actualizada,
una iteración, etc.
2.2 Clases de usuario y características: Resumen de los hallazgos hechos durante la identificación y clasificación de usuarios
2.3 Ambiente de operación: Descripción del ambiente en que va a operar el sistema incluyendo: la plataforma de hardware, sistemas operativos,
ubicación geográfica, servidores, bases de datos, sitios de internet, etc.
2.4 Limitaciones de diseño e implementación: descripción de las condiciones que limitan las opciones que pueden usar los desarrolladores en
el proyecto
2.5 Supuestos y dependencias: Descripción de cualquier condición que se supone como cierta y de los componentes que están fuera de control
y que generan dependencias para el desarrollo
3 Características del sistema: Descripción de la forma en que serán presentados los requerimientos funcionales: por sistema, área funcional, proceso,
caso de uso, clase de usuario, etc.
3.1 Característica del sistema X: Especificación del sistema, área funcional, proceso, caso de uso, etc. que será utilizado
3.1.1 Descripción: Descripción del sistema, el área funcional, proceso, caso de uso, etc.
3.1.2 Requerimientos funcionales: Descripción de los requisitos funcionales asociados a la característica identificada previamente
Nota: La numeración en esa sección debe estar alineada con la metodología seleccionada.
4 Requerimientos de datos: Descripción de los datos que serán consumidos como entradas, los datos que serán procesados por el sistema y los datos
que conformarán las salidas
4.1 Modelo de datos lógico: Descripción gráfica de objetos de datos y su relación con los sistemas
4.2 Diccionario de dato: Definición de la composición de la estructura de datos y su significado, incluye además los tipos de datos, longitud de los
datos, formato de los datos y valores permitidos
4.3 Reportes: Si el sistema, versión o iteración va a generar reportes en esta sección, se deben listar dichos reportes junto con las características
que deben tener
4.4 Adquisición de datos, integridad, retención y disposición: En los casos en que sea relevante, se debe describir cómo se adquieren y
mantienen los datos. Adicionalmente incorpore a esta sección cualquier requisito de integridad, protección de la información, almacenamiento,
respaldo y disposición.
5 Requisitos de interface externos: Descripción de los procesos de comunicación entre el sistema y otros elementos de hardware y software.
5.1 Interface de usuario: Descripción de las características que cada usuario requiere. Tenga en cuenta elementos como: tipo de fuente, tamaño
de la pantalla, botones, imágenes, gama de colores, secuencias, derechos de autor, hipervínculos de navegación, ventanas emergentes, tipo
de lenguaje y requisitos de personas en situación de discapacidad.
5.2 Interface de software: Descripción de las conexiones entre el sistema, versión o iteración y otros componentes de software. Los otros
componentes de software pueden ser bases de datos, sistemas operativos, herramientas, librerías, sitios web, etc.
5.3 Interface de hardware: Descripción de las conexiones entre el sistema, versión o iteración y otros componentes de hardware. La descripción
debe incluir tipos de dispositivos, interacciones de información y control, protocolos de comunicación, entradas, salidas, etc.
5.4 Interface de comunicaciones: Describe los requisitos para cualquier función de comunicación que será usada por el sistema, versión o
iteración. La descripción debe incluir cualquier aspecto de seguridad, encriptación, sincronización, etc. que se deba tener en cuenta.
6 Atributos de calidad: Esta sección contiene los requisitos no funcionales o limitaciones del sistema, versión o iteración. Los atributos definidos en
esta sección deben ser específicos, cuantificables y verificables.
6.1 Usabilidad: Descripción de las condiciones que se requieren en términos de facilidad de uso, facilidad de aprendizaje, prevención de errores,
eficiencia en las interacciones y accesibilidad.
6.2 Desempeño: Descripción de las condiciones operativas de desempeño bajo los escenarios probables.
6.3 Seguridad: Descripción de las condiciones de seguridad, privacidad, prevención de perdida de datos o mitigación de daño que se deban tener
en cuenta.
7 Otros requisitos: Descripción de cualquier otro requisito que considere relevante para el sistema, versión o iteración.
Tabla 29. Formato modelo para la documentación de requerimientos. Fuente: Wiegers & Beatty, 2013.
Utilizar nombres y definir estilos para las secciones y subsecciones de tal forma que la
estructura sea consistente.
Utilizar herramientas para resaltar como negrilla, itálicas, subrayado, colores, etc., de
forma consistente en toda la documentación.
Utilizar tablas de contenido para que sea fácil ubicar la información necesaria.
En lo posible, utilizar hipervínculos para que el lector pueda acceder a la información
relevante rápidamente.
Usar representaciones gráficas de la información para facilitar el proceso de
comprensión.
Etiquetado de los requerimientos: cada requerimiento debe contar con una referencia de
identificación única que facilite el proceso de cambio, seguimiento a la historia de
modificación y trazabilidad.
Tabla 30. Numeración de requerimientos secuencial. Fuente: Corporación Colmbia Digital – CCD.
se concluye que el requisito funcional RF-003.2 es un hijo del requerimiento funcional RF-
003 y que probablemente contiene un nivel más profundo o detallado.
Jerarquía de texto para etiquetas: esta técnica tiene en cuenta la clasificación temática
que pueden tener los requerimientos, para que sea más fácil ubicarlo. Si por ejemplo se
tiene un requerimiento que hace referencia a la información específica que debe tener un
formato en un proceso determinado, el nombre de dicho requerimiento podría estar dado de
la siguiente manera: Nombre_del_proceso.Nombre_del_formato.Campos_clave. Este
esquema también permite anidar temas, de tal forma que los nombres reflejen la jerarquía,
y permite definir nombres genéricos que agrupen o filtren por temas.
En el último paso del proceso de desarrollo de requerimientos se debe validar que se cuenta
con la información correcta para que los desarrolladores construyan una solución que
cumpla los objetivos de la entidad. Esto se logra mediante la ejecución de las siguientes dos
actividades claves:
Revisar los documentos para corregir cualquier problema.
Acuerdo Descripción
Aceptación de los requerimientos por La entidad debe acordar que los requerimientos que se construyeron
parte de la entidad en conjunto reflejan sus necesidades en ese momento de tiempo,
versión o iteración.
Aceptación de los requerimientos por El grupo o empresa desarrolladora debe aceptar que los
parte del desarrollador requerimientos que se construyeron en conjunto fueron comprendidos
en su totalidad y son realizables.
Aceptación de la viabilidad de las pruebas El grupo o empresa a cargo de las pruebas debe aceptar que se
por parte de equipo de pruebas pueden efectuar pruebas sobre los requerimientos para verificar su
cumplimiento.
Aceptación de los requerimientos por El equipo de liderazgo acuerda que los requerimientos que se
parte del equipo de liderazgo construyeron en conjunto reflejan la necesidad de negocio, cumplen
los objetivos planteados y se alinean con la estrategia de la entidad.
Tabla 31. Acuerdos mínimos para establecer la línea base. Fuente: Corporación Colombia Digital –
CCD.
Mejor práctica: el texto sugerido para incluir dentro de los acuerdos mínimos de la línea
base debe siempre tener un lenguaje positivo y constructivo que contemple la naturaleza
cambiante de los requerimientos. Se sugiere incluir en el documento por firmar, un texto
como el del siguiente ejemplo:
En los casos en que no es posible llegar a un acuerdo sobre la línea base, se sugiere
proceder con precaución, incorporar esta situación dentro de los riesgos identificados y
documentar el impacto que puede tener el hecho de contar con requerimientos incorrectos
o incompletos.
Modelos de análisis
La línea base en proyectos que usan metodología ágil se debe gestionar de forma diferente
y los requerimientos se documentan en forma de historias de usuario. La línea base se
define seleccionando las historias de usuario que serán usadas en dicha iteración.
Gestión de requerimientos
Control de versiones Control de cambios Seguimiento al estado Trazabilidad de los
de los requerimientos requerimientos
Definición del método de Propuestas de cambios Definición de los posibles Definición de conexiones
identificación de cada estados de un entre requerimientos
versión requerimiento
Seguimiento a las Análisis de impacto Registro del estado de un Definición de conexiones
versiones individuales de requerimiento con elementos de otros
cada requerimiento sistemas.
Seguimiento a las Toma de decisiones Seguimiento individual de
versiones grupales de los cambios de estado
requerimientos
Actualización de
requerimientos
individuales
Actualización de grupos
de requerimientos
Planes de actualización
Medición de la volatilidad
de los requerimientos
Tabla 32. Componentes de la gestión de requerimientos. Fuente: Wiegers & Beatty, 2013.
Con el fin de garantizar que haya empatía y una relación productiva entre el equipo a cargo
del desarrollo y los interesados, se sugiere hacer una reunión de inicio de la subfase de
desarrollo de requerimientos, en la que se adquieran formalmente los siguientes
compromisos:
Compromisos por parte de los interesados en el desarrollo de software (Por ejemplo: usuarios finales, usuarios
indirectos, gerentes de negocio, líderes de área, líderes de entidad, etc.)
Educar al equipo desarrollador sobre la naturaleza del negocio, lenguaje y procesos.
Nota: Para cumplir con este compromiso se sugiere agendar formalmente sesiones de entrenamiento y suministrar un
glosario con los términos de negocio usados por la Entidad.
Dedicar el tiempo necesario a suministrar y a aclarar requerimientos.
Ser específico y preciso al suministrar información sobre los requerimientos.
Tomar decisiones dentro de los tiempos acordados.
Escuchar la opinión del desarrollador en cuento a costos y factibilidad de desarrollo de los requerimientos.
Trabajar de la mano con el equipo desarrollador para definir prioridades realistas.
Revisar los requerimientos y evaluar prototipos.
Establecer los criterios de aceptación.
Comunicar oportunamente cualquier cambio en los requerimientos.
Respetar el tiempo que tarda el desarrollo de un requerimiento.
Respetar el proceso definido para gestionar los cambios o actualizaciones de los requerimientos.
Compromisos por parte del equipo desarrollador de software.
Entender el negocio, su lenguaje y los procesos.
Entender los objetivos de la Entidad y sus prioridades.
Documentar los requerimientos de forma apropiada.
Explicar los procesos de gestión de requerimientos y los entregables.
Gestionar oportunamente las solicitudes de cambios en los requerimientos e informar las consecuencias para el
proyecto.
Suministrar alternativas para solucionar la necesidad de la Entidad.
Identificar oportunidades de mejora que permita optimizar el proceso de desarrollo en términos de costos y tiempo.
Identificar oportunidades de re-uso para acelerar el proceso de desarrollo.
Proveer un sistema que cumpla con las expectativas de funcionalidad y calidad.
Tabla 33. Compromisos de la reunión de inicio. Fuente: Wiegers & Beatty, 2013.
Con respecto a los acuerdos que logran con los diferentes interesados al momento de definir
la línea base, se sugiere no utilizar dichos acuerdos como una herramienta coercitiva o de
protección frente a los eventuales problemas que puedan presentarse. El propósito de la
línea base siempre debe ir orientado a ser un entendimiento común entre las partes del
proyecto.
Analista de requerimientos
La responsabilidad de los analistas es elaborar un catálogo detallado de requisitos que
permita describir con precisión el sistema de información, para lo cual mantendrán
entrevistas y sesiones de trabajo con los responsables de la organización y los usuarios,
actuando de interlocutor entre estos y el equipo de proyecto, en lo que a requerimientos se
refiere. Este catálogo permite elaborar los distintos modelos que sirven de base para el
diseño, con lo que se obtienen los modelos de datos y de procesos, en el caso del análisis
estructurado, y los modelos de clases e interacción de objetos, en el análisis orientado a
objetos. Los analistas también realizan la especificación de las interfaces entre el sistema y
el usuario.
Arquitecto de software
Durante la fase de requerimientos, el arquitecto de software se involucra con los
requerimientos que influyen en la arquitectura (“drivers”), particularmente respecto con los
atributos de calidad del sistema. El arquitecto se debe preocupar por que se identifiquen
atributos de calidad pertinentes para el sistema, alineados con los objetivos de negocio, y
por que las métricas asociadas estén justificadas. En el caso que la entidad solicite atributos
de calidad con métricas muy demandantes (por ejemplo una disponibilidad del 99,99%),
debe ser capaz de entender la justificación de esas métricas y debe poder negociar con la
entidad para establecer métricas adecuadas. Nuevamente, el arquitecto debe emplear aquí
una combinación de habilidades “duras” y “suaves”, con el fin de lograr una identificación
adecuada de los requerimientos que influirán sobre el diseño arquitectónico.
5 DISEÑO Y ARQUITECTURA
Ésta es la actividad del ciclo de vida del software en la cual se analizan los requisitos para
producir una descripción de la estructura interna del software, que sirva de base para su
construcción. La salida o resultado es un conjunto de modelos y artefactos que registran las
principales decisiones adoptadas.
Una vez que se han establecido los requisitos del software, el diseño es la primera de tres
actividades técnicas: diseño, codificación y prueba. Cada actividad transforma la
información de forma que al final se obtiene un software validado.
Mejor práctica: Las fases de diseño, codificación y prueba absorben el 75% o más del
costo de la ingeniería del software, excluyendo el mantenimiento. Es este momento cuando
se toman las decisiones que afectarán finalmente al éxito de la implementación del
programa y, también, a la facilidad de mantenimiento que tendrá el software. Por tanto el
diseño es un paso fundamental de la fase de desarrollo.
La salida de estos dos procesos es un conjunto de modelos y artefactos que registra las
grandes decisiones que se han tomado, junto con una explicación de los fundamentos.
Diseño Arquitectónico
Describe la estructura y organización de alto nivel, es decir, los subsistemas o componentes
y sus relaciones. Es el primer paso en el diseño de un sistema, previo al diseño detallado, y
su resultado se conoce como arquitectura del software.
Diseño Detallado
Describe cada componente y su comportamiento específico, de forma que se puede
proceder con la construcción. Se ocupa del refinamiento de la representación arquitectónica,
que lleva a una estructura de datos detallada y de las representaciones algorítmicas del
software.
Una arquitectura de software es "el conjunto de las estructuras necesarias para razonar
acerca del sistema, comprenden elementos de software, las relaciones entre ellos y las
propiedades de ambos", (Swebok v3.0, 2014).
diseño arquitectónico (por ejemplo los estilos arquitectónicos), así como en el diseño
detallado (por ejemplo los patrones de diseño). Estos conceptos de diseño también pueden
utilizarse para diseñar familias de programas, conocidas como líneas de productos.
Estilos arquitectónicos
Un estilo arquitectónico es "una especialización de elementos y tipos de relación, junto con
un conjunto de restricciones sobre la forma en que se pueden utilizar”, (Swebok v3.0, 2014).
Patrones de diseño
Mientras los estilos arquitectónicos pueden ser vistos como patrones que describen la
organización de alto nivel de software, otros patrones de diseño pueden utilizarse para
describir los detalles en un nivel inferior.
Familias de programas
Un enfoque para proporcionar la reutilización de diseños de software y de componentes es
diseñar familias de programas o líneas de productos software. Esto se puede hacer
mediante la identificación de los elementos comunes entre los miembros de estas familias
y del diseño de componentes reutilizables y personalizables para dar variedad entre los
miembros.
Mejor práctica: El diseño de la interfaz de usuario debe garantizar que la interacción entre
el usuario y la máquina proporciona un control eficaz para la operación.
Para que el software alcance su máximo potencial, la interfaz de usuario debe ser diseñada
para que coincida con las habilidades, experiencia y expectativas del público previsto.
Éste es un proceso iterativo. Los prototipos de interfaz se utilizan a menudo para determinar
las características, la organización y el aspecto del software. Incluye tres actividades
centrales:
Análisis del usuario: en esta fase el diseñador analiza las tareas de los usuarios, el medio
ambiente de trabajo, otro software y cómo los usuarios interactúan con otras personas.
Creación de prototipos de software: el desarrollo del prototipo ayuda a los usuarios de
software a ver la evolución de la interfaz.
Evaluación de la interfaz: los diseñadores pueden observar experiencias de los usuarios
con la interfaz en evolución.
Mejor práctica: El diseño de la interfaz de usuario debe resolver dos cuestiones clave:
¿Cómo el usuario debe interactuar con el software?
¿Cómo la información desde el software debe ser presentada al usuario?
La interacción del usuario implica dar órdenes y proporcionar datos asociados al software.
Se pueden clasificar en los siguientes estilos principales:
Presentación de la información
Puede ser de naturaleza textual o gráfica, de acuerdo con el estilo de presentación de la
información. Los diseñadores pueden utilizar colores para mejorar la interfaz. Existen varias
pautas importantes:
No dependa sólo del color para transmitir información importante para los usuarios con
diferentes discapacidades.
Métricas
Las medidas pueden ser utilizadas para evaluar o para estimar cuantitativamente diversos
aspectos de un diseño de software, por ejemplo el tamaño, estructura y calidad. La mayoría
de las medidas que se han propuesto dependen del enfoque utilizado para la producción
del diseño.
Estas medidas se clasifican en dos grandes categorías:
Basado en las funciones: son medidas obtenidas mediante la descomposición de
análisis funcional; generalmente representadas utilizando un diagrama de estructura (a
veces llamado diagrama jerárquico), en el que diversas medidas pueden ser calculadas.
Orientados a objetos: la estructura de diseño típicamente se representa como una clase
de diagrama en el que diversas medidas pueden ser calculadas.
Descripciones estructurales
Aspectos para describir y representar los principales componentes y cómo están
interconectados:
Descripción de la arquitectura de idiomas (avd): Textual y formal, se utilizan para
describir la arquitectura de software en términos de componentes y conectores.
Clase y objeto: Diagramas utilizados para representar un conjunto de clases, de objetos
y sus interrelaciones.
Diagramas de componentes: Representa un conjunto de componentes y sus
interrelaciones.
Diagramas de implementación: Representa un conjunto de nodos y sus interrelaciones.
Diagramas de entidad-relación (ERD): Son utilizados para representar los modelos
conceptuales de datos almacenados en los repositorios de información.
Diseño estructurado
Este es uno de los métodos clásicos de diseño de software, se utiliza generalmente después
de un análisis estructurado, con lo que se produce (entre otras cosas) los diagramas de flujo
de datos y las descripciones asociadas a los procesos.
A lo largo del proceso, la calidad del diseño se evalúa mediante una serie de revisiones
técnicas formales cuyos objetivos son:
Descubrir los errores en la función, la lógica o la implementación de cualquier
representación del software.
Verificar que el software alcance sus requisitos.
Garantizar que el software sea representado según los estándares establecidos.
Conseguir que el software sea desarrollado de manera uniforme.
Hacer que los proyectos sean manejables.
A continuación se lista una serie de criterios para determinar la calidad del software:
Un diseño debe tener una organización jerárquica.
Un diseño debe ser modular, es decir que el software debe estar dividido en elementos
que realicen funciones específicas.
Un diseño debe tener representaciones distintas y separadas de los datos y de los
procedimientos.
5.4 HERRAMIENTAS
Es útil para las entidades saber que existen herramientas en el mercado, tanto Open Source
como Propietarias, entre la cuales están:
Enterprise Architect
Es una herramienta para modelamiento visual y diseño de software basada en OMG UML.
Con Enterprise Architect es posible modelar sistemas de información y procesos de negocio.
Soporta estándares tales como: UML 2.5, BPMN 2.0, BPEL, WSDL, DDS y GML, entre
otros.. Puede ser tenido en cuenta para realizar bosquejos de los componentes del sistema
de información o pieza de software a ser desarrollada, sus interacciones, relaciones,
restricciones, condiciones, artefactos.
Archimate
Es un marco de trabajo en una herramienta con la cual se diseñan procesos de negocio,
estructuras organizacionales, flujos de información, sistemas de información e
infraestructura tecnológica.
Archimate está basado en el estándar de The Open Group IEEE1471 (sobre arquitectura
de software) y es usado comúnmente para definir arquitecturas empresariales en marcos
de trabajo como Togaf y Zachman.
Es una herramienta útil, al igual que las dos anteriores, para modelar y diseñar
componentes, interacciones y flujos de información del sistema a desarrollar.
Kunagi
Es una herramienta web que proporciona un sistema de gestión de proyectos basado en
Scrum. Ofrece herramientas colaborativas y otras facilidades como un cuadro de mando del
proyecto, panel interactivo para los sprints y soporte para la estimación con Planning Poker.
En el caso de que el proyecto adopte la metodología ágil (Scrum), Kunagi es una opción
con la cual facilitar actividades de gestión de tareas para seguimiento de sprints, planeación
y estimación.
ScrumDo
Herramienta web Scrum muy centrada en la simplicidad y en la facilidad de uso. Permite
gestionar las listas de tareas, crear y gestionar iteraciones, obtener informes de avance y
facilitar la estimación con Planning Poker.
IceScrum
Herramienta Scrum y Kanban (Kanban: método para gestionar el trabajo intelectual, con
énfasis en la entrega justo a tiempo, mientras no se sobrecarga a los miembros del equipo).
Permite programar y gestionar sprints y asociarlos a la historia de los usuarios para facilitar
la aplicación de técnicas de estimación.
Pango Scrum
Tanto Pango Scrum, como IceScrum, ScrumDo y Kunagi son herramientas que apoyan la
gestión de proyectos basados en metodología ágil Scrum. Debe seleccionarse la que por
facilidad, conveniencia y practicidad se ajusten a las necesidades de la entidad.
Elemento transversal – Talento TI: El personal responsable de las actividades del diseño,
arquitectura y sus roles son los siguientes:
Arquitecto de software
Tiene la responsabilidad general de conducir las principales decisiones técnicas,
expresadas en la arquitectura de software. Por lo general, para esto debe identificar y
documentar la arquitectura de los aspectos importantes del sistema, incluidos los requisitos,
diseños, implementación y despliegue, es decir, las vistas del sistema.
Figura 64. Rol del arquitecto de software. Fuente: Universidad EAFIT, 2008.
6 CODIFICACION
Una vez que han sido diseñados los algoritmos de una aplicación, se puede iniciar la fase
de codificación, etapa en la cual se deben traducir dichos algoritmos a un lenguaje de
programación específico; es decir, las acciones definidas en los algoritmos hay que
convertirlas en instrucciones.
Para codificar un algoritmo hay que conocer la sintaxis del lenguaje al que se va a traducir.
Sin embargo, independientemente del lenguaje de programación en que esté escrito un
programa, será su algoritmo el que determine su lógica. Justamente es la lógica de un
programa la que establece cuáles son sus acciones y en qué orden se deben ejecutar. Por
lo tanto, es conveniente que todo programador aprenda a diseñar algoritmos antes de pasar
a la fase de codificación.
Durante la fase de programación, el código puede adoptar varios estados, de acuerdo con
la forma de trabajo y del lenguaje elegido, estos pueden ser:
Principios fundamentales:
Minimizar la complejidad
Al escribir el código sencillo y fácil de leer
Utilizar estándares
Emplear técnicas de codificación
Implementar técnicas de aseguramiento de la calidad
Aplicar estándares
Directamente a la construcción del software
A los formatos de comunicación: documentos y contenidos
La gestión de los diversos cambios que se realizan sobre los elementos de un producto de
software o la configuración del mismo, es denominada control de versiones. Es aconsejable
contar con un sistema y organización para el control de versiones (Version Control System
- VCS). Dichos sistemas permiten administrar las distintas ediciones de cada producto
desarrollado.
Este tipo de control se realiza principalmente para controlar el código fuente y dan lugar a
los sistemas de control del mismo nombre (Source Code Management - SCM).
Existen herramientas tanto libres como propietarias para facilitar la gestión de versiones de
código fuente, algunas son: CVS, Subversion, SourceSafe, ClearCase, Darcs, Bazaar,
Plastic, SCM, Git, Mercurial y Perforce, entre otros.
Línea base (Baseline): es una revisión o versión aprobada de un archivo de código fuente,
a partir de la cual se deben realizar cambios subsiguientes.
Rotular (tag): se le asigna a una versión del módulo en desarrollo en un momento preciso,
con un nombre común (“etiqueta” o “rótulo”), para asegurar que posteriormente se encuentre
ese desarrollo.
Publicar (“commit”): un commit sucede cuando una copia de los cambios hechos para
tener una copia local, es escrita o integrada sobre el repositorio.
Integración o fusión (“merge”): una integración une dos conjuntos de cambios sobre el
archivo o un conjunto de archivos en una revisión unificada de los mismos. Se utiliza para
unificar versiones de desarrollo de un mismo archivo de tal manera que queden integrados
en un solo archivo.
Desplegar (“check out”): un despliegue crea una copia local del trabajo, desde el
repositorio. Le permite al desarrollador trabajar de forma descentralizada del repositorio.
La arquitectura distribuida permite a cada usuario contar con su propio repositorio. Los
distintos repositorios pueden intercambiar y mezclar revisiones entre ellos.
Mejor práctica: Escriba comentarios sólo para el código que es difícil de entender. Procure
no escribir código que sea difícil de entender.
Desarrollador de software
Los programadores deben convertir la especificación del sistema en código fuente
ejecutable, utilizando uno o más lenguajes de programación, así como herramientas de
software de apoyo a la programación.
El éxito del desarrollo de software depende altamente del conocimiento, que no sólo
corresponde a habilidades de programación y de administración de proyectos, sino también
a una percepción y entendimiento de los últimos desarrollos de la industria.
Arquitecto de software
En esta etapa, desde un punto de vista técnico, el arquitecto debe completar las partes
faltantes del diseño de la arquitectura y corregir las decisiones previas que hayan resultado
ser equivocadas. Desde un punto de vista no técnico, el esfuerzo aumenta pues el arquitecto
debe enfocarse en cuidar que el sistema se desarrolle de acuerdo con la arquitectura que
se definió para el mismo. Aquí el arquitecto juega un papel de mentor y muchas veces debe
explicar cuestiones del diseño del sistema al equipo de desarrollo.
La verificación comprueba que el producto cumple con los requisitos establecidos y ayuda
a asegurar que dicho producto se está desarrollando de la forma correcta. La verificación
es un proceso incremental porque ocurre a lo largo del desarrollo, empieza con la
comprobación de los requisitos, luego revisa la evolución del requerimiento y finaliza con la
verificación del producto completo. Sin embargo, la validación cambia el enfoque, evalúa el
producto en función de las necesidades de la entidad para asegurar que se satisface la
necesidad y uso por el cual se creó.
Las actividades de validación son similares a las de verificación, por ejemplo ambas llevan
a cabo pruebas, análisis, inspecciones y normalmente se ejecutan de forma concurrente.
El término “nivel de pruebas” da un indicio del centro o foco de las pruebas y del tipo de
problemas que tratan de descubrir. Los niveles más típicos son:
Pruebas unitarias o de componente
Pruebas de integración
Pruebas de sistemas
Pruebas de aceptación
Cada uno de estos niveles incluye pruebas diseñadas para encontrar problemas específicos
en cada etapa de desarrollo. Estos niveles de prueba también pueden aplicarse a
desarrollos iterativos y pueden cambiar dependiendo del tipo de sistema. Por ejemplo, si el
sistema incluye software desarrollado por alguien externo, las pruebas de aceptación serán
llevadas a cabo antes de unirlo al sistema.
Las pruebas unitarias pueden realizarse de forma aislada del sistema, mediante el uso de
trozos de código y drivers que reemplazan el software omitido o ausente y simulan la
interconexión entre los componentes de una forma simple. Pueden incluir pruebas de
funcionalidad y sobre características no funcionales, por ejemplo sobre el comportamiento
del medio, el rendimiento o la robustez del sistema. Este tipo de pruebas suelen ser
realizadas por el programador que escribe el código y que, usualmente, también escribe la
especificación del programa, aunque algunas veces las realiza un programador diferente,
dependiendo del nivel de riesgo, para conseguir cierta independencia. Los defectos son
corregidos tan pronto como se detectan, sin ningún tipo de registro de incidencias.
Tabla 34. Proceso de pruebas unitarias. Fuente: Inteco. (2009). Guía de mejores prácticas de calidad
de producto.
Una vez que las unidades se han desarrollado, la siguiente fase es unirlas para crear el
sistema. A este proceso se le llama integración y con él a partir de un pequeño número de
piezas se consigue algo mayor y con más funcionalidad.
Mejor práctica: De esta forma, la integración big-bang es una buena idea cuando en la
planificación del proyecto se es optimista y se espera que no haya problemas.
Integración top-down: En la que el sistema se construye por fases, empezando por los
componentes que llaman a otros componentes. Este tipo de integración permitirá a los
técnicos de pruebas evaluar la conexión entre los componentes iniciando desde arriba.
La estructura de control de un programa puede representarse en una gráfica similar a la
Figura 65. Estructura de control top-down. Fuente: Inteco. (2009). Guía de mejores prácticas de
calidad de producto.
Las pruebas de integración top-down requieren que las interacciones sean probadas en el
momento en que el componente sea construido, es decir, que aquellos componentes más
bajos de la jerarquía puede que no hayan sido construidos ni integrados aún.
Si por ejemplo se quiere probar la interacción del componente 1 con el componente 2, puede
ser necesario reemplazar el componente 2 por un trozo de código. Un trozo de código es
un componente pasivo que es llamado por otro componente y es de gran ayuda en los casos
en que se necesite reemplazar componentes aún no integrados.
Figura 66. Estructura de control botton-up. Fuente: Inteco. (2009). Guía de mejores prácticas de
calidad de producto.
El orden de integración puede ser: 4,2 - 5,2 - 6,3 – 7,3 – 2,1 – 3,1, de tal forma que los
componentes del 4 al 7 deberían integrarse antes que los 2 y 3. En este caso, los
componentes que deben ser sustituidos por componentes especiales son aquellos que
llaman de forma activa a otros y que son conocidos como drivers, ya que en el programa
controlan a otros componentes. En el ejemplo, los componentes 2 y 3 serán remplazados
por drivers cuando se necesiten probar 4, 5, 6 o 7. Los drivers son generalmente más
complejos que los trozos de código.
Mejor práctica: Se recomienda que las personas que lleven a cabo las pruebas entiendan
la arquitectura y realicen una buena planificación, ya que si las pruebas de integración se
planifican antes de que los componentes y sistemas sean construidos, se elegirá el orden
requerido para obtener las pruebas más eficientes.
Tabla 35. Proceso de pruebas de integración. Fuente: Inteco. (2009). Guía de mejores prácticas de
calidad de producto.
Una vez se compruebe que los componentes trabajan correctamente a nivel unitario, el
siguiente paso es considerar la funcionalidad desde otra perspectiva.
Las pruebas de sistemas se ocupan del comportamiento del sistema o del producto como
un todo; incluyen pruebas basadas en riesgos y en la especificación de los requisitos,
procesos de negocios, casos de uso u otras descripciones de alto nivel, interacciones con
el sistema operativo y recursos del sistema. Estas pruebas suelen realizarse al final de las
pruebas de desarrollo y verifican que el sistema entregado cumpla las especificaciones.
Normalmente son llevadas a cabo por un equipo independiente de técnicos especializados
en pruebas; al finalizar las pruebas, este grupo entrega los informes al director del proyecto.
Un requisito funcional es aquel que especifica una función que debe realizar el sistema o el
componente del sistema. Este tipo de requisitos puede ser específico para un determinado
sistema y da detalles sobre lo que hará la aplicación.
Las pruebas de sistema deberían investigar tanto los requisitos de sistemas funcionales
como de los no funcionales. Las pruebas de los requisitos funcionales usan técnicas
basadas en especificación (o de caja negra) sobre el sistema probado. Las técnicas basadas
en estructura suelen usarse para valorar la minuciosidad de los elementos de pruebas.
Tabla 36. Proceso de pruebas de sistema. Fuente: Inteco. (2009). Guía de mejores prácticas de
calidad de producto.
Después de que el proveedor realice sus pruebas de sistemas y la mayoría de los ajustes,
el sistema será entregado al usuario o a la entidad para que dé su aprobación. Es entonces
cuando se realizan las pruebas de aceptación, cuyo objetivo es dar confianza al usuario final
de que el sistema funcionará de acuerdo con sus expectativas, de las partes del sistema y
sus características no funcionales.
Las pruebas de aceptación son a menudo responsabilidad del usuario o del cliente, aunque
cualquier persona involucrada en el negocio puede realizarlas. La ejecución de estas
pruebas requiere un entorno que represente al entorno de producción.
Tabla 37. Proceso de pruebas de aceptación. Fuente: Inteco. (2009). Guía de mejores prácticas de
calidad de producto.
• Identificador de la prueba
Scripts de prueba • Descripción del objetivo de la prueba
• Descripción del estado de la aplicación antes de la prueba o
precondiciones de la misma
• Pasos precisos y no ambiguos para ejecutar la prueba
• Descripción de los resultados esperados
Requerimientos de pruebas
Gerente de proyecto
Es el responsable, junto con el analista de pruebas, de generar el plan de pruebas y de
coordinar, evaluar y registrar las pruebas de aceptación.
Analista de pruebas
A su cargo está todo el proceso de la planeación, ejecución, seguimiento y control del
desarrollo de pruebas del sistema, debe enfocarse principalmente en:
Identificar y definir las pruebas necesarias.
Facilitar los recursos necesarios para el desarrollo de las pruebas.
Hacer el seguimiento detallado de las pruebas.
Revisar los informes de pruebas entregados por el equipo.
El desarrollo de software hoy en día está caracterizado por múltiples equipos de proyectos
que trabajan de forma simultánea, bajo cronogramas cada vez más exigentes y
desarrollando sistemas que interoperan con otras aplicaciones y plataformas. Bajo un
escenario como éste, la gestión de los ambientes (entornos) de pruebas integrales y de
producción adquiere gran importancia para asegurar que el software sea puesto en
producción con los niveles de calidad necesarios. Los ambientes de pruebas y producción
deben ser diferentes, como lo muestra la siguiente figura:
Figura 67. Separación ambientes de pruebas y producción. Fuente: Corporación Colombia Digital.
Requisitos
Contar con un servidor compartido por los equipos de pruebas que correspondan.
Restricciones
Los desarrolladores no deben poseer privilegios de acceso de modificación de cualquier
tipo en el ambiente de pruebas, esto para evitar cambios no informados en la
configuración.
Los desarrolladores no poseen herramientas de software o permisos de acceso
especiales para ejecutar desarrollos de software, en su lugar, tiene una configuración
similar o igual a la de producción.
Sólo el administrador se encarga de instalar, actualizar o desplegar en el ambiente de
pruebas, nunca el desarrollador directamente.
Requiere estrictos controles de cambio que mantengan rastro de las modificaciones en
la configuración, para asegurar resultados controlados y que el ambiente sea similar al
de producción. Cualquier ciclo de pruebas que esté en proceso puede quedar invalidado
por cambios en la configuración y, por ende, tiene que repetirse.
Una versión se instala en producción sólo después que ha sido instalada y probada en
ambiente de pruebas integrales.
Procedimiento de uso
Definir las especificaciones de ambientes de prueba que necesita el equipo.
Antes de iniciar cualquier ciclo de pruebas, debe verificarse que el ambiente ha sido
configurado adecuadamente.
Requisitos
Contar con la aprobación del gerente del proyecto para el paso a producción.
Crear ventanas de tiempo para el paso a producción, de tal modo que si se detecta algún
problema, se disponga de un lapso para corregirlo antes de decidir una “vuelta atrás”.
Nunca se debe pasar a un ambiente de producción sin haber finalizado la etapa de
pruebas.
Contar con la infraestructura tecnológica adecuada para realizar los despliegues.
Otro factor importante para considerar en el despliegue de software seguro es el control del
código fuente. Se suele liberar versiones de software sólo para reparar rápidamente
incidencias en producción o sencillamente para agregar características, sin tomar en cuenta
que el código liberado está en etapa de desarrollo o contiene secciones aún no probadas,
que se piensan liberar en un futuro. En este sentido, es muy útil contar con herramientas de
control de código fuente como el team foundation server, que nos permite crear ramas
(branch) sobre nuestro código, y separar el código evolutivo del código que se desarrolla en
forma de parches.
7 PRUEBAS
Hoy en día, debido al aumento del tamaño y la complejidad del software, el proceso de
prueba se ha convertido en una tarea vital dentro del desarrollo de cualquier sistema de
información.
Las pruebas deben estar presentes a lo largo de todo el ciclo de vida de desarrollo. La mayor
parte de defectos se concentran en las fases tempranas del desarrollo y el costo de
corrección aumenta a medida que el defecto continúa sin ser detectado. De esta forma, si
las pruebas se realizan en todas las fases del ciclo de vida, se conseguirá un ahorro
considerable a la hora de detectar y corregir errores en la misma fase en la que se
produjeron.
completa implantación de los requisitos establecidos en las etapas iniciales del desarrollo.
Una herramienta adecuada para efectuar esta validación son las pruebas del sistema.
Mejor práctica: Es importante planificar y diseñar bien las pruebas para buscar el máximo
número de errores posibles o, al menos, los más importantes. Para no depender en
exclusiva de los conocimientos y experiencia de los ingenieros de prueba, es necesario un
proceso metodológico que ofrezca una pauta clara para seleccionar el conjunto de pruebas
que abarque un mayor rango de posibles errores. O bien obtener un conjunto de pruebas
centrado en localizar errores con unas características concretas, cómo, por ejemplo, el nivel
de rendimiento del sistema ante cargas extremas de trabajo.
Mejor práctica: Los costos de corregir errores en la fase de prueba son mucho mayores
que los costos de corregir dichos errores en fases tempranas, como la fase de requisitos o
de análisis. Adelantar la fase de pruebas a la fase de requisitos o de análisis permite reducir
el costo de corrección de errores. Esto debe complementarse con estrategias que permitan,
además, disminuir el número de errores potenciales, adelantando la generación de pruebas
se evita dejar todo el proceso de prueba para final de la construcción, momento donde el
tiempo y los recursos disponibles suelen ser insuficientes para realizar este proceso
adecuadamente
Tipos de pruebas necesarias: Existen diferentes tipos de pruebas que se pueden realizar,
en la siguiente tabla se listan las más adecuadas. Es importante anotar que este tipo de
pruebas es solo una guía que puede cambiar de acuerdo a las condiciones particulares de
cada proyecto y por lo tanto la aplicabilidad de este modelo debe ser evaluada por el lector
Tabla 39. Descripción de los tipos de prueba del software. Fuente: Corporación Colombia Digital.
Mejor práctica: Para que el proceso de prueba del sistema sea eficaz debe estar integrado
dentro del propio proceso de desarrollo. Como cualquier otra fase de dicho proceso, el
proceso de prueba debe realizarse de manera sistemática, minimizando el factor
experiencia o intuición. Esto se puede conseguir a través de metodologías que guíen el
proceso de desarrollo de pruebas de sistema.
Para que la entidad no tenga problemas con los desarrollos implantados es necesario
garantizar la calidad a través de pruebas propuestas en este documento. Dependiendo del
procedimiento para realizar las pruebas, estas pueden ser:
Pruebas automáticas: son aquellas realizadas por un programa o herramienta que prueba
el sistema sin necesidad de la interacción de una persona. La herramienta suministra una
serie de valores de prueba, o acciones de prueba al sistema y verifica los resultados
devueltos por el sistema con los resultados esperados. Al final del proceso de prueba se
emite un informe con los resultados de las mismas.
Pruebas manuales: son aquellas pruebas realizadas por una o más personas que
interactúan directamente con el sistema. Estas personas verifican si los resultados
obtenidos son válidos o no. Cuando se desea repetir el proceso es necesario que la persona
o grupo repita las interacciones y vuelvan a verificar todos los resultados obtenidos.
Las pruebas funcionales, a menudo, se llaman pruebas de caja negra porque no enfocan
su atención en la manera de generar las respuestas del sistema. El enfoque de este tipo de
pruebas se basa en el análisis de los datos de entrada y de salida, sin preocuparse del
funcionamiento interno del sistema.
Las pruebas funcionales, en la mayoría de los casos, son realizadas manualmente por el
analista de pruebas. También es posible automatizar este tipo de pruebas utilizando
herramientas que permiten generar scripts conforme se hagan interacciones con el
aplicativo a probar. La automatización de pruebas puede resultar compleja y sólo sería
recomendable en algunos casos.
Al realizar pruebas funcionales lo que se pretende es ponerse en el lugar del usuario usando
el sistema como él lo usaría, sin embargo, el analista de pruebas debe ir más allá que
cualquier usuario y probar funciones que al usuario no se le ocurrirían. Generalmente, se
requiere apoyo de los usuarios finales ya que ellos pueden aportar mucho en el desarrollo
de casos de prueba complejos, enfocados básicamente al negocio y posibles
Pruebas estructurales: Las pruebas estructurales son conocidas como pruebas de caja
blanca o caja de cristal ya que se interesan en lo que pasa dentro del sistema. Son una
aproximación al diseño de casos de prueba, donde las pruebas se derivan a partir del
conocimiento de la estructura e implementación del software. Es decir, el diseño de los
casos de prueba se enfoca en la estructura del componente o sistema. Estas pruebas tratan
de analizar la estructura interna del componente/sistema y crear un modelo de pseudo-
código a partir del código real.
Pruebas de confirmación: Cuando una prueba falla, se averigua el defecto del software
(la causa del fallo), se informa del defecto encontrado y se espera una nueva versión del
software con el defecto arreglado. En este caso será necesario ejecutar de nuevo la prueba
para confirmar que el defecto ha sido realmente solucionado. A esta prueba se llama prueba
de confirmación.
Pruebas de regresión: Al igual que las pruebas de confirmación, las pruebas de regresión
incluyen casos de prueba que se ejecutaron con anterioridad. La diferencia es que, en las
pruebas de regresión, los casos de prueba pasaron, probablemente, de forma satisfactoria
la última vez que fueron ejecutadas.
Mejor práctica: Las pruebas se deben realizar desde el inicio del ciclo de vida de desarrollo
de sistemas de información, para minimizar el riesgo de errores y garantizar el nivel de
calidad del sistema construido
Mejor práctica: Establecer la cantidad y tipo de pruebas exigidas y necesarias dentro del
ambiente de producción.
A continuación se presenta el listado de riesgos más críticos OWASP TOP 10, del año 2013,
en sistemas de información, priorizados con base al impacto que genera para el negocio y
la factibilidad de ser vulnerados.
Riesgo
A1 – Inyección
Las fallas de inyección, tales como SQL, OS, y LDAP, ocurren cuando datos no confiables son enviados a un
intérprete como parte de un comando o consulta. Los datos hostiles del atacante pueden engañar al intérprete
en ejecutar comandos no intencionados o acceder datos no autorizados.
A2 – Pérdida de autenticación y gestión de sesiones
Las fallas XSS ocurren cada vez que una aplicación toma datos no confiables y los envía al navegador web
sin una validación y codificación apropiada. XSS permite a los atacantes ejecutar secuencia de comandos en
el navegador de la víctima los cuales pueden secuestrar las sesiones de usuario, destruir sitios web, o dirigir
al usuario hacia un sitio malicioso.
Una referencia directa a objetos ocurre cuando un desarrollador expone una referencia a un objeto de
implementación interno, tal como un archivo, carpeta, o base de datos. Sin un chequeo de control de acceso
u otra protección, los atacantes pueden manipular estas referencias para acceder datos no autorizados.
A5 – Configuración de seguridad incorrecta
Una buena seguridad requiere tener definida e implementada una configuración segura para la aplicación,
marcos de trabajo, servidor de aplicación, servidor web, base de datos y plataforma. Todas estas
configuraciones deben ser definidas, implementadas y mantenidas ya que por lo general no son seguras por
defecto. Esto incluye mantener todo el software actualizado, incluidas las librerías de código utilizadas por la
aplicación.
A6 – Explosión de datos sensibles
Muchas aplicaciones web no protegen adecuadamente datos sensibles tales como números de tarjetas de
crédito o credenciales de autenticación. Los atacantes pueden robar o modificar tales datos para llevar a cabo
fraudes, robos de identidad u otros delitos. Los datos sensibles requieren métodos de protección adicionales
tales como el cifrado de datos, así como también de precauciones especiales en un intercambio de datos con
el navegador.
A7 – Ausencia de control de acceso a las funciones
La mayoría de aplicaciones web verifican los derechos de acceso a nivel de función antes de hacer visible en
la misma interfaz de usuario. A pesar de esto, las aplicaciones necesitan verificar el control de acceso en el
servidor cuando se accede a cada función. Si las solicitudes de acceso no se verifican, los atacantes podrán
realizar peticiones sin la autorización apropiada.
A8 – Falsificación de peticiones en sitios cruzados (CSRF)
Un ataque CSRF obliga al navegador de una víctima autenticada a enviar una petición http falsa, incluyendo
la sesión del usuario y cualquier otra información de autenticación incluida automáticamente, a una aplicación
web vulnerable. Esto permite al atacante forzar al navegador de la víctima a generar peticiones que la
aplicación asume como legítimas y que son propias de la víctima.
A9 – Uso de componentes con vulnerabilidades conocidas
Algunos componentes tales como, las librerías, los frameworks, y otros módulos de software casi siempre
funcionan con todos los privilegios. Si se ataca un componente vulnerable esto podría facilitar la intrusión en
el servidor, o una pérdida de dados. Las aplicaciones que utilicen componentes con vulnerabilidades
conocidas debilitan las defensas del sistema de información y amplían el rango de posibles ataques e
impactos.
A10 – Redirecciones y reenvíos no válidos
Las aplicaciones web frecuentemente redirigen y reenvían a los usuarios hacia otras páginas o sitios web, y
utilizan datos no confiables para determinar la página de destino. Sin una validación apropiada, los atacantes
pueden redirigir a las víctimas hacia sitios de phishing o malware, o utilizar reenvíos para acceder a páginas
no autorizadas.
Tabla 40. OWASP Top 10 – 2013 de Riesgos de Seguridad en Aplicaciones. Licencia CC (Creative
Commons). Fuente: https://www.owasp.org.
El proceso conlleva un análisis activo del sistema, en busca de cualquier debilidad, fallos
técnicos o vulnerabilidades.
Modo Pasivo: En éste modo, la persona a cargo de realización de las pruebas intenta
comprender la lógica del sistema, “juega con la aplicación”; puede usarse una utilidad para
la recopilación de la información, como un Proxy http, para observas todas las peticiones y
respuestas http. Al final de esta fase esta persona debería comprender cuales son todos los
puntos de acceso (puertas) de la aplicación (p. e. Cabeceras http, parámetros, cookies).
Prueba de CSRF.
Inyección SQL
Inyección LDAP
Inyección ORM
Inyección XML
Inyección SSI
Inyección XPath
Inyección IMAP/SMTP
Inyección de Código
Desbordamiento de buffer
Prueba de WSDL
Prueba de Repetición
Pruebas Ajax
Mejor práctica: Documentar de forma exhaustiva los resultados de los diferentes tipos de
pruebas realizadas, para que se tomen como base de conocimiento.
Mejor práctica: Es necesario garantizar que las pruebas se ejecuten a través del ciclo de
vida del desarrollo de software y no dejarlas para el final.
Las mejores prácticas mencionadas se pueden desarrollar por medio de Agile Testing que
es una práctica de pruebas que sigue los principios del desarrollo ágil de software, por lo
cual se recomienda utilizarlo. A continuación se describe en qué consisten este tipo de
pruebas y sus ventajas
Agile Testing
Involucra a todos los miembros de un equipo ágil multifuncional, en el cual el rol del probador
es el de un experto multifuncional, garante de que se entregue el valor de negocio deseado
por la entidad a un ritmo sostenible y continuo.
Las metodologías ágiles no ven al software de prueba como una fase separada, sino como
parte integral del desarrollo de software.
Agile Testing, incorpora una serie prácticas, como por ejemplo pruebas de “todo el equipo”,
prueba independiente (opcional), Integración continua, pruebas guiadas por el desarrollo
(Test Driven Development – TDD), Desarrollo guiado por comportamiento (Behaviour Driven
Development – BDD), Desarrollo guiado por pruebas de aceptación (Acceptance Test
Driven Development – ATDD), entre otros.
Los equipos ágiles utilizan un enfoque de “todo el equipo” enfocado a las pruebas, con la
finalidad de integrar la calidad al desarrollo del producto, al contrario de un enfoque de
primero fabricar el producto y luego inspeccionar para determinar su nivel de calidad.
Las pruebas no son una fase: Pruebas continuas son la única forma de garantizar avance
continuo, por esto, las pruebas se realizan simultáneamente junto con el desarrollo de
software y demás actividades.
Reducir el tiempo para recibir retroalimentación: En Agile Testing, los equipos del área
de negocio (el cliente) están involucrados en cada iteración, no solo al final durante la fase
de aceptación, como resultado, el tiempo de retroalimentación se reduce y el costo de
correcciones también es menor.
Código limpio: Los defectos en el código se corrigen en la misma iteración, por lo que se
mantiene el código limpio.
Guiado por pruebas: En Agile Testing, las pruebas se hacen durante el desarrollo y no
después del desarrollo como en métodos convencionales.
7.3.1 Normas
La Norma ISO/IEC 25040 define el proceso para llevar a cabo la evaluación del producto de
software y que sirve como guía para que las entidades las adopten. Dicho proceso de
evaluación consta de un total de cinco actividades.
Tarea 1.3: Identificar las partes del producto que se deben evaluar
Se deben identificar y documentar las partes del producto de software incluidas en la
evaluación. El tipo de producto a evaluar (especificación de requisitos, diagramas de diseño,
documentación de las pruebas, etc.) depende de la fase en el ciclo de vida en que se realiza
la evaluación y del propósito de ésta.
En esta última tarea se deben aplicar los criterios de decisión a nivel de características y
subcaracterísticas de calidad, produciendo como resultado la valoración del grado en que
el producto de software cumple los requisitos de calidad establecidos.
Mejor práctica: Para garantizar el nivel de calidad del sistema construido es necesario
verificar la correcta y completa implantación de los requisitos establecidos en las etapas
iniciales del desarrollo.
7.4 HERRAMIENTAS
Selenium
Es un framework para pruebas de aplicaciones Web, descargable de forma gratuita desde
su sitio web. Proporciona una herramienta de grabación y playback, que permite desarrollar
pruebas sin necesidad de aprender un lenguaje de codificación. Incluye características
como grabación, playback, selección de campos, auto completar formularios, pruebas de
recorrido (Walkthrough), debug, puntos de control, scripts basadas en el lenguaje de
programación ruby y otros formatos.
Selenium cobra importancia en la etapa de pruebas, para construir scripts para ejecución
de pruebas funcionales automatizadas.
Proporciona la capacidad de definir Scripts de prueba y posee una interfaz gráfica que le
permiten al usuario emular la funcionalidad que desea probar, incluyendo el uso de
interfaces de usuario de las aplicaciones a probar. Incluye características como: Vista de
experto, pruebas de procesos de negocio, grabado de pantalla (para captura de las
evidencias de prueba), entre otras posibilidades.
1 Team Foundation Server es la herramienta definitiva para la gestión completa de todos los aspectos de una aplicación de cualquier
tamaño
Apache Jmeter
Es una aplicación open source y 100% Java, diseñada para realizar pruebas de carga del
comportamiento funcional y medir el rendimiento de un sistema de información.
Originalmente fue creada para practicar pruebas a aplicaciones web pero ha sido extendida
su funcionalidad a otros tipos de aplicaciones.
Jmeter tiene la posibilidad de utilizar diferentes tipos de protocolos y servidores, por ejemplo:
Web – http, https, Soap / Rest, Ftp, Base de datos: JDBC, Directorio Activo: LDAP, MOM
vía JMS, Mail: smtp, pop3, imap, TCP, Lenguajes: Java, PHP, ASP.NET
SoapUI
SoapUI es una herramienta para diseño y ejecución de pruebas funcionales y especialmente
de SOA y Web Services basados en REST (Representational State Transfer, Transferencia
de Estado Representacional – Estilo de Arquitectura de Software para sistemas hipermedia
que requiera describir la interfaz entre sistemas, por ejemplo web services SOAP), aunque
también permite ejecutar pruebas de regresión y de carga automatizadas.
TestLink
Es un sistema web, de código abierto, cuya función es permitir la gestión de pruebas de
software. Presenta una estructura de información dividida en 3 unidades:
Sobre ésta herramienta se definen los escenarios de pruebas y sus resultados, para generar
informes de calidad y métricas.
RedMine
No es una herramienta de gestión de pruebas perse, sin embargo, es utilizada comúnmente
para planear y hacer seguimiento a la ejecución y resultados de los ciclos de pruebas.
Zephyr / Jira
Se trata de un software de gestión del ciclo de pruebas de sistemas de información. Dispone
de una versión gratuita con un límite máximo de 10 usuarios. Al igual que los anteriores,
cuenta con características que posibilitan la creación de proyectos y planes de prueba y
generación de informes de calidad.
Mantis
Es quizás, la herramienta de seguimiento de problemas e incidentes de sistemas de
información más común dada su naturaleza Open Source. Permite crear varios proyectos
simultáneamente, asociarlos y registrar sus correspondientes issues (incidencias), gestionar
los niveles y privilegios de acceso, adjuntar documentación de la ejecución de pruebas,
hacer seguimiento al inventario de “bugs” (defectos) y generar reportes por Proyecto, estado
del incidente, desarrollador, nivel de complejidad, etc.
Analista de pruebas
Es el responsable de todo el proceso de la planeación, ejecución, seguimiento y control del
desarrollo de pruebas del sistema, enfocándose principalmente en:
Identificar y definir las pruebas necesarias.
Facilitar los recursos necesarios para el desarrollo de las pruebas.
Seguimiento detallado de las pruebas.
Revisar los informes de pruebas entregados por el equipo de pruebas del proyecto
Recopilación y gestión de los datos de prueba en cada ciclo de pruebas.
Evaluación de la calidad global como resultado de las actividades de prueba.
8 PUESTA EN PRODUCCION
Esta gestión tiene como objetivos entregar, distribuir y hacer un seguimiento de los cambios
que se presenten en la puesta en producción. Es conveniente que este proceso esté
integrado con la gestión de la configuración y la gestión de cambios.
Antes de la puesta en producción hay que tener en cuenta una serie de acciones y criterios
por seguir:
Hay que establecer políticas de congelación de código
Todos los requisitos han de estar cerrados
Se deben realizar evaluaciones de métricas de riesgos
El nivel de calidad (basado en el último ciclo de pruebas) debe cumplir con los criterios
acordados. Hay que asegurar la calidad de las aplicaciones del software antes de
pasarlas a producción, ya que ese es el momento en el que es más costoso encontrar
un defecto.
Deben existir estrategias para mitigar los riesgos posteriores a la puesta en producción.
Para esto, se debe contar con un plan que ayude a abordar los riesgos que puedan surgir
en la producción como: mejoras, solicitudes de cambios e incidentes. Es necesaria una
integración entre la gestión del cambio, los requisitos que genera ésta y el aseguramiento
de la calidad.
Planificación
En la planificación se establece un marco general en el que se fijan las fechas para las
actividades que se realizarán, debe ser consensuada y aprobada por la entidad y el
proveedor.
Pruebas o Testing
Una vez el software es implementado, se envía a control de calidad para las pruebas
estándares de aceptación, se revisa para verificar que cumple con los requerimientos y que
funciona correctamente. Durante esta fase, se documenta el proceso completo para tener
en el futuro una base de conocimientos. Después de la verificación final se deben actualizar
los estándares de prueba para adaptarlos al nuevo software.
Mejor práctica: Para garantizar el nivel de calidad del sistema que se desplegará, se deben
realizar las pruebas necesarias y documentarlas de forma adecuada.
Archivos de configuración
Informes de las pruebas realizadas
Gestión de cambios
El principal objetivo de esta gestión es la evaluación y planificación del proceso de cambio
para asegurar que se haga de la forma más eficiente, siguiendo los procedimientos
establecidos y asegurando en todo momento la calidad y continuidad del servicio de TI:
Gestión de la configuración
Se denomina gestión de la configuración al conjunto de procesos destinados a asegurar la
validez de todo producto obtenido durante cualquiera de las etapas del desarrollo de un
sistema de información, a través del estricto control de los cambios. Estos dos elementos,
control de cambios y control de versiones, facilitan también el mantenimiento de los sistemas
al proporcionar una imagen detallada del sistema en cada etapa del desarrollo. La gestión
de la configuración se realiza durante todas las fases del desarrollo tras la puesta en
producción, incluyendo el mantenimiento y control de cambios.
La gestión de la configuración se realiza desde que comienza el proyecto hasta que termina.
Involucra la recolección y el mantenimiento de toda la información sobre hardware y
software. Forma parte de un proceso más general de gestión de la calidad del software, de
hecho, la misma persona o grupo responsable de la calidad puede encargarse también de
este apartado. La finalidad de todo esto es tener controlados los cambios y tener la
información necesaria en el momento del mantenimiento.
Las pruebas de disponibilidad operativa son la última fase de las pruebas realizadas en el
sistema de producción. Se programan y conducen como parte del plan de puesta en
producción. Se ejecutan después de que se hayan completado el resto de actividades y
antes de decidir si se lleva a producción o no.
Las pruebas de disponibilidad operativa aseguran que el sistema que vamos a entregar
tiene cargados los datos de producción apropiados, que está listo para comunicarse con los
sistemas externos requeridos y para ejecutar los procesos por lotes, mientras cumple con
cualquier requisito de seguridad y de conformidad.
Esta etapa de pruebas es la última comprobación operativa del sistema de producción, para
verificar su disponibilidad antes del punto en el que el sistema se ponga en marcha. Esta
etapa debería formar parte del plan de implementación del proyecto.
Los elementos clave de las pruebas de disponibilidad operativa son los siguientes:
Mejor práctica: Para garantizar el nivel de calidad del sistema que se desplegará, las
entidades deben realizar las actividades de forma planeada y concertada con el personal
de producción.
Elemento transversal – documentación: La documentación o entregables que debe
producir la gestión de la puesta en producción se trata de:
Mejor práctica: Para garantizar el nivel de calidad del sistema que se desplegará, las
entidades deben tener personal experto en los procesos de pruebas de aceptación y de
puesta en producción.
Gestor de la Configuración
Es el responsable de la gestión de la configuración. Entre sus principales funciones están:
Ejecutar el proceso de despliegue de las aplicaciones.
Gestor de Cambios
Es el responsable de la gestión de los cambios. Entre sus principales funciones están:
Planear y presidir las reuniones del Comité de cambios (CAB) y el Comité de cambios
de emergencia (ECAB).
Autorizar o rechazar el cambio.
Hacer seguimiento a cada cambio registrado.
Resolver los conflictos sobre los cuales no haya acuerdo en el comité.
Revisar y confirmar el resultado de las solicitudes de cambio implementadas.
Revisar cambios pendientes o en trámite.
Participar en la negociación de un nuevo alcance para los cambios no satisfactorios.
Analista de cambios
Es el encargado analizar las solicitudes de cambio, así como de asegurar la debida
documentación que soporta cada una de ellas, para su respectivo seguimiento hasta el
cierre. Entre sus principales funciones están:
Realizar seguimiento a cada cambio registrado.
Validar que las especificaciones técnicas y funcionales correspondan al alcance del
cambio, además de revisar sus respectivas aprobaciones funcionales o técnicas.
Asistir a las reuniones del Comité de cambios (CAB) y del Comité de cambios de
emergencia (ECAB).
Realizar el seguimiento al cambio desde el registro de la solicitud, la verificación de
la completitud y la coherencia de la misma.
Evaluar el impacto de la solicitud de cambio, validar la priorización y categorización.
Líder funcional
Entre sus principales tareas están:
Registrar la solicitud de cambio en la herramienta establecida por el proceso.
Avalar el trámite de la solicitud de cambio.
Dar su concepto en el Comité de cambios (CAB) o el Comité de cambios de emergencia
(ECAB) para evaluar, aprobar y priorizar las solicitudes que impacten los servicios de TI.
Emitir su concepto para aprobar la implementación en producción de la solicitud de
cambio así como recomendar mejoras, durante la reunión del CAB o el ECAB.
Asegurar el monitoreo de la construcción, pruebas e implementación de las solicitudes
de cambio.
Garantizar el registro del resultado de las pruebas que soportan la solicitud de cambio.
Arquitecto de software
Al momento de implantar el sistema en el ambiente productivo, muchas veces es necesario
realizar ajustes finos sobre el sistema, en particular una vez que el sistema ya está operando
en el ambiente de uso definitivo. La participación del arquitecto puede estar enfocada en
realizar ajustes finos de la aplicación, con el fin de lograr un funcionamiento óptimo de la
misma.
9 USO Y APROPIACION
Las actividades que se desarrollan para este propósito se deben orientar a mostrar que los
procesos tecnificados, mediante el desarrollo del sistema de información, mejorarán el
servicio a los usuarios y al cliente interno, y que sin dudas apoyan el desarrollo y buen
desempeño de los funcionarios que harán uso de él.
Se debe tener claro que “Uso y Apropiación” no es una de las etapas finales del ciclo de
desarrollo de sistemas de información, de hecho, durante todo el ciclo se deben contemplar
aspectos encaminados a mejorar la usabilidad, de forma que el funcionario se sienta
cómodo y disminuya la resistencia al cambio, tal como se muestra en la siguiente figura:
Figura 69. Aspectos sobre uso y apropiación en las etapas del ciclo de desarrollo. Fuente:
Corporación Colombia Digital -CCD.
En cada etapa se generan insumos para facilitar el uso y apropiación o para desarrollar las
actividades relacionadas. Sin embargo, desde las etapas iniciales se debe identificar e
involucrar al personal clave para el desarrollo y uso del sistema, este grupo tendrá diferentes
roles y participación para lograr el éxito. Acá se habla no solo de los patrocinadores,
directivas, jefes de área, sino también de los usuarios conocedores del negocio y
promotores a futuro de los beneficios que se obtendrán con el desarrollo; y, por supuesto,
la contraparte que en este caso es el proveedor.
Así mismo, un insumo relevante para la etapa de uso y apropiación es la documentación del
sistema, por lo tanto como parte de la codificación debe exigirse que los manuales de
usuario, técnico y de operación estén debidamente desarrollados y actualizados.
La etapa de pruebas puede constituirse como la primera interacción de los usuarios finales
con el nuevo sistema, por lo tanto es primordial la participación en la definición de los casos
de pruebas y en la ejecución misma, procurando que este momento de verdad se desarrolle
de forma satisfactoria. Acá los usuarios tendrán la oportunidad de verificar las bondades del
sistema y proponer mejoras que faciliten su uso y adopción.
Mejor práctica: Puesto que la totalidad de los usuarios finales no podrá participar en las
pruebas, se debe seleccionar los usuarios clave, que sirvan de líderes y formadores hacia
los demás funcionarios que interactuarán directamente con el nuevo desarrollo y tengan
influencia positiva.
Con estos insumos generados en cada etapa del ciclo de desarrollo del sistema de
información, no se parte de cero, sino que se tiene ya un camino abonado para que el uso
y apropiación del nuevo sistema se realice de una forma más fácil y efectiva.
A su vez, con el cambio que se busca en la entidad y como producto propio de las
actividades de uso y apropiación, se obtendrá: una matriz de interesados que definirá
principalmente el público objetivo y su rol; unos planes de sensibilización, capacitación y
transferencia de conocimiento, que como se muestra más adelante, constituyen los ejes
fundamentales para este proceso; y la identificación de oportunidades de mejora como
insumo para el mantenimiento del nuevo sistema. Vea la siguiente figura:
Figura 70. Principales productos del componente de uso y apropiación. Fuente: Corporación
Colombia Digital - CCD.
Mejor práctica: Como en todo proceso el seguimiento a los indicadores permitirá que se
tenga un mejoramiento continuo, no obstante se debe tener claro que los indicadores que
se definan sean medibles y cuantificables, y que se debe establecer el mecanismo periódico
para su revisión.
Figura 71. Ejes fundamentales para el uso y apropiación. Fuente: Corporación Colombia Digital -
CCD.
Es importante tener presente que hay diferentes tipos de usuarios, los encargados de
administrar, implementar, operar, revisar y evaluar; y los usuarios funcionales propiamente
dichos, que a su vez tienen un nivel de entendimiento o experiencia diverso. Puede haber
usuarios principiantes, intermedios y avanzados, por ello es importante tener un tipo de
contenido adecuado para cada tipo y para cada nivel.
Mejor práctica: El éxito de la interacción con cada usuario dependerá de la certeza de los
contenidos que se manejen según el tipo y nivel; por lo cual los planes de sensibilización y
capacitación deben estar acordes con dicho nivel, con su lenguaje, capacidades y
expectativas.
Elemento transversal – Riesgos: Bajo impacto del plan de sensibilización. Este riesgo se
materializa cuando no se cubre un porcentaje significativo de la población objetivo con el
plan de sensibilización.
Mejor práctica: Para lograr la mayor participación, se deben coordinar las actividades de
sensibilización con las áreas de gestión humana y comunicaciones de la entidad, puesto
que conocen la disponibilidad de los funcionarios para la asistencia a las sesiones que se
programen, lo que evita que se crucen con otras actividades de la entidad; así mismo tienen
claras las épocas de vacaciones que comúnmente se solicitan, con lo que se eligen fechas
distintas para asegurar una mayor cobertura y eficacia del proceso.
Figura 72. Mecanismo de desarrollo del plan de sensibilización. Fuente: Corporación Colombia
Digital - CCD.
La figura anterior indica que una vez considerados estos elementos, el mecanismo para el
desarrollo del plan de sensibilización debe seguir unas actividades de:
a) Planeación: el plan se materializa en un documento cuya estructura incluirá un propósito,
un alcance, unos beneficios, la estrategia y las recomendaciones
b) Construcción: consiste en el diseño, elaboración y preparación del material que se haya
definido en la estrategia
c) Ejecución: es la publicación del material, envío de comunicaciones o realización de las
conferencias según la estrategia y acorde con el calendario de ejecución.
a) Planeación:
Consiste en la validación del enfoque, conformación del equipo de trabajo, estudio de los
materiales que se utilizarán, costos, identificación de medios de comunicación, definición de
los temas que se desarrollarán y preparación del plan de trabajo. Se establece:
Tema
Grupo objetivo
Canal o medio de divulgación
Periodicidad de publicación
Textos y material de apoyo para la campaña
Un modelo de la estructura del documento del plan de sensibilización puede ser el que se
presenta en la siguiente tabla:
Como aquí la información es el elemento clave, no se puede dejar de lado el contenido, los
canales de distribuciones disponibles y potenciales, la periodicidad con que deba publicarse
la información y la audiencia a quien va dirigida cada comunicación. Para ello hay que tener
en cuenta:
Mejor práctica: Con el fin de lograr la mayor cobertura posible, se debe considerar el uso
de plataformas o escenarios disponibles para llegar a los funcionarios que se encuentren
fuera de las sedes o ciudades principales en las que tiene presencia la entidad. La
tecnología ofrece espacios de teleconferencia o telepresencia, que pueden ser
aprovechados para estos propósitos.
b) Construcción:
Esta fase del plan incluye la creación de los materiales para la sensibilización. Para el
desarrollo se deben utilizar los medios de comunicación disponibles en la entidad como:
Carteleras – ubicadas al ingreso, recepción u otros sitios estratégicos.
c) Ejecución:
Esta fase incluye la publicación de los materiales para la sensibilización, la cual debe
realizarse acorde con el calendario de ejecución que se haya construido.
Mejor práctica: El plan debe contar con todos los elementos de planeación, ejecución,
medición y gerencia que les permitan a las personas apropiar el nuevo desarrollo y
evidenciar los resultados en la prestación de un mejor servicio y en el cumplimiento de la
misión institucional.
La siguiente figura ilustra los elementos que se deben tener en cuenta en la construcción
del plan:
Figura 73. Elementos del plan de capacitación. Fuente: Corporación Colombia Digital - CCD.
Propósito.
Describe las razones institucionales, las motivaciones y las transformaciones que la entidad
desea lograr con la capacitación. Debe estar orientada a lograr una gestión pública eficiente
y eficaz, con la prestación de un servicio confiable, mediante el mejoramiento de
competencias laborales.
Debe asegurar que su desarrollo está alineado con las estrategias y políticas de la entidad,
basado en los siguientes principios:
Prevalencia del interés de la organización: Las políticas, los planes y los programas
responderán fundamentalmente a las necesidades de la organización.
Alcance
El alcance describe los objetivos específicos en términos de lo que se quiere lograr con los
empleados. Define el tipo de capacitación entre los que pueden ser:
Los tipos de capacitación pueden ser desarrollados a través de las siguientes modalidades:
Tanto en los tipos como en las modalidades, la capacitación puede darse en los
siguientes niveles:
Nivel avanzado: Se orienta a personal que requiere obtener una visión integral y profunda
sobre un área de actividad o un campo relacionado con esta. Su objeto es preparar cuadros
ocupacionales para el desempeño de tareas de mayor exigencia y responsabilidad dentro
de la empresa.
Herramientas y recursos
Comprende la planeación del recurso humano que participará en la capacitación, los
participantes, expositores, personal de apoyo y los profesionales involucrados. Incluye
definir los requerimientos del lugar donde se desarrollará la capacitación, pues debe contar
con un ambiente, mobiliario y recursos tecnológicos adecuados para una ejecución exitosa.
Especifica la documentación técnica que se utilizará durante la capacitación, el material que
será usado y entregado a los participantes. Se debe planificar el monto de los recursos de
inversión que se destinarán.
Lineamientos pedagógicos
La entidad debe establecer las orientaciones conceptuales, pedagógicas y temáticas del
plan de capacitación, con el fin de fortalecer las competencias de los participantes y la
capacidad técnica de las áreas que aportan a cada uno de los procesos, además de elevar
el nivel de compromiso de los empleados respecto con los planes, los programas y los
proyectos de la entidad.
Evaluación
La entidad debe definir y planificar todos los instrumentos necesarios para medir el plan, el
impacto de la formación y, sobre todo, los resultados organizacionales. También se deben
establecer los mecanismos de retroalimentación para generar posibles mejoras y los
criterios de evaluación de conocimiento aprendido, las competencias logradas, la
información presentada y la metodología usada.
uso y una mejor apropiación del desarrollo de software o del sistema de información. Los
indicadores y el seguimiento que se le haga a la estrategia de uso y apropiación del nuevo
software arrojarán los aspectos en los que será importante trabajar.
Tabla 46. Medición del nivel de satisfacción, adopción e impacto a través de indicadores. Fuente:
Corporación Colombia Digital - CCD.
10 MANTENIMIENTO
El personal
Estas son cinco características claves que incluyen las actividades de mantenimiento:
Mantener el control sobre el funcionamiento del software día a día
Mantener el control sobre la modificación
Perfeccionar las funciones existentes
Identificar amenazas a la seguridad
Prevenir el bajo rendimiento a niveles inaceptables
Mantenimiento correctivo
Aun habiendo superado las etapas de prueba y verificación, el software puede contener
defectos, por lo que este tipo de mantenimiento tiene como objetivo encontrar y eliminar
esos defectos que pueden darse por:
Procesamiento: salidas incorrectas en un programa
Rendimiento: demasiado tiempo de respuesta
Programación: diseño inconsistente de un sistema
Documentación: diferencias entre la funcionalidad de un programa y el manual de
usuario
En la siguiente figura se puede ver que la mayor parte de los defectos se encuentran en la
fase de levantamiento de los requisitos, luego en la codificación y por último en el diseño:
Figura 76. Origen de los defectos de software. Fuente: Grupo Kybele, 2012.
Mantenimiento adaptativo
Este tipo de mantenimiento responde a una situación cuando se produce algún cambio en
el software o hardware del entorno en el que se ejecuta el sistema. Estos cambios pueden
deberse a:
Cambio en el sistema operativo
Cambio del tipo de arquitectura en la que se ejecuta
Entorno de desarrollo del software (nuevos elementos y herramientas)
Mejor práctica: Es necesario realizar pruebas para validar los cambios. Las pruebas
verificarán que no se han introducido otros errores, incluso el cambio más pequeño puede
inducir defectos que reduzcan la calidad y la fiabilidad del software.
Mantenimiento perfectivo
Este tipo de mantenimiento está asociado con la modificación de un producto después de
la entrega para proporcionar mejoras para los usuarios, en la documentación del programa
y el rendimiento del software.
Mantenimiento preventivo
Modifica un producto de software después de la entrega para detectar fallas latentes antes
de que sean fallas operativas. De igual manera, el mantenimiento preventivo sirve para
mitigar o evitar las consecuencias de las fallas, para ello se debe:
Comprobar la validez de los datos de entrada
Reestructurar el software para mejorar la legibilidad y su futuro mantenimiento
Adicionar comentarios
Mejor práctica: Para que un mantenimiento sea exitoso se debe comprender el software y
los cambios que se realizarán, conocer la funcionalidad, el objetivo, la estructura interna y
los requisitos.
Mejor práctica: Las entidades deben definir desde el inicio del proyecto, quién es el
responsable de realizar el mantenimiento del software, por lo general los equipos que
desarrollan no son los que modifican.
Programa de comprensión
Los programadores gastan un tiempo considerable leyendo y entendiendo los programas,
con el fin de poner en práctica los cambios. Los navegadores de código son herramientas
clave para facilitar esa comprensión pues organizan y presentan el código fuente.
Reingeniería
Es el examen y alteración de software para reconstituirlo en una nueva versión; incluye la
ejecución posterior de esa nueva versión. A menudo se realiza para reemplazar el antiguo
software y no para mejorar la capacidad. Refactoring es una técnica de reingeniería que
tiene como objetivo la reorganización de un programa sin cambiar su comportamiento, se
trata de mejorar su estructura y su mantenibilidad y puede ser utilizada para las
modificaciones de menor importancia.
Ingeniería inversa
Es el proceso de análisis de software para identificar sus componentes e interrelaciones, de
tal manera que se puedan crear representaciones en otra forma o en mayores niveles de
abstracción. La ingeniería inversa es pasiva, no cambia el software ni da lugar a uno nuevo.
Migración
Retiro
Una vez que el software ha alcanzado el final de su vida útil, debe ser retirado; sin embargo,
se debe analizar esta decisión. Este análisis debe ser incluido en el plan de retiro, que cubre
los requisitos, el impacto, la sustitución, el horario y el esfuerzo, lo que conlleva una serie
de actividades similares a la migración.
10.2.3 Herramientas
Analizadores estáticos: permiten tener una visión general y resumir los contenidos del
programa.
Analizadores dinámicos: le permiten al técnico de mantenimiento trazar la ruta de
ejecución de un programa.
Analizadores de flujo de datos: le permiten al técnico de mantenimiento rastrear todos
los posibles flujos de datos de un programa.
Analizadores de dependencia: ayudan a los técnicos de mantenimiento a analizar y
comprender las interrelaciones entre los componentes de un programa.
11 RECOMENDACIONES
Identificar las mejores prácticas y herramientas fue un trabajo complejo. Sin embargo, cómo
aprovechar esta oportunidad y garantizar el impacto potencial en las entidades son las
mayores preocupaciones que trae la etapa de implementación del contenido de este
documento. Es por esto que a continuación se proponen cinco objetivos principales para
esta segunda fase:
Dar a conocer a las entidades los resultados del diagnóstico hecho sobre la problemática
en los procesos de contratación de desarrollo de sistemas de información.
Presentar las herramientas y buenas prácticas que las entidades pueden implementar
para mejorar la probabilidad de éxito de los proyectos de desarrollo de software.
Asegurar la apropiación de los conceptos y criterios de selección necesarios para elegir
e implementar las mejores prácticas y herramientas según el contexto particular de cada
proyecto y entidad.
Promover el uso del contenido de este documento en todo el Estado.
Identificar las oportunidades de mejora y las herramientas que se entregan en este
documento, con el fin de garantizar la evolución continua de la propuesta.
Para cumplir con el desarrollo de los cinco objetivos anteriormente planteados, se sugieren
las siguientes estrategias:
12 REFERENCIAS
Wiegers, K., & Beatty, J. (2013). Software Requierements - Developer best practices. Microsoft Press.