[Php-avanzado] Especificación de Requerimientos

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Jun 12 22:31:54 ART 2012


Hola Antonela,

El mar, 12-06-2012 a las 15:30 -0300, Antonela Di Scala escribió:
> Hola Leo, 
> Ante todo mil gracias. 

	Al contrario: es un placer que estés trabajando con esto.

> Corregi todo lo que me dijiste y anote un par de dudas, ambas cosas
> las puse con letra mas oscura y resaltadas:

	Veamos:

	Como preámbulo y resumen de cómo vamos: estabas mezclando las Materias
con la Inscripción a una Materia.
	Son dos conceptos distintos. Tal vez te clarifique un poco (a mi me
sirvió) pensar que unas son las "Materias de la Carrera" y las otras son
las "Materias a las que está Inscripto un Alumno"

	En tu SRS estás llamando a estas cosas as:

RF10 Materias <-> Materias de la Carrera
RF12 Inscripción a una Materia <-> Materia a las que está Inscripto un
Alumno

	Tus nombres son correctos, no te digo esto para que los cambies, sino
para darle más sentido semántico a las cosas.

	Luego tenés los estados posibles de una "Inscripción a una
Materia" (RF11) Esto es otro concepto y será usado como atributo en el
RF12... pero acá tenés que pensar en el "Estado" como un atributo de la
"Inscripción", con lo que no tiene (casi) nada que ver con la "Materia".


>                Veamos tus dudas: son interesantes porque nos van a
>         ayudar a determinar
>         qué tiene que hacer exactamente este software (y para esto
>         escribimos
>         SRSs!)
>         
>         > RF01- El sistema debe gestionar Países
>         > RF02-El sistema debe gestionar Provincias con su País [1]
>         > RF03- El sistema debe gestionar Localidad con su
>         Provincia[2] y su
>         > País[1]
>         > RF04-El sistema debe listar Estado Civil
>         > RF05-El sistema debe gestionar  Alumnos con su Estado
>         Civil[4],
>         > Localidad[3], Provincia[2] y País [1]
>         > RF06-El sistema debe gestionar departamentos
>         > RF07-El sistema debe gestionar carreras con su
>         departamento[6]
>         > RF08- El sistema debe gestionar planes de estudio
>         > RF09-El sistema debe registrar Inscripción a una
>         carrera[7]de un
>         > determinado plan de estudios[8] de un alumno[5]y poder darlo
>         de baja
>         > RF10-El sistema debe gestionar materias con su
>         > carrera[9],departamento[6] y plan de estudio[8] y Materias
>         [10]
>         > correlativas.
>         >  RF11-El sistema debe mostrar el estado de inscripción a una
>         > materia[10] de la carrera[9] que el alumno[5] se encuentra
>         cursando

	Acá pareciera que tenés la mezcla: el "Estado" es de una "Inscripción a
Materia", es decir, del RF12 y no del RF10 !

	Para que no te quede una especificación que hace referencia a algo no
definido, el RF11 podría ser simplemente así:

RF11: el sistema debe mostrar Estados de Cursada.

>         >  RF12-El sistema debe registrar inscripción a una materia
>         [11] en
>         > estado[11] “cursando” de un alumno[5]y poder darlo de baja,
>         siempre que las Materias [11] Correlativas se encuentren en
>         estado "cursada sin final" o "aprobada" 

	Y acá te quedaría:

RF12: El sistema debe registrar inscripción a una Materia [10] con su
Estado de Cursada [11] para un Alumno [05], de entre las Materias [10]
de su Plan de Estudios [08] siempre que las Materias [10] correlativas
se encuentren en Estado de Cursada [11] "cursada sin final" o
"aprobada".

	Cómo los vez ahí? Es consistente con el problema que tenés en mente?


>         >   Duda: En el RF12 esta bien que haga referencia al 11 en la
>         parte que
>         > dice "El sistema debe registrar inscripción a una
>         materia[11]" ?? no
>         > iria haciendo referencia al 10?

>                Pareciera que tiene que hacer referencia al RF10.
>                Fijate que tenés acá tres cosas distintas, que si bien
>         están
>         relacionadas (como todo en un sistema!) tienen roles
>         diferentes y
>         funcionan de forma diferente.
>         
>                Por un lado tenés las Materias (RF10).
>                Por otro lado tenés la Inscripción a una Materia (RF12)
>                Fijate que la Materia es una cosa, y la Inscripción a
>         una Materia es
>         otra cosa bien diferenciada, no solo por los atributos que son
>         distintos, sino porque cada RF expresa un concepto diferente.
>         
>                Vos redactás bien, y expresás en el RF11 que los
>         estados que se
>         muestran son los de un "Inscripción a una Materia" y no los de
>         una
>         "Materia".
>                Lo que estás viendo y que te plantea la duda es que el
>         RF12 hace
>         referencia a una Materia, a un Estado de Inscripción a
>         Materia, y además
>         a un Alumno, etc, pero ahí está confuso a qué cosa exactamente
>         hace
>         referencia esto.
>                Creo que tu confusión surge porque en el diccionario de
>         Inscripción a
>         Materia no tenés como atributo al "estado" (RF11)
>         
>           Agregue Estado Materia en Inscripcion Materia, es asi?

	Sí: así está puesto más arriba.


>                Esta confusión está clara en tu diccionario: le pusiste
>         calificación a
>         Materia (RF10), pero el que tiene calificación es Inscripción
>         a Materia
>         (RF12), es decir, la Materia a la que se inscribe el Alumno, y
>         no la
>         Materia del Plan de Estudios.
>         
>                Acordate: hay que ponerle un nombre a cada cosa, y
>         después usar
>         exactamente ese nombre en todas partes en dónde haga falta,
>         para no
>         redactar ambigüedades, que son el origen de estas omisiones y
>         mezclas.
>         
>         >  RF13- El sistema debe cambiar el estado de una materia [12]
>         
>                      
>          Duda: El [12] lo pongo solamente en el requerimiento o en los
> subrequerimientos tambien??


	Poné el [12] al lado de cada vez que hagas referencia al la Inscripción
a Materias. Más vale ser repetitivo que parezca que se habla de otra
cosa :(


>         >             RF13.1-El sistema debe cambiar automáticamente
>         el estado
>         > de una materia, pasando ésta de estado “cursando” a estado
>         “cursada
>         > sin final” cuando se ingrese la calificación obtenida por el
>         alumno y
>         > ésta sea mayor a 4.
>         >
>  
>         
>         >             RF13.2-El sistema debe cambiar automáticamente
>         el estado
>         > de una materia, pasando ésta de estado “aprobada sin final”
>         a estado
>         > “vencida” cuando el vencimiento de la materia tenga el valor
>         “Si”
>         >
>         >             RF13.3-El sistema debe cambiar automáticamente
>         el estado
>         > de una materia, pasando ésta de estado “cursada sin final” a
>         estado
>         > “aprobada” cuando se ingrese una calificación mayor  a 4 en
>         el examen
>         > final de esa materia
>         >
>         > Dudas: Estan bien redactados asi?? cuando menciono "materia"
>         como por
>         > ejemplo "El sistema debe cambiar el estado de una materia"
>         ahi tendria
>         > que hacer referencia al RF10??
>         
>         
>                No! Debe hacer referencia al RF12, por lo que estamos
>         charlando más
>         arriba!
>         
>         
>         >  RF14-El sistema debe mostrar la historia académica del
>         alumno [5]
>         >  RF15-El sistema debe listar las materias aprobadas sin
>         final del
>         > alumno [5]
>         >  RF16-El sistema debe listar las materias aprobadas con
>         final del
>         > alumno [5]
>         >  RF17-El sistema debe mostrar los aplazos que el alumno
>         posee
>         >  RF18-El sistema debe calcular y mostrar el promedio con
>         aplazos del
>         > alumno
>         >  RF19-El sistema debe calcular y mostrar el promedio sin
>         aplazos del
>         > alumno
>         >  RF20-El sistema debe listar las materias correlativas de
>         una materia
>         > dada. En caso de que la materia no tenga correlativas, no
>         mostrará
>         > nada.
>         >
>         >  RF21-El sistema debe listar las materias que el alumno se
>         encuentra
>         > cursando
>         >
>         >
>         >
>         > Diccionario de datos:
>         >
>         >
>         >
>         >  Estado Civil: soltero/casado/viudo/divorciado/separado
>         >  País: Nombre
>         >  Provincia: Nombre + País
>         > Localidad: Nombre + Provincia + País
>         > Alumno: Nombre, Apellido, Matricula, DNI, Dirección,
>         Teléfono,
>         > FechaNac, EstadoCivil, Localidad, Provincia, País, Email
>         > Departamento: Nombre
>         > Carrera: Nombre, Departamento
>         > Plan de estudios: Nombre
>         > Materia: Cod, Nombre, Carrera, Materias Correlativas, Plan
>         de
>         > Estudios, Calificación
>         
>         
>                La Materia no tiene "calificación": es la Inscripción a
>         Materia la que
>         la tiene...
>         
>         > Estado Materia: cursando/vencida / aprobada /cursada sin
>         final
>         > Vencimiento: Si / No
>         > Inscripción Materia: Año, Cuatrimestre, Materia,
>         Vencimiento, Alumno, Calificacion, Estado Materia


	Ok!


>                Acá va la calificación!
>         
>         > Baja Carrera: Fecha, Carrera, Alumno, Plan de Estudios
>         > Plan de Estudio Vigente: Si / No
>         > Baja Materia: Fecha, Año, Cuatrimestre, Materia, Alumno
>         > Inscripción Carrera: Fecha, Carrera, Plan de Estudio
>         Vigente, Alumno
>         > Historia académica: Materia, Año, Cuatrimestre, Estado
>         Materia,
>         > Calificación, Fecha, Docentes, Acta, Alumno 
>  
>               Duda: Aca iria Inscripcion Materia en lugar de
>         Materia??, Es decir, Historia academica seria asi:
>  Historia academica: Año, Cuatrimestre, Estado Materia, Calificacion,
> Fecha, Docentes, Acta, Alumno, Inscripcion Materia 


	Correcto! Las Materias que no cursó, por más que sean del Plan no serán
parte de la Historia académica.

	Cuando la Materia a la que se inscribió el Alumno esté aprobada o
cursada, es como que el nombre "Inscripción Materia" tiene menos
sentido... pero no se me ocurre un nombre mejor para darle.
	Sigamos así teniendo mucho cuidado de no hacer referencia el RF
correcto con su nombre completo, así no hay confusión.


>         > Aplazos: Calificación <4
>         > Materia Correlativa: Materia necesaria para poder cursar una
>         > determinada Materia.
>         >
>         >
>         > Mi duda es en Historia académica deberia poner
>         "Calificación" si ya la
>         > agregue como atributo en Materia?
>         
>         
>                Está bien que esté acá, porque la calificación es un
>         dato global de las
>         calificaciones de las materias en las que se haya inscripto el
>         alumno.
>                Cuando normalices, ya veremos en dónde queda esto.
>         
>         
>                Sabés lo que falta? una aclaración en el RF11 de que la
>         Inscripción a
>         una Materia debe ser de la Carrera en que está Inscripto el
>         Alumno.
>                Ya sé que es obvio, pero especificado así, lo que estás
>         diciendo es que
>         puede inscribirse a cualquier Materia cargada en el software.
>         
>                También te hace falta especificar la restricción de
>         inscribirse a
>         Materias solo si se tienen en ciertos estados las
>         correlativas.
>         
>         > Muchas gracias de nuevo!!!
>         
>                Por nada!
>         
>                Veamos como queda esto todo completo: tal vez luego de
>         especificarlo lo
>         achiquemos a un subsistema para la aprobación del curso,
>         porque está
>         quedando un poco grande... la parte de las materias
>         correlativas es
>         divertida ;-)
>         
>         Duda: Cómo seria exactamente lo de la parte de las
> correlativas que me sugeris que haga?? Seria mostrar el listado de
> todas las materias del alumno y en qué estado estan o hacer un listado
> por cada materia y mostrar sus correlativas??? o ambas??

	Estás mezclando otra vez!
	Las Materias tendrán correlatividades o no dependiendo de como se
definan para ese Plan de Estudios, y nunca por lo que se haya Inscripto
un Alumno !

	Lo que tenés que hacer, y es así como lo especificás en el RF10. al
definir una Materia permitir agregar una lista de cero o más Materias
como sus correlativas. Las primeras no tendrán correlatividades, las
siguientes tendrán como correlativas a cero, una o más de las primeras,
y así sucesivamente.

	Con esto lo que armás es el Plan de Estudios: una lista de Materias con
sus respectivas correlatividades.

	Luego, cuando se va a registrar la Inscripción a una Materia, lo que
hay que revisar es que tenga en el Estado de Materia correcto todas las
que figuran en su lista de correlativas... a nivel de interfaz, podrías
solamente mostrar las Materias que cumplen con este requisito para
ofrecer en la pantalla.

	Se entiende? Qué te parece?


>                Después vos seguilo y seguí consultando por la lista,
>         no hay problema
>         con esto, pero la idea es que puedas egresar del curso en los
>         "pocos"
>         días que quedan para que se venza la cursada.
>         
>         
>          
>         Desde ya muchas gracias!!!
> 
> 
> Saludos!!


	=mente!

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Blog: http://blog.pegasusnet.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