Tarea 1
Adrián Pérez Chillarón
Apartado 1.
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.
1.Análisis:
Detallamos nuestro análisis con los requisitos funcionales y no funcionales.
Empezamos con los Requisitos Funcionales, estos requisitos son las funciones que
deberá realizar la aplicación en la que estamos trabajando, los cuales son:
- Proporcionar facturas de las ventas
Operar con lector de códigos de barras y tarjetas
de crédito (datafono)
- Llevar la cuenta de lo que vende cada uno de nuestros trabajadores
- Control del stock de productos en almacén
- Controlar los precios de los productos y ofrecer la posibilidad de operar
con ellos.
- Almacenar la información de los trabajadores:
DNI
Nombre y apellidos
NSS
Fecha nacimiento
Teléfono
Localidad
- Almacenar la información de nuestros productos:
Código
Marca
Nombre comercial
Precio
Cantidad
Requisitos No funcionales, son las características que deberá tener la
aplicación, que en este caso son:
- El tiempo de respuesta de la aplicación ha de ser lo menor posible.
Reducción del tiempo de espera.
- No se podrá procesar dos peticiones a la vez, aunque haya varios
equipos informáticos funcionando a la vez.
Por último, hay que realizar unas series de reuniones con nuestro cliente
para enseñar la aplicación y comprobar el funcionamiento de ella, además de
que el cliente debería tener conocimiento de cómo va la aplicación y si
cumple sus expectativas.
2. Diseño:
Una vez que tengo perfectamente claro lo que mi aplicación debe hacer tras
haber mantenido las comunicaciones con el cliente puedo proceder con el diseño
de esta.
Para este proyecto he decidido usar un modelo de ciclo de vida del programa
Evolutivo, concretamente el Modelo Iterativo Incremental, ya que debemos
tener en cuenta la naturaleza cambiante y evolutiva del software.
La idea es comenzar con una implementación simple de los requerimientos del
sistema, e iterativamente mejorar la secuencia evolutiva de versiones hasta que
el sistema completo esté implementado. En cada iteración realizaremos cambios
en el diseño y agregaremos nueva funcionalidades y capacidades al sistema
dependiendo de las necesidades del cliente/usuario.
El lenguaje de programación que vamos a utilizar es JAVA, ya que se adapta a las
necesidades del cliente al ser un software libre y también a nuestras necesidades al ser
un lenguaje de programación orientado a objetos, mediante el cual desarrollaremos un
código reutilizable, más fácil de mantener y modular.
En cuanto al sistema gestor de Bases de Datos he decidido usar MySql ya que es
un sistema relacional y además se puede utilizar como software libre.
Las entidades y relaciones de la base de datos serán las siguientes:
Trabajadores: Clientes: Facturas: Productos:
DNI DNI Código Código
Nombre Nombre CódDelCliente Nombre
Apellidos Apellidos DNI_Empleado Descripción
NumSegurSocial Teléfono Productos Cantidad
Nacimiento Dirección Precio Precio
Teléfono X Descuento X
Dirección X X X
3. Codificación:
En este apartado se codificará toda la información que hemos visto anteriormente y la
llevaremos a código fuente. Esta tarea la realizará el programador que, además,
deberá cumplir con todos los datos impuestos en las etapas de análisis y diseño.
Con el entorno de desarrollo NetBeans, al ser un entorno completo, cubriremos las
tres partes de la codificación:
1. Código Fuente: Será tarea de los programadores desarrollar este código en el
entorno de desarrollo NetBeans utilizando el editor de código.
2. Código Objeto: Utilizando el compilador de NetBeans obtendremos el código
binario resultante de compilar el código fuente.
3. Código ejecutable: Este código es el resultado de enlazar los archivos objeto, consta
de un único archivo que puede ser ejecutado por el sistema operativo directamente.
Este paso también lo realizaremos con la aplicación NetBeans.
4. Pruebas:
Esta fase consistirá en realizar una serie de pruebas para asegurar la validación y
verificación del software desarrollado. Se dividirá en dos partes:
• Pruebas unitarias: En esta parte se probarán los diferentes módulos
del software para comprobar su funcionamiento de manera
independiente.
• Pruebas de integración: En esta parte se probará el sistema
completo con todas sus partes interrelacionadas.
Finalmente, se realiza la prueba final BETA TEST, aquí el cliente interactúa
con la propia aplicación ya terminada.
Estas herramientas las elijo porque me permiten dar conocimiento del
correcto o mal funcionamiento de la propia aplicación.
5. Explotación:
Una vez que ya tengo todas las fases documentadas, he realizado pruebas con
el software para comprobar su fiabilidad y que carece de errores con la fase de
explotación.
En esta fase se realizará la instalación, configuración y puesta en funcionamiento
de la aplicación en los equipos del cliente.
En esta fase se hará la última prueba denominada Beta Test, la realizaremos en los
equipos del cliente y siempre que sea posible con la presencia de este.
Para la instalación de la aplicación se acudirá al cliente con el software
preparado para transferirlo a sus equipos, después será necesario configurar
los parámetros de funcionamiento normal de la empresa. Por último, los
usuarios finales comenzaran a usar la aplicación.
6. Mantenimiento:
Por último, en esta fase de mantenimiento se realiza un control de mejora y
optimizamos el SW, necesitamos que el cliente pacte con nosotros los costes
y además la duración del servicio de mantenimiento.
Este tipo de mantenimiento hacia el cliente debe cubrir:
- Cambios perfectivos: La mejora de la funcionalidad del SW
- Cambios evolutivos: Cubre las nuevas necesidades del cliente
- Cambios adaptativos: Adaptamos las nuevas tecnologías que salen, igual con
HW
- Cambios correctivos: Corrige fallos si tiene en un futuro.
7. Documentación:
Esta fase se desarrolla la documentación de que se ha hecho en la propia
aplicación Donde tenemos que explicar, tres aspectos:
GUÍA TECNICA GUÍA DE USO GUÍA DE
INSTALACIÓN
Quedan -El diseño de la -Descripción de la Toda la información
reflejados: aplicación. funcionalidad de la necesaria para:
aplicación.
-La codificación de los
programas. -Puesta en
-Forma de marcha.
-Las pruebas realizadas. comenzar a ejecutar la
aplicación. -Explotación.
-Seguridad del
-Ejemplos de
uso del programa. sistema.
-Requerimient
os software de la
aplicación.
-Solución de
los posibles problemas
que se pueden
presentar.
¿A quién va Al personal técnico A los usuarios que van a Al personal
dirigido? en informática usar la aplicación (clientes). informático
(analistas y responsable de la
programadores). instalación, en
colaboración con los
usuarios que van a usar la
aplicación (clientes).
¿Cuál es su -Facilitar un correcto -Dar a los usuarios finales -Dar toda la
objetivo? desarrollo toda la información información
-Realizar necesaria para usar la necesaria para
correcciones en los aplicación. garantizar que la
programas y permitir implantación de
un mantenimiento la aplicación se
futuro. realize de forma
segura y precisa.
Cuestiones
Por último, responde razonadamente a las siguientes cuestiones:
1. ¿Qué es una máquina virtual?
Una máquina virtual es un software que emula un entorno de hardware y
sistema operativo, permitiendo que un sistema informático pueda ejecutar
programas o aplicaciones como si estuviera utilizando un hardware físico
específico. Esto implica que, dentro de una máquina virtual, se puede ejecutar
un sistema operativo completo, junto con las aplicaciones asociadas, de
manera aislada del sistema operativo anfitrión.
¿Hay diferencias entre el JRE y el JDK?
Si, la principal diferencia es que el JDK está destinado al desarrollo de software
en Java, ya que proporciona herramientas y recursos adicionales para escribir y
compilar código, mientras que el JRE está orientado a la ejecución de
aplicaciones ya compiladas.
2. Explica detalladamente las metodologías Extreme Programming y
SCRUM. ¿Cuándo es conveniente usar una frente a la otra?
Scrum:
La metodología Scrum divide el trabajo en pequeñas cápsulas de tiempo (sprints) que
suelen durar entre dos semanas y un mes, y en las que se fijan unos objetivos en base
a las necesidades del usuario.
Al finalizar un sprint, se obtiene un prototipo del producto o servicio, de forma que el
cliente puede empezar a utilizar las características más importantes del mismo. Por
ello, Scrum puede utilizarse en el desarrollo de soluciones de cualquier industria y en
cualquier tipo de proyecto, sea cual sea su complejidad.
Extreme Programming:
Esta metodología divide el proyecto en fases y, en cada una de ellas, realiza un ciclo
completo de planificación, diseño, desarrollo y pruebas.
Es idónea para proyectos con requisitos imprecisos y muy cambiantes, al poner
el énfasis en la retroalimentación continua entre el cliente y el equipo de desarrollo.
Gracias a que existe un flujo de comunicación constante, los desarrolladores pueden
responder rápidamente a los cambios, aún en fases tardías del ciclo de vida del
desarrollo.
En cuanto cual conviene más, XP es más adecuado para entornos dinámicos con
requisitos cambiantes, mientras que SCRUM es preferible cuando se necesita una
estructura más definida y predecible en proyectos con características más estables. La
elección también puede depender de las preferencias y la cultura específica del equipo
y de la organización.