Shell   30-03-2025, 12:14
#1
Buenas!.

Pues tenía curiosidad en los pasos y planteamientos sobre los pasos a la hora de desarrollar una aplicación.
Así que le pregunte a la IA y le propuse un problema.

Un cliente va a un desarrollador y le solicita la creación de una aplicación.
Partiendo de esto, me muestra una serie de pasos, con respecto a un vocabulario.

Cita:Vamos a simular el proceso utilizando el vocabulario que hemos visto:

**Cliente (Tú):** "Hola, desarrollador. Necesito un programa que haga varias cosas. Primero, quiero que pueda guardar información de mis clientes: nombre, dirección, teléfono y correo electrónico. Segundo, necesito que me permita buscar clientes por nombre o por correo electrónico. Tercero, me gustaría poder generar informes con la lista de todos mis clientes."

**Desarrollador:**

1.  **Toma de Requerimientos Iniciales:** El desarrollador, en esta primera consulta, está escuchando atentamente tus necesidades. Está identificando tus **requerimientos del usuario**. En este punto, el desarrollador podría hacer preguntas para aclarar tus ideas y entender mejor tus necesidades. Por ejemplo, podría preguntar sobre la cantidad de clientes que esperas tener, si necesitas alguna otra información sobre ellos, o cómo te gustaría que fueran esos informes.

2.  **Análisis de Requerimientos:** El desarrollador comenzará el proceso de **análisis de requerimientos**. Tomará nota de tus peticiones y las clasificará. Por ejemplo:
    * Guardar información de clientes (nombre, dirección, teléfono, email) - Esto se identifica como un **requerimiento funcional**.
    * Buscar clientes por nombre o email - Otro **requerimiento funcional**.
    * Generar informes con la lista de clientes - Un tercer **requerimiento funcional**.

3.  **Documentación de Requerimientos:** El desarrollador empezará a crear la **documentación** de estos **requerimientos funcionales**. Podría escribir algo como:
    * **RF001:** El sistema debe permitir la creación de nuevos registros de clientes, incluyendo los campos: nombre, dirección, teléfono y correo electrónico.
    * **RF002:** El sistema debe permitir la búsqueda de clientes por su nombre.
    * **RF003:** El sistema debe permitir la búsqueda de clientes por su dirección de correo electrónico.
    * **RF004:** El sistema debe generar un informe que liste todos los clientes registrados en el sistema.

4.  **Identificación de Posibles Requerimientos No Funcionales:** Aunque no los hayas mencionado explícitamente, el desarrollador podría empezar a pensar en **requerimientos no funcionales**. Por ejemplo:
    * **Rendimiento:** ¿Necesitas que las búsquedas sean rápidas? (Podría llevar a una **especificación de rendimiento**).
    * **Usabilidad:** ¿Quieres una interfaz sencilla e intuitiva? (Podría llevar a **especificaciones de usabilidad**).
    * **Seguridad:** ¿Necesitas proteger la información de tus clientes? (Podría llevar a **especificaciones de seguridad**).
    El desarrollador podría preguntarte sobre estos aspectos para definir mejor el proyecto.

5.  **Elaboración de Especificaciones:** Con los requerimientos más claros, el desarrollador comenzará a elaborar las **especificaciones funcionales**. Estas serán descripciones más detalladas de cómo se implementarán los requerimientos. Por ejemplo, para "guardar información de clientes", la **especificación funcional** podría detallar los tipos de datos esperados para cada campo, las validaciones que se realizarán (por ejemplo, asegurar que el correo electrónico tiene un formato correcto), etc.

6.  **Presentación y Validación:** El desarrollador te presentará estos **requerimientos** y **especificaciones** para que los revises y confirmes que entiendes y estás de acuerdo con lo que se va a construir. Este proceso de **validación** es crucial para evitar malentendidos.

7.  **Diseño:** Una vez que los **requerimientos** y **especificaciones** estén confirmados, el desarrollador pasará a la fase de **diseño**, donde planificará la estructura del programa, la interfaz de usuario, la base de datos, etc., basándose en las **especificaciones de diseño**.

En resumen, tu consulta inicial pone en marcha un proceso donde el desarrollador, utilizando el vocabulario que hemos visto, trabajará para entender, documentar y detallar tus necesidades (tus **requerimientos**) para luego definir cómo el programa cumplirá esas necesidades (a través de las **especificaciones**). Este es un paso fundamental antes de comenzar la **implementación** del programa.

Vocabulario:

Cita:Aquí tienes vocabulario de programación relacionado con "especificaciones" y "requerimientos":
Términos Generales:
  • Especificación: Descripción detallada de lo que un sistema, software o componente debe hacer y cómo debe hacerlo.
  • Requerimiento: Necesidad o condición que debe cumplir un sistema, software o componente.
  • Documentación: Conjunto de documentos que describen un sistema, software o componente.
  • Análisis de requerimientos: Proceso de identificar, documentar y gestionar los requerimientos de un sistema.
  • Diseño: Plan detallado de cómo se implementará un sistema o software para cumplir con las especificaciones.
  • Implementación: Proceso de construir el sistema o software basado en el diseño.
  • Prueba/Testing: Proceso de verificar que el sistema o software cumple con las especificaciones y requerimientos.
  • Validación: Proceso de asegurar que el sistema o software cumple con las necesidades del usuario o cliente.
  • Mantenimiento: Proceso de modificar o actualizar el sistema o software después de su implementación.
  • Ciclo de vida del software: Conjunto de etapas por las que pasa un software desde su concepción hasta su retirada.
Tipos de Especificaciones y Requerimientos:
  • Especificaciones funcionales: Describen qué debe hacer el sistema o software.
  • Especificaciones no funcionales: Describen cómo debe ser el sistema o software (rendimiento, seguridad, usabilidad, etc.).
  • Requerimientos funcionales: Describen las funcionalidades específicas que el sistema debe ofrecer.
  • Requerimientos no funcionales: Describen las cualidades que el sistema debe tener, como rendimiento, seguridad, usabilidad, fiabilidad, etc.
  • Requerimientos del usuario: Describen las necesidades del usuario final.
  • Requerimientos del sistema: Describen los requerimientos desde la perspectiva del sistema.
  • Requerimientos de negocio: Describen las necesidades y objetivos de la organización.
  • Especificaciones técnicas: Describen los detalles técnicos de cómo se implementará el sistema.
  • Especificaciones de diseño: Describen cómo se estructurará y organizará el sistema.
  • Especificaciones de interfaz: Describen cómo interactuará el sistema con otros sistemas o usuarios.
  • Especificaciones de rendimiento: Describen los criterios de rendimiento que el sistema debe cumplir (velocidad, capacidad, etc.).
  • Especificaciones de seguridad: Describen las medidas de seguridad que el sistema debe implementar.
  • Especificaciones de usabilidad: Describen los criterios de facilidad de uso que el sistema debe cumplir.
Verbos Comunes:
  • Especificar: Detallar las características o funcionalidades de algo.
  • Requerir: Necesitar o demandar algo.
  • Definir: Establecer con claridad los límites o características de algo.
  • Documentar: Registrar información de manera formal.
  • Analizar: Examinar detalladamente algo para comprenderlo mejor.
  • Diseñar: Crear un plan para construir algo.
  • Implementar: Llevar a cabo un plan o diseño.
  • Probar/Testear: Verificar el funcionamiento de algo.
  • Validar: Confirmar que algo cumple con los requisitos.
  • Mantener: Conservar o reparar algo para que siga funcionando correctamente.
Ejemplos de Frases:
  • "Las especificaciones funcionales del sistema incluyen la capacidad de crear, leer, actualizar y eliminar registros."
  • "Uno de los requerimientos no funcionales es que el sistema debe responder en menos de 2 segundos."
  • "El equipo de análisis de requerimientos está trabajando en la documentación detallada del proyecto."
  • "Es importante especificar claramente los requerimientos del usuario antes de comenzar el diseño."
  • "Las especificaciones técnicas detallan las tecnologías que se utilizarán en la implementación."

Espero que os guste y discutáis este tema desde vuestro punto de vista, carrera, idea, profesión, etc.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   30-03-2025, 12:28
#2
A todo eso yo soy escéptico, como House. Mi experiencia es que muy pocas veces, por no decir nunca, el cliente sabe lo que quiere. Eres tú quien en una labor de pregunta -respuesta (vaga) tienes que averiguar qué problema tiene y cómo hay que enfocarlo para solucionarlo.
Un ejemplo me viene a la mente:
Me vienen un día y me dicen:
- Tienes que añadir un botón en el programa para que se vea la -vamos a llamarla- "Clientesía Joven".
+ ¿Eso qué es?
- Es que a los clientes con menos de 30 años que vivan con su padres les queremos hacer un descuento. De ahí ese botón.
+ ¿y cuando cumplan más de 30 qué pasará?
- Emmm... habrá que pensarlo.
+ ¿y cómo sabemos si viven con sus padres? ¿Les pedimos a todo el mundo si su casa es suya o les pedimos la dirección de sus padres?
- Emmm.. eso sería un dato demasiado íntimo.
+ Y que no tiene nada que ver con nuestra empresa
- No... lo consultaré.
+ Y habrá que añadir ese descuento a la tabla de descuentos. ¿De cuánto será?
- Del 20%
+ Igual del que ya aplicamos a los parados y jubilados y que tenemos como "Descuento Personal" ¿No?
- Sí, pero no vale el "Descuento Personal" porque no constaría en los informes. Tiene que ser "Descuento Joven".
+Ajá ¿Y cómo controlamos si se mudan a otra casa?
- Porque ellos no lo comunicarán
+ ¿Para que les cobremos un 20% más por lo mismo?
-Esto... No hagas nada de momento que tengo que consultarlo.

Nunca más se volvió a mencionar el tema.

No podemos regresar
Shell   30-03-2025, 15:37
#3
(30-03-2025, 12:28)Shordi escribió: A todo eso yo soy escéptico, como House. Mi experiencia es que muy pocas veces, por no decir nunca, el cliente sabe lo que quiere. Eres tú quien en una labor de pregunta -respuesta (vaga) tienes que averiguar qué problema tiene y cómo hay que enfocarlo para solucionarlo.

Supongamos el caso de una administración de un restaurante, un local.
El caso de la aplicación FoodExpress.

Eres el desarrollador y el cliente, todo a la vez. Pero puede que el cliente realiza
una serie de funciones en el restaurante y quiere agilizar esas tareas mediante un software.

El sabe lo que hace día a día. Las gestiones que en vez de realizarla con un lápiz y un papel las
va a llevar a un programa informático. Gestión de pedidos, gestión de facturación y todo lo que conlleva.

Es un software diseñado según las necesidades del cliente o el tipo de negocio.
No es un software como si fuera una plantilla. O ampliar esta.
Es un estudio por parte del desarrollador.

Referente al botón. ¿ Todo eso por un botón ?. No veas el botón.
Por eso te preguntaba un día sobre el planteamiento de las consultas
como llevarlas a la interfaz gráfica según la necesidad o demanda de estas.
No voy a llenar la interfaz de botones. Smile


Entonces en cierta manera, no te dedicabas solamente a hacer algo y ya está.
Que es en parte como debería ¿ ser ?. Le buscabas más cosas.  Big Grin
Supongo que no era cuestión solo de hacer algo sino de una responsabilidad.
Que eras el que tenías que dar la cara luego y otro veía los toros desde la barrera.


Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.