[Php-avanzado] Requerimientos funcionales: Bibliotech v6
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Vie Oct 11 10:04:41 ART 2013
Hola Pehuén,
me olvidé ayer de tu SRS: el tema del stock daba para charlarlo en la
pausa...
El jue, 10-10-2013 a las 13:25 -0700, Fernando Pehuén Borsani escribió:
> ----------------
> Aclaraciones
> ----------------
> LT>Entiendo que si estás reparando una "unidad" digas que está en
> "mantenimiento". Lo que no le encuentro es nada de sentido aplicarle
> "mantenimiento" a un préstamo o a un asociado.
> LT>Estás generalizando como "mantenimiento" para evitar tener un
> estado "prestado" por ejemplo? Si es así, es una economía
> extremadamente costosa!
> --Al hacerse un préstamo el sistema asigna automáticamente a este el
> estado "activo" y el ente que recibe el préstamo es el "asociado".
> --Al enviar unidades a mantenimiento su estado y ente receptor es
> "mantenimiento". Es como un préstamo, porque la unidad es entregada,
> pero sin un asociado(porque lo recibe un empleado).
Con la enumeración de los estados, es mucho más claro.
Fijate que en algunas partes de la SRS hablás de "estados" y en otras
de "estados de préstamos". Decidite y usá siempre el mismo nombre.
Esto provocó que el RF23 quedara mal: te cuento más abajo.
> LT>Me sigue resultando confuso que la cuota no registre dinero, pero
> que su diccionario sea "suma de dinero que se abona mensualmente ...".
> Es solo un comentario: no es para que lo cambies.
> --Estaría bueno mejorar la definición para que no resulte confuso,
> pero no se me ocurre como definir "cuota" sin mencionar el pago
> metálico.
> --Y es que la cuota es el pago de dinero. Pero al sistema no le
> importa cuánto es, solo quiere saber si se pagó.
Podrías referirte a "cuotas pagas", con lo que quedaría claro que están
pagas y no se hace referencia al importe pago.
Igual, como te decía, no hacía falta que lo cambies porque la
especificación funcional plantea bien qué es lo que se espera de esto.
De hecho, como este sistema no registra pagos, la mera existencia de
una cuota podría implicar que está paga (porque existe) y la ausencia
que está impaga, con lo que se le puede sacar como atributo cualquier
referencia a importes y pagos. Es decir, si ahora aparece una cuota del
10/2013 o posterior, estoy al día, y si no aparece, no lo estoy (y se
impide un préstamo y se envían avisos de vencimiento, etc).
> --------------------------
> Registro de cambios
> --------------------------
> --reescrita la definición de confiabilidad.
> --actualizada la definición de stock.
> --actualizada la definición de cuota
> --actualizadas RF21 a RF24
> --movida la subfuncionalidad de aborto de préstamo por falta de
> unidades desde RF21(préstamos) a RF24(stock) para evitar un fallo de
> prioridades: la RF21 haría referencia a la RF23. Invertir estas dos RF
> no parece una mejor solución porque el stock cambia según los eventos
> de los préstamos.
>
> ---------------------------------------------------------------------
> Software Requirements Specification[SRS] Bibliotech v6
> ---------------------------------------------------------------------
> Requerimientos Funcionales[RF]:
> 01) El sistema debe gestionar editoriales.
> 02) El sistema debe gestionar autores.
> 03) El sistema debe gestionar géneros.
> 04) El sistema debe gestionar libros con su editorial[01], su(s)
> autor(es)[02] y su género[03].
> 05) El sistema debe gestionar unidades de libros[04].
> 06) El sistema debe mostrar los sexos.
> 07) El sistema debe mostrar rangos de edad.
> 08) El sistema debe gestionar visitantes con su sexo[06] y rango de
> edad[07].
> 09) El sistema debe registrar los votos de los visitantes[08] a los
> libros[04].
> 10) El sistema debe gestionar comentarios de los visitantes[08] a los
> libros[04].
> 11) El sistema debe registrar los votos de los visitantes[08] a los
> comentarios[10].
> 12) El sistema debe registrar la popularidad del libro[04].
> 13) El sistema debe reportar la popularidad[12] de los libros[04]
> mensualmente.
> 14) El sistema debe buscar libros[04].
> 14.1) Por ISBN
> 14.2) Por Editorial[01].
> 14.3) Por Autor[02].
> 14.4) Por título.
> 14.5) Por género[03].
> 15) El sistema debe mostrar tipos de documentos.
> 16) El sistema debe gestionar asociados con su sexo[06], rango de
> edad[07] y tipo de documento[15].
> 17) El sistema debe calcular la confiabilidad de los asociados[16].
> 18) El sistema debe mostrar los meses del año.
> 19) El sistema debe inscribir cuotas de asociados[16].
> 20) El sistema debe informar al asociado del vencimiento de la
> cuota[19].
> 21) El sistema debe registrar el préstamo de unidades[05] a
> asociados[16].
> 21.1) El sistema debe detener un nuevo préstamo si excede la
> confiabilidad[17].
> 21.2) El sistema debe detener un nuevo préstamo si no está paga la
> cuota[19].
> 22) El sistema debe mostrar estados de préstamos[21]
> 23) El sistema debe modificar el estado[22] del préstamo[21] para
> señalar su devolución o extravío.
Pehuén! no se modifica el estado[22], lo que se modifica es el
préstamo[21] para que cambie de un estado a otro!
Modificar el estado[22] querría decir que el estado "anulado" pase a
llamarse "mal registrado" por ejemplo.
Esto puede implicar cambios en el RF 24.5 y 24.6
> 24) El sistema debe gestionar el stock de unidades[05].
> 24.1) El sistema debe detener un nuevo préstamo si no hay
> unidades[05] disponibles.
> 24.2) El sistema debe comprobar si ya existe un libro[04] cuando
> se den de alta unidades[05].
> 24.3) El sistema debe sumar uno al stock al efectuarse el alta de
> unidad[05].
> 24.4) El sistema debe restar uno al stock disponible al efectuarse
> un préstamo[21].
> 24.5) El sistema debe sumar uno al stock disponible al
> devolverse[23] el préstamo[21].
> 24.6) El sistema debe restar uno al stock disponible por
> extravío[23] de unidad[05].
> 24.7) El sistema debe restar uno al stock disponible al enviarse
> la unidad[05] a mantenimiento.
Cuándo una unidad vuelve de mantenimiento, qué se hace?
> 24.8) El sistema debe restar uno al stock disponible si se
> deteriora irreversiblemente la unidad[05].
> 25) El sistema debe informar al asociado[16] del vencimiento del
> préstamo[21] un día antes del vencimiento.
> 26) El sistema debe mostrar los préstamos[21] vencidos hace más de una
> semana.
>
> Requerimientos No Funcionales[RNF]:
> - Gestionar a los empleados.
>
> ---------------
> Diccionario:
> ---------------
> --Editorial: Casa editora.
> Atributos: nombre.
> --Autores: nombre(s) de la(s) persona(s) que escribe(n) el libro. Un
> libro puede tener varios autores.
> Atributos: nombre.
> --Género: categorías en que clasificar de forma excluyente las obras
> literarias atendiendo a su contenido. Algunos de ellos son: poesía,
> ciencia ficción, cuento.
> Atributos: nombre.
> --Libro: Obra de extensión suficiente para formar un volumen, en
> soporte físico.
> Atributos: isbn, editorial, autor, título, género, portada, resumen
> de la contracara.
> --Unidad: copia de un libro que comparte todas las mismas propiedades
> que el original menos su código bibliotecario.
> Atributos: código bibliotecario, referencia al libro(#posiblemente
> isbn), disponibilidad para préstamo.
> --Sexo: femenino o masculino.
> Atributo: nombre.
> --Rango de edad: hasta 15 años, de 15 a 18 años, de 18 a 22 años, de
> 23 a 30 años, de 30 a 40 años, de 40 a 60 años, mayor de 60 años.
> Atributo: rango.
> --Visitante: persona externa a la empresa que ingresa al contenido web
> generado por este software.
> Atributos: Nombre, email, rango de edad, sexo.
> --Votos: valoración positiva, valoración negativa.
> Atributo: valor.
> --Comentarios: opinión que el visitante deja escrita sobre un libro
> específico.
> Atributos: autor, contenido, libro.
> --Popularidad: cantidad de personas que leen la información detallada
> de un libro(portada y resumen de contracara).
> Atributos: libro, cantidad.
> --Reportar: crear un archivo con una lista decreciente de los libros y
> la cantidad de visitas que recibieron.
> Atributos: ranking, fecha.
> --Búsqueda: Comprobación de existencia de un libro(por isbn o título),
> autor, editorial, y listado de los resultados.
> Atributos: término de búsqueda, coincidencias.
> --Comprobar si ya existe un libro: verificar si el isbn de un libro ya
> existe en el sistema.
> Atributos: isbn ingresado, resultado.
> --Tipos de documentos: documento nacional de identidad(DNI), libreta
> de enrolamiento(LE), libreta cívica(LC), cédula de identidad(CI).
> Atributo: tipo.
> --Confiabilidad: cantidad de préstamos activos simultáneos que puede
> tener un asociado, cantidad de días hasta el vencimiento del préstamo.
> Cálculo de puntos: devuelto antes del vencimiento, +1 punto.
> Devuelto tras el vencimiento, -10 puntos por día vencido y cambio
> temporal a rango suspendido. Extraviado: inhibe de por vida al
> asociado a no ser que reponga el ejemplar extraviado, en cuyo caso lo
> restablece como rango 1 con 0 puntos.
> Rangos: (1) hasta 100 puntos: 2 unidades, 2 semanas. (2) desde 101
> hasta 300: 2 unidades, 3 semanas. (3) desde 301: 3 unidades, 3
> semanas. (Suspendido) 0 libros, los días suspendido se calculan así:
> Penalización = 5 * cantidad de días de atraso * cantidad de veces que
> el asociado devolvió tarde un préstamo. Tras este período el asociado
> recupera su rango de confiabilidad del 1 al 3 según sus puntos
> almacenados.
> Atributos: asociado, puntaje, rango.
> --Asociado: persona que paga un abono mensual y a cambio puede recibir
> unidades en préstamo.
> Atributos: Nombre, tipo de documento, número de documento, fecha de
> registro, email, teléfono, celular, dirección, rango de edad, sexo,
> confiabilidad.
> --Cuota: suma de dinero que se abona mensualmente para poder recibir
> los servicios de la institución.
> Atributos: asociado, último mes(con su año correspondiente) pago.
> --Informar: enviar un correo electrónico con información de interés.
> Atributos: Asociado, tipo de informe, fecha.
> --Estados: activo, anulado, devuelto en fecha, devuelto vencido,
> extraviado, mantenimiento, readquirido.
> Atributos: nombre.
> --Préstamo: entrega de unidades de la biblioteca al asociado, para que
> los lea en su hogar, y su posterior devolución.
> Atributos: Asociado, libro(ISBN), fecha de préstamo, fecha de
> vencimiento, fecha de devolución, estado.
> --Stock de unidades: suma de las unidades que corresponden al mismo
> libro, y cuantos de esas unidades no están prestadas, extraviadas,
> destruidas o en mantenimiento.
> Atributos: isbn, cantidad de unidades, cantidad disponibles para
> préstamo.
> --Empleado: persona bajo sueldo que realiza funciones administrativas
> para el comprador de este software.
> Atributos: Nombre, puesto, zona, permiso.
Nada más por ahora.
Fijate que la mayoría de las cuestiones están alrededor del manejo de
stock, debido a la reciente incorporación del concepto de "unidad".
El proceso de "préstamo" está bien expresado... pero sería muchísimo
más fácil de especificar y de comprender si hubieras expresado como
funcionalidad la "devolución", en vez de expresarla como cambios de
estado del "préstamo".
Esto te lleva al artificio de que, por ejemplo, la baja de un libro
extraviado sea un cambio de estado del "préstamo", en vez de manejar el
concepto de "extravío" o de "baja" y que dicha baja tenga "motivo".
Fijate si puede ser que, en vez de estar especificando el problema en
detalle pensando en una biblioteca, no estás pensando en cómo será el
software (o peor aún, la base de datos) que será la solución a este
problema.
> Gracias por la revisión profe.
Por nada!
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado