Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
DESARROLLO DE LA SOLUCIÓN DE SOFTWARE PARA APOYAR EL
PROCESO DE GESTIÓN DE NÓMINA DE CONTRATISTAS EN LA
UNIVERSIDAD DISTRITAL, SIGUIENDO LOS LINEAMIENTOS DEL
PROCESO DE DESARROLLO SCRUM EN SU FASE IMPLEMENTACIÓN,
REVISIÓN Y LANZAMIENTO.
AUTORES:
DIRECTOR:
ING. ALEJANDRO PAOLO DAZA
2
CONTENIDO
CAPÍTULO 1. INTRODUCCIÓN..........................................................................................................6
CAPÍTULO 2. PLANTEAMIENTO DEL PROBLEMA.......................................................................8
CAPÍTULO 3. OBJETIVOS.................................................................................................................10
3.1. Objetivo general.............................................................................................................................10
3.2. Objetivos específicos.................................................................................................................10
CAPÍTULO 4. JUSTIFICACIÓN.........................................................................................................11
CAPÍTULO 5. MARCO TEÓRICO......................................................................................................12
5.1. Metodología de desarrollo ágil SCRUM....................................................................................12
5.2. REST API...................................................................................................................................22
5.3. Beego..........................................................................................................................................24
5.4. Programación lógica y prolog....................................................................................................25
5.5. Golog..........................................................................................................................................26
5.6. Reglamentación para nómina de contratistas dentro de la Universidad Distrital......................26
5.7 Reglamentación para cálculo de descuentos sobre pago a contratistas.......................................29
CAPÍTULO 6. ALCANCES Y LIMITACIONES................................................................................31
6.1. Alcances.....................................................................................................................................31
6.2. Limitaciones...............................................................................................................................31
CAPÍTULO 7. METODOLOGÍA.........................................................................................................33
CAPÍTULO 8. RECURSOS..................................................................................................................40
CAPÍTULO 9. PRESUPUESTO...........................................................................................................41
CAPÍTULO 10. CRONOGRAMA........................................................................................................43
CAPÍTULO 11. DESARROLLO..........................................................................................................44
11.1. Modelo de negocio actual........................................................................................................44
11.2. Diagrama de arquitectura de alto nivel....................................................................................45
11.3. Diagrama de procesos..............................................................................................................46
11.4. Arquitectura de datos...............................................................................................................47
11.5. Modelo de datos.......................................................................................................................49
11.6. Generalización de la liquidación de la nómina........................................................................56
11.7. Interfaces de programación de aplicaciones (api)....................................................................58
11. 8 Manejo de reglas utilizando Golog...........................................................................................59
11.9 Software.....................................................................................................................................63
CAPÍTULO 12. RESULTADOS Y DISCUSIÓN.................................................................................69
CAPÍTULO 13. TRABAJOS FUTUROS.............................................................................................71
CAPÍTULO 14. CONCLUSIONES......................................................................................................73
CAPÍTULO 15. REFERENCIAS..........................................................................................................75
3
Índice de Figuras
4
Índice de Tablas
5
CAPÍTULO 1. INTRODUCCIÓN
Para tal fin, la Oficina Asesora de Sistemas (OAS) emprendió un proceso de mejora y
unificación de la gestión de nómina por medio del proyecto “Solución de software para
apoyar el proceso de gestión de nómina en la Universidad Distrital, siguiendo los
lineamientos del proceso de desarrollo SCRUM en su fase de inicio, planificación y
estimación e implementación”, donde reunió estudiantes de últimos semestres del proyecto
curricular de Ingeniería de Sistemas de la Universidad Distrital. Este grupo de alumnos
realizó subproyectos encargados de procesos de gestión de requerimientos, arquitectura y
desarrollo de software.
6
realizados en los subproyectos anteriores y será apoyado por tecnologías libres y por el proceso
de desarrollo SCRUM.
7
CAPÍTULO 2. PLANTEAMIENTO DEL PROBLEMA
Para llevar a cabo diversas ideas y lograr determinados fines, las organizaciones requieren de
talento humano que brinde sus habilidades y conocimientos para volver sus proyectos
realidad. Así, la prestación de estos servicios a la organización se verá remunerada a sus
trabajadores, generando un sistema de nómina que, entre más robusta sea la organización,
más complejo será el proceso de realizar los pagos. Es por esto que surge una necesidad y un
problema a solucionar a nivel global y nacional, donde se tenga un sistema que reúna de
manera eficaz y ágil la información necesaria para la cancelación de sueldos y salarios. De la
misma manera, y a nivel de la Universidad Distrital, el proceso de liquidación de cada
funcionario está regido por diferentes leyes, acuerdos y resoluciones, lo que implica que el
sistema de nómina deba tener en cuenta diferentes factores para realizar este proceso no solo
de manera ágil sino también correcta.
Dado que la Universidad Distrital es una organización autónoma que cuenta con diversos
procesos contractuales, la Oficina Asesora de Sistemas detectó que en ella comenzaban a
surgir inconvenientes en la parametrización y liquidación de nómina, los cuales parecían
originarse gracias a la robustez del proceso de vinculación de los funcionarios. Dicha
vinculación es de diferentes tipos y han sido trabajados de manera independiente, por lo que
se ha hecho más difícil su tratamiento y control a la hora de realizar el proceso de liquidación.
Dada esta necesidad, se acudió a diversas herramientas tecnológicas con el fin de ayudar en
dicha labor, pero las utilizadas actualmente son obsoletas y no soportan la liquidación a
personas naturales que tienen algún tipo de contrato por prestación de servicios; además,
dichas herramientas cuentan con una baja interoperabilidad con otros componentes de
software proveedores o destinatarios necesarios para el correcto funcionamiento del proceso.
Esta inexistente interoperabilidad obliga a que se deban realizar varias actividades de
validación para generar los respectivos informes, debido a que las dependencias de la
Universidad Distrital manejan diferentes tipos de información relacionada a la nómina y
necesaria para esta importante tarea. Además, existen varios parámetros que son aplicables
para cualquier tipo de nómina y al ser trabajados como actualmente se hace se generan
redundancias, pues cada dependencia los maneja independientemente, y estos resultan ser
iguales para las nóminas de la Universidad Distrital.
8
Estos inconvenientes generan poca confiabilidad e integridad en los datos, además de
duplicidad en los mismos. Igualmente, las herramientas utilizadas dan vía libre a demoras
innecesarias en la liquidación y el pago de sueldos a los funcionarios además de un manejo
incorrecto de la información financiera. Todo esto afecta los procesos de liquidación y pago y
a las personas naturales con vinculación contractual con la Universidad Distrital, como lo son
los funcionarios, docentes y contratistas, o aquellos a cargo de procesos de liquidación y pago
en áreas de recursos humanos y financieros.
9
CAPÍTULO 3. OBJETIVOS
Desarrollar un software modular, integral y escalable que permita apoyar los procesos
relacionados a la gestión de nóminas de los contratistas vinculados en la Universidad
Distrital Francisco José de Caldas, siguiendo los lineamientos propios del proceso de
desarrollo Scrum.
● Desarrollar entregas parciales y funcionales del producto las cuales sean realizadas
según su prioridad y permitan evidenciar avances concretos en la realización de la
solución de software final, para cumplir así con los objetivos de cada una de las
iteraciones que componen el proceso de desarrollo SCRUM
● Aplicar pruebas a cada una de las entregas parciales desarrolladas a través del
proceso, determinando si se están cumpliendo o no los requerimientos y
especificaciones determinadas en los procesos de análisis y diseño, para realizar las
correcciones pertinentes a tiempo y así obtener un producto de software que esté
acorde a las peticiones de usuarios e interesados en el modelo de negocio de sistema
de nómina de contratistas.
10
CAPÍTULO 4. JUSTIFICACIÓN
Es por esa razón que la Universidad Distrital prioriza los procesos de sistematización de
diferentes nóminas para generar una interoperabilidad entre los diferentes componentes de
software que intervienen con la liquidación de contratistas, así mismo, el desarrollo de dicho
sistema tiene en cuenta la documentación generada anteriormente por los arquitectos de
software.
Durante el desarrollo se tiene enfoque en fortalecer las características que los arquitectos han
especificado, como adaptabilidad dependiendo de los cambios legales y normativos externos
o internos, alta calidad de usabilidad, fiabilidad y que tenga documentación adecuada para
facilitar el futuro mantenimiento e integración.
11
CAPÍTULO 5. MARCO TEÓRICO
A mediados de los 80, Hirotaka Takeuchi y Nonaka Ikujiro definieron una estrategia de
desarrollo de productos flexibles y todo incluido en el que el equipo de desarrollo trabajara
como una unidad para alcanzar un objetivo común. Describieron un enfoque innovador para
el desarrollo de productos que ellos llamaron un enfoque holístico o "rugby", "donde un
equipo intenta llegar hasta el final como una unidad, pasando el balón de atrás hacia
adelante." Ellos basaron su enfoque en la fabricación de los estudios de casos de diversas
industrias. Takeuchi y Nonaka propusieron que el desarrollo de productos no debería ser
como una carrera de relevos secuencial, sino que más bien debería ser análogo al partido de
rugby en el que el equipo trabaja en conjunto, pasando la pelota hacia atrás y adelante
mientras se mueven como una unidad por el campo [2].
Scrum es una de las metodologías ágiles más populares diseñada para entregar un valor
significativo de manera rápida y durante el transcurso del proyecto. De la misma manera,
asegura transparencia en la comunicación y crea un ambiente de responsabilidad colectivo y
progreso continuo. Igualmente, Scrum está diseñado de tal manera que soporta el desarrollo
de productos y servicios para todo tipo de industrias, sin importar su complejidad.
Una de las claves de la metodología Scrum radica en uso de equipos multi-funcionales, auto-
organizados y empoderados que dividen su trabajo en ciclos de trabajo cortos llamados
12
Sprints.
13
El ciclo de Scrum comienza con una reunión de los interesados, durante la cual se crea la
visión del proyecto. Luego el Product Owner crea un Product Backlog priorizado que
contiene una lista de requerimientos de negocio y del proyecto priorizados escritos en forma
de historias de usuario. Cada Sprint comienza con una reunión de planificación de Sprint
donde se consideran las historias de usuario con mayor prioridad, para que sean incluidas en
él. Generalmente, un Sprint dura entre una a seis semanas y consiste en el Scrum Team
trabajando para crear entregables o incrementos sobre el producto.
Durante el Sprint se conducen reuniones diarias cortas y muy centradas, donde los miembros
del equipo discuten el progreso diario. Hacia el final del Sprint, se realiza una reunión de
revisión del Sprint durante la cual el Product Owner y los interesados más importantes
pueden ver una demostración de los entregables. El Product Owner acepta los entregables
solamente si estos cumplen con los criterios preestablecidos. El ciclo del Sprint termina con
una reunión de retrospectiva del Sprint, donde el equipo discute maneras de mejorar los
procesos y el rendimiento a medida que se avanza al siguiente Sprint.
14
5.1.1 Roles dentro de la metodología SCRUM
· Scrum Master: El maestro Scrum ayuda al equipo, al dueño del producto y a la organización
a aprender y aplicar Scrum, esto con el fin de obtener valor de negocio. [5] Debe tenerse en
cuenta que él no es el jefe del proyecto ni tampoco del equipo. Su misión principal radica en
servir al equipo en el uso de la metodología ágil. Lo ideal es que sea un rol de una sola
persona y que se dedique 100% a ello; sin embargo, pueden existir equipos pequeños donde
un miembro de este ejerza el rol, excepto el dueño del producto, ya que al hacerlo él se pierde
el valor de auto-gestión que caracteriza a SCRUM.
Puede distinguirse, entonces, de estos roles, que no existe el de jefe de proyecto en Scrum. La
metodología argumenta que no es necesario ya que las responsabilidades de dicho rol están
divididas entre los tres anteriores. De igual manera, y a pesar de no ser parte del proceso
Scrum, existen otros roles como lo son el de los usuarios (destinatarios finales del producto),
los interesados (a quienes el proyecto les implicará algún tipo de beneficio y participan en
15
los
16
Sprint para la revisión de los productos en ellos entregados) y los managers (que toman las
decisiones finales y en el levantamiento de requerimientos).
1. Inicio del proyecto: Comprende el proceso que fija las bases necesarias para dar inicio al
proyecto. Como se define en el SBOK (Scrum Body of Knowledge), esta fase de inicio es
aplicable para portafolios, programas y/o proyectos pertenecientes a cualquier industria, así
como para proyectos con cualquier tipo de complejidad. Dentro del inicio del proyecto se
identifican seis actividades principales:
- Crear la visión del proyecto: En este proceso, se revisa el proyecto de estudio de negocio
para crear una declaración de visión del proyecto que inspire y proporcione un enfoque claro
para el mismo. Para realizar esta visión, que es transversal al proyecto, se utilizan aspectos
inherentes al negocio como lo son su misión, visión y un estudio de mercado. Igualmente, en
este proceso participan el Producto Owner, el Scrum Master y los interesados y se realiza por
medio de reuniones que permiten identificar el contexto del negocio, los requerimientos y las
expectativas de negocio. También suelen utilizarse matrices DOFA y análisis GAP para
identificar fortaleza, debilidades, amenazas y oportunidades y realizar también una
comparación del estado actual del proyecto y el estado deseado del mismo. [6]
17
- Formación del equipo Scrum: Se identifican los miembros del equipo Scrum.
Normalmente, el encargado de esta responsabilidad es el Product Owner, pero también puede
hacerlo junto con el Scrum Master. Los miembros ideales de este equipo son independientes,
auto- motivados, responsables y colaborativos. Suele utilizarse ayuda del departamento de
recursos humanos para conocer la disponibilidad y compromiso del personal. Igualmente, se
tienen en cuenta los costos del personal y del entrenamiento, ya que no todos los miembros
del equipo poseen las habilidades requeridas o el conocimiento para las tareas que les serán
asignadas. Por esto, el Product Owner debe evaluar las necesidades de entrenamiento de los
miembros y proveerles capacitaciones donde puedan adquirirlas. A parte de elegir al equipo
Scrum, es importante elegir personal de respaldo quienes pueden reemplazar a alguien en el
equipo Scrum, dada alguna eventualidad. [7]
- Desarrollar Epics: En este proceso la visión del proyecto es la base para definir los Epics,
así como reuniones con los usuarios para discutir cuáles Epics son apropiados. Los Epics, o
épicas, se redactan al inicio del proyecto cuando las historias de usuario son funcionalidades
de alto nivel por lo que no son más que historias de usuario amplias sin refinar. Se incluyen
en la lista priorizada del Product Backlog para ser terminadas y se convierten posteriormente
en historias de usuario más pequeñas. La definición de épicas las realiza el equipo Scrum por
medio de reuniones de grupo de usuario donde intervienen en ellas los interesados más
relevantes y en ella se aclaran requerimientos para no realizar doble trabajo y esfuerzo;
también se utilizan talleres de historia de usuario y entrevistas al usuario o cliente.
- Crear un Product Backlog priorizado: En este proceso se refinan los Epics para crear una
lista priorizada de pendientes del producto del proyecto. Para ello, se utilizan métodos de
priorización de las historias de usuarios como el esquema de priorización MoSCoW, que
utiliza etiquetas en orden de prioridad decreciente que marcan las historias de usuario con
características de “debería tener” y “gustaría que tuviera” para medir su importancia.
También se utiliza la comparación por pares, donde se lista las historias de usuario y se
comparan entre sí, eligiendo la que sea más importante entre las dos. Todo esto permitirá
entonces que se obtenga un Product Backlog priorizado. [8]
18
entregar
19
conjuntos de funcionalidad o productos utilizables. Para ello, el equipo debe tener clara la
visión general de los lanzamientos y el calendario de entrega del producto que se está
haciendo para así cumplir con las expectativas.
- Creación de tareas: El equipo Scrum se reúne para planear el trabajo que se realizará en el
sprint. Para ello se utilizan las historias de usuario, las cuales pasarán a hacer parte de la lista
priorizada de pendientes del Sprint. En estas reuniones debe estar presente el Product Owner,
quien aclarará todas las dudas que se presenten sobre las historias y procurará que la reunión
no se extienda en temas que no le correspondan. El Product Owner presenta qué historias de
usuario estarían bien que formaran parte del sprint. Así, el equipo determina cuántas puede
realizar, llegando a un consenso entre ambas partes. Luego, el equipo determina cómo
convertir
20
las historias de usuario en un incremento del producto al dividirlo en tareas, definiendo luego
los entregables.
- Estimación de tareas: Se realizan reuniones para estimar el trabajo necesario para completar
una tarea, así como estimar el trabajo laboral y demás recursos para las tareas del sprint. Esto
permite que el equipo cuente con una perspectiva de las historias de usuario y los
requerimientos para así calcular el esfuerzo necesario; este proceso suele conocerse como las
reuniones de planificación de sprint y utilizan mucho el juicio de expertos y cálculos
paramétricos para las estimaciones.
3. Implementación: Está relacionada con la ejecución de las tareas que permiten la creación del
producto. De esta manera, incluye tres procesos principales:
- Creación de entregables: En este proceso se utiliza el tablero Scrum (Figura 1), donde se
realiza el seguimiento de Sprint según los estados de las tareas del mismo (por hacer, en
progreso, en revisión o prueba y terminado); puede ser un tablero físico o utilizarse una
herramienta electrónica para simularlo. Aquí se utilizan herramientas de software para
programar, recopilar información y para la distribución, todo esto con el fin de dar
seguimiento a las tareas asignadas y a que éstas se realicen de la manera más ágil posible.
Igualmente, es necesaria la experiencia del equipo Scrum para comprender las historias y las
tareas de pendientes del sprint para así poder crear entregables finales.
21
Figura 1: Tablero Scrum.
Fuente: SCRUMstudy™ (2018), A Guide to the Scrum Body of Knowledge (SBOK™ Guide).
Para los proyectos de software existen dos herramientas de desarrollo que Scrum considera se
pueden ser utilizadas y pueden llegar a facilitar este proceso:
22
reunión se responde a los interrogantes: ¿qué terminé ayer?, ¿qué terminaré hoy? ¿qué
problemas tuve? También suele utilizarse la videoconferencia para las reuniones.
4. Revisión y retrospectiva
En esta fase se desarrollan actividades de corrección de errores de los entregables y del trabajo
desarrollado hasta el momento del desarrollo de esta.
- Convocar Scrum de Scrums: Los representantes del equipo Scrum convocan una reunión de
Scrum of Scrums (SoS), en la cual los representantes del equipo se reúnen para compartir el
estado de los productos y tareas de los grupos correspondientes, se realizan de acuerdo a
intervalos de tiempo definidos al principio del proyecto o cuando los representantes o
miembros del equipo así lo requieran. Las actualizaciones de cada equipo serán presentadas a
la organización a través de cuatro preguntas básicas:
23
- Retrospectiva del sprint: Este proceso sirve para analizar retrospectivamente y determinar
cómo se ha llevado a cabo dicho Sprint para tener en cuenta buenas acciones o para evitar
errores los errores que se cometieron. Se debe documentar estas lecciones con el objetivo de
usarlas posteriormente y mantener el proceso en una constante mejora. Todos los miembros
del equipo asisten a la reunión, no es necesario que el propietario asista, se busca identificar
las buenas y malas prácticas y las mejoras que se deben implementar.
Para medir y contrastar el desempeño del sprint comparándolo con Sprints pasados, como lo
son el team velocity, que es el número de puntos de historia hechos durante el Sprint, el
porcentaje de puntos de historia que han sido terminados, en relación a los que se han llevado
a cabo; estimado de eficacia, porcentaje de discrepancia entre el tiempo previsto y el tiempo
verdadero que se ha utilizado en las tareas; el o los stakeholder(s) puede(n) solicitar una
retroalimentación que les permita establecer parámetros cualitativos o cuantitativos para
evidenciar el avance del proyecto y finalmente un estimado para la liberación del producto el
valor del negocio proporcionado en cada versión, así como el valor representado por el
progreso actual hacia una liberación. [12]
5. Lanzamiento
-Envío de entregables: En este proceso los Accept Deliverables se entregan o traslada a los
socios, clientes o usuarios pertinentes, un Working Deliverable Agreement, donde se hace un
cierre de negocio formal y se documenta la finalización con éxito del Sprint.
-Retrospectiva del proyecto: En este paso los socios y el equipo para identificar,
documentar y analizar las buenas y malas prácticas para utilizarlas y corregirlas en futuros
proyectos.
24
comparten sus avances y problemas con respecto al proyecto, lo que es esencial cuando se
25
necesita cambiar el producto constantemente debido a los requerimientos variables del
mismo. Esta metodología de desarrollo de software permite jerarquizar los requerimientos
(Project backlog) para planificarlos de acuerdo a iteraciones que contienen algunos de estos
requisitos (Sprint backlog), esto teniendo en cuenta una gráfica de proceso ideal con el que se
puede calcular retrasos y adelantos en el trabajo (Burndown char), para finalmente ejecutar
estas iteraciones (Sprints) [13]. Antes de ejecutar cada Sprint backlog, se deben definir los
cambios que ha tenido el proyecto, teniendo en cuenta los requerimientos iniciales, debido a
que no es recomendable ejecutar cambios cuando ya haya iniciado esta iteración. Es una
metodología que favorece el proyecto en gran medida debido a que, como fundamento
principal de esta, se sugiere la entrega del software con las nuevas funcionalidades
adicionadas en la última iteración o sprint, con lo cual se puede evidenciar los avances del
proyecto por parte del cliente. Es de aclarar que las iteraciones tienen un objetivo claro sobre
el cual debe ser posible medir el avance. El seguimiento exhaustivo del proceso de desarrollo
y de la mitología en general aumentará la probabilidad de asemejar el producto a lo
especificado en diseños posteriores.
REST es el acrónimo para Transferencia de Estado Representacional (por sus siglas en inglés
REpresentational State Transfer), es un estilo arquitectural para sistemas de hipermedia
distribuidos, fue presentado por primera vez por Roy Fielding en el año 2000, en su famosa
monografía.
REST es un estilo híbrido derivado de muchos de los estilos arquitecturales basados en red y
combinados con limitaciones adicionales que definen una interfaz de conexión uniforme.
[14]
26
Fielding sin utilizar HTTP o sin interactuar con la Web. Así como también es posible
diseñar una simple
27
interfaz XML+HTTP que no sigue los principios REST, y en cambio seguir un modelo RPC.
Cabe destacar que REST no es un estándar, ya que es tan solo un estilo de arquitectura.
Una REST API no debe depender de ningún protocolo de comunicación único, aunque el
éxito de su mapeo para un protocolo dado puede depender de la disponibilidad de los
metadatos, la elección de métodos, etc. En general, cualquier elemento de protocolo que
utiliza un URI (Uniform Resource Identifiers, en español Identificadores Uniformes de
Recursos) para su identificación deberá permitir cualquier esquema URI para ser utilizado
por el bien de la identificación.
Un REST API debe enfocar la mayor parte de su esfuerzo en la definición descriptiva del
tipo(s) de lo medio de comunicación utilizados para la representación de los recursos y la
conducción estado de la aplicación, o en la definición de los nombres de relaciones
extendidas y / o hipertexto habilitado de margen para tipos de papel estándar existente.
Cualquier esfuerzo que describe los métodos a utilizar en el URI de interés debe definirse por
completo dentro del ámbito de aplicación de las normas de tratamiento para un tipo de medio
(y, en la mayoría de los casos, ya definidos por los tipos de medios existentes). [16]
Una de las características clave de un servicio web REST es el uso explícito de los métodos
HTTP de una manera que sigue el protocolo tal como se define en el RFC 2616. HTTP GET,
por ejemplo, se define como un método de producción de datos que está destinado a ser
utilizado por una aplicación cliente para recuperar un recurso, para obtener los datos desde un
servidor web, o para ejecutar una consulta con la expectativa de que el servidor web buscará
y responder con un conjunto de recursos.
REST pide a los desarrolladores utilizar métodos HTTP de forma explícita y de una manera
que es consistente con la definición del protocolo. Este principio básico de diseño REST
28
establece una correspondencia uno-a-uno entre crear, leer, actualizar y eliminar (CRUD) las
operaciones y métodos HTTP. De acuerdo con este mapeo:
Para crear un recurso en el servidor, utilice la
POST. Para recuperar un recurso, utilice GET.
Para cambiar el estado de un recurso o para actualizarlo, utilizar PUT.
Para eliminar o borrar un recurso, utilice DELETE. [17]
5.3. Beego
Beego es un framework HTTṔ para desarrollo rápido de aplicaciones en GO. Puede utilizarse
para desarrollar de manera ágil APIs, aplicaciones web y servicios back-end. Es un
framework RESTful y tiene integrado a él características específicas de Go tales como
interfaces y estructuras embebidas.
Fuente: https://beego.me/docs/intro/0
Cabe resaltar que el más utilizado fue ORM, para manejo de base de datos Postgresql.
Igualmente, en la siguiente imagen se puede apreciar la lógica de ejecución de Beego. En
primera instancia, se escucha al puerto de la petición por medio del archivo main.go y a partir
29
de él se realiza el enrutamiento y el filtrado de parámetros (normalmente asociados a la ruta
solicitada). Igualmente cada una de estas rutas está asociada a un controlador, que suele ser
creado automáticamente por Beego y se encarga de comunicarse con los diferentes bloques
que gestionan la base de datos y hacen peticiones a la misma. Una vez hecha, regresa al
controlador la respuesta de la misma, en forma de JSON, disponible para ser utilizada en
cualquier tecnología front-end. [18]
Fuente: https://beego.me/docs/intro/
Prolog es un lenguaje de programación que fue creado en comienzos de 1970, ha sido elegido
por muchos programadores de aplicaciones de computación simbólica incluyendo algunos
como bases de datos relacionales, lógica matemática, soluciones de problemas matemáticas,
diseño de automatización, solución de ecuaciones simbólicas, análisis de estructuras
bioquímicas y muchas áreas de la inteligencia artificial.
30
puede inferir por otros especificados y también por controles específicos de información
suministrados por el programador u otro sistema. [19]
Los más simples tipos de declaraciones en Prolog son llamados hechos, estos son el significado
del estado o la relación que se mantiene entre objetos, un ejemplo es:
Padre (Abraham, Isaac)
Este hecho describe que Abraham es el padre de Isaac, o la relación padre entre los individuos
Abraham e Isaac, otro nombre para una relación es un predicado. [20]
5.5. Golog
Golog es una librería disponible para descargar en Github y de uso libre que es utilizada
como intérprete del lenguaje de programación de Prolog. Esto quiere decir que al ser
implementada, permite probar reglas y hechos escritos en sintaxis similar, no igual, a la de
usada por Prolog. En primera medida, se crea un objeto de tipo Machine que utiliza el método
Consult para probar la correcta sintaxis de las reglas. Una vez hecho esto, con ese mismo
objeto se prueban las reglas y hechos previamente cargados. Al realizar esto, se obtienen
resultados de las mismas, que son guardados a modo de arreglo dentro de Golang y puede
utilizarse para los propósitos que sean necesarios. De la misma manera, al ser de uso libre, se
pueden realizar modificaciones sobre las funciones, creando nuevas operaciones para ampliar
el intérprete. Estas funciones son programadas en Golang, por lo que se pueden realizar
diversos aportes a esta librería si se conoce el lenguaje.
Por medio de la resolución 003 del 15 de enero de 2016, el rector de la Universidad Distrital
reglamentó la contratación por prestación de servicios [21]. El primer aspecto que se tuvo en
cuenta dentro de la resolución consistió en los perfiles aptos para ser vinculados a la
Universidad mediante un contrato de prestación de servicios. Dentro de estos se encuentran:
· Perfil de servicios asistenciales: Corresponde a todas aquellas actividades de apoyo y
complementarias de tareas propias de otros perfiles. Suelen corresponder a actividades
manuales o tareas de simple ejecución. Algunos ejemplos son: secretariales, mensajería,
mantenimiento.
31
· Perfil de servicios técnicos y tecnológicos: Corresponde al desarrollo de procesos y
procedimientos de carácter operativo, relacionados con la aplicación de ciencia, tecnología y
gestión.
· Perfil de servicios profesionales: Agrupa actividades cuya naturaleza demanda
ejecución de conocimientos propios de los programas profesionales reconocidos por la ley
· Perfil de servicios profesionales especializados: Reúne aquellas actividades que por
su característica de especificidad requieren un grado de especialización complementario a los
programas profesionales.
· Perfil Asesor I: Reúne actividades de asesoría o consejería a las dependencias del
nivel directivo y asesor de la universidad, las cuales requieren alto grado de experticia.
· Perfil Asesor II: Agrupa actividades de asesoría o consejería a la rectoría de la
universidad, las cuales requieren alto grado de experticia y conocimiento profesional.
De esta manera, para cada uno de los perfiles anteriores se tienen requisitos mínimos para
llevar a cabo la celebración del contrato:
32
Asesor I Título en programa académico
profesional, título en programa académico
de especialización y experiencia
relacionada de mínimo 5 años.
33
· Los supervisores de los contratos de prestación de servicios han de verificar el
cumplimiento del objeto contractual, así como el pago de aportes al Sistema Integral de
Seguridad Social. Esto se hará de manera mensual y según los porcentajes que estipulan la
ley; de esta manera se autorizará el pago de los honorarios.
· El pago de los honorarios se hará luego de la aprobación del supervisor, donde él
realizará la revisión del informe del contratista y el cumplimiento de los trámites
administrativos y según el Manual de Supervisión e Interventoría de la Universidad Distrital.
· A todos los contratos se les debe adjuntar una póliza de seguro de cumplimiento a
favor de la entidad estala, donde se incluye la obligación del contratista de amparar el
cumplimiento de las obligaciones a su cargo.
· La escala de honorarios aquí presente contiene todos los impuestos, tasas y
contribuciones a que haya lugar.
· Para las profesiones reguladas legalmente, deberá adjuntarse tarjeta o matrícula
profesional
· Nadie puede celebrar, en condición de contratista, más de un contrato de prestación de
servicios profesionales con cargo al presupuesto de la Universidad Distrital.
· Dentro de esta resolución NO se tienen en cuenta los perfiles y honorarios por
prestación de servicios en los proyectos de extensión e investigación.
A las personas que cuenten con un vínculo contractual de tipo prestación de servicios se les
serán descontados cuatro conceptos: Retención de Industria y Comercio (ICA), Estampilla
Universidad Distrital, Adulto Mayor y Estampilla ProCultura. Cada uno de estos cuenta con
un marco legal que lo autoriza y define el porcentaje que será descontado al pago de cada uno
de los contratistas.
Estampilla “Pro adulto mayor”: El Acuerdo 188 de 2005 ordenó que se emitiera la
estampilla ‘Pro-dotación, funcionamiento y desarrollo de programas de prevención y
promoción de los centros de bienestar, instituciones y centros de vida para personas
mayores’. De esta manera, las entidades que conforman el presupuesto anual del Distrito
Capital descontarán el 2% de cada valor pagado al momento de los pagos y pagos anticipados
de los contratos. [24]
35
CAPÍTULO 6. ALCANCES Y LIMITACIONES
6.1. Alcances
6.2. Limitaciones
36
● Realizar y documentar el número de componentes de software de acuerdo a la
arquitectura y diseño pertinentemente comunicada y establecida en el proyecto en un
plazo de cuatro (4) meses frente a la gestión de nóminas en la Universidad Distrital y
siguiendo los lineamientos del proceso de desarrollo de software Scrum
37
CAPÍTULO 7. METODOLOGÍA
La metodología SCRUM permite hacer seguimiento diario y semanal de las tareas, para esto
se usó el software Tuleap, que es una herramienta online de uso libre que permite la
administración de ciclos de vida ágiles. Para comenzar a hacer uso de ella, es necesario
registrar todos los proyectos que serán trabajados dentro de la Oficina Asesora de Sistemas.
Una vez hecho esto, se permite asociar a él el equipo de trabajo que intervendrá en su puesta
en marcha (tanto interesados en el negocio como desarrolladores).
El primer paso consistió en generar un Epic, por medio de la herramienta, para trabajar la
arquitectura (definición de aspectos de análisis) y otro para la nómina de contratistas (en su
fase de desarrollo). En la figura número 2 se visualiza la creación de los Epics referentes a la
Arquitectura de Titan y la Nómina Contratistas dentro de Tuleap, se puede ver en esta como
los Epics están compuestos por historias de usuario.
38
Figura 4. Composición de los Epics
Así mismo, estos se descomponen en historias de usuario, que son definidas por el equipo
Scrum junto con los interesados en el proyecto y se especifican los requerimientos a trabajar
por los desarrolladores. Las historias de usuario describen de manera general estas exigencias
a desarrollar y tienen puntos asociados, que representan cuantitativamente el esfuerzo que
implica la realización de dicha actividad; los puntos son asignados por el líder del proyecto o
el líder SCRUM. En la historia de usuario se pueden apreciar los puntos estimados de esta, es
decir, los que se espera sean disminuidos por el desarrollador y los puntos restantes para
39
terminar la tarea. Conforme se va avanzando en el desarrollo de la historia, los puntos se
reducen hasta alcanzar el 0, que indica la finalización de la historia; es el desarrollador quien
modifica dichos puntos. De la misma manera, esta historia de usuario posee un atributo de
estado, que puede ser “to do”, “on going”, “review” y “done”. La historia de usuario se
moverá por estos estados según el avance que presenten las tareas asociadas a ella y esto es
evaluado por el líder de proyecto. En la figura 4 puede observarse la historia de usuario 7936
“Realizar la generalización del midApi para las distintas nóminas” donde se aprecian los
aspectos anteriormente descritos. Uno de los campos de la historia de usuario es el de puntos
estimados (Estimated story points), es la estimación empírica total de puntos de una historia
que es determinada por el desarrollador, para estimar la duración de la tarea en puntos que
pueden ser determinados por la duración o dificultad de la tarea, teniendo como punto de
referencia historias o tareas similares. El segmento de en orden a (In order to) define el
proyecto al cual está asociado la historia de usuario, en este caso Titán; La segunda parte de
la historia de usuario ilustra el progreso de la misma, el estado (status) muestra la etapa del
proceso que se está llevando a cabo actualmente (to do, on going, review y done, es decir
para hacer, en ejecución, en revisión y terminado respectivamente); además, se aprecia la
parte de puntos restantes de historia (Remaining story points), que establece el porcentaje en
que se ha desarrollado esta.
Fuente: Tomada de
4
De esta manera, partiendo de la historia de usuario como un requerimiento concreto de un
Epic, se llega a la creación de tasks asociadas a ella. Estas tasks son las labores específicas y
atómicas que debe realizar el desarrollador para cumplir con el requerimiento que le indica la
historia de usuario; igualmente, para la creación de estas los encargados del proyecto deben
dar la aceptación para empezar con el desarrollo de esta. El task tiene un apartado donde se
debe asignar el desarrollador encargado de esta, además, tienen estados iguales que los de las
historias de usuario. En la figura 5 se ve la task 7969 “Modificación del midApi para
generalización del proceso de nómina”, la cual hace parte de la historia de usuario 7936 que
se muestra en la figura 5. Puede apreciarse también que el task está compuesto por su
identificador (N°), fecha de la última modificación (Last modified on) y fecha de creación
(Submited on) además, especificar el desarrollador que creó dicha tarea (Submitted by). En el
apartado de detalles se puede agregar una descripción de la tarea (Task description) y detalles
(Details) adicionales de esta. Finalmente, la parte de estado del progreso especifica la fecha
de inicio,final y previsto (Start date , End date y Due date), a quién fue asignada dicha tarea
para ser desarrollada (Assigned to), el esfuerzo estimado (Remaining effort (hours)) en horas
y el estado, que corresponde a los mismos trabajados en las historias de usuario.
Fuente: Tomada de
4
Debido a la disponibilidad de tiempo, las reuniones diarias realizadas por SCRUM fueron
reemplazadas por el reporte de progreso diario dentro de cada task asignada en Tuleap; de
esta manera, el SCRUM master realizaba el seguimiento constante sobre las actividades a
realizar y se resolvían las dudas de manera pertinente. En la figura 6 se aprecia un ejemplo
del seguimiento realizado sobre una tarea por medio de comentarios; igualmente, estos
comentarios deben estar acompañados de commits sobre los repositorios de Git
Sprints semanales que evidencian el progreso de las tareas: Esta actividad consiste en
reuniones cortas donde se convocan a los interesados en el modelo de negocio junto con el
equipo de desarrollo. En estas reuniones se realiza la revisión de las tareas asignadas en el
sprint anterior, examinando el progreso de las mismas registrado en la plataforma Tuleap. De
4
esta manera, las tareas son marcadas por alguno de los estados asociadas a ellas (en proceso si
sucedía algún inconveniente en revisión y está ya ha sido terminada, pero requiere de algún
tipo de corrección, o terminada si se finalizó en su totalidad). Finalmente, se asignan las
nuevas tareas que serán trabajadas en la semana y cuya entrega corresponderá al siguiente
sprint. Se debe tener en cuenta que la finalización de un sprint está marcada por la entrega de
un producto parcial funcional. Durante el desarrollo del software a entregar se realizaron 4
entregas parciales marcadas por el final de cada Release, las cuales fueron probadas por los
clientes encargados de la generación de la nómina de contratistas; también fueron
involucrados en las entregas los encargados del proyecto, DBA,Scrum master, líder del
proyecto, líder del desarrollo y el jefe de la oficina. Estos entregables fueron:
1- Versión estable con liquidación de salario básico: En este entregable se desarrolló una
versión estable que calcula el salario básico de los contratistas, esta versión debía contar con
interfaces de usuario que le permitieran al usuario verificar dichos valores y al sistema el
cálculo general de la nómina.Historias relacionadas: #7111
4- Resultados de pruebas unitarias: Se realizaron pruebas sobre la función que carga las
reglas y realiza los cálculos tanto de salarios básicos como de descuentos. Basados en los
ejemplos de EXCEL que fueron facilitados por la dependencia encargada de la liquidación
actual, se utilizó librería de Golang para comparar los resultados arrojados por el nuevo
desarrollo con los esperados. Las pruebas unitarias fueron documentadas en su respectiva
tarea, acompañada de los commits a Git. Historia relacionada: #10101
4
4
CAPÍTULO 8. RECURSOS
Humano Desarrollador 2
Infraestructura Computador 2
Tiempo Meses 6
4
CAPÍTULO 9. PRESUPUESTO
El presupuesto que se contempla desde el punto de vista del grupo desarrollador se evidencia en la tabla 4, expresada de la siguiente manera:
Tipo de Recurso Cantida Tiempo Valor % Valor mensual unitario Valor Valor total
Recurso d mensual dedicación según dedicación cuatrimestral
unitario unitario
4
Infraestruct Alquiler de 2 4 meses 200.000 - - 800.000 1.600.000
ura computadores
Los porcentajes de dedicación fueron calculados teniendo en cuenta el número de proyectos en los que estaban involucrados los diferentes
actores en este desarrollo.
4
CAPÍTULO 10. CRONOGRAMA
El proyecto está organizado por release, es decir, entregas de productos funcionales, los
cuales están compuestos de sprints, periodos de tiempo de 1 semana donde se realizan las
tareas necesarias para llevar a la realidad el producto propuesto.
Fuente: realizado por autores. En la figura 2 se aprecia el cronograma propuesto para el
proyecto
4
CAPÍTULO 11. DESARROLLO
Sin embargo, para los casos de docentes de hora cátedra (salarios y honorarios) y contratistas,
el papel de la Oficina Asesora de Sistemas es diferente, ya que sólo se encarga de la revisión
y corrección de archivos de Excel, elaborados en otras dependencias de la universidad.
Cuando éstos son verificados por el personal de la OAS, son cargados a SICAPITAL que
realiza el procedimiento correspondiente al pago. Esto ha hecho que se caiga en dos errores
respecto al proceso de liquidación de las nóminas: en primera medida, las nóminas de planta
y las que no lo son se están realizando de manera aislada, cuando son procesos que deberían
estar unificados en un mismo sistema que facilite el proceso a los usuarios; en segunda
medida, estos usuarios no deberían tener la responsabilidad de la elaboración de la nómina,
como se realiza actualmente por medio de los archivos de EXCEL, sino deberían tener un rol
de generación de la misma, donde el sistema integrado sea el encargado y responsable de
todo el proceso.
De esta manera, dado el modelo de negocio actual que se maneja para las distintas nóminas,
lo primero que tuvo que ser desarrollado fue una arquitectura y modelo de datos conjunto que
permita la asociación de todas las nóminas en un mismo sistema, y que a su vez tenga
interacción constante con otros sistemas ya desarrollados en la Oficina Asesora de Sistemas y
que son necesarios para el correcto funcionamiento de los nuevos a desarrollar, conservando
4
no solo la integración entre las nóminas sino entre los sistemas desarrollados para la
Universidad Distrital.
5
11.3. Diagrama de procesos
Para realizar un primer acercamiento al nuevo sistema planteado para la nómina, se utilizó el
punto de vista de estructura de información ofrecido por Archimate, donde se muestra la
información a utilizar en la empresa, proceso de negocio o aplicación en términos de tipos de
datos o estructura de clases. Además, puede mostrar cómo se representa la información a
nivel del negocio en la aplicación por medio de las estructuras de datos usadas. [15]
En el diagrama anterior pueden apreciarse las entradas de datos (representadas por medio de
objetos de datos) que alimentarán al sistema de nóminas. Entre ellos se encuentran los datos
de proveedores y de contratación, provenientes de los sistemas Argo (sistema de
contratación) y Ágora (sistema de terceros y bando de proveedores), así como los datos de
conceptos de nómina, provenientes de Nix (Sistema de presupuesto y tesorería). A partir de
estos datos, se crean objetos de negocio propios del sistema de nómina Titán, los cuales serán
explicados a continuación:
Conceptos: Corresponden a todo aquello que le es devengado o descontado a los
empleados. Son una especialización de los conceptos provenientes de tesorería, es
decir, todos los conceptos utilizados en la nómina deben estar registrados en el
sistema de presupuesto y tesorería.
4
Detalle: Compuesto de los conceptos, el detalle permite desagregar y especificar cada
uno de los valores que le han sido o serán pagados a cada persona; es una asociación
entre la persona y sus conceptos aplicados.
Preliquidación: Corresponde a un proceso que puede realizarse cuantas veces sea
necesario y sobre las personas a las que se les desean realizar sus pagos. En ella se
calculan los valores (traducidos en conceptos) que se les serán pagados y descontados,
además de permitir realizar correcciones sobre ellos si no han sido calculados de
manera correcta. Esta preliquidación tendrá un estado relacionado a si ya fue
liquidada o no.
Liquidación: Es el proceso posterior a la preliquidación, luego de que todo sea
corregido y verificado. Esta no puede ser corregida ni reversada pues sobre ella se
realizarán los pagos correspondientes.
Nómina: Es el proceso mensual realizado para cada uno de los empleados de la
Universidad Distrital, ya sean contratistas, funcionarios y docentes de planta,
pensionados y docentes de vinculación especial.
Gracias a este punto de vista de arquitectura se aprecia que existen procesos comunes para
todas las nóminas y que es posible trabajarlas como un conjunto y un sistema unificado. De la
misma manera, esta abstracción permite apreciar qué datos deben ser tenidos en cuenta y de
dónde provienen.
4
11.5. Modelo de datos
Cabe destacar que el modelo fue elaborado en conjunto con todos los involucrados en el
proyecto de nóminas, con el fin de que fuera general y válido para todas y pudiera
conservarse la integridad entre las mismas.
4
Figura 13. Diagrama relacional de sistema de nómina Titán (Realizada por autores)
5
Figura 14. Tablas para manejo de nómina (Realizada por autores)
La nómina dentro del modelo de datos propuesto hace referencia a cada uno de los grupos
sobre los cuales se pueden realizar preliquidaciones y liquidaciones, por ejemplo, nómina de
funcionarios de planta, nómina de contratistas o de pensionados, entre otras. Esta restricción
de grupo está dada por el campo ‘tipo_nomina’, referencia a la tabla tipo_nomina, donde se
almacenarán los grupos anteriormente mencionados. De esta manera, se puede registrar una
nómina de cualquier tipo, añadiendo a qué periodo pertenece y a qué grupo afectará. De igual
manera, se especifica dentro de esta nomina a qué tipo de vinculación pertenece,
referenciando a la tabla tipo_vinculación, que especifica si dicha nómina es de planta o de
vinculación especial.
5
Figura 15. Tablas para manejo de preliquidaciones (Realizada por autores)
Dada una nómina registrada, a ella puede asociarse una preliquidación, que corresponde al
proceso de calcular los valores a descontar y devengar para cada persona perteneciente al
grupo definido por su nómina. Esta preliquidación tiene atributos como una descripción, una
fecha de inicio y fecha final (estos parámetros comprenden 30 días, por medidas
institucionales, pero se conserva esta opción debido a posibles cambios futuros), si ya fue
liquidada o no (es decir, si de todas aquellas preliquidaciones realizadas, alguna fue elegida
para ser definitiva) y la fecha en la que fue realizada. De esta manera, una nómina puede
tener varias preliquidaciones, pero solo una de ellas será tomada en cuenta como liquidación.
Continuando con el modelo, se encuentra el detalle de la liquidación, donde se especifica a
cada persona qué conceptos le serán pagados o descontados. Por este motivo, en esta tabla se
tienen referencias a la preliquidación a la cual pertenece, a qué persona pertenece y qué
concepto tiene asociada a él. Esta persona que se está referenciando en este detalle debe estar
registrada en la tabla información_proveedor, que se encuentra en el sistema Ágora, donde se
registran todas las personas que tengan un vínculo contractual con la Universidad Distrital. Se
ha respetado esta referencia ya que no era correcto repetir información básica de las personas
5
dado que existe un
5
sistema en producción encargado de esta labor. Igualmente, en la tabla concepto se registran
todos aquellos valores que pueden descontarse o sumarse a un funcionario o contratista. Por
ejemplo, en esta tabla concepto deben estar la salud, la pensión, el sueldo básico, las distintas
primas o incentivos, así como las novedades que tenga cada persona sobre sus devengos,
como lo son préstamos, aportes a fondos de empleados, a fondos de pensiones voluntarias,
entre otros. Así mismo, los conceptos pueden ser devengos (suman al salario básico) o
descuentos (son restados del salario básico) en un principio, pues pueden existir otros tipos
de conceptos en un futuro. Unos ejemplos de datos registrados en esta sección del modelo
pueden ser: Tabla nómina:
ID Vinculación Nombre Descripción Estado Periodo Tipo nómina
1 1 CT Contratistas Activo 2017 6
Tabla preliquidación:
ID Nombre Nomina Fecha Descripción Fecha Inicio Fecha fin liquidada
1 PruebaCT 1 2000/0/0 Ejemplo 2017-01-01 2017-01- No
28
Tabla concepto:
Id nombre_concepto Naturaleza Alias_concepto
1 SueldoBasico devengo Sueldo Básico
2 PrestamoVivienda Descuento Préstamo Vivienda
5
Tabla detalle_preliquidacion:
Id Valor Preliquidacion Persona Concepto Numero Contrato
calculado
1 10000 1 55 1 6
2 5000 1 55 2 6
De esta manera, la persona con id 55 tiene relacionada a ella un concepto 1 (sueldo básico)
por un valor de 10000, perteneciente a la preliquidación 1, que corresponde a la nómina de
contratistas. Igualmente tiene relacionada a ella otro concepto, el 2, que corresponde a un
descuento.
Figura 16. Tabla para manejo de conceptos y novedades (Realizada por autores)
Las novedades anteriormente nombradas son específicas por cada persona, por lo que se
registrarán en la tabla concepto_por_persona, ya que corresponde a conceptos registrados en
su respectiva tabla pero que son especiales para cada proveedor. De la misma manera que en
el detalle de la preliquidación, se tiene una referencia a la información de proveedor del
sistema Ágora para las personas a las que se les hará la preliquidación, así como una
referencia a la tabla conceptos, para saber a qué corresponde dicho valor calculado. Las
novedades, como extensión de los conceptos, tienen más características asociadas a ellas,
como por ejemplo el número de cuotas (aplicable a créditos, préstamos, entre otros), la fecha
en la que fue registrada, el valor al que corresponde y de qué tipo son. Este último campo
explica si la novedad es fija o porcentual, dado que algunos valores no son estáticos, sino que
son calculados sobre el salario básico o el total devengado. Igualmente, los conceptos por
persona deben tener una nómina
5
asociada, ya que existen personas en varias nóminas y los conceptos no son descontados de
varias nóminas sino de las que sean elegidas. Un ejemplo de datos registrados allí puede ser:
Valor Novedad Num Cuotas Persona Concepto Nomina Id Tipo Estado fecha
5000 20 55 2 1 1 Fijo Activo 2017-01-
01
Así, la persona 55 tiene una novedad asociada a ella, que corresponde al número 2 (préstamo
de vivienda) y es de la nómina 1 (control realizado por si la persona está dentro de varias
nóminas). Esta nómina es fija y está registrada por un valor de 5000.
Finalmente, dentro del modelo se debe tener en cuenta la liquidación, es decir, tablas que
permitan la persistencia de aquellas preliquidaciones que han sido revisadas y elegidas como
definitivas, para ellos se utilizan las siguientes dos tablas: detalle_liquidacion y liquidación.
Puede notarse que son similares a las de preliquidacion y detalle_liquidacion, pues el objetivo
de estas es guardar la misma información que estas dos para que sean consultadas en un
futuro por los sistemas que realizan las órdenes de pago.
5
11.6. Generalización de la liquidación de la nómina
Para cargar las reglas de dicho dominio debe especificarse un número de dominio, con este se
hace una petición al CrudApi, que es el encargado de administrar las peticiones que solicitan
información de la base de datos. En la primera petición se solicitan los conceptos pertinentes
y en la segunda los predicados disponibles en la base de datos de la nómina seleccionada.
Se itera sobre los contratistas cargados utilizando las actas de inicio de estas, para poder
calcular la fecha de inicio de contrato, fecha de fin de contrato y la fecha de preliquidación de
5
la nómina, con estas es posible calcular el sueldo correspondiente para el contratista, si es un
mes en el que este contratista no trabaja los 30 días se debe calcular el número de días
trabajados para saber cuánto se le debe pagar, en caso contrario, simplemente se utiliza el
pago de 30 días.
En la siguiente parte del controlador se hace una inyección de reglas (es decir se adicionan
reglas o hechos que no son estáticas, sino que cambian dependiendo del contratista), se puede
ver la inyección de los días liquidados, el valor total del contrato y la duración del mismo.
Además, se agregan las novedades pertenecientes al contratista, siguiente a esto se dirigen las
reglas base junto con las inyectadas y novedades, llamadas simplemente reglas al archivo de
procesamiento de Golog.
Finalmente se guardan los conceptos calculados en la nómina y se envía dichos datos a la ruta
detalle_preliquidacion la cual se encarga de guardar estos conceptos en la base de datos,
exactamente en la tabla de igual nombre, posteriormente la interfaz se encargará de leer los
registros de esta tabla para cargarlos en la vista necesaria.
5
11.7. Interfaces de programación de aplicaciones (api)
Ya que este se encarga de gestionar las conexiones hacia las bases de datos existen
conexiones hacia servicios de los sistemas Argo (Registro de contratos) y Ágora (registro de
proveedores) para obtener los datos necesarios para ejecutar la nómina de dichos contratistas,
además tiene una conexión local con la base de datos de reglas. Este se conecta con el mid
api para proveer los contratistas y reglas filtradas.
Controlador específico es una subclase que hereda los métodos de controlador general para
implementar funcionalidades de manera específica dependiendo del tipo de nómina.
Existe una relación entre la preliquidacion y la liquidación ya que el tiempo de vida de la
preliquidación no depende del tiempo de vida de la liquidación, el tiempo de vida de la
preliquidacion termina cuando el usuario selecciona las personas y selecciona liquidar, a su
vez
5
preliquidacion y liquidación utiliza una conexión directa a la base de datos de cada uno de
sus procesos para guardar los resultados.
Ruler Api
El ruler se encarga de procesar las reglas y contratistas y de entregar dicha respuesta al mid
api para que este se lo envíe a la interfaz y los resultados sean tangibles para el usuario.
Dadas las directrices de la Oficina Asesora de Sistemas, y debido a que el proyecto Titán
implica realizar cálculos matemáticos, se decidió no almacenar fórmulas dentro del modelo
de datos descrito anteriormente; esto con el fin de lograr que los proyectos fueran
independientes del motor de base de datos y que fuera más sencilla la modificación y
agregación de nuevas fórmulas. De esta manera, los cálculos fueron traducidos en reglas y
hechos que pudieran ser procesados en Golog, un intérprete en Golog para el lenguaje de
programación lógico prolog. A continuación, se explicarán las reglas que fueron construidas
y probadas y que permiten realizar la liquidación de la nómina de contratistas.
En primera medida se tienen los hechos, que corresponden a la base de conocimiento
necesaria para que las reglas sean ejecutadas. Algunos hechos se crean en tiempo de
ejecución, por medio del controlador PreliquidacionCt, pero otros son cargados al hacer
peticiones al API que maneja las reglas. El principal objetivo de los hechos es relacionar
porcentajes a distintas vigencias, donde estos porcentajes corresponden a descuentos a
realizar y se asocia a ellos un año, debido a los cambios que puedan tener las diversas
legislaciones. De forma general, los hechos se estructuran de la siguiente manera
nombre_legislacion(vigencia, porcentaje)
En caso de que la legislación cuente con mayor información, basta con separarla por comas
para agregarla
6
Tabla 5. Ejemplo de algunos hechos en Golog
Hecho Descripción
reteica(2016, 9.66). Consiste en un hecho que tiene la vigencia
para la cual se aplicará el porcentaje de
retención de Industria y Comercio. Para
2016 este porcentaje fue de 9.66%
estampilla(2016, 0.01) Contiene información de qué porcentaje
debe ser descontado para Estampilla
Universidad Distrital en el año 2016. Para
esta vigencia es de 0.01
procultura(2016,0.005). Para el descuento de ProCultura en el año
2016, se tiene en cuenta para los cálculos
un
porcentaje del 0.005
adulto_mayor(2016, 0.02). Para el descuento de adulto mayor en el
año 2016, se tendrá en cuenta para las
reglas un
porcentaje del 0.02
salud (2016,12.5). Para el cálculo de los descuentos
pension(2016,16). anteriormente descritos, y a pesar de que
no se realizan descuentos de salud y
pensión a contratistas, se deben realizar
cálculos de salud y pensión que sirven de
base para los cuatro descuentos
obligatorios sobre esta nómina. Por esto, se
tienen hechos que guardan el porcentaje
de salud y pensión
para el año 2016.
salario_minimo(2016, 689454). Igualmente, para calcular salud y pensión,
es necesario tener en cuenta el valor del
salario mínimo, acompañado de la vigencia
a la cual pertenece, dado que cambia cada
año.
6
arl(2016,1,0.522). Para los cálculos de los descuentos también
debe tenerse en cuenta el valor de la ARL
pagada por el contratista, a pesar de no ser
6
descontada directamente, por esto se tienen
en cuenta su vigencia, el número de riesgo
y
su porcentaje correspondiente
Como puede notarse, los hechos contienen la información necesaria para realizar los cálculos
que implican la nómina de contratistas.
Para poder sacar provecho de la base de conocimiento proporcionada por los hechos, se debe
hacer uso de las reglas. Estan puede verse como funciones que reciben parámetros y arrojan
un resultado. De manera general se construye una regla de la siguiente manera
De manera general, las reglas consultan los diferentes hechos registrados y traen información
pertinente, que puede ser operada y retornada como salida dentro de los parámetros definidos.
Por ejemplo, valor_pago(X,V,P):-valor_contrato(X,Y), duracion_contrato(X,D,V), R is Y /
D, dias_liquidados(X,DL),P is (DL * R). Esta regla calcula el valor que se debe pagar a cada
persona a liquidar, teniendo en cuenta el número de días del mismo y los días a liquidar. Se
recibe como parámetro el ID de la persona a liquidar y la vigencia (X, V), y P retornará el
resultado. En primera medida, se consultan los hechos de valor contrato y duración del
contrato, para así hallar en R el costo del día trabajado. Una vez con este valor, se consultan
los días a liquidar y se multiplican por el valor del día, retornando en P el resultado. Este
valor se debe tener en cuenta para los próximos cálculos, por lo que será parámetro de entrada
para algunas de las siguientes reglas.
6
Tabla 6. Ejemplo de algunas reglas en Golog
Regla Descripción
calcular_salud(B,V,VS) :- salud(V,PS), X Para el cálculo de salud se utiliza el valor
is (B * (PS/100) rnd 0), Y is ((X+50) / 100 obtenido por la regla valor_pago y la
int 0), VS is Y * 100. vigencia, retornando en VS el resultado.
Esta regla utiliza el hecho de salud para
obtener el porcentaje correspondiente
según la vigencia. Luego, en X, se guarda
el valor entero de multiplicar el salario por
dicho porcentaje. En Y se guarda la
aproximación de X a la centena más
cercana (debido a que los cálculos de salud
deben ser presentados de dicha manera) y
finalmente en VS se retorna el valor de
salud luego de este
redondeo.
calcular_ARL(B,V,VARL) :- Para el cálculo de ARL se realiza algo
arl(V,1,PARL), X is ((PARL/100)* (B * similar a los dos anteriores. Sobre el valor
0.40) rnd 0), Y is ((X + 50)/ 100 int 0), calculado en valor_pago, se consulta el
VARL is Y * 100. porcentaje de ARL para la vigencia
entregada. Una vez se tiene este valor, se
multipica por el 40% del valor a pagar. De
la misma manera que en reglas anteriores,
se debe redondear a la centena más
cercana; luego de hacerlo, VARL retorna
el valor
deseado.
calcular_reteica(B,V,R):- Para calcular la retención de Industria y
base_retencion(B,V,X), reteica(V,RI), R is Comercio se utiliza la base de retención
((RI * X) / 1000 rnd 0). anteriormente explicada, multiplicándola
con el porcentaje de reteica que indique el
hecho según su vigencia.
calcular_estampilla(B,V,R) :- Para calcular el descuento de estampilla se
base_retencion(B,V,X) , estampilla(V, RE) utiliza la base de retención anteriormente
, R is ((RE * X) rnd 0). explicada, multiplicándola con el
6
porcentaje
6
de estampilla que indique el hecho según su
vigencia.
calcular_procultura(B,V,R) :- Para calcular el descuento de Procultura se
base_retencion(B,V,X) , procultura(V, RP) utiliza la base de retención anteriormente
, R is ((RP * X) rnd 0). explicada, multiplicándola con el
porcentaje de Procultura que indique el
hecho según su
vigencia.
calcular_adulto_mayor(B,V,R) :- Para calcular el descuento de adulto mayor
base_retencion(B,V,X) , adulto_mayor(V, se utiliza la base de retención
RA) , R is ((RA * X) rnd 0). anteriormente explicada, multiplicándola
con el porcentaje de adulto mayor que
indique el hecho según
su vigencia.
11.9 Software
Dentro del software elaborado, lo primero con lo que el usuario se encontrará es con una
interfaz que cuenta con dos opciones para él, las nóminas y las novedades. Dentro de las
nóminas podrá realizar preliquidaciones y liquidaciones, y por el lado de las novedades
podrán asociar conceptos por nómina a diferentes personas.
Dentro del módulo de nóminas, cuando el usuario accede a él, se puede observar todas las
nóminas registradas, su descripción, tipo, estado y periodo, así como una opción de acceder a
sus preliquidaciones.
6
Figura 20. Nominas registradas
6
Figura 22. Listado de preliquidaciones
6
desea.
6
Figura 24. Listado de personas a preliquidar
Una vez seleccionados, se generará automáticamente la preliquidación para cada uno de los
seleccionados.
En esta nueva interfaz se pueden observar las personas elegidas para la preliquidación,
desglosando por número de contrato cada uno de los devengos y descuentos que le
corresponden:
7
Figura 26. Resumen de preliquidación
De la misma manera, cuando estos cálculos sean revisados y el usuario esté seguro de que
todo ha sido preliquidado de la manera correcta, se permite desde esta interfaz seleccionar a
qué personas se liquidarán (teniendo en cuenta que el proceso de liquidación es el definitivo e
irreversible). Una vez hecho esto, se acude a una interfaz similar a la anterior, pero que
contiene los detalles de liquidación para este mes de ejemplo
7
Así, a partir de esta liquidación pueden generarse las órdenes de pago para cada una de las
personas seleccionadas en dicho proceso.
7
CAPÍTULO 12. RESULTADOS Y DISCUSIÓN
Para comprobar que las reglas utilizadas a la hora de realizar los cálculos arrojaban los
cálculos correctos y que el software presentado preliquidaba y liquidaba correctamente, se
contó con la colaboración del ordenador del gasto que realiza la nómina en este momento.
Ésta nos facilitó el documento de EXCEL que condensa los resultados de devengos y
descuentos para el mes de octubre de 2016 para 9 contratistas. De este se pudo obtener los
datos de contratos para ellos, como lo son la fecha de inicio, la fecha final y el valor de
contrato, así como los resultados para poder compararlos con el nuevo desarrollo. Dentro del
Excel, en la parte de liquidación, se tienen las siguientes personas y el valor a pagar sin
descuentos. Cada una de ellas cuenta con los siguientes descuentos: Reteica, EstampillaUD,
Procultura y adulto mayor, arrojando al final del documento el valor neto a pagar para cada
uno de ellos.
Figura 29. Excel con resultados de liquidación de contratistas del mes de octubre
De esta manera, para la primera persona liquidada, se obtuvieron los mismos valores que se
muestran en el EXCEL, un pago bruto de $827.346, y un total a pagar de $806.273, luego de
aplicar los cuatro descuentos correspondientes, que también coinciden en valor.
7
Figura 30. Resultados de liquidación para persona N° 1, generados por Titán
7
CAPÍTULO 13. TRABAJOS FUTUROS
Sobre este proyecto de grado pueden generarse nuevos proyectos, que pueden partir del
desarrollo y el software aquí presentado. De esta manera no sólo podrán mejorarse aspectos
acá propuestos, sino podrá ampliarse la funcionalidad presentada en el módulo de manejo de
liquidación de nómina. Con el fin de continuar sobre el producto aquí creado, se plantean las
siguientes alternativas:
7
dineros con los que cuenta cada contratista para que le sea efectuado su pago,
haciendo del sistema no sólo aquel que calcule los valores, sino que automatice esta
labor. Esta no ha de ser responsabilidad completa del sistema de nómina, pero éste si
debe utilizar servicios que le permitan consultar dicha disponibilidad
7
CAPÍTULO 14. CONCLUSIONES
7
de análisis, pero gracias a las
7
metodologías agiles, como la aquí usada, dichos inconvenientes se superan fácilmente. Así
mismo, una vez eran desarrolladas las entregas parciales del producto, se realizaron pruebas
al realizar comparaciones con el proceso realizado actualmente y el nuevo desarrollo, lo que
permitió que se corrigieran errores de los cálculos realizados y se obtuvieran los mismos
resultados a la hora de realizar un proceso de liquidación. Esto se realizó a tiempo y permitió
que el software elaborado cumpliera con lo pactado en los procesos de análisis y diseño y
pudiera ser mostrado al usuario final como un software útil que facilitará el cálculo de la
nómina de contratistas.
Igualmente, y teniendo en cuenta una versión anterior del sistema Titán, se pudo evidenciar
deficiencias en dicho desarrollo en aspectos como la preliquidación de la nómina, además,
aspectos externos como la no existencia del sistema de proveedores. La utilización del
entorno de desarrollo fue vital para acoplarse a los estándares de la oficina y poder conectarse
con los demás sistemas, requerimientos que la versión anterior de Titán no poseía.
7
CAPÍTULO 15. REFERENCIAS
[1] Secretaría General de la Alcaldía Mayor de Bogotá D.C. (2008). Acuerdo 5 de 2008
Universidad Distrital Francisco José de Caldas. Octubre 27 de 2016, de Alcaldía Mayor de
Bogotá Sitio web: http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=37249#0
[2] SCRUM study (2016), A Guide to the Scrum Body of Knowledge (SBOK™ Guide). 13
de octubre de 2016, VMEdu, Inc. Sitio web:
http://www.scrumstudy.com/SBOK/SCRUMstudy- SBOK-Guide-2016.pdf
[3] Ken Schwaber. Jeff Sutherland. (2013). the Scrum Guide. 13 de octubre de 2016, de
Scrum Alliance Sitio web: https://www.scrumalliance.org/why-scrum/scrum-guide
[4] Juan Palacio. Claudia Ruata. (2014). Gestión de proyectos con Scrum Manager. 13 de
octubre de 2016, de Scrum Manager® Sitio web:
http://www.scrummanager.net/files/sm_proyecto.pdf
[5] Pete Deemer, Gabrielle Benefield, Craig Larman, Bas Vodde. (2012). Scrum Primer. 13
de octubre de 2016, de InfoQ Sitio web:
http://scrumprimer.org/primers/es_scrumprimer20.pdf
[6] Tridibesh Satpathy. (2016). Crear la visión del proyecto. En Una guía para el CUERPO
DE CONOCIMIENTO DE SCRUM (pp. 134-141). Phoenix, Arizona: SCRUMstudy.
[7] Tridibesh Satpathy. (2016). Formación del equipo de Scrum. En Una guía para el
CUERPO DE CONOCIMIENTO DE SCRUM (pp. 148-152). Phoenix, Arizona:
SCRUMstudy.
[8] Tridibesh Satpathy. (2016). Creación de la lista priorizada de pendientes del producto. En
Una guía para el CUERPO DE CONOCIMIENTO DE SCRUM (pp. 163-174). Phoenix,
Arizona: SCRUMstudy.
[9] Tridibesh Satpathy. (2016). Creación de historias. En Una guía para el CUERPO DE
CONOCIMIENTO DE SCRUM (pp. 180-185). Phoenix, Arizona: SCRUMstudy.
8
[10] Tridibesh Satpathy. (2016). Creación de entregables. En Una guía para el CUERPO DE
CONOCIMIENTO DE SCRUM (pp. 210-215). Phoenix, Arizona: SCRUMstudy.
[11] Tridibesh Satpathy. (2016). Convocar Scrum de Scrums. En Una guía para el CUERPO
DE CONOCIMIENTO DE SCRUM (pp. 232-235). Phoenix, Arizona: SCRUMstudy.
[12] Tridibesh Satpathy. (2016). Retrospectiva Sprint. En Una guía para el CUERPO DE
CONOCIMIENTO DE SCRUM (pp. 242-245). Phoenix, Arizona: SCRUMstudy.
[14] Roy Thomas Fielding. (2000). Architectural Styles and the Design of Network-based
Software Architectures. 2 de octubre de 2016, de University Of California Sitio web:
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.html
[15] Rafael Navarro Marset. (2006). REST vs Web Services. 5 de octubre de 2016, de
Universidad Politecnica de Valencia Sitio web:
http://users.dsic.upv.es/~rnavarro/NewWeb/docs/RestVsWebServices.pdf
[17] Rodriguez, Alex. (2015). RESTful Web services: The basics. 8 de octubre de 2016, de
IBM Sitio web: https://www.ibm.com/developerworks/library/ws-restful/
[18] Beego. (2017). What is Beego? 6 de mayo 2017, de Beego Sitio web:
https://beego.me/docs/intro/
[19] Clocksin, William F. (2003). Programming in Prolog. Nueva York, Estados Unidos:
Springer.
[20] Sterling, Leo. (2000). The Art of Prolog. Boston, Estados Unidos: The Mit press.
8
[21] Secretaria General. (2016). Acuerdo 003 de 2016. Octubre 27 de 2016, de
Universidad Distrital Sitio web: http://sgral.udistrital.edu.co/xdata/rec/res_2016-003.pdf
[22] Secretaría General de la Alcaldía Mayor de Bogotá D.C. (2005). Acuerdo 187 de 2005
Concejo de Bogotá D.C. Marzo 24 de 2017, de Secretaría General de la Alcaldía Mayor de
Bogotá D.C Sitio web: http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=18545
[23] Secretaría General de la Alcaldía Mayor de Bogotá D.C. (2001). LEY 648 DE 2001.
Marzo 24 de 2017, de Secretaría General de la Alcaldía Mayor de Bogotá D.C Sitio web:
http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=4156
[24] Secretaría General de la Alcaldía Mayor de Bogotá D.C. (2005). ACUERDO 188 DE
2005. Marzo 24 de 2017, de Secretaría General de la Alcaldía Mayor de Bogotá D.C Sitio
web: http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=18546
[25] The Open Group. (2013). ArchiMate 2.1 Specification. Marzo 24 de 2017, de The Open
Group Sitio web: http://pubs.opengroup.org/architecture/archimate2-
doc/chap08.html#_Toc371945245