TAREA ED01 - DESARROLLO DE
SOFTWARE
Ismael García Moral - DAW - 2022/2023
INTRODUCCIÓN
Se requiere el diseño de una aplicación especializada en la venta de
productos estéticos. La empresa en cuestión desea que la aplicación
sea capaz de cumplir ciertas funciones y tareas la cuales se tendrán en
cuenta a la hora de realizar todo el desarrollo.
A continuación se muestra concretamente todas y cada una de las
tareas a cumplir además de los apartados y criterios a la hora de
elaborarlo.
ENUNCIADO
La empresa BK ha recibido un nuevo encargo de software.
Se trata de diseñar una aplicación para una tienda especializada en
vender productos estéticos.
La tienda desea trabajar con software libre. Además, desea
explícitamente que la aplicación sea capaz de cumplir las siguientes
tareas:
- Proporcionar facturas de las ventas.
- Llevar la cuenta de lo que vende cada trabajador.
- Controlar el stock de productos en almacén.
- Operar con lector de código de barras y tarjetas de crédito.
- Controlar los precios de los productos y ofrecer la posibilidad de
operar con ellos.
- El tiempo de respuesta de la aplicación ha de ser lo menor
posible.
- No se podrán procesar dos peticiones a la vez, aunque haya
varios equipos funcionando simultáneamente.
- La empresa también quiere almacenar información de sus
trabajadores: DNI, nombre, apellidos, número de la Seguridad
Social, fecha de nacimiento, teléfono y localidad. Asimismo, de los
productos interesa almacenar: código, marca, nombre comercial,
precio, cantidad.
Tendrás que diseñar una planificación del proyecto de desarrollo de
ese software que cumpla con las premisas estudiadas en la presente
unidad de trabajo.
Esencialmente, el proyecto se divide en los siguientes apartados:
1. Sintetiza el análisis de requerimientos del sistema para nuestro
cliente. Plantea el diseño y determina el modelo de ciclo de vida
más idóneo para esta aplicación.
2. Planifica la codificación, indicando el lenguaje de programación y
las herramientas que usarías para la obtención del código fuente,
objeto y ejecutable, explicando por qué eliges esas herramientas.
3. Planifica las restantes fases del ciclo de vida, indicando en cada
una el objetivo que persigues y cómo lo harías.
4. Indica el ciclo de vida que usarías.
ANÁLISIS. REQUERIMIENTOS DEL SISTEMA.
Comenzaremos por la fase del proyecto más importante de todas.
Dependiendo de lo bien desarrollada y detallada que esté, ayudará al
proyecto a funcionar de una forma más óptima y fluida.
De esta fase resultarán dos vías: un documento especificando los
requisitos del software en cuestión y otro del diseño de arquitectura.
Dentro de la primera vía, vamos a separar los requisitos funcionales de
los no funcionales del sistema. Para ello mostraré una tabla, con el fin
de facilitar a nivel visual ambas partes, en base a las tareas requeridas
que nos expone el cliente:
REQUERIMIENTOS FUNCIONALES
- Proporcionar facturas de las ventas
- Llevar la cuenta de lo que vende cada trabajador.
- Controlar el stock de productos en almacén.
- Operar con lector de código de barras y tarjetas de crédito.
- Controlar los precios de los productos y ofrecer la posibilidad
de operar con ellos.
- La empresa también quiere almacenar información de sus
trabajadores: DNI, nombre, apellidos, número de la Seguridad
Social, fecha de nacimiento, teléfono y localidad. Asimismo, de
los productos interesa almacenar: código, marca, nombre
comercial, precio, cantidad.
REQUERIMIENTOS NO FUNCIONALES
- El tiempo de respuesta de la aplicación ha de ser lo menor
posible.
- No se podrán procesar dos peticiones a la vez, aunque haya
varios equipos funcionando simultáneamente.
Para una mejor optimización y organización con el cliente, es
imprescindible hacer énfasis en la comunicación para que el
desarrollo cumpla con las expectativas. Por lo tanto, conviene realizar
planificaciones de las reuniones, relaciones de los objetivos del usuario
cliente y la empresa, prioridad de objetivos y el tiempo que se dedicará
a cada uno o incluso posibles inconvenientes o problemas y cómo
afrontarlos.
DISEÑO. CICLO DE VIDA.
Una vez hemos definido necesidades y objetivos en la fase anterior,
tenemos claro lo que la aplicación ha de hacer. Nuestro plan ahora
mismo es dividir el sistema en partes y establecer las relaciones que
habrá entre ellas, y en concreto, qué hará exactamente cada parte.
Esto nos lleva a diseñar un modelo de ciclo de vida para desarrollar de
forma estructurada cada una de las partes consolidadas. Esto nos
facilitará cosas como una mejor codificación, un desarrollo progresivo
además de un seguimiento del mismo. Disminuirá la necesidad de
rehacer trabajo optando así a una mejor gestión del proyecto.
Dentro de los modelos a elegir, el
más óptimo sería uno de los más
utilizados: Modelo en Cascada con
Realimentación. Podríamos
definirlo como un modelo en el que
se pasa de una etapa a otra con la
posibilidad de poder volver atrás
para corregir o modificar algunos
aspectos. Además, es idóneo para
proyectos medianamente rígidos,
poco evolutivos, y con tareas y
requisitos concisos, como es
nuestro caso.
DECISIONES IMPORTANTES A TENER EN CUENTA
Llegados a este punto, con el diseño ya planteado, se deben elegir
aspectos relevantes como:
● Entidades y relaciones de las bases de datos
● Elección del lenguaje de programación a utilizar
● Selección del sistema gestor de base de datos
Por lo tanto, centrándonos en la base de datos, MySQL, como sistema
gestor de base de datos, es la opción más utilizada por excelencia,
utilizado en gran parte de las páginas web actuales. Sus principales
ventajas son la facilidad de uso y configuración así como también su
gran rendimiento. Podemos aprovecharnos de una de sus desventajas,
que es la poca capacidad escalable ya que no trabaja de manera
eficiente con bases de datos que superan números muy altos o
constantes modificaciones de escritura. Además se adhiere
perfectamente a la propuesta ya que es el más usado en aplicaciones
creadas como software libre.
ALGUNOS EJEMPLOS DE ENTIDADES SEGÚN LOS REQUERIMIENTOS
Trabajadores Productos Clientes
○ dni ○ codProducto ○ nombre
○ nombre ○ marca ○ apellido1
○ apellido1 ○ nomComercial ○ apellido2
○ apellido2 ○ precio ○ telf
○ numSegSoc ○ cantidad ○ localidad
○ fNacimiento
○ telefono
○ localidad
CODIFICACIÓN. LENGUAJES Y ENTORNOS.
En esta fase se realiza el proceso de programación, y por lo tanto, la
elección del lenguaje y del entorno en el que se llevará a cabo. En
resumen, se debe codificar toda la información ya pactada y redactada
para indicarle las tareas que ha de hacer el ordenador usando un
lenguaje de programación.
CÓDIGO FUENTE
De esta parte resultará el código fuente. Podemos definirlo como aquel
escrito por los programadores, en un lenguaje de programación de alto
nivel, en un editor de texto donde se han codificado todos los módulos,
funciones y procedimientos necesarios para cumplir con lo que hemos
obtenido de las etapas anteriores.
Por lo tanto para conseguir ciertas características idóneas en el ámbito
de la codificación (modularidad, corrección, fácil de leer, eficiencia y
portabilidad) escogemos como lenguaje de programación JAVA.
Este código no puede ser leído por la máquina directamente, ha de ser
traducido para obtener un código equivalente pero pasado a código
binario.
CÓDIGO OBJETO
Este código binario, resultante de
traducirlo mediante el uso de un
compilador, se llama código objeto.
Lo obtenemos compilando el código
fuente hecho en JAVA a través del
entorno de desarrollo NetBeans
(hecho principalmente para este
lenguaje además de ser un producto
libre y gratuito sin restricciones de
uso, lo que acierta todavía más con
lo solicitado por nuestro cliente), el cual además hemos utilizado
también como editor de código, ya que es un entorno completo.
Aún, en esta etapa, el código no puede ser ejecutado directamente por
la máquina. Lo que nos lleva a la siguiente etapa.
CÓDIGO EJECUTABLE O MÁQUINA
Una vez generado el código objeto, y en nuestro caso usando el propio
NetBeans, se enlazan los archivos del código obtenido con ciertas
rutinas y subprogramas para que el sistema operativo sea capaz de
cargarlo y así ejecutarlo. En este último paso se utiliza lo que
denominamos como máquina virtual, cuya función es separar el
funcionamiento del ordenador de los componentes hardware
instalados. Además esta capa de software actúa como puente entre el
código objeto y los dispositivos físicos del sistema, ejecutar la
aplicación y garantizar portabilidad en ésta y generar el código
ejecutable.
PRUEBAS. UNITARIAS Y DE INTEGRACIÓN
Ya obtenido el software, el siguiente paso del ciclo de vida son las
pruebas. Es una parte imprescindible para consolidar y verificar todo el
trabajo realizado hasta el momento. Haremos uso de JUnit, el cual
puede implementarse en NetBeans y es un conjunto de bibliotecas
destinadas a aplicaciones JAVA.
Diferenciamos dos tipos de pruebas:
1. Pruebas unitarias.
Probaremos la funcionalidad de todas y cada una de las partes
del software de forma individual, obteniendo un documento el
cual podremos comparar con las intenciones previstas realizadas
en la fase de diseño.
2. Pruebas de integración.
Una vez hemos comprobado cada parte por separado,
realizaremos una puesta en común de todos los programas
EXPLOTACIÓN. INSTALACIONES Y GUÍAS DE USO.
En este momento del desarrollo, nos hemos asegurado de que el
software es fiable, se han documentado todas las partes y ha superado
el periodo de pruebas.
Llegados a este punto es hora de realizar la instalación y puesta en
marcha de la aplicación en el equipo o equipos del cliente en cuestión.
Cosas a tener en cuenta y paso a seguir:
- A la hora de realizar la instalación, es recomendable ir
comentando y describiendo los pasos para una mayor
transparencia y comprensión.
- Configurar y verificar compatibilidades en la máquina cliente.
- Proponer, a los propios usuarios, que realicen ellos la
configuración junto con la guía de instalación (hecha gracias a la
documentación llevada a cabo a lo largo del proyecto).
- Realización de las últimas pruebas, debido a que se ha de
comprobar que todo vaya según lo previsto en sus equipos de
trabajo, denominadas Beta Test.
- La aplicación pasa a manos del usuario y da comienzo a la
explotación del software.
MANTENIMIENTO.
Dentro del sector laboral,
esta etapa es propia del
desarrollo de software.
Debido a que éste es
cambiante, evoluciona con
el tiempo y debe ir
adaptándose a
actualizaciones o mejoras
de programas o del
hardware de nuestros
clientes, se pacta un
servicio de mantenimiento de la aplicación el cual durará un tiempo
determinado y tendrá un coste económico a tener en cuenta.
Es posible encontrar pequeños errores post-entrega, además de
corregir las posibles actualizaciones de elementos de hardware o de los
propios programas utilizados.
Existen varios tipos de cambio que hacen necesario el mantenimiento
de software:
➔ Perfectivos: Mejorar funcionalidades
➔ Evolutivos: Mejoras propuestas por el cliente.
➔ Adaptativos: Modificaciones o actualizaciones.
➔ Correctivos: Resolución de errores detectados.
En nuestro caso, nos ceñimos a los
perfectivos, adaptativos y correctivos ya
que el cliente ha solicitado una
aplicación de forma concisa y con las
ideas estructuradamente claras. Por esto
mismo nos centraremos en solucionar
posibles errores, modificar o actualizar
condiciones especificadas por
organismos y también mejorar la
funcionalidad en caso de no asemejarse
a lo esperado.
DOCUMENTACIÓN. DE PRINCIPIO A FIN.
Durante todo el desarrollo del software se lleva a cabo una detallada
documentación con todo el contenido de cada una de las etapas del
ciclo de vida. Documentar el proyecto nos facilitará un mejor trabajo
entre etapas a los propios miembros del equipo, así como también una
entrega más exacta de la información correspondiente a los usuarios
de nuestra aplicación.
Diferenciamos tres tipos de documentación dependiendo del
destinatario:
TARGET CONTENIDO OBJETIVO
GUÍAS Personal Diseño de la Facilitar el
TÉCNICAS técnico aplicación, la desarrollo,
codificación y posibles
las pruebas correcciones y
realizadas. permitir un
mantenimiento.
GUÍAS DE USO Usuarios de la Funcionalidad Información
aplicación de la necesaria para el
aplicación, uso de la
requerimientos aplicación
y solución a
posibles
problemas
GUÍAS DE Personal Puesta en Información para
INSTALACIÓN informático marcha, garantizar
responsable de explotación y seguridad,
la instalación seguridad del precisión y
sistema confiabilidad en
la implantación
de la aplicación.