Planteamiento de un problema

Utilizando los términos utilizados dentro del dominio del problema, es decir el lenguaje del cliente o de quien solicita el sistema, debe describirse lo que se requiere en una fase corta, concisa y completa.

Para ello se recomienda utilizar el siguiente planteamiento de Peter Coad:

  • Escribir un texto de alrededor de 25 palabras con frases como "para ayudar a”, “para facilitar”, “para apoyar”, etc.
  • Hacer una lista de las características requeridas y ponderarla.
  • Hacer un recorrido por el lugar donde se usará el software para entender su entorno.

Imagina que deseamos hacer un programa para realizar el cálculo del área de cualquier triángulo; para ello, el cliente necesita obtener esta información conociendo la longitud de los segmentos de recta de la base y la altura del triángulo. Como se trata de un curso de programación en Java, debes tener en cuenta que ese sera el lenguaje de programación que se utilizará y por lo tanto el planteamiento debe enmarcarse dentro de la metodología de programación orientada a objetos.

Peter Coad

Peter Coad es un emprendedor de software y autor de libros sobre programación. Se destaca por su papel en la definición de lo que se conoce como colores UML, una notación codificada por colores principalmente útil para agregar amplitud y profundidad a un diseño, utilizando cuatro arquetipos principales.

Ejercicio de escritura

Escribe en el siguiente recuadro un enunciado que describa el planteamiento que permita diseñar un programa de computadora para calcular el área de un triángulo.

Para facilitar las tareas del cálculo de superficies, realice un programa que obtenga el área de un triángulo a partir de conocer su base y altura.

Seguramente de inmediato pensaste en la fórmula que aprendiste en cursos previos y en una figura del triángulo similar a esta:

$\acute{a}rea = \frac {base \cdot altura} {2}$

Sin embargo, dependiendo del contexto del solicitante de la información podría estar pensando en cualquiera de estos casos o en algún otro:

Retro

a) Calcule el área de un triángulo a partir de conocer los valores de tres segmentos de recta. Hay que determinar cuál será la base, calcular la altura e incluso determinar si esos segmentos forman un triángulo.

Retro

b) Calcule el área de un triángulo a partir de conocer tres puntos en el plano cartesiano. Hay que determinar cuál será la base, calcular la altura e incluso determinar si esos puntos forman un triángulo (no se ubican en la misma recta).

Retro

Cuando los programas o sistemas planteados crecen en complejidad, es necesario ser un poco más específico en el planteamiento del problema, para ello pueden establecerse un objetivo general y objetivos particulares para delimitar mejor el planteamiento.

  1. Objetivo general
    Describa el objetivo en términos del algoritmo que debería cumplir el sistema a producir, sin detalles de su implementación. Indique tiempos de entrega y mecanismos para las revisiones parciales.
  2. Objetivos particulares
    Liste de manera breve una manera para abordar el problema, en términos de los conceptos de orientación a objetos de los que se está apoyando.
  3. Glosario
    Defina los conceptos, reglas de negocio y terminología que debería utilizarse, tanto para utilizar el vocabulario del dominio del problema (como lo ve el usuario). Cómo identifica o describe cada entrada, los procedimientos y los resultados a obtener. Puede utilizar tablas o imágenes.
  4. Alcance actual y futuro
    Acote la solución en al menos dos etapas: el mínimo aceptable que realizará el sistema en términos de funcionalidad y de cómo llegar a ello; en una segunda etapa, escriba qué elementos se pueden agregar de manera posterior para enriquecer el programa, sin mucho detalle.
Ejercicio de escritura

Con el siguiente ejercicio podrás elaborar el planteamiento del problema que se te solicita. Lee el siguiente problema y realiza lo que se te pide.

La escuela desea realizar el cálculo del Índice de Masa Corporal de sus estudiantes de primer ingreso y de los egresados para estimar su estado de salud. Se sabe que los primeros llegan en promedio con una edad de 15 años, mientras que los egresados se calcula que tendrán 18 o 19 años, al momento salir.

El Departamento de Educación Física realizará las pruebas y solicita a un grupo de alumnos expertos de Cibernética y Computación que desarrollen un programa de cómputo para realizar el cálculo del IMC y emitir una valoración sobre el estado de salud.

El cálculo del IMC es:

$IMC=peso/〖estura〗^2$

Les sugiere utilizar las tablas de interpretación de la Organización Mundial de la Salud con los siguientes criterios:

  • Personas mayores de edad, para egresados.
  • Niños de 15 años para alumnos varones de primer ingreso.
  • Niñas de 15 años para alumnas mujeres de primer ingreso.

Considerando a los adultos como el caso “general”, diseñe un formulario para realizar los cálculos correspondientes guardando: nombre, peso, talla, edad, y género de las personas y así calcular su IMC y una valoración o descripción del mismo. Especialice la interpretación de la descripción del IMC para cada clase derivada de la general.

Este programa es muy importante para el estudio de la salud de la población en general, más adelante el Instituto Nacional de Nutrición solicitará trasladarlo a una plataforma web para que se pueda interpretar la información de todas las edades.

Describa en uno o dos renglones la descripción del problema:

Calcular el índice de masa corporal de una persona, conociendo su peso y estatura.

Objetivos particulares:

Incluir en la interpretación a personas adultas y a adolescentes de 15 años, hombres y mujeres.

El alcance actual:

Determinar el IMC (es una fórmula general). Interpretar el estado de salud de adultos y personas de 15 años por sexo.

El alcance futuro:

Interpretar el IMC a cualquier edad.

Cuáles son las variables o la información de entrada:

Peso, estatura y edad.

Y qué se espera obtener de salida:

IMC e interpretación de acuerdo a la edad.

Requerimientos no funcionales

De acuerdo a Volere (2000) entre los requerimientos no funcionales encontramos los de apariencia (dimensiones, ergonomía), usabilidad (uso y aprendizaje), desempeño (tiempos de respuesta), operación (restricciones de hardware y software quienes administran la infraestructura de tecnología dentro de la empresa y de actores —tipos de usuarios que trabajarán con el sistema), mantenimiento, portabilidad, seguridad, culturales, políticos, reglamentación, herramientas de desarrollo.

Los requerimientos no funcionales son aquellos que no están relacionados específicamente con la funcionalidad del sistema o lo que se espera que haga el sistema. Imponen restricciones sobre el producto que está siendo desarrollado y sobre el proceso de desarrollo, y especifican las restricciones externas que el producto debe lograr. Los requerimientos no funcionales incluyen requerimientos de confiabilidad, seguridad, usabilidad, disponibilidad y rendimiento.

Algunos ejemplos son:

  • si la aplicación se mostrará en un formulario o en línea de comandos,
  • debe funcionar en algún sistema operativo en particular,
  • se usará algún mecanismo o programa para almacenar la información,
  • versiones del software de desarrollo e implementación,
  • dónde se almacenará el programa,
  • dónde se realizará el respaldo y mantenimiento.

Este material, utilizará como lenguaje de programación Java, intentando utilizar las funciones más estándares que existen dentro del Lenguaje. Java es un lenguaje de programación orientado a objetos, siguiendo los principios de este paradigma:

  • Abstracción. Identificar elementos autónomos agrupados en “Clases de objetos“ dependiendo de sus responsabilidades dentro de un sistema; a su vez, almacenarán información (atributos) y el resto del sistema podrá comunicarse a través de mensajes o métodos.
  • Encapsulamiento. Se establece protección de la información almacenado o estado de cada objeto para garantizar la integridad de la información almacenada. Por ejemplo, no es posible modificar el saldo de una cuenta bancaria si no es a través de mensajes como «depositar», «retirar» o «comprar», donde se realiza las validaciones necesarias antes de afectar el saldo y registrarlo en un estado de cuenta.
  • Herencia y polimorfismo. Es un mecanismo para poder agrupar Clases con comportamientos similares, reutilizar fragmentos de códigos de programación y responder a mensajes iguales con comportamientos apropiados a cada objeto. Por ejemplo, si tienes varios animales y les envías un mensaje «asustar», podrían volar, otros correr, esconderse o incluso atacar.

Para comunicarse con una computadora, es necesario un lenguaje de progamación. Y necesita un entorno de programación y pruebas llamado Entorno Integrado de Desarrollo (IDE, por sus siglas en inglés). Java puede ejecutarse en distintos sistemas operativos y entornos de programación, para ello requiere bibliotecas de clases estandarizadas agrupadas en un kit de desarrollo (JDK).

Dentro de los requerimientos no funcionales deben especificarse las herramientas necesarias para su desarrollo como pueden ser la versión del JDK y el IDE recomendado.

IDE

Siglas en inglés de Entorno de Desarrollo Integrado (Integrated Development Environment), es una aplicación que proporciona servicios integrales para facilitarle al programador el desarrollo de software.

JDK

Java Development Kit, kit de desarrollo de Java. Esta constituido por un conjunto de programas para compilar y ejecutar programas escritos en Java, la documentación de los componentes y una biblioteca de elementos reutilizables (clases) para las tareas más comunes de programación.

Ejercicio de escritura

Para el problema del IMC, indica si las siguientes características que se mencionan en la tabla son requerimientos funcionales (necesarios para resolver el problema) o no funcionales (características que no son parte del proceso de solución). Observa el ejemplo:

El programa debe poder ejecutarse en cualquier sistema operativo
No funcional
El sistema operativo no influye en los pasos que se ejecutan dentro del programa.
El programa se realizará a través de un formulario web
No funcional
El problema de resolución de las raíces es independiente de la presentación en pantalla hacia el usuario.
El valor de la estatura está en metros y el del peso está en kilogramos
Funcional
La elección de las unidades de medición es relevante en la interpretación de los cálculos, ya podría se obtienen resultados distintos dependiendo del sistema de medición, o si estuviera en metros o centímetros.
Se utilizará la fórmula $x=\frac{-b \pm \sqrt{b^2-4ac}}{2a}$
Funcional
Es parte del procedimiento de solución.