DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO MUNICIPAL CALI (Mi Concejo App Cali)
1. 1
DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO
SOBRE CONCEJO MUNICIPAL CALI (Mi Concejo App Cali)
Juan Camilo Giraldo Hernández, juancamiloh7@gmail.com
Daniel Alexander Lopez Chaux, a.alexander718@hotmail.com
Proyecto final Ingeniería de Software II
Docente: Luis Carlos Ospina Tobón, estudiante Maestría
Institución Universitaria Antonio José Camacho
Facultad de Ingenierías
Ingeniería de Sistemas
Cali - Colombia
2020
2. Tabla de contenido
2
Descripción del problemaa resolver....................................................................................... 5
Posible solución para la resolverel problema......................................................................... 7
StakeHolders ..........................................................................................................................8
Requerimientos
Requerimientos funcionales .....................................................................................19
Requerimientos no funcionales ................................................................................22
Estimación por puntos de caso de uso................................................................................... 25
Metodología para implementar............................................................................................. 31
Arquitectura para utilizar...................................................................................................... 41
Diagrama de Despliegue....................................................................................................... 44
Patrones de diseñoa utilizar.................................................................................................. 45
Diagrama de Componentes................................................................................................... 48
Administración de configuración…………………………………………………………...48
Pruebas de software…………………………………………………………………………69
Estándares de documentación……………………………………………………………….83
Tipos de mantenimiento de software a
aplicar en el desarrollo de software…………………………………………………91
Referencias…………………………………………………………………………………106
Anexos……………………………………………………………………………………...108
3. Lista de tablas
3
Tabla 1 Contextualización Stakeholders……………………………………………………………..8
Tabla 2 Definición conceptual Stakeholders Pt. 1……………………………………………………8
Tabla 2 Definición conceptual Stakeholders Pt. 2…………………………………………………..13
Tabla 4 Contador actores e identificación su complejidad………………………………………….25
Tabla 5 Contador de casos de uso e identificación su complejidad………………………………...26
Tabla 6 Calculo los PCUs no ajustados…………………………………………………………….26
Tabla 7 Determinación factores de complejidad técnicos…………………………………………..26
Tabla 8 Determinación factores de complejidad ambiental………………………………………...29
Tabla 9 Análisis y estimación de esfuerzo………………………………………………………….30
Tabla 10 Funciones y determinaciones
finales de la distribución porcentual del tiempo
de esfuerzo en cada una de las etapas del proyecto……………………………………….30
4. Lista de figuras
4
Figura 1. Etapas de la metodología para el desarrollo de aplicaciones móviles ………………….32
Figura 2. Posibles diagramas para el desarrollo de aplicaciones ………………………………….35
Figura 3. Diagrama de espina de pescado básico………………………………………………….39
Figura 4. Diagrama de despliegue, funcionamiento del backend Miconcejo……………………...44
Figura 5. Diagrama de componentes,
funcionamiento de la parte de software de Mi concejo…………………………………47
Figuras 6. Previa interfaz login App ……………………………………………………………....48
Figuras 7. Creación repositorio local y remoto ………………………………………………..49-53
Figuras 8. Configuración repositorio…………………………………………………………..54-58
Figuras 9. Versionado proyecto ……………………………………………………………….59-60
Figuras 10. Ilustraciones repositorio en la nube ……………………………………………….61-65
Figura 11. Fases centrales cleanroom……………………………………………………………...72
Figura 12. Tipos de pruebas ………………………………………………………………………75
5. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
5
Descripción del problema a resolver
A nivel internacional se han encontrado varias páginas en Internet que tratan de
algunas aplicaciones o software que son comercializados en países como México y España,
en estos programas se tienen en cuenta varios aspectos como Jurisprudencia, Leyes y el
manejo de los mismos procesos, en realidad son muy completos y ya son comercializados en
estos países, al parecer han tenido u gran éxito.
En Colombia, la Rama Ejecutiva posee un sistema de información para la gestión
administrativa el cual le permite mantener controlado el flujo de información de parte del
presidente de la república, ministros, los directivos de los Dpto administrativos,
superintendentes, Senado, Cámara de representantes, Asambleas departamentales y concejos
municipales. Hasta el momento este sistema ha funcionado, pero con algunos vacíos tanto en
la parte ejecutiva como al nivel de tecnología, de tal forma que algunas entidades privadasy
estatales han generado su propio sistema de gestión con bases de datos, pero estas se crean
únicamente para el uso exclusivo de estas entidades.
Existen compañías nacionales que también han desarrollado este tipo de software,
tales como Emprex web, Orión jurídica y SGP, estos son comercializados, pero todos están
licenciados y los costos son altísimos ya que las empresas tendrían que pagar por el costo de
las licencias para el manejo de los motores de bases de datos, esto limita a un gran número
de usuarios, ignorando completamente a las personas del común que quieran obtener esta
información.
En el Concejo municipal de la ciudad de Santiago de Cali a diario se maneja un gran
flujo de información del cual se derivan las diferentes labores, dicha información no es
debidamente organizada por lo cual se pierde veracidad, aumentan los tiempos de respuesta
y se extravían documentos lo cual conlleva a la pérdida de diligencias que se programan en
cada uno de los procesos ejecutiva y como última consecuencia la pérdida de dinero, lo que
ha hecho que muchos ciudadanos y medios de comunicación (La sociedad en general)
comienzan a alejarse de esta administración pública, desconociendo así sus derechos a
mantenerse informados de lo que pasa en la ciudad, además de generar conflictos sociales
debido a la información verídica o no, que sale de la misma, generando así por medio de
redes sociales las muy famosas “Fake news”, que ha logrado desinforma a una gran cantidad
6. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
6
de personas, así mismo creando movimientos o bloques sociales de desinformación. La falta
de un sistema de información eficiente hace que los procesos se vuelvan más lentos,
dispendiosos y se tenga que recurrir a métodos manuales, como por ejemplo listados hechos
a mano o en el mejor de los casos recurren al uso de programas que no son los más adecuados
para el manejo de información vital en esta administración pública, ya que en estos
aplicativos suelen manejar términos jurídicos y se genera contrariedad entre una información
y otra, es el caso de revistas, paginas especializadas, periódicos, noticieros, programas de tv
y radio, en el que suelen usar varias formatos informativos y conceptuales para almacenarla
misma información, es decir existe redundancia de información y muchas veces no es la
misma información entre un medio y otro referente a un mismo caso.
7. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
7
Posible solución para la resolver el problema.
Por lo que nos hemos propuesto desarrollar una app que le permita a los ciudadanos
del común o experto en temas de política local, informarse de manera eficaz, eficiente y
efectiva, con información verídica, clara, breve, actualizada y oportuna, lo que le permitirá a
los usuarios obtener la capacidad para criticar y entender mejor a la sociedad, además, el
simple hecho de estar indagando acerca de sucesos relevantes en nuestra comunidad,
fortalece la democracia representativa y participativa, lo que aporta directamente a la mejoría
de la gobernabilidad. Es decir, que estar informado, es fundamental para la democracia
porque facilita el ejercicio activo de la ciudadanía.
La app tiene como objetivo el promover la participación de los ciudadanos de Cali en
las decisiones que se toman en el Concejo, la idea está centrada en ofrecer una información
constante y transparente acerca de lo que sucede en las plenarias del Concejo e información
sobre los concejales, así como de su asistencia, votación y de los proyectos y proposiciones
en curso.
Una vez el ciudadano se registra a través de su correo electrónico o de su cuenta de
Facebook o Twitter, la app le permitirá consultar:
● Las principales noticias que se producen en el Concejo.
● El listado de concejales que incluye foto, perfil, partido político, información de
contacto, redes sociales y un historial de voto, así como el registro de los trinos
publicados en su cuenta de Twitter.
● El ciudadano podrá escoger su concejal preferido y hacer seguimiento a su trabajo.
● La Agenda actualizada de las actividades administrativas en el concejo.
● La ubicación física de los concejales, es decir el mapa de las Curules donde ubican
en la plenaria.
● Streaming: Los ciudadanos no sólo podrán ver las plenarias en vivo sino revisar el
archivo de estas.
● Además, cada usuario tendrá acceso directo a la cuenta de Twitter @ConcejoCali
donde se registra la actividad de los concejales y de la institución mediante videos,
audios y seguimiento minuto a minuto de las plenarias.
8. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
8
StakeHolders
Tabla 1
Contextualización Stakeholders
Esta sección presenta una lista de los stakeholders involucrados en el proyecto. Para cada uno de ellos, se deben listar
los concerns que van a ser tenidos en cuenta en el documento de arquitectura. Esta información se presenta en forma de
matriz, donde las filas representan los stakeholders y las columnas los concerns. Cada celda determina el grado de
relevancia del concern para el stakeholder (Tabla 2). Finalmente, basados en los concerns relevantes a cada stakeholder
se dermina los puntos de vista que se le presentarán.
El standard ANSI/IEEE 1471-2000 propone que al menos los siguientes stakeholders sean considerados: usuarios,
clientes, desarrolladores y administradores.
● Customer
● Application software developers
● Infrastructure software
developers
● End users
● Application system engineers
● Application hardware engineers
● Project manager
● Communications engineers
● Chief Engineer/Chief Scientist
● Program management
● System and software integration
and test engineers
● Safety engineers and certifiers
● External organizations
● Operational system managers
● Trainers
● Maintainers
● Auditors
● Security engineers and certifiers
Tabla 2
Definición conceptual Stakeholders Pt. 1
Stakeholder Descripción
Sociedad Hoy en día la tecnología ha tenido un impacto que ha
afectado positiva y negativamente en nuestra sociedad,
pero es algo indispensable para todos. ... El desarrollo
tecnológico, a fin de cuentas, es el motor fundamental del
progreso en nuestra sociedad y este dependerá siempre
del uso y manipulación que brindemos, digamos que la
importancia del Software para la sociedad, radica en el
uso que las personas le den, no se trata solamente de
traer juegos nuevos en un dispositivo de 1000 dólares,
hablamos de optimizar tareas, incrementar ganancias,
aumentar ingresos, optimizar tiempos, hacer la vida más
fácil, gracias a que el software hoy en día nos permite
hacer infinidad de cosas.
Consumidores En muchos de los casos de innovación queda claro que las
empresas, antes de pensar en nuevos productos, deben
pensar en las necesidades de los consumidores. Esa es la
fuente de la innovación. Estudiar, entender y prever las
tendencias del consumidor hacen que el margen de error
allanzarun nuevo producto disminuya. Pero también hay
que mezclar creatividad y modelo de gestión, en nuestro
9. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
9
caso estamos manejando una app que busca acercar al
ciudadano común y corriente, a los entes de
administración gubernamental, entonces si logramos
conocer la conducta del consumidor mejora la posición
de la app.
Usuarios finales El producir un bien o suministrar un servicio de primera
calidad (en nuestro caso una app) requiere cumplir con
las expectativas del Usuario final. Sin duda, gran partede
las empresas, han comprendido que el tener una política
de calidad, que responda a la mejora continua y la plena
satisfacción del cliente, es de gran ayuda para la
consecución de esta última esencia. Es más, el desarrollo
de una aplicación informática ha de estar claramente
ligado a una interacción con el usuario final. El mantener
viva la relación con los usuarios finales del producto o
servicio, mediante un contacto habitual, es de suma
ayuda para poder identificar las necesidades del mercado
actual.
Es lógico pensar que el correcto diseño de unaaplicación
que facilite su utilización incrementa la productividad del
trabajo diario del usuario y minimiza, entre otros, el
tiempo dedicado a comprender la complejidad del
programa.
Administraciones públicas Las administraciones públicas están en plena
transformación. La evolución de los sistemas
democráticos pasa por abrir las puertas de las
instituciones públicas para conocer las agendas de los
responsables públicos y contar con la colaboración
ciudadana.
En la primera década de siglo XXI comenzó a implantarse
la digitalización en las distintas administraciones
públicas. Hoy en día es una realidad que permite a los
ciudadanos realizar sus trámites burocráticos conmayor
facilidad y eficacia. Sin embargo, la e-administración es
una modernización del sistema donde el ciudadano se
convierte en cliente de los servicios públicos, que, gracias
a la tecnología, han mejorado mucho pero que en la
actualidad no es suficiente.
Siendo estas nuestro principal eje temático, teniendo
como objetivo promover la participación de los
ciudadanos en Cali en las decisiones que se toman en el
Concejo municipal, basándonos en la idea de ofrecer una
información constante y transparente acerca de lo que
10. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
10
sucede en las plenarias del concejo e información sobre
los senadores, así como de su asistencia, votación y de los
proyectos de ley en curso.
Medios de comunicación Diseñar publicaciones impresas ha sido históricamente
uno de los principales trabajos de muchos estudios de
diseño gráfico. Aquel casi obsoleto hoy formato busca un
buen reemplazo en el mundo digital.
No es difícil darse cuenta de la influencia que los
dispositivos móviles tienen hoy en día. Los teléfonos
inteligentes y las tabletas se utilizan en todas partes, todo
el tiempo, a punto tal que nos volvemos cada vez más
dependientes de la tecnología móvil. Una aplicación
móvil permite al público acceder a la información donde
quieran que esté, siempre que lo desee. Los usuarios
obtienen el beneficio de un acceso directo a publicaciones
previas, así como características inimaginables en
medios impresos. Por ejemplo: el uso de redes sociales y
el consumo de contenido multimedia interactivo, o el
consumo de pistas de audio con podcasts. música y otros
documentos sonoros. La combinación de estas
características interactivas puede ofrecer nuevos modos
de relación entre editoriales y lectores, y a la vez
proporcionar una experiencia de usuario única.
El dato más importante es la posibilidad de publicar sin
generar un costes y esfuerzo extra, aprovechando las
distintas plataformas de publicación.
Desarrolladores de la
aplicación de software
Los desarrolladores de la aplicación de software
desarrollaran, crearan y modificaran la aplicación
informática de software general, analizando las
necesidades del usuario y desarrollando soluciones de
software, diseñando o personalizando el software para el
uso del consumidor con el objetivo de optimizar la
eficiencia operativa; pueden analizar y diseñar las bases
de datos dentro de un área de aplicación, trabajando
individualmente o coordinando el desarrollo de la base
de datos como parte de un equipo.
La importancia del desarrollador de software radica en la
eficacia de la app que realizó al momento de ejecutar las
tareas por las cuales se programó.
En pocas palabras que el software sea útil y cumpla para
lo que fue hecho.
Director de proyecto El director de proyecto será la persona a la cual se le será
asignada la tarea de liderar un equipo con la función de
conseguir unos objetivos planteados en el desarrollo de
11. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
11
la planeación teniendo la responsabilidad total del
planeamiento y ejecución del proyecto.
Para poder conseguir sus objetivos, el director de
proyectos debe tener una serie de características. Debe
ser una persona organizada, apasionada y orientada a las
metas cuya principal habilidad sea la capacidad de
reconocer los riesgos que afectan al éxito del proyecto,
por lo que debe realizar constantes mediciones de
factores internos o externos que puedan suponer fuentes
de riesgo.
El director de proyectos no solo dirige al equipo
multidisciplinar de la empresa y app, sino que también da
una serie de pautas al cliente para que le proporcione
toda la documentación necesaria. No hay que olvidar que
en muchos casos el cuello de botella se encuentra en
nuestro propio cliente, que bien por falta de tiempo o por
interés no proporciona los datos necesarios.
Ingenieros de
telecomunicaciones
El ingeniero de telecomunicaciones se encargará de
administrar, crear, diseñar y gestionar sistemas en
tecnología de la información y las telecomunicaciones
además de brindarnos soluciones técnicas a problemas
en la transmisión y recepción de señales y la
interconexión de redes que pueda tener la app, dando
Convergencia a los servicios en redes de la misma;
Administrando, gestionando y bridando seguridad de
redes, programación, antenas y servicios de telefonía
relacionados a los diversas funciones conceptuales de la
app.
Permitiéndonos ser autodidactas y proactivos para
mantenernos actualizados, resolviendo los problemas
técnicos de señales y redes con el mayor caudal de
información posible, además para lo que es la adecuación
y también la coordinación del montaje respectivo y de la
correspondiente buena funcionalidad. De igual forma
hace la relación entre la electrónica y la información con
la finalidad de sustentar los proyectos referidos a la
Telemática.
Jefe de ingenieros El jefe de ingenieros es el responsable de realizar
estudios, desarrollar y supervisar programas destinados
a la optimización en el uso de equipos, recursos humanos,
tecnología, materiales y procedimientos para
incrementar la eficiencia y la productividad de la
realización de la app.
El Jefe de Ingeniería revisa y estudia las propuestas de
trabajo y los subcontratos. Crean los horarios de trabajo
12. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
12
para cumplir con los plazos establecidos para el proyecto.
También pueden diseñar y analizar los equipos usados en
el diseño, planeación y escrituración de software.
De igual forma, el trabajo de un Jefe de Ingeniería consiste
en la organización de los diversos grupos de personas y
el cumplimiento de las restricciones presupuestarias y de
tiempo.
Igualmente, este tipo de profesionales hacen el manejo
del personal para todas las fases del proyecto, incluyendo
la contratación, la asignación de los trabajos de otros
ingenieros y técnicos y revisan que el sitio de trabajo
tenga los materiales y equipos adecuados.
Gestión del proyecto La gestión del proyecto se basa en la disciplina de
administrar el control de proyecto, cuyo objeto de
estudio abarca la planificación, organización, motivación
y el control de los recursos necesarios para alcanzar un
fin determinado de antemano, o sea, cumplir con un
objetivo de la app, proyecto.
Los proyectos son independientes de la actividad diaria
empresarial, por lo que se requiere que se organicen una
serie de reuniones para ver cuáles son los objetivos
específicos del proyecto. Para que el proyecto tenga éxito
es esencial que se realice un trabajo en equipo eficiente.
La manera en la que la gestión de proyectos dirigirá el
trabajo depende de varios factores, entre ellos: la
escalabilidad (la posibilidad de que el proyecto crezca), la
importancia y la complejidad de las tareas.
La gestión del proyecto está esencialmente dirigida a
conseguir los objetivos preestablecidos para
proporcionar un beneficio a la organización. Los
objetivos pueden expresarse en términos de: resultados
consecuencias; beneficios u objetivos estratégicos.
Probadores de software Los probadores de software planificaran y llevara a cabo
pruebas de software de los ordenadores para comprobar
si funcionan correctamente. Identifican el riesgo de sufrir
errores la aplicación, detectando errores y los
comunican. Evalúan el funcionamiento general del
software y sugieren formas de mejorarlo.
Entre sus competencias está Construir el plan de testing;
diseñar casos de prueba; gestionar los ambientes de
prueba; generar los datos de prueba; ejecutar y
documentar pruebas, reportando y siguiendo los
incidentes encontrados, usando las herramientas
apropiadas de acuerdo con los estándares de trabajo de
donde se desempeñe.
13. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
13
Lo principal es Asegurar que el software o pieza de
software funcione de acuerdo con los requisitos; trabaje
con sus interfaces de la forma esperada, detectando en
forma temprana defectos y evitando su propagación y
llegada al cliente (interno o externo).
Ingenieros de seguridad El ingeniero en seguridad informática se encargará de
establecer la misión de seguridad informática de la
organización y app, definir la política y procesos que
permitan el respaldo de la información, definir
mecanismos y herramientas para velar por el
cumplimiento de las medidas de seguridad, realizar
informes cuando le sean requeridos.
Además de encargase de la Administración de equipos en
seguridad perimetral. Gestión de eventos e incidentes de
seguridad.
Maintainers Los Maintaners estarán encargados de la modificación de
la app después de haber sido entregado (a los usuarios o
consumidores) con el fin de corregir defectos, mejorar el
rendimiento u otros atributos, o adaptarlo a un cambio en
el entorno, versionando la app en repositorios GitHub.
Además de mantener la aplicación de una forma optima y
fluidapara los usuarios cadavezquese vaya actualizando
dicha aplicación
Auditores los auditores ayudan a verificar y evaluar las actividades
relacionadas con la calidad en el seno del software, así
como para la identificación y mejora de las áreas no
conformes con el modelo exigido, con el poder ofrecer
una aplicación que satisfaga las necesidades de los
usuarios.
Analizando y verificando la estructura que componen la
aplicación con el fin de evaluar si se satisface con la
calidad de software que se desea obtener
Tabla 3
Definición conceptual Stakeholders Pt. 2
Stakeholder Descripción
Sociedad Hoy en día la tecnología ha tenido un impacto que ha
afectado positiva y negativamente en nuestra sociedad,
pero es algo indispensable para todos. ... El desarrollo
tecnológico, a fin de cuentas, es el motor fundamental del
progreso en nuestra sociedad y este dependerá siempre
14. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
14
del uso y manipulación que brindemos, digamos que la
importancia del Software para la sociedad, radica en el
uso que las personas le den, no se trata solamente de
traer juegos nuevos en un dispositivo de 1000 dolares,
hablamos de optimizar tareas, incrementar ganancias,
aumentar ingresos, optimizar tiempos, hacer la vida más
fácil, gracias a que el software hoy en día nos permite
hacer infinidad de cosas.
Consumidores En muchos de los casos de innovación queda claro que las
empresas, antes de pensar en nuevos productos, deben
pensar en las necesidades de los consumidores. Esa es la
fuente de la innovación. Estudiar, entender y prever las
tendencias del consumidor hacen que el margen de error
al lanzar un nuevo producto disminuya. Pero también hay
que mezclar creatividad y modelo de gestión, en nuestro
caso estamos manejando una app que busca acercar al
ciudadano común y corriente, a los entes de
administración gubernamental, entonces si logramos
conocer la conducta del consumidor mejora la posición
de la app.
Usuarios finales El producir un bien o suministrar un servicio de primera
calidad (en nuestro caso una app) requiere cumplir con
las expectativas del Usuario final. Sin duda, gran partede
las empresas, han comprendido que el tener una política
de calidad, que responda a la mejora continua y la plena
satisfacción del cliente, es de gran ayuda para la
consecución de esta última esencia. Es más, el desarrollo
de una aplicación informática ha de estar claramente
ligado a una interacción con el usuario final. El mantener
viva la relación con los usuarios finales del producto o
servicio, mediante un contacto habitual, es de suma
ayuda para poder identificar las necesidades del mercado
actual.
Es lógico pensar que el correcto diseño de unaaplicación
que facilite su utilización incrementa la productividad del
trabajo diario del usuario y minimiza, entre otros, el
tiempo dedicado a comprender la complejidad del
programa.
Administraciones publicas Las administraciones públicas están en plena
transformación. La evolución de los sistemas
democráticos pasa por abrir las puertas de las
instituciones públicas para conocer las agendas de los
15. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
15
responsables públicos y contar con la colaboración
ciudadana.
En la primera década de siglo XXI comenzó a implantarse
la digitalización en las distintas administraciones
públicas. Hoy en día es una realidad que permite a los
ciudadanos realizar sus trámites burocráticos conmayor
facilidad y eficacia. Sin embargo, la e-administración es
una modernización del sistema donde el ciudadano se
convierte en cliente de los servicios públicos, que, gracias
a la tecnología, han mejorado mucho pero que en la
actualidad no es suficiente.
Siendo estas nuestro principal eje temático, teniendo
como objetivo promover la participación de los
ciudadanos en Cali en las decisiones que se toman en el
Concejo municipal, basándonos en la idea de ofrecer una
información constante y transparente acerca de lo que
sucede en las plenarias del concejo e información sobre
los senadores, así como de su asistencia, votación y de los
proyectos de ley en curso.
Medios de comunicación Diseñar publicaciones impresas ha sido históricamente
uno de los principales trabajos de muchos estudios de
diseño gráfico. Aquel casi obsoleto hoy formato busca un
buen reemplazo en el mundo digital.
No es difícil darse cuenta de la influencia que los
dispositivos móviles tienen hoy en día. Los teléfonos
inteligentes y las tabletas se utilizan en todas partes, todo
el tiempo, a punto tal que nos volvemos cada vez más
dependientes de la tecnología móvil. Una aplicación
móvil permite al público acceder a la información donde
quieran que esté, siempre que lo desee. Los usuarios
obtienen el beneficio de un acceso directo a publicaciones
previas, así como características inimaginables en
medios impresos. Por ejemplo: el uso de redes sociales y
el consumo de contenido multimedia interactivo, o el
consumo de pistas de audio con podcasts. música y otros
documentos sonoros. La combinación de estas
características interactivas puede ofrecer nuevos modos
de relación entre editoriales y lectores, y a la vez
proporcionar una experiencia de usuario única.
El dato más importante es la posibilidad de publicar sin
generar un costes y esfuerzo extra, aprovechando las
distintas plataformas de publicación.
Desarrolladores de la
aplicación de software
Los desarrolladores de la aplicación de software
desarrollaran, crearan y modificaran la aplicación
informática de software general, analizando las
16. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
16
necesidades del usuario y desarrollando soluciones de
software, diseñando o personalizando el software para el
uso del consumidor con el objetivo de optimizar la
eficiencia operativa; pueden analizar y diseñar las bases
de datos dentro de un área de aplicación, trabajando
individualmente o coordinando el desarrollo de la base
de datos como parte de un equipo.
La importancia del desarrollador de software radica en la
eficacia de la app que realizó al momento de ejecutar las
tareas por las cuales se programó.
En pocas palabras que el software sea útil y cumpla para
lo que fue hecho.
Director de proyecto El director de proyecto será la persona a la cual se le será
asignada la tarea de liderar un equipo con la función de
conseguir unos objetivos planteados en el desarrollo de
la planeación teniendo la responsabilidad total del
planeamiento y ejecución del proyecto.
Para poder conseguir sus objetivos, el director de
proyectos debe tener una serie de características. Debe
ser una persona organizada, apasionada y orientada a las
metas cuya principal habilidad sea la capacidad de
reconocer los riesgos que afectan al éxito del proyecto,
por lo que debe realizar constantes mediciones de
factores internos o externos que puedan suponer fuentes
de riesgo.
El director de proyectos no solo dirige al equipo
multidisciplinar de la empresa y app, sino que también da
una serie de pautas al cliente para que le proporcione
toda la documentación necesaria. No hay que olvidar que
en muchos casos el cuello de botella se encuentra en
nuestro propio cliente, que bien por falta de tiempo o por
interés no proporciona los datos necesarios.
Ingenieros de
telecomunicaciones
El ingeniero de telecomunicaciones se encargará de
administrar, crear, diseñar y gestionar sistemas en
tecnología de la información y las telecomunicaciones
además de brindarnos soluciones técnicas a problemas
en la transmisión y recepción de señales y la
interconexión de redes que pueda tener la app, dando
Convergencia a los servicios en redes de la misma;
Administrando, gestionando y bridando seguridad de
redes, programación, antenas y servicios de telefonía
relacionados a los diversas funciones conceptuales de la
app.
Permitiéndonos ser autodidactas y proactivos para
mantenernos actualizados, resolviendo los problemas
17. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
17
técnicos de señales y redes con el mayor caudal de
información posible, además para lo que es la adecuación
y también la coordinación del montaje respectivo y de la
correspondiente buena funcionalidad. De igual forma
hace la relación entre la electrónica y la información con
la finalidad de sustentar los proyectos referidos a la
Telemática.
Jefe de ingenieros El jefe de ingenieros es el responsable de realizar
estudios, desarrollar y supervisar programas destinados
a la optimización en el uso de equipos, recursos humanos,
tecnología, materiales y procedimientos para
incrementar la eficiencia y la productividad de la
realización de la app.
El Jefe de Ingeniería revisa y estudia las propuestas de
trabajo y los subcontratos. Crean los horarios de trabajo
para cumplir con los plazos establecidos para el proyecto.
También pueden diseñar y analizar los equipos usados en
el diseño, planeación y escrituración de software.
De igual forma, el trabajo de un Jefe de Ingeniería consiste
en la organización de los diversos grupos de personas y
el cumplimiento de las restricciones presupuestarias y de
tiempo.
Igualmente, este tipo de profesionales hacen el manejo
del personal para todas las fases del proyecto, incluyendo
la contratación, la asignación de los trabajos de otros
ingenieros y técnicos y revisan que el sitio de trabajo
tenga los materiales y equipos adecuados.
Gestión del proyecto La gestión del proyecto se basa en la disciplina de
administrar el control de proyecto, cuyo objeto de
estudio abarca la planificación, organización, motivación
y el control de los recursos necesarios para alcanzar un
fin determinado de antemano, o sea, cumplir con un
objetivo de la app, proyecto.
Los proyectos son independientes de la actividad diaria
empresarial, por lo que se requiere que se organicen una
serie de reuniones para ver cuáles son los objetivos
específicos del proyecto. Para que el proyecto tenga éxito
es esencial que se realice un trabajo en equipo eficiente.
La manera en la que la gestión de proyectos dirigirá el
trabajo depende de varios factores, entre ellos: la
escalabilidad (la posibilidad de que el proyecto crezca), la
importancia y la complejidad de las tareas.
La gestión del proyecto está esencialmente dirigida a
conseguir los objetivos preestablecidos para
proporcionar un beneficio a la organización. Los
18. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
18
objetivos pueden expresarse en términos de: resultados
consecuencias; beneficios u objetivos estratégicos.
Probadores de software Los probadores de software planificaran y llevara a cabo
pruebas de software de los ordenadores para comprobar
si funcionan correctamente. Identifican el riesgo de sufrir
errores la aplicación, detectando errores y los
comunican. Evalúan el funcionamiento general del
software y sugieren formas de mejorarlo.
Entre sus competencias está Construir el plan de testing;
diseñar casos de prueba; gestionar los ambientes de
prueba; generar los datos de prueba; ejecutar y
documentar pruebas, reportando y siguiendo los
incidentes encontrados, usando las herramientas
apropiadas de acuerdo con los estándares de trabajo de
donde se desempeñe.
Lo principal es Asegurar que el software o pieza de
software funcione de acuerdo con los requisitos; trabaje
con sus interfaces de la forma esperada, detectando en
forma temprana defectos y evitando su propagación y
llegada al cliente (interno o externo).
Ingenieros de seguridad El ingeniero en seguridad informática se encargará de
establecer la misión de seguridad informática de la
organización y app, definir la política y procesos que
permitan el respaldo de la información, definir
mecanismos y herramientas para velar por el
cumplimiento de las medidas de seguridad, realizar
informes cuando le sean requeridos.
Además de encargase de la Administración de equipos en
seguridad perimetral. Gestión de eventos e incidentes de
seguridad.
Maintainers Los Maintaners estarán encargados de la modificación de
la app después de haber sido entregado (a los usuarios o
consumidores) con el fin de corregir defectos, mejorar el
rendimiento u otros atributos, o adaptarlo a un cambio en
el entorno, versionando la app en repositorios GitHub.
Además de mantener la aplicación de una forma optima y
fluidapara los usuarios cadavezquese vaya actualizando
dicha aplicación
Auditores los auditores ayudan a verificar y evaluar las actividades
relacionadas con la calidad en el seno del software, así
como para la identificación y mejora de las áreas no
conformes con el modelo exigido, con el poder ofrecer
una aplicación que satisfaga las necesidades de los
usuarios.
19. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
19
Analizando y verificando la estructura que componen la
aplicación con el fin de evaluar si se satisface con la
calidad de software que se desea obtener
Requerimientos
A continuación, se describen las principales características funcionales y no
funcionales, que debe contener el sistema de información:
Requerimientos funcionales:
1. ¿Quién solicita?: Usuarios.
Descripción: Login e identificación de los usuarios utilizando Facebook connect,
Gmail o Twitter Con esto se disminuye en buen grado el uso y la subida de
contenido de usuarios anónimos.
Arq. Sig: Si.
2. ¿Quién solicita?: Usuario final, Administraciones públicas y medios de
comunicación.
Descripción: Se puede transmitir determinados segmentos de la programación
vía streaming de video. Si la plataforma contara con una API que permita saber
cuándo se está transmitiendo, la app de forma automática incorpora el video en la
vista predeterminada.
Arq. Sig: Si.
3. ¿Quién solicita?: Usuario final, Administraciones públicas y medios de
comunicación.
Descripción: Conexión con un feed de noticias, permite actualización automática
de un blog o portal de noticias.
Arq. Sig: Si.
4. ¿Quién solicita?: Usuario final y Medios de comunicación.
20. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
20
Descripción: El sistema debe permitir a los usuarios buscar y consultar la
información sobre los concejales, en la cual podrán encontrar información como
lo es el nombre, partido político, Comisión, número telefónico, correo electrónico,
redes sociales e historial de votación a proposiciones y proyectos.
Arq. Sig: Si.
5. ¿Quién solicita?: Administración pública.
Descripción: El sistema debe almacenar información sobre las comisiones
almacenando información como lo es el historial de votación a proposiciones y
proyectos.
Arq. Sig: Si.
6. ¿Quién solicita?: Usuario final y Medios de comunicación.
Descripción: El sistema debe permitir a los usuarios buscar y consultar la
información sobre las comisiones, en la cual podrán encontrar informacióncomo
lo es el historial de votación a proposiciones y proyectos.
Arq. Sig: Si.
7. ¿Quién solicita?: Administración pública.
Descripción: El sistema debe almacenar información sobre las proposiciones y
proyectos almacenando información como lo son, Textos Radicados de Los
Proyectos de Acto Legislativo y Proyectos de Ley, Ficha Tecnica de Los
Proyectos de Ley, Ficha Tecnica de Los Proyectos de Acto Legislativo, Gaceta
de la alcaldía, Informes Legislativos Concejo.
Arq. Sig: Si.
8. ¿Quién solicita?: Usuario final y Medios de comunicación.
Descripción: El sistema debe permitir a los usuarios buscar y consultar la
información sobre las proposiciones y proyectos, en la cual podrán encontrar
información como lo son, Textos Radicados de Los Proyectos de Acto Legislativo
y Proyectos de Ley, Ficha Tecnica de Los Proyectos de Ley, Ficha Tecnica de
Los Proyectos de Acto Legislativo, Gaceta de la alcaldía, Informes Legislativos
Concejo.
Arq. Sig: Si.
9. ¿Quién solicita?: Usuario final.
21. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
21
Descripción: El sistema debe permitir le al usuario marcar su proposición y
proyecto favorito, con lo que se le brindara notificaciones e información de
primera mano sobre el mismo.
Arq. Sig: Si.
10. ¿Quién solicita?: Administración pública.
Descripción: El sistema debe almacenar información sobre los eventos y
plenarias a realizar, mostrándolo por medio de un calendario.
Arq. Sig: No.
11. ¿Quién solicita?: Usuario final y Medios de comunicación.
Descripción: El sistema debe visualizar por medio de calendario los eventos y
plenarias a realizar.
Arq. Sig: Si.
12. ¿Quién solicita?: Administración pública.
Descripción: El sistema debe permitir almacenar información sobre la
distribución de las curules en el concejo, visualizándolos por partido político y la
estructura de esta.
Arq. Sig: Si.
13. ¿Quién solicita?: Usuario final y Medios de comunicación.
Descripción: El sistema debe permitir visualizar por medio de un plano grafico
estructurado de la sala del concejo, las curules del concejo por medio de la
distribución del partido político.
Arq. Sig: Si.
14. ¿Quién solicita?: Sociedad.
Descripción: El sistema debe permitir le al usuario ponerse en contacto con el
concejo por medio de un mensaje, en el cual se le solicitara al mismo los datos de
nombre, e-mail y recado, los mismo serán entregados a la sección de atención
ciudadana.
Arq. Sig: Si.
15. ¿Quién solicita?: Auditores.
Descripción: El sistema debe permitir le al usuario cambiar su contraseña de
usuario cuantas veces lo quiera y lo considere necesario, que si al ser registrado
22. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
22
por medio de una red social, el cambio de esta se debe hacer directamente en la
respectiva red social, o simplemente por la suministración de un mensaje vía
correo electrónico.
Arq. Sig: Si.
16. ¿Quién solicita?: Sociedad, Consumidor, Usuario final, Administración pública,
Medios de comunicación.
Descripción: El sistema debe permitir le a un usuario cualquiera, participar en
encuestas sobre su opinión acerca a proyectos o proposiciones propuestas por la
Administración pública.
Arq. Sig: Si.
17. ¿Quién solicita?: Administración pública.
Descripción: El sistema debe permitir la generación de encuestas por parte de la
administración pública, (un usuario administrador de la app), sobre algún tema en
específico, proyecto o proposición tratado por el concejo.
Arq. Sig: Si.
Requerimientos no funcionales:
1. ¿Quién solicita?: Ingenieros de Seguridad.
Descripción: El nuevo sistema debe desarrollarse aplicando patrones y
recomendaciones de programación que incrementen la seguridad de datos.
Arq. Sig: Si.
2. ¿Quién solicita?: Probadores de software.
Descripción: La tasa de errores cometidos por el usuario deberá ser menor del
1% de las transacciones totales ejecutadas en el sistema.
Arq. Sig: No.
3. ¿Quién solicita?: Auditores.
Descripción: El sistema debe ser capaz de operar adecuadamente con hasta con
un número infinito de usuarios con sesiones concurrentes.
Arq. Sig: Si.
4. ¿Quién solicita?: Maintainers.
23. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
23
Descripción: Se debe especificar la definición y el manejo de la documentación
técnica (manuales técnicos y de instalación) y funcional (manuales de
administración, configuración y de usuario final) del sistema de información,
establecer procedimientos claros de actualización y aprobación. En múltiples
ocasiones, ni la documentación ni las especificaciones de diseño están
disponibles, y por tanto, los costos del mantenimiento se incrementan debido al
tiempo requerido para que un ingeniero entienda el diseño del software antes de
poder ponerse a modificarlo.
El software desarrollado, por lo menos, debe tener:
• manual técnico
• manual de usuario final
• manual de administración
• manual de instalaciones e integración
Arq. Sig: Si.
5. ¿Quién solicita?: Ingeniero de telecomunicaciones.
Descripción: El aplicativo debe utilizar el protocolo de comunicación TCP-IP
para la transmisión de información desde y hacia los diferentes componentes que
se encuentren distribuidos a través de la red, de manera que se garanticen
adecuados niveles de protección a los datos.
Arq. Sig: Si.
6. ¿Quién solicita?: Auditores.
Descripción: El software deberá permitirle al usuario configurar y personalizar
la app a su gusto y como lo considere necesario, con el fin de brindar una mejor
experiencia de usuario.
Arq. Sig: No.
7. ¿Quién solicita?: Desarrolladores de la aplicación de software.
Descripción: Con el fin de tener una app versátil, eficaz y portable, esta misma
será desarrollada a través del lenguaje de programación Kotlin para celulares con
sistema operativo Android con una versión de 6.0 en adelante.
Arq. Sig: Si.
8. ¿Quién solicita?: director de proyecto.
24. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
24
Descripción: El procedimiento de desarrollo de software a usar debe estar
definido explícitamente (en manuales de procedimientos) y debe cumplir con los
estándares ISO 9000.
Arq. Sig: Si.
9. ¿Quién solicita?: Ingenieros de seguridad.
Descripción: Si se identifican ataques de seguridad o brecha del sistema, el
mismo no continuará operando hasta ser desbloqueado por un administrador de
seguridad.
Arq. Sig: Si.
10. ¿Quién solicita?: Gestión del proyecto.
Descripción: Cada dos semanas deberán producirse reportes gerenciales en los
cuales se muestre el esfuerzo invertido en cada uno de los componentes del nuevo
sistema.
Arq. Sig: No.
11. ¿Quién solicita?: Ingeniero de telecomunicaciones.
Descripción: Todas las comunicaciones externas entre servicios de datos,
aplicación y cliente del sistema deben ser encriptadas usando el algoritmo RSA.
Arq. Sig: Si.
12. ¿Quién solicita?: jefe de ingenieros.
Descripción: El sistema debe ser desarrollado utilizando herramientas CASE
XYZ.
Arq. Sig: Si.
13. ¿Quién solicita?: Maintainers.
Descripción: Debe especificarse un plan de recuperación ante desastres para el
sistema a ser desarrollado.
Arq. Sig: No.
25. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
25
Estimación de esfuerzo con base al cálculo de tamaño de casos de uso
UAW (Pesos de los Actores sin Ajustar)
– Fórmula:
UAW=∑ (cantidad de un Tipo de Actor * Factor)
Tabla 4
Contador actores e identificación su complejidad
Tipo de actor Número de
actores
Factores
de peso
Comentarios
Simple 5 1 Api straming Youtube, Facebook
connect, Api gmail, Api Twitter,
Feed de noticias
Medio 4 2 Gestor BD, Servidor IDEUnco,
Licensee, Modelo TCP/ IP
Complejo 3 3 Usuario final, Administrador,
dependiente (Funcionario,
burócrata, empleado)
Pesos actores sin ajustar 22 A
Cálculo UUCW (Pesos de los Casos de Uso sin Ajustar).
– Fórmula:
UUCW=∑ (Cantidad de un Tipo de Caso Uso*Factor)
26. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
26
Tabla 5
Contador de casos de uso e identificación su complejidad
Tipo de caso de uso Número de
casos de
uso
Factores
de peso
Comentarios
Simple 4 5 Busqueda y consulta de
información, participación
usuario.
Medio 8 10 Login, Administración de
información, Almacenar
información, marcar y clasificar
opiniones, configuración cuenta
de usuario.
Complejo 5 15 Transmisión streaming,
Conexión feed noticias,
visualización estadisticas y
posición, Contacto directo.
Peso casos de uso sin
ajustar
175 B
Cálculo de los puntos de casos de uso sin ajustar
-Fórmula:
UUCP=UUCW+UAW
Tabla 6
Calculo los PCUs no ajustados
Casos de uso sin ajustar 197 A+B=C
Cálculo TCF (Factor de Complejidad Técnica)
– Fórmula:
27. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
27
TCF=∑ (Cantidad de un Tipo de complejidad técnica*Factor)
Tabla 7
Determinación factores de complejidad técnicos
Factor técnico Grado de
influencia en
la
productivida
d
Factores
de peso
Razones
Sistema distribuido 5 2 Es un sistema formado por
varios componentes, HW y/o
SW, localizados en diferentes
dispositivos, conectados en
red, que se comunican y
Desempeño 2 1
coordinan sólo mediante el
Conocimiento del 3 1
Usuario paso de mensajes (al no poseer
memoria compartida no se
Procesamiento complejo 4 1 pueden utilizar formas de
Código reusable 3 1 sincronización como
Fácil de instalar 5 0,5 monitores o semáforos).
Fácil de usar 5 0,5 La informática es un poco
Portable 4 2 como el inglés. Todos tenemos
Facil de modificar 3 1 nivel medio. Lo malo viene
Concurrente 5 1 cuando un día tenemos que
Características de 2 1 hacer uso de esta habilidad y
seguridad nos salen los colores. No es la
Acceso por terceros 1 1 primera vez en la que en una
Requiere capacitación 3 1 prueba de nivel en una
especial selección la mayoría de los
candidatos se caen por este
28. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
28
motivo.Las primeras
impresiones importan, sin
duda. Pero también lo es una
planificación concienzuda En
un nuevo puesto de trabajo se
quiere probarse a si mismo, lo
cual es totalmente
comprensible. Pero para
lograr una buena primera
impresión, puede que se caiga
en la tentación de apurarse al
escribir el código y además
dejar ya determinada la
estrategia que deberá tomar el
código más adelante. Sin
embargo, este método de
trabajo se puede volver contra.
el código puede tener sentido
en la cabeza, pero luego toma
una orientación totalmente
contraria a la que se supone
que debería haber tomado.
Complejidad del factor
técnico
1,09 D
Cálculo ECF (Factor de Complejidad Ambiental)
– Fórmula:
ECF=∑ (Cantidad de un Tipo de complejidad ambiental*Factor)
29. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
29
Tabla 8
Determinación factores de complejidad ambiental
Factor ambiental Grado de
influencia en
la
productivida
d
Factores
de peso
Razones
Familiar con RUP 5 1,5 En la construcción y desarrollo
de proyectos se aplican
métodos y técnicas para
resolver los problemas, la
informática aporta
herramientas y
procedimientos sobre los que
se apoya la ingeniería de
software. Con el fin de
aumentar la productividad y
trabajo de los ingenieros del
software, por lo que debemos
tener encuenta facotes que
pueden estar en nuestra
contra, como lo es la
familiarización con las
metodologias desarrollo,
lenguaje de rogramación y
disponibilidad del personal.
Experiencia con
aplicación
4 0,5
Experiencia Orientado
Objetos
3 1
Capacidad del analista 2 0,5
Motivación 3 1
Requerimientos estables 4 2
Personal medio tiempo 2 -1
Dificultad del lenguaje
programación
5 -1
Complejidad del factor
ambiental
0,875 E
30. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
30
Análisis resultados
Tabla 9
Análisis y estimación de esfuerzo
Casos de uso ajustados 188 C*D*E=F
Caso de uso / hora-persona 20 G
Esfuerzo horas-persona 3760 F*G
Esfuerzo Pesimista 1300 H
Esfuerzo Optimista 1000 I
Esfuerzo Ponderado 2890 (H+4(F*G)+I)/
6
Tabla 10
Funciones y determinaciones finales de la distribución porcentual del tiempo de esfuerzo en cada una de las
etapas del proyecto.
Distribución de esfuerzo por fase Porcentaje Esfuerzo
Análisis 19% 549
Diseño 12% 347
Codificación 34% 983
Pruebas 30% 867
Administración del proyecto 28% 809
Otros 8% 231
Total, esfuerzo horas 3786
31. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
31
Metodología para implementar.
Por lo que hemos podido investigar la metodología propuesta para el desarrollo de
aplicaciones para móviles se fundamenta principal mente en la experiencia de investigaciones
previas en aplicaciones móviles, la evaluación del potencial de éxito para servicios de tercera
generación denominada 6 M, la ingeniería de software educativo con modelado orientado
por objetos (ISE-OO), y principalmente en los valores de las metodologías ágiles.
De la ISE-OO se hereda el enfoque de los micro-mundos interactivos y la orientación
por objetos; los elementos de los micromundos más utilizados en los servicios móviles
interactivos son: Mundo, Escenarios, Personajes y Roles, Argumento e Historia, Variables
Compensatorias, Variables de Control, Variables de Resultado, Zonas de Comunicación,
Ambientación-Caracterización, Recuperación de Estados Anteriores, Manejo de Información
del Usuario, Mecanismos para Análisis de Desempeño, Ampliación de las Posibilidades del
Micro-mundo, Personalización del Ambiente y, Soporte a la Comunicación en Grupo, entre
otros (Gómez, Galvis y Mariño, 1998).
De las metodologías ágiles se heredan los conceptos inmersos en los cuatro
postulados o manifiesto ágil (Beck et al., 2001).
● Desarrollar software que funciona más que conseguir buena documentación.
● La respuesta ante el cambio es más importante que el seguimiento de un plan.
● Colaboración con el cliente sobre negociación contractual.
● Individuos e interacciones sobre procesos y herramientas.
De la 6 M's se extrae la concepción de que las aplicaciones móviles debengarantizar
el cumplimiento de las necesidades de los usuarios y al mismo tiempo generen ingresos. La
32. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
32
6 M's debe su nombre a los seis atributos que se miden para evaluar el éxito del servicio
propuesto: Movement (Movimiento), Moment (Momento), Me (Yo), Multi-user
(Multiusuario), Money (Dinero) y Machines (Máquinas) (Ahonen, Barret y Golding, 2002).
La metodología se encuentra enmarcada en cinco fases como se muestra en la figura
1, denominadas: análisis, diseño, desarrollo, pruebas de funcionamiento y entrega. A
continuación, se describe cada una de las actividades que intervienen en el desarrollo de la
propuesta.
Figura 1. Etapas de la metodología para el desarrollo de aplicaciones móviles (Gasca, Camargo, & Medina,
2014)
Análisis:
En esta fase se analizan las peticiones o requerimientos de las personas o entidad para la cual
se desarrolla el servicio móvil "Cliente", el propósito es definir las características del mundo
o entorno de la aplicación. Se realizan tres tareas: obtener requerimientos, clasificar los
requerimientos y personalizar el servicio.
● Obtener requerimientos: se sugiere hacer una serie de entrevistas al cliente, para que
manifieste los síntomas del problema o necesidades que se pretenden solucionar con
las tecnologías móviles, o simplemente, para que señale las características que debe
tener la aplicación.
33. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
33
● Clasificar los requerimientos: una vez identificados los requerimientos que debe tener
el software, se procede a clasificarlos. Dichos requerimientos se pueden clasificaren
entorno, mundo, funcionales y no funcionales.
El entorno se refiere a todo lo que rodea al servicio. Por ejemplo, las características
técnicas del dispositivo móvil del cliente, el sistema operativo subyacente (móvil y
servidores), la tecnología utilizada para la transferencia de información, el Sistema
Manejador de Base de Datos, Data Base Management System (DBMS), si se requiere, el
formato de archivos y, otros módulos tecnológicos utilizados para el servicio.
El mundo es la forma cómo interactúan el usuario y la aplicación. Aquí se encuentran
los requerimientos de la Interfaz Gráfica de Usuario, Graphical User Interface (IGU), la
forma en que el software va a generar los datos de salida, el formato de los datos y los demás
requerimientos que involucren la comunicación hombre-máquina, considerando la gama
tecnológica de los teléfonos móviles de los usuarios a la que va dirigida el servicio.
Los requerimientos funcionales son todos aquellos que demandan una función dentro
del sistema. Se deben definir claramente cada una de las tareas que debe realizar la aplicación.
Los requerimientos no funcionales son la estabilidad, la portabilidad, elrendimiento,
el tiempo de salida al mercado y, el costo, entre otros.
● Personalizar el servicio: adicionalmente se deben analizar aspectos de la cotidianidad
del cliente como preferencias, costumbres y particularidades del usuario, con el
propósito de garantizar la aceptación del servicio.
Diseño:
El objetivo de esta etapa es plasmar el pensamiento de la solución mediante diagramas o
esquemas, considerando la mejor alternativa al integrar aspectos técnicos, funcionales,
sociales y económicos. A esta fase se retorna si no se obtiene lo deseado en la etapa prueba
de funcionamiento.
34. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
34
Se realizan cuatro actividades en esta fase: definir el escenario, estructurar el software, definir
tiempos y asignar recursos.
● Definir el escenario: las aplicaciones móviles se pueden diseñar para ejecutarse en
diferentes escenarios, dependiendo del sistema de conexión y sincronización con el
servidor o aplicación central; el proceso de sincronización se realiza para insertar,
modificar o borrar información. Entre los diferentes escenarios se encuentran los
siguientes: 1) desconectado: los procesos se realizan en el dispositivo móvil
desconectado, después de terminar el proceso, si se requiere, puede conectarse con
una aplicación central mediante el proceso de sincronización. 2) Semiconectado: los
procesos pueden ejecutarse en el dispositivo móvil desconectado, pero se requiere
establecer conexión en algún momento para terminar el proceso, al sincronizar la
informacióncon el servidor o aplicación central. En los escenarios desconectado y
semiconectado se recomienda utilizar los protocolos y tecnologías que se ajusten al
servicio y capacidades tecnológicas del dispositivo. Algunos son: Media Transfer
Protocol (MTP), Near Field Communication (NFC), SlowSync, FastSync, SyncML,
entre otros. 3) Conectado: el dispositivo debe estar siempre conectado con la
aplicación central o servidor para su correcto funcionamiento, no se almacenan datos
o archivos en el móvil, la sincronización se realiza mediante la validación de
formularios, usualmente se utiliza el Protocolo de Transferencia de Hipertexto
(Hypertext Transfer Protocol, HTTP).
● Estructurar el software: se deben utilizar algunos diagramas de Modelado de
Lenguaje Unificado, Unified Modeling Language (UML), según las necesidades del
proyecto, modelando el sistema desde varias perspectivas, ver figura 2.
35. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
35
Figura 2. Posibles diagramas para el desarrollo de aplicaciones móviles (Gasca, Camargo, & Medina, 2014)
Además, se nos sugiere traducir los requerimientos obtenidos de la etapa anterior en un
diagrama que describa en forma objetiva el servicio por implementar. Además, definir un
patrón de diseño para flexibilizar, modular y reutilizar lo desarrollado; la selección del patrón
de diseño debe estar acorde con el escenario del servicio. Algunos patrones que se ajustan a
los escenarios de las aplicaciones móviles son: modelo vista de controlador, diseño de capas,
entre otros.
● Definir tiempos: se establecen los plazos para cada una de las actividades restantes,
con el objetivo de terminar la aplicación a tiempo para su salida al mercado. Se debe
tener en cuenta el diseño computacional del software realizado en la tarea anterior y,
las características volátiles y dinámicas de los servicios móviles.
● Asignar recursos: se asignan los recursos para realizar cada actividad y alcanzar los
objetivos propuestos, se deben considerar recursos humanos, financieros y
tecnológicos. Además, se deben seleccionar las herramientas para el desarrollo de la
aplicación móvil.
Desarrollo:
36. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
36
El objetivo de esta fase es implementar el diseño en un producto de software. En esta etapa
se realizan las siguientes actividades:
● Codificar: se escribe en el lenguaje de programación seleccionado, cada una de las
partes definidas en los diagramas realizados en la etapa de diseño.
● Pruebas unitarias: se verifica el funcionamiento de la aplicación. En primer lugar, se
comprueba la correcta operación de cada elemento desarrollado -objeto, clase,
actividad, documento, entre otros- en forma individual; posteriormente, se pone en
funcionamiento el conjunto de elementos, comprobando la interrelación entre ellos.
Se ejecuta y se observan los resultados obtenidos, para compararlos con los esperados.
● Documentar el código: a medida que se codifica y se prueba cada elemento, se redacta
la pequeña documentación sobre lo desarrollado.
● Codificar ayudas: además del manual de instalación y de usuario, deben existir una
serie de ayudas que informen de manera didáctica lo que puede hacer el usuario con
la aplicación, estas ayudas deben ser codificadas en el mismo lenguaje de
programación e integrada en la interfaz de aplicación para visualizarlas en elmóvil.
Pruebas de funcionamiento:
El objetivo de esta fase es verificar el funcionamiento de la aplicación en diferentes
escenarios y condiciones; para esto se realizan las siguientes tareas:
● Emulación y simulación: se realizan pruebas simulando el escenario y emulando el
dispositivo móvil, explorando todas las utilidades y funciones de la aplicación,
introduciendo diferentes datos, inclusive erróneos, para medir la funcionalidad y el
nivel de robustez del software. Si se encuentran algunas fallas, se debe regresar a la
etapa de codificación en la fase de desarrollo para solucionar los problemas, si las
pruebas son satisfactorias se procede a la etapa de pruebas con dispositivos reales.
● Dispositivos reales: deben hacerse pruebas de campo en equipos reales para medirel
desempeño y el rendimiento del aplicativo. Si se encuentran fallas en el tiempo de
37. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
37
ejecución, si el software no cumple con los requerimientos especificados, o si el
cliente solicita un cambio de última hora, hay que regresar a la fase de diseño para
reestructurar y solucionar el inconveniente presentado.
● Análisis de las 6 M's: para valorar el potencial de éxito del servicio, se sugiere buscar
un grupo de expertos en el campo del desarrollo móvil para que utilicen el método de
evaluación de las 6 M's, y califiquen la presencia de los seis atributos en la aplicación
desarrollada.
Cualquier servicio que brinde un gran valor en cualquiera de las 6 M's tiene un buen potencial
para el éxito como servicio móvil. Si la evaluación de las 6 M's del servicio es insatisfactoria,
se debe rediseñar el servicio fortaleciendo los atributos mencionados.
Entrega:
Terminada la depuración de la aplicación y atendidos todos los requerimientos de última hora
del cliente se da por finalizada la aplicación y se procede a la entrega del ejecutable, el código
fuente, la documentación y el manual del sistema.
● Manuales: el objetivo es el entrenamiento; una aplicación móvil debe constar de un
manual del sistema donde se indique el proceso de instalación, la atención a posibles
fallas en el tiempo de ejecución y, las especificaciones técnicas mínimas de hardware
y software que requiere el equipo, para el funcionamiento adecuado del aplicativo
desarrollado.
● Distribución: se define el canal de comercialización de la aplicación, con el propósito
de adecuar la aplicación al medio de distribución. A continuación, se mencionan
algunos de los canales de distribución existentes.
38. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
38
Las tiendas físicas u outlets, especializadas o no, corresponden a las tiendas que venden
dispositivos y servicios de telecomunicaciones, normalmente operadores o marcas como
Apple.
Los portales de operadores o desarrolladores de servicios ofrecen un catálogo amplio de
aplicaciones y ventas vía Web Site desde el PC, que luego son instaladas en el móvil.
Las Applications Stores, son las tiendas online de los fabricantes de dispositivos o de sistemas
operativos.
OTA, Over the Air, es la comercialización de aplicaciones a través de la interfaz de radio.
Los contenidos móviles son distribuidos a los terminales usando SMS, WAP y Streaming,
entre otros.
Los servicios basados en el Subscriber Identity Module (SIM), o la Universal Integrated
Circuit Card (UICC), son aplicaciones instaladas previamente en el chip de estas tarjetas.
Resultados:
Esta metodología toma como base para su análisis de funcionamiento El Diagrama de
Ishikawa, también conocido como Diagrama de Espina de Pescado o Diagrama de Causa y
Efecto, es una herramienta de la calidad que ayuda a levantar las causas-raíces de un
problema, analizando todos los factores que involucran la ejecución del proceso.
Creado en la década de 60, por Kaoru Ishikawa, el diagrama tiene en cuenta todos los
aspectos que pueden haber llevado a la ocurrencia del problema, de esa forma, al utilizarlo,
las posibilidades de que algún detalle sea olvidado disminuyen considerablemente.
En la metodología, todo problema tiene causas específicas, y esas causas deben ser analizadas
y probadas, una a una, a fin de comprobar cuál de ellas está realmente causando el efecto
(problema) que se quiere eliminar. Eliminado las causas, se elimina el problema.
39. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
39
Figura 3. Diagrama de espina de pescado básico (Normas Internacionales del Trabajo (NIT))
El Diagrama de Ishikawa presenta la relación existente entre el resultado no deseado o no
conforme de un proceso (efecto) y los diversos factores (causas) que pueden contribuir a que
ese resultado haya ocurrido. Su relación con la imagen de una espina de pescado se da debido
al hecho de que podemos considerar sus espinas las causas de los problemas planteados, que
contribuirán al descubrimiento de su efecto, además del formato gráfico que se asemeja al
diseño de un esqueleto de pescado.
Es posible aplicar el diagrama de Ishikawa tanto como la metodología a diversos contextos
y de diferentes maneras, pero nos enfocamos primordial y como objetivo del curso de Ing.
De Software, a los procesos conyugados a la elaboración de software integro, entre la cuales
se destaca la utilización:
● Para ver las causas principales y secundarias de un problema (efecto).
● Para ampliar la visión de las posibles causas de un problema, viéndolo de manera más
sistémica y completa.
● Para identificar soluciones, levantando los recursos disponibles por la empresa y
nosotros mismos.
● Para generar mejoras en los procesos.
40. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
40
Como se dijo anteriormente, se proponen 6 categorías por el método, que son: Movement
(Movimiento), Moment (Momento), Me (Yo), Multi-user (Multiusuario), Money (Dinero) y
Machines (Máquinas) “las 6Ms”. Sin embargo, no todos los procesos o problemas se utilizan
de todos estos factores, así que es necesario evaluar cuáles de ellos están presentes o son
importantes para la ejecución.
Es posible que sólo evalúe 4 de ellos; No hay ningún problema con esto, siempre y cuando
el análisis se haga sobre la base de hechos y datos y no se quita ningún aspecto importante
En el análisis de resultados del proyecto, hemos decidido incorporar el Diagrama de Causa y
Efecto al flujo de tratativas de no conformidades. Hemos hecho esto porque la técnica es una
de las formas más eficaces de analizar las causas raíz, ayudándonos a profundizar en todos
los aspectos del proceso.
Además de posibilitar la eliminación de características innecesarias, y se perciban errores o
problemas con mayor rapidez., permitiéndonos a estandarizar y centralizar el registro de
información, aumentando la rastreabilidad de los datos y facilitando la consulta cuando sea
necesario.
Arquitectura para utilizar
Para poder elegir una arquitectura de software a usar en el proyecto, tenemos que
partir del punto que estamos trabajando con una aplicación móvil, así que tenemos que ser
conscientes de la serie de características con las que cumple este tipo de software,tendiendo
cuenta la cantidad y tipo de funcionalidades, por lo que investigando hemos podido encontrar
que estas aplican a un tipo de arquitecturas diseñadas específicamente para ellas:
• Aplicaciones móviles autocontenidas.
• Aplicaciones móviles con conexión a Internet.
• Aplicaciones móviles con descarga de información estática.
• Aplicaciones móviles con información dinámica.
41. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
41
Cada una de las anteriores se refieren al tipo de arquitecturas implementadas en el
desarrollo de aplicaciones móviles, se debe a el tipo de información el cual se valla a impartir;
recordando que a la hora de desarrollar aplicaciones móviles, hay que tener lo que la
escalabilidad y todas sus ventajas. las aplicaciones móviles según la información que
imparten se dividen en dos grupos, aplicaciones móviles autocontenidas y las aplicaciones
con conexión a Internet.
En este caso, nuestro proyecto se basa primordialmente en una app móvil, donde se
muestra determinada información, como las principales noticias que se producen en el
Concejo, el listado de concejales que incluye foto, perfil, partido político, información de
contacto, redes sociales y un historial de voto, así como el registro de los trinos publicados
en su cuenta de Twitter, el ciudadano podrá escoger su concejal preferido y hacer seguimiento
a su trabajo, etc. Por lo que el primer paso es decidir la arquitectura de software que se
utilizara en el proyecto, que en este caso se basara en contenido que se obtiene desde fuentes
externas.
Las descriptas anteriormente son algunas ideas básicas que se tienen planeadas para
la aplicación, por lo cual se tendrán que transmitir muy a menudo a personas que, sin tener
un contacto previo con el mundo de aplicaciones y la web, se verán ligadas el uso y
codificación de esta.
Por lo que hemos decido que la arquitectura de la misma se basara en una app con
información dinámica; El funcionamiento básico de nuestra app, se basa en el procesamiento
e interpretación de información que se encuentra almacenada en una base de datos la cualse
encuentra alojada en un servidor, a través de servicios API mediante script PHP (u otro
lenguaje de servidor) que se conecta a la base de datos y genera una XML o archivos
descargable que retorna a la app, a través de servicios API los cuales comunican al bancode
datos con la interfaz de la app.
Esto lo hacemos con el fin de desarrollar una aplicación que sea escalable y de rápida
actualización, haciendo que exista solo una versión de la app en el servidor, por lo que habrá
que distribuirla entre los demás ordenadores, por lo que el proceso de actualización será más
rápido y limpio.
42. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
42
Por lo que se nos permitirá de manera más fácil editar la base de datos, además de
permitirnos generar contenido con formularios web o con conector de base datos, con lo que
la modificación de información es sencilla y rápida.
Aunque con esto debemos aclarar que la complejidad del desarrollo será mayor, al
igual que el coste de desarrollo, ya que hay parte de desarrollo web, además de los costes de
hosting web para alojar los scripts y base de datos.
Pero ya enfocándonos más en la estructura lógica y configuración del hardware
distribuido para el funcionamiento teórico y práctico de la aplicación, partiendo desde el
punto que las tareas se reparten entre los proveedores de recursos o servicios, llamados
servidores, y los demandantes, llamados clientes, siendo estos últimos los que realizan
peticiones a otro programa, el servidor, quien le da respuesta.
Por lo que hemos decidido aplicar la arquitectura de software de tres niveles, que es
una variación de la ya muy conocida arquitectura Cliente-Servidor, donde la carga se divide
en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación
(interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra
para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.
Esta misma consiste en cómo organi•zar el modelo de diseño en capas, que pueden
estar físicamente distribuidas, lo cual quiere decir que los componentes de una capa sólo
pueden hacer referencia a componentes en capas inmediatamente inferiores. Este patrón es
importante porque simplifica la comprensión y la organización del desarrollo de sistemas
complejos, reduciendo las dependencias de forma que las capas más bajas no son conscientes
de ningún detalle o interfaz de las superiores. Además, nos ayuda a identificar qué puede
reutilizarse, y proporciona una estructura que nos ayuda a tomar decisiones sobre qué partes
comprar y qué partes construir.
Esta separación entre la lógica de aplicación de la interfaz de usuario añade una
enorme flexibilidad al diseño de la aplicación. Pueden construirse y desplegarse múltiples
interfaces de usuario sin cambiar en absoluto la lógica de aplicación siempre que está presente
una interfaz claramente definida a la capa de presentación.
● Diagrama arquitectura
44. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
44
Figura 4. Diagrama de despliegue, funcionamiento del backend Miconcejo
Fuente: Elaboración propia
Patrones de diseño a utilizar
Durante el análisis, planeación y desarrollo del proyecto, hemos podido constatar que
el desarrollo de la aplicación cuenta con dos situaciones: Desarrollo Frontend y Desarrollo
Backend.
El Frontend tiende a ser programación, pero el diseño de la app también hace parte
del mismo; ya que es la parte encargada de maquetar la estructura semántica del contenido,
codificar el diseño en hojas de estilo y agregar la interacción con el usuario (JavaScript).
Mientras que el backend compone el acceso a bases de datos y generación de
plantillas del lado del servidor. En backend se encargan de implementar MySQL, Postgres,
SQL Server o MongoDB. Luego, un lenguaje como PHP o JSP, o frameworks como RoR,
Django, Node.JS o .NET se conectan a la base de datos.
La importancia de los patrones de desarrollo radica en el backend, cuando empezamos
a desarrollar software, es común que cada uno utilice su propia lógica, conocimientos y
experiencia para crear código. Y esto muchas veces resulta en desarrollos complejos que sólo
su creador entiende. Pero ¿es posible desarrollar un módulo que otro programador pueda
aprovechar entender y mejorar? La respuesta está en los patrones de diseño. Estos
básicamente son modelos y/o estructuras que sirven como guía para que los programadores
trabajen sobre ellos.
Por lo que podríamos definir que un patrón de diseños es, una manera de resolver un
problema. Entonces partiendo desde esta definición analizamos plantearnos como objetivos
de solución de problema sobre estructura de codificación práctica, teórica y aplicada al
desarrollo del Bakckend de la app, los siguientes:
45. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
45
• Estandarizar el lenguaje entre programadores.
• Evitar perder tiempo en soluciones a problemas ya resueltos o conocidos.
• Crear código reusable (excelente ventaja).
Los patrones de diseño que hemos decidido implementar son:
• Adapter: El cual se utiliza para transformar una interfaz en otra, de tal modo que
una clase que no pueda utilizar la primera haga uso de ella a través de la segunda.
• Facade: El cual viene motivado por la necesidad de estructurar un entorno de
programación y reducir su complejidad con la división en subsistemas,
minimizando las comunicaciones y dependencias entre estos.
• Iterator: Este define una interfaz que declara los métodos necesarios para acceder
secuencialmente a un grupo de objetos de una colección.
• Observer: Que define una dependencia de uno-a-muchos entre objetos, de forma
que cuando un objeto cambie de estado se notifique y actualicen automáticamente
todos los objetos que dependen de él.
• Strategy: Este se clasifica como patrón de comportamiento porque determina
cómo se debe realizar el intercambio de mensajes entre diferentes objetos para
resolver una tarea.
• MVC (Modelo Vista controlador): Es un patrón de arquitectura de software, que
separa los datos y la lógica de negocio de una aplicación de su representación y
el módulo encargado de gestionar los eventos y las comunicaciones.
• Flyweight: sirve para eliminar o reducir la redundancia cuando tenemos gran
cantidad de objetos que contienen información idéntica, además de lograr un
equilibrio entre flexibilidad y rendimiento.
• Object pool: usa un conjunto de objetos inicializados preparados para su uso. Esto
es más efectivo normalmente que creando y destruyendo los objetos bajo
demanda.
46. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
46
• Diagrama componentes
48. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
48
Figura 5. Diagrama de componentes, funcionamiento de la parte de software de Mi
concejo
Fuente: Elaboración propia
Administración configuración
Administración de la configuración (Configuration management CM) es el conjunto de
actividades relacionadas con la administración de la evolución de los productos software durante
todo su ciclo de vida. Para ello es necesario identificar, organizar y controlar las modificaciones
al producto con el objetivo de maximizar la productividad a la vez que se minimizan los errores.
Es el control que se tiene sobre cada uno de los componentes de configuración de un producto
con el fin de que todos los cambios que se realicen a estos componentes, una vez que han sido
aprobados, se hagan de forma controlada y que en todo momento se conozca cuál es la versión
vigente de cada uno. Facilita la identificación e integración de los componentes de configuración
que conforman los entregables del proyecto. Es el proceso de identificar la configuración del
producto para controlar sistemáticamente los cambios a la misma y mantener su integridad a lo
largo de todo el ciclo de vida del proyecto. Algunos problemas comunes que conllevan a la
adopción de CM son:
• No se encuentra la última versión del código fuente.
• Errores corregidos en versiones previas aparecen nuevamente.
• No se conoce qué módulos comprende el sistema entregado al cliente.
• La integración del sistema toma demasiado tiempo.
• Los programadores están trabajando en una versión incorrecta del código.
• Versiones incorrectas del código son probadas.
• No existe seguimiento de los requerimientos, documentos y códigos.
Pero, difícilmente un archivo de código o un documento de texto está terminado con la
primera escritura; necesita cambios o reescrituras para corregir errores, modificar su contenido...
A medida que el documento cambia existen dos opciones, mantener un historial de cambios o
49. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
49
dejar que evolucione sin memoria. El control de versiones es un método estándar para mantener
esta memoria haciendo además que sea útil para el desarrollo futuro.
En nuestro caso por decisión propia e inconvenientes con la plataforma Github, se optó
por trabajar con Bitbucket, siendo esta una plataforma de desarrollo colaborativo de software
para alojar proyectos utilizando el sistema de control de versiones Git., permitiéndonos cumplir
con los objetivos de este taller; además de tener mejor control sobre las versiones de nuestro
proyecto.
Bitbucket aloja nuestro proyecto en la nube y nos brinda herramientas muy útiles para el
trabajo en equipo, dentro del desarrollo de este.
Una de las cosas más importantes en un proyecto de software en estos tiempos es contar
con una herramienta de integración continua que no es otra cosa que probar que la integración
entre la base de código y las ramas de configuración no solo pasen las pruebas unitarias, sino que
además se comporten adecuadamente en un entorno que emule o sea lo más parecido al entorno
en el cual lo ejecutaremos, Gracias a esto se puede seguir cada commit de un problema en este
popular gestor de incidencias por lo que permite controlar las actividades por branch, agregar
keys de Google Analytics.
Esto quiere decir guardar en determinado momento los cambios efectuados a un archivo
o conjunto de archivos, con la oportunidad que tener acceso a ese historial de cambios, ya sea
para regresar a una de esas versiones o para hacer comparaciones entre ellas.
50. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
50
Figuras 6,1 – 6,2. Interfaz de login “mi concejo App cali” versionando, sin/con botón de registro de usuario.
Fuente propia
Figura 6,3. Interfaz registro de usuario. Fuente propia
51. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
51
Lo primero que si hizo fue crear una cuenta en Bitducket, llenando el típico formulario de registro
para un nuevo usuario, una vez hecho esto se procederá a crear un nuevo proyecto (En este caso
“mi Concejo App Cali”) y a su vez se crear un nuevo repositorio para el mismo.
Figura 7,1. Creación de repositorio de manera gráfica. Fuente propia
Después de esto se procederá a crear una carpeta local referente al almacenaje del proyecto de la
misma forma (en nuestro caso la carpeta se llama “reposMiAppCali”), apartir de aquí
comenzamos a jugar con la terminal instalada como sugerencia por “Git” siendo la misma,
“MINGW64”, por lo que seleccionaremos con clic derecho “Git Bash Here” sobre la carpeta a
creada, a continuación, se muestra el inicio tradicional como comando de Git:
52. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
52
Figura 7,2. Interfaz de interpretación de comandos MINGW64. Fuente propia
Una vez hecho esto procederemos a clonar el repositorio a nuestro sistema local, por lo que
estableceremos el protocolo en HTTPS para hacer efectiva la clonación, esto lo hacemos por
medio de la ventana inicial del Bitducket, donde se nos sugiere utilizar este tipo de clonación.
Figura 7,2. Descripción repositorio con enlace de clonación. Fuente propia
Que, al hacerse uso en la terminal, nos permitirá tener una copia directa del fichero alojado en
la web.
53. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
53
Figura 7,3. Descripción repositorio con enlace de clonación. Fuente propia
Creándonos una subcarpeta con el nombre de nuestro fichero (mi-app-concejo-cali).
Figura 7,4. Generación repositorio local. Fuente propia
Y dentro de la misma se nos mostrara los archivos de nuestro repositorio alojado en la nube, que
en nuestro caso estará vacío, al igual se nos creara una nueva carpeta “Fantasma con la
configuración de nuestro repositorio”.
Para subir nuestros archivos y/o carpetas, pondremos estos dentro la carpeta “mi-app- concejo”.
54. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
54
Figura 7,5. Gestión de proyecto en repositorio local. Fuente propia
De manera seguida y desde nuestra consola ejecutaremos el comando “Git status”,
permitiéndonos conocer, el estado de nuestra carpeta local, además de conocer los archivos que
han sido modificado y no han sido guardados.
Figura 7,6. Resultado del comando “Git status” en el intérprete MINGW64 aplicado a la carpeta “db”. Fuente
propia
55. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
55
Figura 7,7. Comando “Git add” usado para importar archivos al repositorio de la nube aplicado a la carpeta “db”.
Fuente propia
Figura 7,8. Resultado del comando “Git status” en el intérprete MINGW64 aplicado a la carpeta “App”. Fuente
propia
56. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
56
Figura 7,9. Comando “Git add” usado para importar archivos al repositorio de la nube aplicado a la carpeta
“App”. Fuente propia
El resultado de estas líneas de comandos nos muestra los archivos que no tienen seguimiento, lo
que quiere decir que Git ve un archivo que no pertenece a una confirmación anterior. El resultado
del estado también nos muestra el siguiente paso que se debe seguir: añadir el archivo; para poder
hacer esto se debe indicar le a Git que realice el seguimiento de los nuevos archivos mediante el
comando “Git add”. Al igual que cuando crea un archivo y o carpeta (Mkdir xxxx, echo
"xxxxxxxxxxx" >> xxxxxxxxx.txt), el comando “Git add” no devuelve nada cuando se introduce
correctamente.
El comando “Git add” envía los cambios del directorio en curso al entorno de ensayo de Git. El
entorno de ensayo es la zona en la que prepara una instantánea de un conjunto de cambios antes
de confirmarlos en el historial oficial.
Ahora volveremos a usar el comando “Git status”, con el que podremos ver que se ha añadido
el archivo nuevo (preparado).
57. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
57
Figura 8,1. Resultado del comando “Git status” en el intérprete MINGW64, después de haber de haber aplicado la
sentencia “Git add” sobre la carpeta db. Fuente propia
Figura 8,2. Resultado del comando “Git status” en el intérprete MINGW64, después de haber de haber aplicado la
sentencia “Git add” sobre la carpeta App. Fuente propia.
Ahora introduciremos el comando “Git commit” con un mensaje de confirmación, como se
muestra en las siguientes imágenes. La –m indica que incluye un mensaje de confirmación.
58. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
58
Figura 8,3. Sintaxis de uso “Git commit” y su resultado al ser aplicada en la carpeta “db”. Fuente propia
Figura 8,4. Sintaxis de uso “Git commit” y su resultado al ser aplicada en la carpeta “App”. Fuente propia
El comando “git commit” confirma la instantánea preparada en el historial del proyecto. En
combinación con “git add”, este proceso define el flujo de trabajo básico de todos los usuarios
de Git; que a su vez también nos confirma la creación de modelos en el repositorio de la nube,
formado a partir de los archivos almacenados el repositorio local.
59. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
59
Ahora enviaremos los cambios confirmados a Bitbucket mediante el comando “Git push origin
master”. Este comando especifica que estás enviando cambios a la rama maestra (la rama de
Bitbucket) en el origen (el servidor de Bitbucket).
Figuras 8,5 – 8,6. Confirmación y envíos de los cambios a la rama “Máster”, mediante el comando “Git
push origin master”. Fuente propia
60. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
60
El proyecto ya ha quedado almacenado en nuestro repositorio en la nube, pero si quisiéramos
hacer una modificación a algún archivo sin modificar directamente lo previamente almacenado
como una copia de seguridad, tendremos que hacer una rama directamente de nuestro
repositorio a través de la rama creada por defecto “master”.
Figuras 8,7. Creación de nueva rama de manera remota por medio del comando “Git Branch xxxxx”, en este
caso nombrada como “future-plans”. Fuente propia
Este comando crea una rama, pero no cambia a dicha rama; El historial del repositorio no se
modifica, lo único que sucede es que obtiene un puntero a la rama actual. Para empezar a
trabajar con la nueva rama, se tiene que extraer la rama que quieres usar.
Para hacer uso de esta rama se tendrá que usar El comando “git checkout” que a su vez trabaja
en conjunto con “git branch”. Como se esta creando una rama para trabajar en algo nuevo,
cada vez que se cree una nueva rama (con git branch), tendremos que asegurarnos de que se
extrajo (con git checkout) si vas a usar.
En nuestro caso hemos decido nombrar a esta nueva rama como future_plans (Planes futuros).
Pero en nuestro caso este comando no nos fue de mucha ayuda, a pesar que no permitia entrar
a esta rama, y modicar los archivos dentro de la carpeta “App”, el mismo detectaba los cambios,
pero no los guardaba dentro del repositorio en la nube, sin importar de hacer ejecución del
comando “Git add”, ni el comando “Git commit”, automáticamente se borraban los datos de
la carpeta, y se descargaban los que ya se encontraban en el repositorio, en otras palabras no
permitían hacer algún tipo de modificación.
61. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
61
Figuras 8,8. Errores en la bifurcación del proyecto, como resultado se cargaba automáticamente un backup de la
rama master ya existente, pero no se permite la visualización de los mismos. Fuente propia
Para solucionar esto, hicimos uso de un nuevo comando llamado “git fetch” que a su vez se es
ejecutado con “git checkout”, permitiéndonos trae los cambios de su rama sucesora (en este
caso la rama master), pero los deja en otra rama, hasta que se hace el “git merge” para traerlos
al repositorio local, como en este caso solo tenemos que versionar el código de login de la App
en el repositorio de la nube, solo utilizaremos “git fetch && git checkout Plans-future” y
dejaremos de un lado el “git merge”.
Figuras 8,9. Uso del comando “git fetch && git checkout Plans-future”, con el fin de traer los cambios de la
rama sucesora en este caso “Master”. Fuente propia
62. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
62
Nótese bien que el comando “Git fetch” es utiliza durante 2 ocasiones, esto debido a que se
creó una nueva rama con el nombre “Plans-future” con el fin de versionar todo el proyecto por
completo, además también se hace el uso de este como sugerencia de la plataforma
“Bitbucket”, así que se puede apreciar siendo utilizado con la rama “master” y la nueva rama
“Plans-future”.
Una vez hecho esto, se vuelve a modificar la carpeta “App” con los nuevos archivos que serán
agregados y volvemos a ejecutar el comando “Git status”.
Figura 9,1. Resultado del comando “Git status” en el intérprete MINGW64 aplicado a la carpeta
“/App/Interfaz”, con el fin de agregar nuevas versiones y funcionalidades del código. Fuente propia
Donde nueva mente se nos vuelve a mostrar los cambios hechos en la carpeta y se nos sugiere
usar la serie de comandos “Git add” y “Git commit”, así que haremos uso de estos.
Por lo que usaremos el comando “Git add App/” haciendo uso de la etiqueta “/” como
referencia a subir la carpeta por completa.
63. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
63
Figura 9,2. Aplicación del comando “Git add App/” en el intérprete MINGW64 aplicado a la carpeta
“/App/Interfaz”, con el fin de agregar nuevas versiones y funcionalidades del código. Fuente propia
Ya para finalizar y como se hizo previamente, confirmaremos este cambio con el comando
“Git push” que nos permite enviar los commits desde nuestro repositorio local Git local al
repositorio remoto.
Figura 9,3. Resultado se usar “Git push”, mostrándonos la carga con éxito de nuestros archivos al repositorio
remoto. Fuente propia
64. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
64
Con esto, nuestro avance parcial del proyecto queda totalmente almacenado y versionado en un
repositorio de BitBucket, a continuación, se mostrará como queda nuestro proyecto almacenado
gráficamente en la plataforma de la nube.
A continuación, se mostrarán imágenes ilustrativas de cómo queda nuestro repositorio remoto
en la nube.
Figura 10,1. Ventana principal de repositorio (en la rama master). Fuente propia
Figura 10,2. Ventana principal de repositorio (en la rama Plans-future). Fuente propia
65. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
65
Figura 10,3. Ventana carpeta App del repositorio (en la rama master). Fuente propia
Figura 10,4. Ventana carpeta App del repositorio (en la rama Plans-future). Fuente propia
Figura 10,5. Ventana carpeta interfaz del repositorio (en la rama master). Fuente propia
66. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
66
Figura 10,6. Ventana carpeta App del repositorio (en la rama Plans-future). Fuente propia
Figura 10,7. Ventana carpeta interfaz del repositorio (en la rama master). Fuente propia
Figura 10,8. Ventana carpeta interfaz del repositorio (en la rama Plans-future). Fuente propia
67. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
67
Figura 10,9. Ventana carpeta interfaz-login del repositorio (en la rama master). Fuente propia
Figura 11,1. Ventana carpeta BD del repositorio (en la rama master). Fuente propia
Figura 11,2. Ventana carpeta BD-Scripts del repositorio (en la rama master). Fuente propia
68. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
68
Figura 11,3. Ventana carpeta BD-Scripts del repositorio (en la rama master). Fuente propia
Otros comandos básicos que fueron usados son:
o Mkdir: Es un comando usado para crear un nuevo subdirectorio o carpeta del sistema
de archivos
o CD: sirve para mostrar el nombre del directorio actual y, también, permite cambiar de
directorio
Nota: Aparte de cargar la interfaz de login y el formulario de registro de usuario de la App, también
se importó al repositorio remoto, su modelo relacional de la base de datos y sus debido Scripts
de Creación, Actualización y Eliminación entre otros, se puede encontrar estos documentos en
el enlace del repositorio o al final de este documento en la sección de Anexos.
69. DESARROLLO Y SISTEMATIZACIÓN EN COMUNICACIÓN AL CIUDADANO SOBRE CONCEJO
MUNICIPAL CALI (Mi Concejo App Cali)
69
Pruebas de software
Las pruebas de software son entendidas como el proceso sistemático de prevención,
detección y corrección de defectos, es la herramienta más eficaz para asegurarnos la calidad
de nuestro producto software.
La Importancia que tienen las pruebas del software sobre nuestro proyecto, son de
gran utilidad para analizar y/o detectar las posibles, futuras que poder sufrir la App, además
de facilitarnos la entrega de este ya finalizado cuente con altos estándares de calidad y se
encuentre totalmente culminado.
Para la prueba de software existen una serie de modelos (Ciclos de vidas), que tienen
suma importancia para realizar las pruebas sobre este, estos modelos tienen varios esquemas
que son aplicados al software como lo son:
• Modelo Cascada: el cual permite Realizar pruebas cuando está terminado la
construcción del sistema.
• Modelo Incremental: con este modelo se realizan pruebas a cada etapa o incremento
que haiga en el sistema.
• Modelo Evolutivo: este se enfoca en el uso y retroalimentación de los usuarios.
• Modelo Espiral: este modelo se enfoca en las pruebas cíclicas de verificación y
validación en el desarrollo del sistema.
• Modelo XP: Este modelo se realiza la prueba durante las mejoras que se le hacen al
sistema.
Por esto y por muchas razones es de suma importancia realizamos las pruebas del
software desde que iniciamos durante y finalizado del mismo, para cuando llego el momento
de finalizar y hacer la entrega de este se encuentre lo más optimizado posible. Estas pruebas
son importantes en el desarrollo de las 5 etapas definidas en la metodología ágil de desarrollo
(6M’s) y al finalizar el software, ya que si realizamos dichas pruebas solo al finalizar el
software corremos el riesgo que durante el desarrollo o peor aún al iniciar la App tengamos