Universidad Abierta Para Adultos
UAPA
ESCUELA INGENIERIA Y TECNOLOGIA
ANÁLISIS Y DISEÑO DE SISTEMAS
Sustentantes:
Jorge Luis Ramirez pool - 100078084.
Asesor:
Henry Candelario
Actividad:
PROYECTOS DESARROLLO DE UNA APLICACIÓN EMPRESARIAL
Fase 5: Plan de Implementación y Conclusiones
1. Definición de Tecnologías a Usar
La elección de las tecnologías adecuadas es fundamental para el éxito de un proyecto
de software. A continuación, se detallan las tecnologías seleccionadas para este
proyecto:
a. Lenguaje de Programación: Python
Python es un lenguaje de programación de alto nivel, conocido por su simplicidad y
legibilidad. Algunas de sus características que lo hacen ideal para este proyecto son:
● Facilidad de aprendizaje: Python tiene una sintaxis clara y concisa, lo que
facilita su aprendizaje para nuevos desarrolladores.
● Amplia comunidad y soporte: Python cuenta con una gran comunidad de
desarrolladores, lo que significa que hay una abundancia de recursos,
bibliotecas y documentación disponibles.
● Versatilidad: Python se puede utilizar para una variedad de aplicaciones,
desde desarrollo web hasta análisis de datos y automatización.
b. Frameworks: Tkinter/PyQt para la interfaz gráfica
Para la creación de la interfaz gráfica de usuario (GUI), se han seleccionado dos
frameworks populares:
● Tkinter: Es la biblioteca estándar de Python para crear interfaces gráficas. Es
fácil de usar y permite crear aplicaciones de escritorio simples y efectivas.
Tkinter es ideal para proyectos pequeños y medianos, y su integración con
Python es muy fluida.
● PyQt: Es un conjunto de herramientas que permite crear aplicaciones gráficas
más complejas y sofisticadas. PyQt ofrece una amplia gama de widgets y es
altamente personalizable. Es adecuado para aplicaciones que requieren una
interfaz más rica y funcional.
La elección entre Tkinter y PyQt dependerá de los requisitos específicos del proyecto
y de la complejidad de la interfaz que se desee implementar.
c. Base de Datos: Archivo JSON
Para el almacenamiento de datos, se ha optado por utilizar archivos JSON (JavaScript
Object Notation). Algunas ventajas de esta elección son:
● Simplicidad: JSON es un formato de texto ligero y fácil de leer, lo que facilita
la manipulación de datos.
● Estructura flexible: JSON permite almacenar datos en una estructura
jerárquica, lo que es útil para representar objetos complejos.
● Sin necesidad de un servidor de base de datos: Almacenar datos en archivos
JSON elimina la necesidad de configurar y mantener un servidor de base de
datos, lo que simplifica el desarrollo y la implementación.
Sin embargo, es importante tener en cuenta que el uso de archivos JSON puede no ser
adecuado para aplicaciones que requieren un alto rendimiento o que manejan grandes
volúmenes de datos.
d. Bibliotecas Adicionales
Se han seleccionado las siguientes bibliotecas adicionales para mejorar la
funcionalidad del sistema:
● Pandas: Es una biblioteca de Python utilizada para la manipulación y análisis
de datos. Pandas proporciona estructuras de datos flexibles y herramientas
para realizar operaciones complejas de análisis, lo que facilita la generación de
reportes y la visualización de datos.
● bcrypt: Es una biblioteca para la encriptación de contraseñas. Utiliza un
algoritmo de hashing seguro que protege las contraseñas de los usuarios, lo
que es fundamental para garantizar la seguridad de la aplicación. bcrypt
permite almacenar contraseñas de manera segura y verificar la autenticidad de
los usuarios durante el inicio de sesión.
2. Estimación de Costos y Tiempo de Desarrollo
La estimación de costos y tiempo es crucial para la planificación y ejecución del
proyecto. A continuación, se presenta un desglose de la estimación:
a. Tiempo de Desarrollo
Se estima que el desarrollo del sistema tomará aproximadamente dos meses. Este
tiempo incluye las siguientes fases:
1. Planificación y diseño (2-3 semanas): Definición de requisitos, diseño de la
arquitectura del software y creación de prototipos de la interfaz gráfica.
2. Desarrollo (4-5 semanas): Implementación de la lógica de negocio, desarrollo
de la interfaz gráfica y configuración de la base de datos.
3. Pruebas (2-3 semanas): Realización de pruebas unitarias, de integración y de
usuario para garantizar la calidad del sistema.
4. Documentación y entrega (1 semana): Creación de la documentación del
sistema y entrega del producto final.
b. Equipo de Desarrollo
Se estima que el equipo estará compuesto por 2-3 desarrolladores. La composición del
equipo puede incluir:
● Desarrollador Frontend: Encargado de la implementación de la interfaz
gráfica utilizando Tkinter o PyQt.
● Desarrollador Backend: Responsable de la lógica de negocio, la
manipulación de datos y la integración de la base de datos.
● Desarrollador Full Stack (opcional): Un desarrollador con habilidades tanto
en frontend como en backend que puede ayudar en ambas áreas según sea
necesario.
3. Plan de Pruebas y Mantenimiento del Sistema
El plan de pruebas es esencial para asegurar que el sistema funcione correctamente y
cumpla con los requisitos establecidos. A continuación, se describen los tipos de
pruebas que se aplicarán:
a. Pruebas Unitarias
Las pruebas unitarias se centran en verificar el funcionamiento de componentes
individuales del sistema. Cada función o método se probará de forma aislada para
asegurarse de que produzca los resultados esperados. Esto ayuda a identificar errores
en etapas tempranas del desarrollo.
b. Pruebas de Integración
Las pruebas de integración se realizarán para verificar que los diferentes módulos del
sistema funcionen correctamente juntos. Esto incluye la interacción entre la interfaz
gráfica, la lógica de negocio y la base de datos. Se comprobará que los datos fluyan
correctamente entre los componentes y que no haya problemas de compatibilidad.
c. Pruebas de Usuario
Las pruebas de usuario se llevarán a cabo para evaluar la experiencia del usuario y la
usabilidad del sistema. Se invitará a un grupo de usuarios a interactuar con la
aplicación y proporcionar retroalimentación sobre su funcionamiento. Esto permitirá
identificar áreas de mejora y ajustar la interfaz según las necesidades de los usuarios.
d. Mantenimiento del Sistema
El mantenimiento del sistema es crucial para garantizar su funcionamiento continuo y
su adaptación a cambios futuros. Se establecerá un plan de mantenimiento que incluya:
● Actualizaciones regulares: Implementar actualizaciones para corregir errores,
mejorar la seguridad y añadir nuevas funcionalidades según sea necesario.
● Monitoreo del rendimiento: Realizar un seguimiento del rendimiento del
sistema para identificar posibles cuellos de botella y optimizar el uso de
recursos.
● Soporte al usuario: Proporcionar un canal de soporte para que los usuarios
puedan reportar problemas o solicitar asistencia.
4. Reflexión sobre Dificultades y Aprendizajes
Durante el desarrollo del sistema, es probable que se enfrenten diversos retos.
Documentar estos desafíos y las soluciones aplicadas es fundamental para mejorar
futuras iteraciones del sistema. A continuación, se presentan algunos aspectos a
considerar:
a. Identificación de Retos
Es importante identificar y documentar los retos que surjan durante el
desarrollo, tales como:
● Problemas técnicos: Dificultades en la implementación de ciertas
funcionalidades o en la integración de tecnologías.
● Gestión del tiempo: Desviaciones en el cronograma que puedan afectar el
progreso del proyecto.
● Retroalimentación del usuario: Desafíos en la obtención de
retroalimentación constructiva y en la implementación de cambios basados en
esa retroalimentación.
b. Soluciones Aplicadas
Para cada reto identificado, se deben documentar las soluciones implementadas.
Esto puede incluir:
● Investigación y aprendizaje: Recursos utilizados para resolver problemas
técnicos, como documentación, foros o tutoriales.
● Ajustes en la planificación: Cambios realizados en el cronograma o en la
asignación de tareas para adaptarse a imprevistos.
● Iteraciones en el diseño: Modificaciones realizadas en la interfaz o en la
lógica del sistema basadas en la retroalimentación de los usuarios.
c. Aprendizajes
Finalmente, es fundamental reflexionar sobre los aprendizajes obtenidos durante
el proceso de desarrollo. Esto puede incluir:
● Mejoras en la comunicación del equipo: Estrategias que funcionaron bien
para mantener al equipo alineado y colaborando eficazmente.
● Lecciones sobre la gestión del tiempo: Conclusiones sobre cómo mejorar la
estimación de tiempos y la planificación de tareas en futuros proyectos.
● Adaptabilidad: La importancia de ser flexible y estar dispuesto a ajustar el
enfoque según las necesidades del proyecto y las expectativas de los usuarios.
Conclusión
El desarrollo de un sistema de ventas utilizando Python, como se ha delineado en este
proyecto, representa una respuesta efectiva a las necesidades críticas de las pequeñas
y medianas empresas (PYMEs) en la gestión de sus operaciones comerciales. A través
de un enfoque metódico que abarca desde la identificación del problema hasta la
implementación y el mantenimiento del sistema, se busca no solo optimizar la gestión
de ventas, sino también proporcionar herramientas que faciliten la toma de decisiones
informadas y estratégicas.
La justificación del proyecto radica en la necesidad de modernizar los procesos de
ventas que, en muchos casos, aún dependen de métodos manuales o sistemas
obsoletos. Al implementar un sistema que automatiza el registro de ventas, gestiona el
inventario y genera reportes detallados, se espera que las empresas puedan reducir
errores, mejorar la eficiencia operativa y, en última instancia, aumentar su
rentabilidad. La capacidad de acceder a datos actualizados en tiempo real permitirá a
las PYMEs adaptarse rápidamente a las fluctuaciones del mercado, lo que es esencial
en un entorno empresarial cada vez más competitivo.
Los objetivos específicos del proyecto, que incluyen la creación de módulos para la
gestión de ventas, control de inventario, autenticación de usuarios y generación de
reportes, están diseñados para abordar de manera integral las necesidades
identificadas durante la fase de análisis. La implementación de una interfaz gráfica
intuitiva y amigable asegura que los usuarios, independientemente de su nivel de
experiencia técnica, puedan interactuar con el sistema de manera efectiva.
La elección de tecnologías como Python, junto con frameworks como Tkinter o PyQt,
y el uso de archivos JSON para el almacenamiento de datos, se fundamenta en la
simplicidad y la flexibilidad que ofrecen. Estas decisiones tecnológicas no solo
facilitan el desarrollo, sino que también garantizan que el sistema sea escalable y
mantenible a largo plazo.
El plan de pruebas y mantenimiento es un componente esencial que asegura la calidad
del sistema. A través de pruebas unitarias, de integración y de usuario, se busca
identificar y corregir errores antes de la implementación final, garantizando así una
experiencia de usuario fluida y satisfactoria. Además, la documentación de los retos y
aprendizajes durante el desarrollo permitirá mejorar futuras iteraciones del sistema,
fomentando un ciclo de mejora continua.
En resumen, este proyecto no solo tiene el potencial de transformar la gestión de
ventas en las PYMEs, sino que también representa una valiosa oportunidad de
aprendizaje para los participantes de las carreras de Ingeniería de Software e
Informática Gerencial. Al aplicar metodologías de análisis, modelado y diseño, se
fomenta el desarrollo de habilidades prácticas que son esenciales en el campo de la
ingeniería de software. La experiencia adquirida a lo largo de este proceso será
invaluable para enfrentar futuros desafíos en el ámbito del desarrollo de sistemas.
ANEXOS