Está en la página 1de 109

UNIVERSIDAD AUTÓNOMA METROPOLITANA

UNIDAD IZTAPALAPA
CIENCIAS BÁSICAS E INGENIERÍA

LICENCIATURA EN COMPUTACIÓN

DESARROLLO DE SISTEMAS CON PSP Y


TSP

INTEGRANTES DEL EQUIPO:

CÁZAREZ DÁVILA JUAN SALVADOR


GONZÁLEZ OLIVARES JOSÉ ALFREDO
MARBAN CORRAL MIGUEL ÁNGEL
MARCIAL PALAFOX PEDRO ANTONIO
NAVARRO DÁVILA MIGUEL JOSÉ
PÉREZ PALMA HERIBERTO
RAMOS ROBLES TALIA GABRIELA
REYES PEREA CÉSAR AUGUSTO
SÁNCHEZ SANTIAGO CORINA
SATURNO MARTÍNEZ GUSTAVO
URBINA SERRANO JOSÉ DE JESÚS
VENEGAS FLORES ROLANDO
VERDÚ MÉNDEZ BERENICE

ASESOR DE PROYECTO DE INVESTIGACIÓN:

MÉXICO, DF. 09 DE ABRIL DE 2006


2
INTRODUCCIÓN......................................................................................................................................4
OBJETIVOS ...............................................................................................................................................6
METODOLOGÍA ......................................................................................................................................7
ACTIVIDADES REALIZADAS ...............................................................................................................8
MINUTA 1.................................................................................................................................................9
MINUTA 2...............................................................................................................................................10
MINUTA 3...............................................................................................................................................12
MINUTA 4...............................................................................................................................................13
MINUTA 5...............................................................................................................................................14
DESARROLLO .........................................................................................................................................16
DIAGRAMA GENERAL DE CASOS DE USO SAECH ..................................................................................16
ANÁLISIS DE REQUERIMIENTO Y DISEÑO DE LOS CASOS DE USO SAECH ..............................................17
MODELO DE DATOS GENERAL SAECH...............................................................................................103
CONCLUSIONES ..................................................................................................................................104
PROPUESTA DE MEJORA DEL PROCESO (PIP)..........................................................................106

3
INTRODUCCIÓN
El lenguaje de programación Java es muy usado para desarrollar aplicaciones de
software y es un estándar en la industria, por lo tanto tiene un lugar importante en la
formación de un estudiante de la Licenciatura en Computación. Existen también
metodologías (procesos) de programación para promover la mejora continua en la
calidad del software que un programador produce, dos de las mas importantes y que
hoy en día se han ganado un lugar importante en la industria son los llamados:
Personal Software Process (PSP) y Team Software Process (TSP), con los
cuales se aspira a mejorar la calidad de las implementaciones de software que se
elaboran y por ende la calidad del código generado por los programadores. Capability
Maturity Model for Software (también conocido como CMM o SW-CMM) ha sido el
modelo usado por muchas organizaciones para identificar las mejores practicas de
programación y es útil para incrementar la madurez del proceso de desarrollo de buen
software. El manejo de PSP y TSP sirve de base para obtener una acreditación CMM o
SW-CMM.

CMM ha sido revisado y refinado por varios especialistas y representan el mejor


juicio actual y el método más efectivo para conseguir los objetivos de cada nivel de
madurez.

• PSP. El proceso personal de software (PSP, Personal Software Process) es


un proceso de auto mejoramiento diseñado para ayudar a controlar,
administrar y mejorar la forma en que se trabaja individualmente. Está
estructurado por formularios, guías y procedimientos para desarrollar
software. Si es usado apropiadamente, brinda los datos históricos
necesarios para trabajar mejor y lograr que los elementos rutinarios del
trabajo sean más predecibles y eficientes.
• TSP. El proceso del equipo de software (TSP, Team Software Process) es un
proceso que al igual que el PSP, está basado en el modelo CMM, TSP está
diseñado para ayudar a controlar, administrar y mejorar la forma en que
trabaja un equipo de software. Al igual que PSP, está estructurado por
formularios, guías y procedimientos para desarrollar software.
• RUP. RUP o Rational Unified Process (Proceso unificado de Rational) es la
metodología o proceso de desarrollo propuesta por Racional para el
desarrollo de proyectos software orientados a objeto. El método RUP
definido por un peculiar grupo conocido como The three Amigos
(Rumbaugh, Jacobson y Booch) toma las mejores aportaciones de cada uno
de los métodos propuestos por los autores, y los unifica en una metodología
única

El modelo de proceso que propone RUP es sin duda la característica más


interesante y diferenciadora. Se trata de un modelo de proceso iterativo e incremental. El
proyecto se divide en iteraciones del ciclo de vida, cada una de las cuales supone se trata
como un mini proyecto en si mismo. Cada mini proyecto o iteración produce un
incremento en el sistema, y abarca las actividades propias de un proyecto en toda regla
(análisis, diseño, implementación y prueba).

Cada iteración se construye sobre el resultado de la iteración anterior, y se guían


por el conjunto de casos de uso que se decida abarcar en dicha iteración. Algunas
iteraciones no producen un efecto de aditivo, sino de refinamiento o corrección, sobre todo
en fases tempranas del proyecto donde la labor principal del equipo es comprender el
sistema a desarrollar y su contexto de negocio.

4
Programación Extrema. La programación extrema o eXtreme Programming (XP)
es una aproximación a la ingeniería de software formulada por Kent Beck, se trata de
un proceso ágil de desarrollo de software.

Las Características de la metodología son:

• Desarrollo iterativo e incrementa.: Pequeñas mejoras, unas tras otras.


• Pruebas unitarias continuas: frecuentemente repetidas y automáticas,
incluyendo pruebas de regresión. Se aconseja escribir el código de la prueba
antes de la codificación. Véase, por ejemplo, JUnit.
• Programación por parejas. Se recomienda que las tareas de desarrollo se
lleven a cabo por dos personas en un mismo puesto. Se supone que la mayor
calidad del código escrito de esta manera -el código es revisado y discutido
mientras se escribe- es más importante que la posible pérdida de productividad
inmediata.
• Frecuente interacción del equipo de programación con el cliente o
usuario. Se recomienda que un representante del cliente trabaje junto al
equipo de desarrollo.
• Corrección de todos los errores antes de añadir nueva
funcionalidad. Hacer entregas frecuentes.
• Reutilización del código, es decir, rescribir ciertas partes del código para
aumentar su legibilidad y mantenibilidad, pero sin modificar su
comportamiento. Las pruebas han de garantizar que en la reutilización no se ha
introducido ningún fallo.
• Propiedad del código compartido. En vez de dividir la responsabilidad en
el desarrollo de cada módulo en grupos de trabajo distintos, este método
promueve el que todo el personal pueda corregir y extender cualquier parte del
proyecto. Las frecuentes pruebas de regresión garantizan que los posibles
errores serán detectados.
• Simplicidad en el código. Es la mejor manera de que las cosas funcionen.
Cuando todo funcione se podrá añadir funcionalidad si es necesario.

Es esta la razón que ha llevado al Profesor Luis Castro Careaga (Asesor de


Proyecto de Investigación) a impartir dichos cursos en la unidad Iztapalapa. Y es así
que basándose en la aplicación de estos fundamentos se ha comenzado a desarrollar un
sistema en el cual se puedan aplicar estas técnicas de programación. Dicho sistema es el
Prototipo de Sistema de Administración Escolar Coronet Hall (SAECH). Este se
implementará en una escuela dedicada a la enseñanza del idioma ingles que tiene tres
sucursales.

5
OBJETIVOS
El Sistema de Administración Escolar que se pretende entregar, para su uso en
un ambiente funcional que pueda ser usado desde cualquiera de las sucursales con las
que cuenta el colegio. Que se use para manejar las operaciones tanto de inscripción,
pago de servicios, información sobre cursos, mantenimiento de la información del
personal, de la información de los alumnos, de la información de cada trimestre, de la
información de los cursos que se dan en el trimestre entre otras más.

Aplicando los conocimientos obtenidos sobre la gestión de proyectos obtenida a


partir de los cursos de PSP y TSP construir el software de manera progresiva, llevando a
cabo las etapas de:

• Análisis de Requerimientos
• Diseño del Sistema
• Construcción del Prototipo
• Pruebas del Sistema

Además se debe seguir la metodología propuesta por el Software


Engineering Institute (SEI), el cual establece los principios que rigen al TSP.

La implementación debe garantizar la seguridad en las transacciones que se


lleven a cabo así como la consistencia entre la información que se comparta en la red
(dado que se tendrá acceso vía Internet al servidor que contendrá la Base de Datos). Se
dará también apoyo al personal que labora en el lugar para que comprenda el uso de la
aplicación así como asistencia técnica.

En cuanto a lo que se refiere al mantenimiento de las instalaciones del


Laboratorio de Ingeniería de Software (T-324), estas deben estar en óptimas
condiciones para que puedan usarse todo el tiempo que dure el proyecto. Esto implica
que los nodos del laboratorio estén bien configurados para el acceso a Internet y para
compartir los recursos de que dispone el laboratorio.

6
METODOLOGÍA
Ha sido necesario seguir los lineamientos propuestos por el TSP para construir
el Sistema de Administración Escolar Coronet Hall (SAECH). Es por ello que se han
asignado responsables de varios cargos, entre ellos:

• Encargado de Diseño
• Encargado de Proceso
• Encargado de Calidad
• Encargado de Proyecto
• Encargado de Soporte
• Interfaz con el Cliente
• Encargado de Pruebas
• Encargado de Implementación
• Representante de Equipo

El proceso que se ha seguido nos ha llevado a establecer el uso de una


arquitectura “tres tercios”, la cual consiste en tener:

1. Módulos de Interfaz para el usuario


2. Unidades de Negocios
3. Componentes de Datos

Además se ha asignado un encargado del Manejo de Riesgos para evaluar las


posibles eventualidades que puedan surgir.

Dado que se necesita que se soporten procedimientos y transacciones seguras a


nivel de operaciones con la Base de Datos y la interfaz a la que el usuario tiene acceso
directo, se ha decidido usar Java 2 Enterprise Edition (J2EE) y en específico
Enterprise Java Beans (EJB) los cuales son parte de la tecnología antes
mencionada.

Se ha usado el contenedor de beans de Sun Microsystems: Sun ONE Application


Server (anteriormente conocido como iPlanet Application Server). Este servidor
proporciona servicios de aplicaciones de nivel empresarial y servicios Web. Esto ha
permitido llevar a cabo el trabajo de programación de la seguridad e integridad de las
operaciones que se produzcan y que tengan que ver con el acceso a los datos de la
empresa de manera más fiable.

También en la etapa del lanzamiento del proyecto, se hizo una planificación haciendo
uso de la herramienta Project 2003 (Office 2003); en esta planificación del tiempo
para la primera entrega de la versión de la aplicación SAECH, se decidió llevarlo en
ciclos, es decir se dividió en ciclos de que constaban de dos semanas cada uno. Para
cada uno de estos ciclos se planeo cuales eran lo módulos que se debían de entregar al
finalizar dichos ciclos.

Para el desarrollo de cada uno de los módulos, se asigno una pareja, la cual realizaría
eXtreme Programming (XP). Esto quiere decir, que las personas que conforman la
pareja deben trabajar juntas, además de llevar registros de tiempos y defectos mientras
se este desarrollando el módulo asignado.

7
ACTIVIDADES REALIZADAS
Antes de llevar a cabo las juntas TSP se llevó a cabo la recopilación de
información relacionada con la arquitectura que iba a servir de base para la
programación del sistema. Paso seguido se dividió esta información entre los
integrantes del equipo para comenzar a aprenderla y después capacitar a los demás en
esa área en particular.

Conseguimos el apoyo de algunas personas, las cuales han sido nuestros


consultores técnicos. Con ellas comenzamos a aprender a usar el Servidor de
Aplicaciones de Sun Microsystems. Asimismo la capacitación de los EJB’s se hizo con
ellos y durante el posterior desarrollo se ha tenido su asistencia.

Ha sido así que instalamos:

• Servidor Aplicativo Sun ONE Application Server (j2sdkee1.3.1)


• Java 2 Software Development Kit (j2sdk1.4.2_08)
• IDE Eclipse version 3.1

Se desplegó una aplicación de prueba para demostrar el uso de los EJB ya


trabajando con el contenedor de Enterprise Beans y además con una aplicación Web.
Se distribuyo este código entre los integrantes del equipo y se explico también su
funcionamiento, para la implementación posterior por parte de los grupos de trabajo.

Una vez que se dejo al grupo esta aplicación para su estudio, se procedió a llevar
a cabo las juntas relativas a la especificación TSP. Por cada una de estas juntas (las
cuales fueron cinco) se registro una minuta.

En la minuta se explicaban los puntos que se había tocado durante la junta,


además que siempre se colocaban en un lugar visible para las personas que no habían
asistido a la junta, se enteraban de los puntos que se trataron durante dicha junta.
Cada una de las minutas se describe a continuación.

8
MINUTA 1

El propósito de esta junta es fijar las metas del equipo y definir los roles dentro
de él.

Dado que el equipo ya se encuentra familiarizado con el proyecto y comprende


las necesidades del cliente, el proceso se llevo a cabo de manera relativamente rápida.

No todas las preguntas han sido contestadas aún; para la junta del lunes, que es
cuando se asignaran los casos de uso globales se espera comiencen a aparecer dudas. Y
será sobre esas dudas que se planeara lo que mas convenga para resolverlas.

Las metas propuestas por el equipo son:

1. Entregar el prototipo del sistema SAECH al cliente en su versión 0.1


2. Se llevaran a cabo tres juntas semanales (lunes, miércoles, viernes)
3. Habrá un reporte semanal. Se entregara una copia al asesor

Los responsables de cada uno de los roles son:

Encargado de Diseño Berenice Verdú


Salvador Cázarez
Encargado de Proceso Corina Sánchez
Talia Ramos
Encargado de Calidad César Reyes
Rolando Venegas
Encargado de Proyecto Jesús Urbina
Corina Sánchez
Responsable de Soporte Heriberto Pérez
Pedro Antonio
Interfaz con el Cliente Salvador Cázarez
Berenice Verdú
Encargado de Pruebas Miguel Marban
Talia Ramos
Encargado de la Miguel Navarro
Implementación César Reyes
Representante del Gustavo Saturno
Equipo Jesús Urbina

9
MINUTA 2

Se ha determinado el plan de trabajo para cada fase TSP. Se recalcó la


importancia de seguir el proceso en el orden debido:

1. Planeación
2. Diseño
3. Casos de Prueba

Las fases propuestas para el proceso son:

1. PLAN (Planeación).
2. HLD (Análisis de Requerimientos).
3. HLDR (Revisión de Análisis de Requerimientos).
4. DLD (Diseño).
5. DLDR (Revisión de Diseño).
6. DLDI (
7. CODE (Codificación).
8. CODER (Revisión de Codificación).
9. COMPILE (Compilación).
10. UNIT TEST (Pruebas Unitarias).
11. INT TEST (Pruebas de Integración).
12. PM (Post Mortem).

Se aclaro el punto de que como material entregable no solamente se consideran


Líneas de Código (LOC) sino también la documentación extra (manuales, etc.)

Dentro del desarrollo se contempla:

• Análisis
ƒ Formas CU
ƒ Pantallas
ƒ Diagrama de Navegación de Pantallas
ƒ Modelo de Datos
• Diseño
ƒ Diagrama de Secuencia
ƒ Diagrama de Clases Dinámicas
ƒ Diseño de Pruebas
• Unitarias
• Integración
• Aceptación
• Implementación
ƒ Codificación
ƒ Compilación

10
Las pruebas automatizadas se aplicaran a las clases de negocio. Las revisiones se
ha propuesto que se lleven a cabo en el LIS con horario a sugerir.

Los casos de uso han sido asignados de la siguiente manera:

Caso Pareja asignada


(Módulo)
Prerregistro Alfredo González Olivares
César Reyes Perea
Inscripción Corina Sánchez Santiago
Miguel Marban Corral
Reinscripción Gustavo Saturno Martínez
Jesús Urbina Serrano
Mantenimiento Berenice Verdú Méndez
Salvador Cázarez Dávila

Miguel Navarro Dávila


Nancy Méndez Martínez
Pagos Talia Gabriela Ramos Robles
Pedro Antonio Marcial
Consultas
Cierres Rolando Venegas Flores
Heriberto Pérez Palma

La primera entrega debe contener:

1. Entregar completamente los casos de uso


2. Inscripción
3. Reinscripción
4. Mantenimiento
5. Prerregistro

11
MINUTA 3

Se ha hablado sobre la calidad del producto:

1. Definir la forma en que se va a revisar la calidad del proyecto


2. Definir las actividades que va a llevar a cabo el Administrador de Calidad y
el Auxiliar de Calidad

En el punto relacionado con la calidad del producto que se va a entregar cada


uno de los integrantes del equipo, en la generación de la Documentación del Sistema en
las fases de Análisis de Requerimientos y Diseño, la documentación se tiene que
entregar completa como se dijo en la junta pasada. En cuanto al código que se genere se
van a seguir los estándares de codificación, de pantallas y de generación de
documentación con la plataforma que se utilice (eclipse, netbeans o cualquier otra).
Todo el código debe estar comentado de forma que sea sencillo para cualquier persona
el leer dicho código garantizando así el fácil mantenimiento, el uso de variables
mnemónicas es obligatorio.

De igual forma, todo el código será revisado por la pareja de programación así
como por todo el equipo.

El manual de usuario debe ser completo y sencillo para su fácil comprensión por
parte del usuario. Dicho manual debe cumplir con la siguiente estructura:

1. Introducción al modulo del sistema


2. Modo de uso del modulo
3. Observaciones y excepciones que se tengan

El responsable de calidad hará una revisión general a esta documentación.


Además se acordó que la interfaz principal del sistema estará basada en pestañas que
engloben las acciones relacionadas para que así el usuario contemple solamente
aquellas opciones que estén relacionadas.

Como punto final se trato el tema de la densidad de defectos, yield y


productividad con la que se va a trabajar. Se llego a lo siguiente:

1. Yield = 70%
2. Densidad de defectos < 20 defectos/KLOC
3. Productividad = 40 LOC/HR

12
MINUTA 4

Durante esta junta se trataron los puntos de calidad y riesgos. Se acordó que los
responsables de calidad e interfaz muestren un demo de las pantallas para la semana en
curso.

Se asignaron a los responsables de riesgos:

Titular Suplente
Nancy Méndez Martínez José Alfredo González Olivares

La siguiente tabla resume los riesgos que se detectó podrían ocurrir durante el
desarrollo del proyecto:

Riesgos Probabilidad Impacto Acciones


Deserción Medio Alto Monitoreo estadístico,
reajustes en programación de
tareas
Entrada a la UAM Bajo Alto Carta de solicitud para la
entrada
Riesgo Tecnológico: Alto Alto Asesorías, Extreme
Manejo de lenguajes y Programming, Manuales
herramientas
Riesgo Tecnológico: Bajo Alto Mantenimiento, asignación de
Hardware un responsable (Heriberto
(disponibilidad) Pérez Palma)
No acabar a tiempo Alto Alto Acortar alcance, dar prioridad
al caso de uso del modulo de
Pagos, entregar el primer ciclo
completo
Problemas de integración Bajo Bajo Reasignación de parejas
de parejas
Integración del sistema Alto Alto Manejo de estándares,
planeación
No se cubran los Medio Medio Comunicación con el cliente,
requerimientos del cliente mostrar interfaces y avances
del programa al cliente

Por último se acordó que la herramienta para el desarrollo de la documentación


será Rational Rose y para la codificación se usará eclipse.

13
MINUTA 5

Esta junta trató básicamente sobre la constitución de la interfaz para el cliente.


Dado que se usaran pestañas para la presentación cada clase será un panel para su
integración en el sistema principal.

Durante la siguiente junta se hará una integración para evaluar que tan
complicado es agregar las clases a la interfaz principal. Talia Ramos, Rolando Venegas y
un servidor llevamos unas clases en calidad de demostración para hacer la integración.
Salvador Cázarez trajo la interfaz principal.

Se presento también el Script del Proceso

Análisis de Diseño Análisis de requerimientos de todo el


modulo
Criterio de entrada Descripción
Planeación Igual al proceso PSP
HLD Análisis de requerimientos
HLDR Revisión de análisis de requerimientos
(parejas)

También dentro de las juntas se llego a un acuerdo en que se iban a manejar postit,
dentro de cada uno de los ciclos que se habían planeado. La forma en que se utilizaron
fue que casa pareja iba a tomar un post–tic y ahí escribiría la siguiente información:

• Módulo que se esta desarrollando.


• Nombre de los integrantes de la pareja que trabaja en el módulo a desarrollar.
• Fase del proceso en que se encuentra el módulo a desarrollar.
• Fecha planeada de entrega del módulo.
• Fecha real de entrega del módulo.
• Observaciones.

Y cada uno de estos postit se pegaba en un recuadro que tenía la siguiente forma:

Nombre del Ciclo


Inicio del Ciclo Fin del Ciclo

Módulos Módulos
planeados y que se terminados
van a terminar durante el ciclo
durante el ciclo

Módulos Módulos
planeados y que no incompletos
se van a terminar
durante el ciclo

14
Con el uso de esta herramienta, cada uno de los integrantes del equipo sabía como iba
cada uno de los módulos asignados a cada pareja, en relación a las fases del proceso.
Con esto nos dábamos una idea de cómo iba el proyecto, que tan atrasados íbamos, y en
que módulos en específico. Por cada ciclo se generaba un nuevo postit y un nuevo
cuadro en donde colocar dichos postit.

Ya que se realizaron las juntas, el procesos que se iba a seguir, la documentación que se
iba ir generando para cada fase, y ya asignados lo módulos a las parejas, entonces se
empezó con todo el desarrollo de cada uno de ellos.

15
DESARROLLO

DIAGRAMA GENERAL DE CASOS DE USO SAECH

El siguiente diagrama (Fig. 1) explica cada uno de los módulos que conforman la
aplicación SAECH. Cada uno de ellos, ya asignada a una pareja, es desarrollado
individualmente, para poder ser integrado con los demás al final y así poder tener una
versión de dicha aplicación

Aspirante
Alumno

Coordinador
Prerregistro

Consultas
Mantenimiento
Inscripción

Reinscripción
Profesor

Profesores

Pagos

Administrativo Cierres

Fig. 1 - Diagrama general de Casos SAECH.

16
ANÁLISIS DE REQUERIMIENTO Y DISEÑO DE LOS CASOS DE USO SAECH

A continuación se muestra la primera parte de la documentación generada para las


fases de Análisis y Diseño. La documentación de cada uno de los módulos se detalla a
continuación.

CU - PRERREGISTRO
CASO DE USO

PROYECTO: SAECH FECHA: Septiembre de 2005


AUTOR: J. A. GONZÁLEZ CLAVE:
C. A. REYES P.

NIVEL ALCANCE
Resumen muy general Organización (caja negra)
Resumen Organización (caja blanca)
X Actividad de Usuario X Módulo
Detalle Método
DESCRIPCIÓN BREVE

Se realiza el Prerregistro insertando la información correspondiente a un usuario de Internet,


como un posible candidato para ser alumno del Colegio, generando al final un número de folio
con el cual puede acceder a la inscripción.

ACTORES
Actor Principal Usuario Internet
Actores Secundarios
EVENTOS QUE LO INICIAN
1 El Usuario de Internet presiona “Si no es Alumno de Coronet Hall, pulse aquí”
FLUJO DE EVENTOS PRIMARIO
1 El Usuario de Internet presiona “Si no es Alumno de Coronet Hall, pulse aquí”
2 El sistema despliega la pantalla donde se muestra el formulario para la inserción de datos
personales.
3 El Usuario de Internet selecciona el Curso de su interés eligiéndolo de un listado.
4 El Usuario de Internet inserta sus datos personales: nombre, apellido paterno, apellido
materno, fecha de nacimiento; dirección con calle, número, colonia, delegación, código
postal, teléfono, RFC, CURP y e-mail; aunque estos tres últimos no son obligatorios.
5 El Usuario de Internet inserta la información solicitada en la encuesta, indicando como se
entero del colegio, Estudios, Actividad, puesto que desempeña, nombre de la empresa, giro
de la empresa, domicilio de la empresa con calle y número, colonia, delegación, código
postal, teléfono de la empresa, nombre de su jefe inmediato, cargo del jefe; aunque estos
datos no son obligatorios.
6 El Usuario de Internet presiona el botón “enviar datos”
7 El sistema inserta los datos en la base de datos del Colegio y genera el número de folio con
el cual queda registrado ese Usuario.
8 El sistema despliega en pantalla al Usuario su número de folio con el cual quedo registrado y
le indica que debe conservarlo para su inscripción.
9 El Usuario regresa a la pantalla principal o cierra el programa.

17
FLUJO DE EVENTOS ALTERNATIVOS
Si el Usuario de Internet no inserta los datos que son obligatorios, el sistema despliega otra
4.1 ventana pidiendo los datos que hacen falta.
PRECONDICIONES
1 Ninguno
POSCONDICIONES
1 El Alumno tiene un número de folio para hacer su Inscripción.

DOCUMENTACIÓN ADJUNTA
1 Diagrama de navegación de Pantallas
1 Modelo de Caso de Uso
1 Diagrama de Secuencia
1 Diagrama de Clases Dinámicas

Porcentaje de transacciones totales que cubre el caso: _____10%__


Porcentaje de efectividad del proceso actual: _________90%_____

MODELO DE INTERFAZ

18
19
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Inicio

No es valido

Si es valido
Preregistro Enviar Validacion Base de
Datos
Folio
Folio

Folio

Fin

20
DIAGRAMA DE SECUENCIA

Consulta Preregi stro CiFolio Validación PreregistroAspi rante BeanPreregistr


: Usuario Internet CiPregregistro
o

1 El Usuario de Internet presiona en la


pagina principal la opción: "Si no es No es alumno del Colegio
Alumno de Coronet Hall, pulse aquí".

2 El sistema despliega la pantalla Despliega pantalla de formulario


donde se muestra el formulario para la
inserción de datos personales. Close
3 El Usuario de Internet selecciona el
Curso de su interés eligiéndolo de un Se selecciona el curso ...
listado.

4 El Usuario de Internet inserta sus


datos personales como nombre,
Se insertan los datos personales
apellido paterno, apellido materno,
fecha de nacimiento, su dirección con
calle, número, colonia, delegación,
código postal, teléfono, RFC, CURP y
e-mail; aunque estos tres últimos no
son obligatorios.

5 El Usuario de Internet inserta la


Encuesta, indicando como se entero Se insertan los datos de la Encuesta
del colegio, Estudios, Actividad,
puesto que desempeña, nombre de la
empresa, giro de la empresa, domicilio
de la empresa con calle y número,
colonia, delegación, código postal,
teléfono de la empresa, nombre de su
jefe inmediato, cargo del jefe, ninguno
es obligatorio.

6 El Usuario de Internet presiona el


botón "enviar datos".
Se presiona Enviar
PreregistroAspirante.jsp() InsertarAspirante()
7 El sistema inserta los datos en la
base de datos del Colegio y genera el
número de folio con el cual queda
Close
registrado ese Usuario.
getFolio()
8 El sistema despliega en pantalla al
Usuario su número de folio con el cual
quedo registrado y le indica que ebe Despliega el Folio
conservarlo para su inscripción. número de folio.

9 El Usuario presiona la opción para


regresar a la pantalla principal Termina

10 El sistema despliega la pantalla


principal Se despliega la pantalla principal

21
DIAGRAMA DE CLASES DINÁMICAS

Preregistro.
ConsultaPreregistro

<<evento>> Enviar Datos()


<<evento>> Si no eres alumno pulsa aqui()
<<evento>> Limpiar Campos()

VOCandidato
Folio : Integer
ApellidoPaterno : String
ApellidoMaterno : String Validación
Nombre : string
Calle : String Validacion()
Número : String EnviarDatos()
Colonia : String Limpiar campos() PreregistroBean
CodigoPostal : String
Delegacion : String InsertarAspirante()
Telefono : String getFolio()
RFC : String getNombre()
CURP : String getApellidoPaterno()
CorreoElectronico : String getApellidoMaterno()
Folio
FechaNacimiento : String
Curso : String
ComoSeEntero : String <<evento>> Salir()
Profesionista : String
Actividad : String
Puesto : String
Empresa : String
Giro : String
CalleNumeroEmpresa : String
ColoniaEmpresa : String
DelegacionEmpresa : String
CodigoPostalEmpresa : String
TelefonoEmpresa : String
JefeInmediato : String
CargoJefe : String

getFolio()
setFolio()
getApellidoPaterno()
setApellidoPaterno()
getapellidoMaterno()
setapellidoMaterno()
getNombre()
setNombre()
getCalle()
setCalle()
getNúmero()
setNumero()
getColonia()
setColonia()
getCodigoPostal()
setCodigoPostal()
getDelegacion()
setDelegación()
getTelefono()
setTelefono()
getRFC()
setRFC()
getCURP()
setCURP()
getCorreoElectrónico()
setCorreoElectrónico()
getFechaNacimiento()
setFechaNcimiento()
getCurso()
setCurso()
getComoSeEntero()
setComoSeEntero()
getPrpfesionista()
setProfesionista()
getActividad()
setActividad()
getPuesto()
setPuesto()
getEmpresa()
setEmpresa()
getGiro()
setGiro()
getCalleNumeroEmpresa()
setCalleNumeroEmpresa()
getColoniaEmpresa()
setColoniaEmpresa()
getCodigoPostalEmpresa()
setCodigoPostalEmpresa()
getDelegacionEmpresa()
setDelegacionEmpresa()
getTelefonoEmpresa()
setTelefonoEmpresa()
getJefeInmediato()
setJefeInmediato()
getCargoJefe()
setCargoJefe()

22
CU – MANTENIMIENTO HORARIOS - ALTAS
CASO DE USO

CLAVE DEL CASO CU- - ALTA DE HORARIO


MANT_ALTA_HORARIO
PROYECTO: SAECH FECHA: 19/07/2005
AUTOR: Salvador Cázarez CLAVE: CU-MANT_ALTA_HORARIO
Berenice Verdú

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal de alta de Horarios

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Alta de Horarios del Menú de Mantenimiento de Cursos.
FLUJO DE EVENTOS PRIMARIO
1 El Sistema despliega la pantalla de Alta de Horarios.
2 El P. A. define :
a) Días de la semana.
b) Hora de inicio y final de cada día.
c) Descripción del horario
3 El Sistema valida que no exista un horario generado con los datos definidos.
4 El Sistema genera un ID de Horario.
5 El Sistema registra el Horario con los datos seleccionados.
6 El Sistema muestra un mensaje de confirmación con Id de Horario generado.
7 El Sistema se prepara para capturar un nuevo horario.
8 Fin de Caso.
FLUJO DE EVENTOS ALTERNATIVOS
Ninguno
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para dar de Alta a un Horario
2 Este usuario debe de haber iniciado sesión al sistema.

POSCONDICIONES
1 Un nuevo horario ha sido agregado y dado de Alta.
DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 14.23%

23
Porcentaje de efectividad del proceso actual 0%

MODELO DE INTERFAZ

24
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

cancelar

ingreso de datos
Aceptar [ campos llenos y horario no
existente] / generación de ID y
guardado en BD
Alta de horario mensaje de confirmación
Seleccion de la opción Alta
de horario del menu de
mantenimiento

Aceptar / limpiar campos

aceptar
aceptar [ materia existente]

mensaje de error horario existente

DIAGRAMA DE SECUENCIA

CiMenu CiAltaHorarios CnHorario Horario HorarioBean


Personal
Administrativo

0)Seleccionar la opción de Alta de Opc. Alta de Horario


Horarios del Menú de show( )
Mantenimiento de Cursos.
Ingreso datos de horario
1) El Sistema despliega la
pantalla de Alta de Horarios.
2) El P. A. define :
o)Días de la semana.
p)Hora de inicio y final
de cada día.
q)Descripción del
horario
getDataHorario( )
3) El Sistema valida que no exista
un horario generado con los datos getDataHorario( ) getDataHorario( )
definidos.

agregaHorario( )
4) El Sistema genera un Id de
agregaHorario( )
Horario.
agregaHorario( )
5) El Sistema registra el Horario
con los datos seleccionados.

6) El Sistema muestra un mensajeExito( )


mensaje de confirmación con Id
de Horario generado.
7) El Sistema se prepara para limpiaCampos( )
capturar un nuevo horario.
Fin de Caso. close( )

25
DIAGRAMA DE CLASES DINÁMICAS

CiMenu CiAltaHorarios
voHorario : VOHorario CnHorario Horario
HorarioHome
<<event>> altaMateria() voHorario : VOHorario voHorario : VOHorario
<<event>> modificaMateria() show()
mensajeExito() getDataHorario() getDataHorario() Horario create()
<<event>> eliminaMateria()
<<event>> altaHorario() limpiaCampos() agregaHorario() agregaHorario()
<<event>> altaHorario() close()

HorarioBean
voHorario : VOHorario
sessionContext : SessionContext

getDataHorario()
agregaHorario()
ejbCreate()
ejbRemove()
VOHorario
ejbActivate()
idHorario : Integer ejbPassivate()
descripcion : String setSessionContext()
dia : String
horaInicio : Date
horaFin : Date

VOHorario()
void setIdHorario()
void setDescripcion()
void setDia()
void setHoraInicio()
void setHoraFin()
Integer getIdHorario()
String getDescripcion()
String getDia()
Date getHoraInicio()
Date getHoraFin()

26
CU – MANTENIMIENTO HORARIOS - BAJAS
CASO DE USO

CLAVE DEL CASO CU- - BAJA DE HORARIO


MANT_BAJA_HORARIO
PROYECTO: SAECH FECHA: 19/07/2005
AUTOR: Salvador Cázarez CLAVE: CU-MANT_BAJA_HORARIO
Berenice Verdú

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal de baja de Horarios

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Baja de Horarios del Menú de Mantenimiento de Cursos.
FLUJO DE EVENTOS PRIMARIO
1 El sistema despliega una lista con todos los Horarios dados de alta
2 El usuario elige un horario y oprime el botón eliminar
3 El sistema despliega un mensaje de confirmación
4 El usuario oprime aceptar
5 El sistema elimina de la base de datos la sucursal
6 Fin de caso
FLUJO DE EVENTOS ALTERNATIVOS
4a Si el usuario oprime cancelar, se regresa al paso 1
5a Si el sistema encuentra referencias a ese horario muestra un mensaje de error y regresa a 1
2a Si el PA oprime cancelar va a 6
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para dar de Baja un Horario
2 Este usuario debe de haber iniciado sesión al sistema.
POSCONDICIONES
1 Una horario ha sido eliminada del sistema
DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 14.23%


Porcentaje de efectividad del proceso actual 0%

27
MODELO DE INTERFAZ

listaHorarios

mensajeConfirmación

mensajeOK

28
DIAGRAMA DE NAVEGACION DE PANTALLAS

Eliminar
bajaHorarios listaHorarios mensajeConfirmación

Cancelar

Aceptar

mensajeOK

Aceptar

Cancelar

DIAGRAMA DE SECUENCIA

oIMenu oITablaEliminaHorario oNHorarios oHorarios : oHorariosBean :


: Personal
Horarios HorariosBean
Administrativo

0) Seleccionar la opción de Baja de Opc. baja horario


Horarios del Menú de Mantenimiento
de Cursos.
show( ) getListaHorarios( ) getListaHorarios( ) getListaHorarios( )
1) El sistema despliega una lista con
todos los Horarios dados de alta

2) El usuario elige un horario y Seleccion horario


oprime el botón eliminar
botonEliminar( )

3) El sistema despliega un mensaje mensajeConfirmacion( )


de confirmación

4) El usuario oprime aceptar botonAceptar( )

eliminaHorario( ) eliminaHorario( )
5) El sistema elimina de la base de eliminaHorario( )
datos el horario

mensajeExito( )
6) El sistema despliega un mensaje
de transacción realizada
close( )
Fin de caso close( )

29
DIAGRAMA DE CLASES DINÁMICAS

HorariosBean
voHorario : VOHorario
CiTablaEliminaHorarios voDetalleHorario : VODetalleHorario
CnHorarios
voHorario : VOHorario Horarios
voHorario : VOHorario
voHorarios : VOHorarios getListaHorarios()
CiMenu voDetalleHorario : VODetalleHorario
show() eliminaHorario()
botonEliminar() getListaHorarios() ejbCreate()
getListaHorarios()
close() mensajeConfirmacion() eliminaHorario() ejbRemove()
eliminaHorario()
botonAceptar() validaHorario() ejbActivate()
validaHorario()
mensajeExito() modificaHorario() ejbPassivate()
modificaHorario()
close() setSessionContext()
validaHorario()
modificaHorario()
HorariosHome

create()
VODetalleHorario
VOHorarios Dia : Integer
IdHorario : Integer HoraInicio : Date
ClaveHorario : String HoraFinal : Date
Descripcion : String IdHorario : Integer

void setIdHorario() void setHoraInicio()


void setClaveHorario() void setHoraFinal()
void setDescripcion() void setDia()
Integer getIdHorario() void setIdHorario()
String getClaveHorario() Integer getDia()
String getDescripcion() Date getHoraInicio()
Date getHoraFinal()
Integer getIdHorario()

30
CU – MANTENIMIENTO HORARIOS - CAMBIOS
CASO DE USO

CLAVE DEL CASO CU- - CAMBIO DE HORARIO


MANT_CAMBIO_HORARIO
PROYECTO: SAECH FECHA: 19/07/2005
AUTOR: Salvador Cázarez CLAVE: CU-MANT_CAMBIO_HORARIO
Berenice Verdú

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal de Cambio de Horarios

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Cambio de Horarios del Menú de Mantenimiento de Cursos.
FLUJO DE EVENTOS PRIMARIO
1 El Sistema despliega la lista de Horarios dados de alta
2 El P. A. elige un horario y oprime modificar
3 El Sistema despliega la pantalla de detalle de Horarios.
4 El P. A. redefine :
d) Días de la semana.
e) Hora de inicio y final de cada día.
f) Descripción del horario
5 El Sistema valida que no exista un horario generado con los datos definidos.
6 El Sistema registra el Horario con los datos seleccionados y el Id de Horario.
7 El Sistema muestra un mensaje de confirmación con Id de Horario modificado.
8 El Sistema muestra la lista de Horarios dados de Alta.
9 Fin de Caso.
FLUJO DE EVENTOS ALTERNATIVOS
2a Si el P. A. oprime cancelar va a 9
4a Si el P.A. oprime cancelar va a 1
6a Si hay errores se muestra un mensaje de error y va a 3
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para modificar un Horario
2 Este usuario debe de haber iniciado sesión al sistema.
POSCONDICIONES
1 Un Horario ha sido modificado.
DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

31
Porcentaje de transacciones totales que cubre el caso: 14.23%
Porcentaje de efectividad del proceso actual 0%

MODELO DE INTERFAZ

listaModificación pantallaModificaciónHorarios

mensajeConfirmación mensajeError

mensajeOK

32
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

mensajeError

Aceptar validaciónKO

modificaciónHorarios listaModificación Modificar pantallaModificaciónHorarios

validaciónOK

Cancelar
mensajeConfirmación

Aceptar

mensajeOK

Aceptar

33
DIAGRAMA DE SECUENCIA

oIMenu oIModificacionHorarios oIDetalleHorario oNHorarios oHorarios oHorariosBean


: Personal
Administrativo

Opc. Modificar horario


0) Seleccionar la opción de Cambio de Horarios del Menú
de Mantenimiento de Cursos.
show( ) getListaHorarios( )
1) El Sistema despliega la lista de Horarios dados de alta getListaHorarios( ) getListaHorarios( )

Seleccion horario a modificar


2) El P. A. elige un horario y oprime modificar
botonModificar( )

3) El Sistema despliega la pantalla de detalle de Horarios. show( )

4) El P. A. redefine :
a)Días de la semana. Ingreso de datos nuevo horario
b)Hora de inicio y final de cada día.
c)Descripción del horario
validaHorario( )
5) El Sistema valida que no exista un horario generado con
los datos definidos.
validaHorario( ) validaHorario( )

6) El Sistema registra el Horario con los datos modificaHorario( )


modificaHorario( )
seleccionados y el Id de Horario. modificaHorario( )

7) El Sistema muestra un mensaje de confirmación con Id mensajeExito( )


de Horario modificado. show( )

8) El Sistema muestra la lista de Horarios dados de Alta.


close( )
Fin de Caso
close( )

DIAGRAMA DE CLASES DINÁMICAS

CiModificacionHorarios CnHorarios HorariosBean


Horarios
voHorario : VOHorario voHorario : VOHorario voHorario : VOHorario
CiMenu voHorarios : VOHorarios
voDetalleHorario : VODetalleHorario voDetalleHorario : VODetalleHorario
show()
close() getListaHorarios() getListaHorarios()
botonModificar() getListaHorarios()
eliminaHorario() eliminaHorario()
close() eliminaHorario()
validaHorario() ejbCreate()
validaHorario()
modificaHorario() ejbRemove()
modificaHorario()
ejbActivate()
ejbPassivate()
setSessionContext()
validaHorario()
modificaHorario()

VODetalleHorario
CiDetalleHorario
Dia : Integer VOHorarios
voHorario : VOHorario HorariosHome
HoraInicio : Date IdHorario : Integer
voDetalleHorario : VODetalleHorario
HoraFinal : Date ClaveHorario : String
create()
IdHorario : Integer Descripcion : String
show()
validaCampos()
void setHoraInicio() void setIdHorario()
opname()
void setHoraFinal() void setClaveHorario()
mensajeExito()
void setDia() void setDescripcion()
void setIdHorario() Integer getIdHorario()
Integer getDia() String getClaveHorario()
Date getHoraInicio() String getDescripcion()
Date getHoraFinal()
Integer getIdHorario()

34
CU – MANTENIMIENTO TRIMESTRE – ALTAS

CASO DE USO

CLAVE DEL CASO CU-MANT- - ALTA DE TRIMESTRE


ALTAS_TRIM
PROYECTO: SAECH FECHA: 19/07/2005
AUTOR: Salvador Cázarez CLAVE: CU-MANT-ALTAS_TRIM
Berenice Verdú

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal para dar de alta un nuevo trimestre

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Alta de trimestres del Menú de Mantenimiento de trimestres.
FLUJO DE EVENTOS PRIMARIO
1 El Sistema despliega la pantalla de Alta de Trimestres.
2 El P.A. ingresa:
a) Clave del trimestre
b) Descripción.
c) Fecha de inicio.
d) Fecha de fin del trimestre.
3 El P.A. da clic en el botón de Aceptar.
5 El Sistema registra el trimestre con los datos ingresados.
6 El Sistema muestra un mensaje de confirmación con la clave del trimestre generado.
7 El Sistema se prepara para capturar un nuevo trimestre.
8 Fin de Caso.
FLUJO DE EVENTOS ALTERNATIVOS
1 Ninguno
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para dar de Alta un trimestre.
2 Este usuario debe de haber iniciado sesión al sistema.
POSCONDICIONES
1 Un nuevo trimestre ha sido agregado a la Base de Datos.
DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

35
Porcentaje de transacciones totales que cubre el caso: 16.66%
Porcentaje de efectividad del proceso actual 0%

DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Ingreso de datos trimestre


Aceptar/limpia campos

Alta Mensaje
trimestre de éxito
Op. Alta trimestre del
Aceptar[ Datos llenos, clave no
submenú del menú trimestres
existente ] / trimestre guardado en la BD
mantenimiento

Cerrar
Aceptar

Aceptar[Datos faltantes y/o clave existente]

Mensaje de
error en datos

36
DIAGRAMA DE SECUENCIA

CiMenu CiAltaTrimestre CnTrimestre Trimestre TrimestreBean


Personal Administrativo

Opc. Alta Trimestre


0) Seleccionar la opción de Alta de
trimestres del Menú de
Mantenimiento de trimestres.
Show()
1 El Sistema despliega la
pantalla de Alta de Trimestres.

Ingreso de datos
2 El P.A. ingresa:
a) Clave del trimestre
b) Descripción.
c) Fecha de inicio.
d) Fecha de fin del trimestre.

<<event>> Aceptar
3 El P.A. da clic en el botón
de Aceptar.

agregaTrimestre(voTrimestre)
5 El Sistema registra el
trimestre con los datos ingresados.

agregaTrimestre(voTrimestre)
agregaTrimestre(voTrimestre)

mensajeExito()
6 El Sistema muestra un
mensaje de confirmación con la clave
del trimestre generado.
limpiaCampos()

7 El Sistema se prepara para


capturar un nuevo trimestre.

8 Fin de Caso.

37
DIAGRAMA DE CLASES DINÁMICAS

CiAltaTrimestre CnTrimestre
CiMenu Trimestre
voTrimestre : VOTrimestre voTrimestre : VOTrimestre voTrimestre : VOTrimestre
<<event>> altaTrimestre() show()
<<event>> bajaTrimestre() agregaTrimestre() agregaTrimestre()
<<event>> aceptar() eliminaTrimestre()
<<event>> modificaTrimestre() void mensajeExito() eliminaTrimestre()
modificaTrimestre() modificaTrimestre()
void limpiaCampos() obtenListaTrimestre() obtenListaTrimestre()

VOTrimestre TrimestreBean
ClaveTrimestre : integer TrimestreHome voTrimestre : VOTrimestre
Descripcion : String sessionContext : SessionContext
FechaInicio : Date trimestreCreate()
FechaFin : Date ejbCreate()
Status : String ejbRemove()
ejbActivate()
VOTrimestre() ejbPassivate()
setClaveTrimestre() setSessionContext()
setDescripcion() agregaTrimestre()
setFechaInicio() eliminaTrimestre()
setFechaFin() modificaTrimestre()
setStatus() obtenListaTrimestre()
getClaveTrimestre()
getDescripcion()
getFechaInicio()
getFechaFin()
getStatus()

38
CU – MANTENIMIENTO TRIMESTRES - BAJAS

CASO DE USO

CLAVE DEL CASO CU- - ELIMINACION DE TRIMESTRES


MANT_BAJA_TRIM
Proyecto: SAECH Fecha: 19/07/2005
Autor: Salvador Cázarez Clave: CU-MANT_BAJA_TRIM
Berenice Verdú

Nivel Alcance
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
Descripción Breve
Escenario ideal para eliminar los trimestres existentes en la Base de Datos.

Actores
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

Eventos que lo inician


1 Seleccionar la opción de Eliminación de Trimestres del Menú de Mantenimiento de
Trimestres.
Flujo de eventos primario
1 El Sistema despliega la pantalla de Eliminación de Trimestres.
2 El P.A. selecciona el trimestre que desea eliminar.
3 El P.A. da clic en eliminar.
4 El Sistema muestra un mensaje de confirmación de Eliminación.
5 El Sistema elimina el trimestre seleccionada por el P.A. de la Base de Datos.
6 Fin de Caso.
Flujo de eventos alternativos
1 Del Paso 4 si el usuario cancela la eliminación, el sistema no realiza ninguna acción.
Precondiciones
1 Debe existir un usuario con los privilegios necesarios para eliminar un trimestre.
2 Este usuario debe de haber iniciado sesión al sistema.
3 Debe de existir al menos un trimestre dado de Alta.
Poscondiciones
1 La eliminación del registro seleccionado en la Base de Datos.

Documentación Adjunta
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 16.66%


Porcentaje de efectividad del proceso actual 0%

39
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Selecciona registro
Opción Eliminar Cancelar
del menú
mantenimiento
de trimestres Eliminar[ Registro seleccionado ] Mensaje de
Grid con los trimestres
existentes confirmación

Aceptar/Registro eliminado de la BD y actualizar grid

Aceptar
Eliminar[Registro no seleccionado] Cerrar

Mensaje
de Error

DIAGRAMA DE SECUENCIA

CiMenu CiEliminacionTr CnTrimestre Trimestre TrimestreBean


Personal
imestre
Administrativo

opcion Eliminacion de trimestres


0 Seleccionar la opción de Eliminación de
Trimestres del Menú de Mantenimiento de
Trimestres. Show()
1 El Sistema despliega la pantalla de obtenListaTrimestre() obtenListaTrimestre()
Eliminación de Trimestres. ObtenListaTrimestre()

inicializaLista()

Seleccion del trimestre


2 El P.A. selecciona el trimestre que
desea eliminar.

<<event>>Eliminar
3 El P.A. da clic en eliminar.
mensajeConfirmacion()
4 El Sistema muestra un mensaje de
confirmación de Eliminación

.
5 El Sistema elimina el trimestre eliminaTrimestre(voTrimestre)
seleccionada por el P.A. de la Base de Datos. eliminaTrimestre(voTrimestre)
eliminaTrimestre(voTrimestre)

mensajeExito()

6 Fin de Caso.

40
DIAGRAMA DE CLASES DINÁMICAS

CiAltaTrimestre CnTrimestre
CiMenu Trimestre
voTrimestre : VOTrimestre voTrimestre : VOTrimestre voTrimestre : VOTrimestre
<<event>> altaTrimestre() show()
<<event>> bajaTrimestre() agregaTrimestre() agregaTrimestre()
<<event>> aceptar() eliminaTrimestre()
<<event>> modificaTrimestre() void mensajeExito() eliminaTrimestre()
modificaTrimestre() modificaTrimestre()
void limpiaCampos() obtenListaTrimestre() obtenListaTrimestre()

VOTrimestre TrimestreBean
ClaveTrimestre : integer TrimestreHome voTrimestre : VOTrimestre
Descripcion : String sessionContext : SessionContext
FechaInicio : Date trimestreCreate()
FechaFin : Date ejbCreate()
Status : String ejbRemove()
ejbActivate()
VOTrimestre() ejbPassivate()
setClaveTrimestre() setSessionContext()
setDescripcion() agregaTrimestre()
setFechaInicio() eliminaTrimestre()
setFechaFin() modificaTrimestre()
setStatus() obtenListaTrimestre()
getClaveTrimestre()
getDescripcion()
getFechaInicio()
getFechaFin()
getStatus()

41
CU – MANTENIMIENTO TRIMESTRE – CAMBIOS

CASO DE USO

CLAVE DEL CASO CU- - MODIFICACION DE TRIMESTRE


MANT_CAMBIO_TRIM
Proyecto: SAECH Fecha: 19/07/2005
Autor: Salvador Cázarez Clave: CU-MANT_CAMBIO_TRIMESTRE
Berenice Verdú

Nivel Alcance
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
Descripción Breve
Escenario ideal para modificar la información de los trimestres.

Actores
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

Eventos que lo inician


1 Seleccionar la opción de Modificación de trimestres del Menú de Mantenimiento de
Trimestres.
Flujo de eventos primario
1 El Sistema despliega la pantalla de Modificación de trimestres.
2 El P.A. selecciona el trimestre que desea modificar.
3 El Sistema despliega la información respectiva del trimestre.
4 El P.A. modifica los datos correspondientes.
5 El P.A. da clic en Modificar.
6 El Sistema muestra un mensaje de confirmación de Modificación.
7 El Sistema actualiza la Base de Datos con la nueva información.
8 Fin de Caso.
Flujo de eventos alternativos
1 Del Paso 6 si el usuario cancela la modificación, el sistema no genera ningún cambio
Precondiciones
1 Debe existir un usuario con los privilegios necesarios para modificar un trimestre.
2 Este usuario debe de haber iniciado sesión al sistema.
3 Debe de existir al menos un trimestre dado de Alta.
Poscondiciones
1 La actualización de la información de la materia en la Base de Datos.
Documentación Adjunta
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 16.66%


Porcentaje de efectividad del proceso actual 0%

42
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Selección de trimestre y edición


del mismo.

Aceptar[ datos modificados ]


Pantalla de modificación de Mensaje de confirmación
trimestres modificación
Selección opción modificación del
menú de mantenimiento de No
trimestres.

Aceptar[ SI[ Datos llenos ] /


Datos modificación en la BD
incorrectos ]
Aceptar

Mensaje
Aceptar / Actualizacion de grid de éxito
y limpia campos

Mensaje
de error

Cerrar

DIAGRAMA DE SECUENCIA

CiMenu CiModificacion CiDetalleMateri CnMateria Materia MateriaBean


Personal
Materia a
Administrativo

Opc. Modificación de materias


0)Seleccionar la opción de Modificación de show()
Materias del Menú de Mantenimiento de getListaMateria() getListaMateria()
Cursos. getListaMateria()

1)El Sistema despliega la pantalla de


Modificación de Materias.
iniciaListaMaterias()

Selecciona materia, <<event>> ver

2)El P.A. selecciona la materia que desea


show(voMateria)
modificar y oprime el botón ver llenaCampos()

3)El Sistema despliega la información


respectiva a la materia. modifica datos materia

4)El P.A. modifica los datos


correspondientes.
<<evento>> modificar
mensajeConfirmacion( )
5)El P.A. da clic en Modificar.

modificaMateria( voOldMateria, voNewMateria)


6)El Sistema muestra un mensaje de
confirmación de Modificación. modificaMateria( voOldMateria, voNewMateria)

7)El Sistema actualiza la Base de modificaMateria( voOldMateria, voNewMateria)


datos con la nueva información.

mensajeExito()

close()
8)El sistema muestra un mensaje de éxito.
Fin de Caso.

close()

43
DIAGRAMA DE CLASES DINÁMICAS

CiMenu CiModificacionMateria CnMateria


Materia MateriaBean
voMateria : VOMateria voMateria : VOMateria
voMateria : VOMateria voMateria : VOMateria
<<event>> altaMateria()
iniciaListaMateria() void agregaMateria() sessionContext : SessionContext
<<event>> modificaMateria()
<<event>> eliminaMateria() show() void getListaMateria() void agregaMateria()
<<event>> ver() void modificaMateria() void modificaMateria() ejbCreate()
<<event>> altaHorario()
close() void eliminaMateria() void getListaMateria() ejbRemove()
<<event>> altaHorario()
void eliminaMateria() ejbActivate()
ejbPassivate()
setSessionContext()
agregaMateria()

VOMateria
MateriaHome
nombre : String
clave : Integer
descripcion : String Materia Create()
CiDetalleMateria
duracion : String
voOldMateria : VOMateria predecesor : String
voNewMateria : VOMateria
VOMateria()
show() void setNombre()
llenaCampos() void setClave()
mensajeConfirmacion() void setDescripcion()
close() void setDuracion()
mensajeExito() void setpredecesor()
String getNombre()
Integer getClave()
String getDescripcion()
String getDuracion()
String getPredecesor()

44
CU – MANTENIMIENTO MATERIAS - ALTAS
CASO DE USO

CLAVE DEL CASO CU-MANT- - ALTA DE MATERIAS


ALTAS_MAT
Proyecto: SAECH Fecha: 19/07/2005
Autor: Salvador Cázarez Clave: CU-MANT-ALTAS_MAT
Berenice Verdú

Nivel Alcance
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
Descripción Breve
Escenario ideal para dar de alta una nueva asignatura.

Actores
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

Eventos que lo inician


1 Seleccionar la opción de Alta de Materias del Menú de Mantenimiento de Cursos.
Flujo de eventos primario
1 El Sistema despliega la pantalla de Alta de Materias.
2 El P.A. ingresa:
e) Nombre.
f) Clave
g) Descripción.
h) Duración.
i) Predecesor.
3 El P.A. da clic en el botón de Aceptar.
4 El Sistema genera un ID. de Materia.
5 El Sistema registra la materia con los datos ingresados.
6 El Sistema muestra un mensaje de confirmación con Id de Materia generado.
7 El Sistema se prepara para capturar una nueva materia.
8 Fin de Caso.
Flujo de eventos alternativos
1 Ninguno
Precondiciones
1 Debe existir un usuario con los privilegios necesarios para dar de Alta una asignatura.
2 Este usuario debe de haber iniciado sesión al sistema.
Poscondiciones
1 Una nueva asignatura ha sido agregada a la Base de Datos.
Documentación Adjunta
Diagrama de Navegación de Pantallas
Modelo de Datos.

45
Porcentaje de transacciones totales que cubre el caso: 16.66%
Porcentaje de efectividad del proceso actual 0%

MODELO DE INTERFAZ

46
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Aceptar / Limpia campos


Ingreso de Datos

Aceptar[ Campos Llenos y Materia No Existente ] /


Generacion de Id y Guardado en BD
Mensaje de
Alta de Confirmación
Materias
Seleccion opcion Alta de
Materias del Menu de
Mantenimiento de Cursos
Cerrar

Aceptar[ Materia Existente ]


Aceptar
Aceptar

Mensaje de Error de Mensaje de Error


Campos Faltantes Materia Existente
Aceptar[ Campos Faltantes ]

DIAGRAMA DE SECUENCIA

CiMenu CiAltaMateria CnMateria Materia MateriaBean


Personal
Administrativo

Opc. Alta materia


0)Selecci onar la opción de Alta de Materias del
show( )
Menú de Manteni miento de Cursos.

1)El Sistema despliega la pantall a de Alta de


Materi as.
Ingreso de datos
2)El P.A. ingresa:
a) Nombre.
b) Clave
c) Descripción.
d) Duraci ón.
e) Predecesor.

<<evento>> Aceptar
3)El P.A. da cl ic en el botón de Aceptar.

agregaMateria( voMateria)
4)El Sistema genera un Id. de Materia.
agregaMateria( voMateria)
5)El Sistema registra la materi a con los datos
ingresados.
agregaMateria( voMateria)

mensajeExito( )
6)El Sistema muestra un mensaje de
confirmación con Id de Materi a generado.

limpiaCampos( )
7)El Sistema se prepara para capturar un nueva
materi a.

Fin de Caso.

47
CU-MANTENIMIENTO MATERIAS - BAJAS
CASO DE USO

CLAVE DEL CASO CU- - ELIMINACION DE MATERIAS


MANT_BAJA_MAT
PROYECTO: SAECH FECHA: 19/07/2005
AUTOR: Salvador Cázarez CLAVE: CU-MANT_BAJA_MAT
Berenice Verdú

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal para eliminar las materias existentes en la Base de Datos.

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Eliminación de Materias del Menú de Mantenimiento de Cursos.
FLUJO DE EVENTOS PRIMARIO
1 El Sistema despliega la pantalla de Eliminación de Materias.
2 El P.A. selecciona la materia que desea eliminar.
3 El P.A. da clic en eliminar.
4 El Sistema muestra un mensaje de confirmación de Eliminación.
5 El Sistema elimina la materia seleccionada por el P.A. de la Base de Datos.
6 Fin de Caso.
FLUJO DE EVENTOS ALTERNATIVOS
1 Del Paso 4 si el usuario cancela la eliminación, el sistema no realiza ninguna acción.
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para eliminar una asignatura.
2 Este usuario debe de haber iniciado sesión al sistema.
3 Debe de existir al menos una asignatura dada de Alta.
POSCONDICIONES
1 La eliminación del registro seleccionado en la Base de Datos.
DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 16.66%


Porcentaje de efectividad del proceso actual 0%

48
MODELO DE INTERFAZ

49
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Cancelar
Selecciona Materia

Eliminar[ Registro Seleccionado ]


Pantalla Grid Eliminación Confirmación de
de Materias Eliminación

Seleccion Eliminación de Materias


del Menu de Mantenimiento de Aceptar / Registro Eliminado de BD y Actualiza Grid
Cursos

Cerrar

Aceptar

Eliminar[ Registro No Seleccionado ]

Mensaje
de Error

DIAGRAMA DE SECUENCIA

CiMenu CiEliminaMateria CnMateria Materia MateriaBean


Personal
Administrativo

0)Seleccionar la opción de Opc. Elimina Materia


Eliminación de Materias del Menú
de Mantenimiento de Cursos.
1) El Sistema despliega la pantalla show() getListaMateria()
de Eliminación de Materias. getListaMateria()
getListaMateria()

iniciaListaMaterias()

2) El P.A. selecciona la materia selecciona materia


que desea eliminar.
3) El P.A. da clic en eliminar. <<event>> elimina

4) El Sistema muestra un mensaje


de confirmación de Eliminación. mensajeConfirmacion()
5) El Sistema elimina la materia
seleccionada por el P.A. de la eliminaMateria(voMateria)
Base de Datos. eliminaMateria(voMateria)
eliminaMateria(voMateria)

6) El sistema muestra mensaje de


mensajeExito()
exito
Fin de Caso.
close()

50
DIAGRAMA DE CLASES DINÁMICAS

CiEliminaMateria Materia
CiMenu voMateria : VOMateria CnMateria
voMateria : VOMateria MateriaHome
voMateria : VOMateria
<<event>> altaMateria() void show() void agregaMateria()
<<event>> modificaMateria() <<evento>> elimina() void agregaMateria() Materia Create()
void modificaMateria()
<<event>> eliminaMateria() void iniciaListaMaterias() void getListaMateria() void getListaMateria()
<<event>> altaHorario() void close() void modificaMateria() void eliminaMateria()
<<event>> altaHorario() void mensajeConfirmacion() void eliminaMateria()
void mensajeExito()

VOMateria
MateriaBean
nombre : String
clave : Integer voMateria : VOMateria
descripcion : String sessionContext : SessionContext
duracion : String
predecesor : String ejbCreate()
ejbRemove()
VOMateria() ejbActivate()
void setNombre() ejbPassivate()
void setClave() setSessionContext()
void setDescripcion() agregaMateria()
void setDuracion()
void setpredecesor()
String getNombre()
Integer getClave()
String getDescripcion()
String getDuracion()
String getPredecesor()

51
CU-MANTENIMIENTO MATERIAS - CAMBIOS
CASO DE USO

CLAVE DEL CASO CU- - MODIFICACION DE MATERIAS


MANT_CAMBIO_MAT
PROYECTO: SAECH FECHA: 19/07/2005
AUTOR: Salvador Cázarez CLAVE: CU-MANT_CAMBIO_MA
Berenice Verdú

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal para modificar la información de las asignaturas.

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Modificación de Materias del Menú de Mantenimiento de Cursos.
FLUJO DE EVENTOS PRIMARIO
1 El Sistema despliega la pantalla de Modificación de Materias.
2 El P.A. selecciona la materia que desea modificar.
3 El Sistema despliega la información respectiva a la materia.
4 El P.A. modifica los datos correspondientes.
5 El P.A. da clic en Modificar.
6 El Sistema muestra un mensaje de confirmación de Modificación.
7 El Sistema actualiza la Base de Datos con la nueva información.
8 Fin de Caso.
FLUJO DE EVENTOS ALTERNATIVOS
1 Del Paso 6 si el usuario cancela la modificación, el sistema no genera ningún cambio
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para modificar una asignatura.
2 Este usuario debe de haber iniciado sesión al sistema.
3 Debe de existir al menos una asignatura dada de Alta.

POSCONDICIONES
1 La actualización de la información de la materia en la Base de Datos.

DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 16.66%

52
Porcentaje de efectividad del proceso actual 0%

MODELO DE INTERFAZ

53
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Cancelar

Seleccionar Materia Modifica Datos

Ver[ Registro Seleccionado ] /


Inicializa Campos Pantalla Modificación
Pantalla Grid de
de Materias
Materias
Seleccion Modificacion de
Materias del Menu de
Mantenimiento de Cursos
Cancelar
Modificar[ Validacion Datos OK ]
Aceptar Ver[ Registro No Seleccionado ]

Mensaje de
Mensaje
Confirmación
de Error
Cerrar

Mensaje
de Éxito
Aceptar / Actualiza Grid Aceptar / Datos Modificados

DIAGRAMA DE SECUENCIA

CiMenu CiModificacion CiDetalleMateri CnMateria Materia MateriaBean


Personal
Materia a
Administrativo

Opc. Modificación de materias


0)Seleccionar la opción de Modificación de show()
Materias del Menú de Mantenimiento de getListaMateria() getListaMateria()
Cursos. getListaMateria()

1)El Sistema despliega la pantalla de


Modificación de Materias.
iniciaListaMaterias()

Selecciona materia, <<event>> ver

2)El P.A. selecciona la materia que desea


show(voMateria)
modificar y oprime el botón ver llenaCampos()

3)El Sistema despliega la información


respectiva a la materia. modifica datos materia

4)El P.A. modifica los datos


correspondientes.
<<evento>> modificar
mensajeConfirmacion( )
5)El P.A. da clic en Modificar.

modificaMateria( voOldMateria, voNewMateria)


6)El Sistema muestra un mensaje de
confirmación de Modificación. modificaMateria( voOldMateria, voNewMateria)

7)El Sistema actualiza la Base de modificaMateria( voOldMateria, voNewMateria)


datos con la nueva información.

mensajeExito()

close()
8)El sistema muestra un mensaje de éxito.
Fin de Caso.

close()

54
DIAGRAMA DE CLASES DINÁMICAS

CiMenu CiModificacionMateria CnMateria


Materia MateriaBean
voMateria : VOMateria voMateria : VOMateria
voMateria : VOMateria voMateria : VOMateria
<<event>> altaMateria()
iniciaListaMateria() void agregaMateria() sessionContext : SessionContext
<<event>> modificaMateria()
<<event>> eliminaMateria() show() void getListaMateria() void agregaMateria()
<<event>> ver() void modificaMateria() void modificaMateria() ejbCreate()
<<event>> altaHorario()
close() void eliminaMateria() void getListaMateria() ejbRemove()
<<event>> altaHorario()
void eliminaMateria() ejbActivate()
ejbPassivate()
setSessionContext()
agregaMateria()

VOMateria
MateriaHome
nombre : String
clave : Integer
descripcion : String Materia Create()
CiDetalleMateria
duracion : String
voOldMateria : VOMateria predecesor : String
voNewMateria : VOMateria
VOMateria()
show() void setNombre()
llenaCampos() void setClave()
mensajeConfirmacion() void setDescripcion()
close() void setDuracion()
mensajeExito() void setpredecesor()
String getNombre()
Integer getClave()
String getDescripcion()
String getDuracion()
String getPredecesor()

55
CU - MANTENIMIENTO ALUMNOS

CASO DE USO

PROYECTO: SAECH FECHA: 13/Septiembre/2005


AUTOR: Sánchez Santiago Corina CLAVE: CU-MantenimientoAlumnos

NIVEL ALCANCE
Resumen muy general X Organización (caja negra)
Resumen Organización (caja blanca)
X Actividad de Usuario Módulo
Detalle Método

DESCRIPCIÓN BREVE
Este caso de uso describe la modificación de la información del Alumno inscrito en el colegio
(Modificación o Cambios) o su cambio de Status de “Activo” a “Inactivo” (Eliminación o Baja).

ACTORES
Actor Principal Mostrador
Actores Secundarios

EVENTOS QUE LO INICIAN


1 El Mostrador elige la opción Mantenimiento del Menú principal.
2
FLUJO DE EVENTOS PRIMARIO
1 El Mostrador elige la opción “Alumnos” del Menú “Mantenimiento”.
2 El Sistema despliega la pantalla BC (Bajas/Cambios) de Alumnos.
3 El Mostrador ingresa la matricula del Alumno en el campo de texto “Matricula” y da clic en
el botón “Obtener Alumno”.
4 El Sistema busca la información del Alumno y la despliega en los campos de texto
correspondientes con los campos deshabilitados.
5 Si se desea modificar la información del Alumno, el Mostrador da clic en el botón “Editar
Información del Alumno” y pasa a 6

Si desea eliminar el Alumno definitivamente del Colegio, el Mostrador da clic en el botón


“Eliminar Alumno del Colegio” y pasa a 9.

6 El Sistema habilita los campos de texto que contienen la información del Alumno.
7 El Mostrador modifica la información de Alumno y da clic en el botón “Actualizar
Información”.
8 El Sistema actualiza la información del alumno en la base de datos y pasa 10.
9 El Sistema cambia el status del Alumno de “Activo a “Inactivo”.
10 Fin de caso

56
FLUJO DE EVENTOS ALTERNATIVOS
Búsqueda de un Alumno para obtener su matricula por medio de su nombre.
3.1 El Mostrador da clic en el botón “Buscar Matricula”.
3.2 El Mostrador ingresa el Apellido Paterno, Apellido Materno o Nombre del alumno para iniciar
la búsqueda (La búsqueda se puede realizar por cualquiera de los campos anteriores o por
los 3 juntos).
3.3 El Mostrador da clic en el botón “Buscar”.
3.4 El Sistema realiza la búsqueda de las coincidencias del nombre que ingreso el Mostrador,
las muestra en una tabla donde despliega todas las coincidencias con los Apellidos o
Nombre(s).
3.5 El Mostrador selecciona un registro de la tabla para obtener la matricula y da clic en el botón
“Obtener Matricula”.
3.6 El Sistema obtiene la matricula del registro seleccionado, lo muestra en el campo de
Matricula y cambia del Panel de Búsqueda al Panel de BC Alumno
3.7 Regresa a 4 (Flujo Principal).

PRECONDICIONES
1 El Alumno debe tener una matricula.
2 El Alumno debe estar inscrito en el Colegio y tenga Status “Activo”

POSCONDICIONES
1 Si realizaron cambios, la información del Alumno se “Actualiza” en la base de datos.
2 Si se elimino del Colegio, el Alumno presenta Status “Inactivo” en la base de datos.

DOCUMENTACIÓN ADJUNTA
Diagrama de Casos
Diseño de Pantallas
Diagrama de Navegación de Pantallas
Modelo de Datos
Diagrama de Secuencia
Diagrama de Clases

Porcentaje de transacciones totales que cubre el caso: ___15%___________

Porcentaje de efectividad del proceso actual: ______100%_______________

57
MODELO DE INTERFAZ

58
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

btnLimpiaCampos
btnElimninarAlumno( String Matricula )
btnActualizarInfromacionAlumno( VOAlumno voOldAlumno, VOAlumno voNewAlumno )
btnObtenerAlumno( String matricula ) / VOAlumno voAlumno
Menú btnEditarInformacionAlumno

Mantenimiento/Alumnos Pantalla de BC
Alumnos
btnBuscarMatricula

btnBucar( String apellidoPaterno,


BC: String apellidoMaterno, String
Bajas/Cambios Nombre ) / ArrayList
listaCoincidenciasAlumnos

Pantalla de Búsqueda
btnCancelarBusqueda
Alumno
btnObtenerMatricula / String matricula

59
DIAGRAMA DE SECUENCIA

BAJAS O CAMBIOS

oCiMenu : oCiPanelAlumnos : oCnAlumnos : oAlumnos :


: Mostrador
CiMenu CiPanelAlumnos CnAlumnos AlumnosBean

Alumnos( )
1. El Mostrador elige la opción "Alumnos" del
Menú "Mantenimiento". CiPanelAlumnos( )
2. El Sistema despliega la pantalla BC
(Bajas/Cambios) de Alumnos.
ingresarMatricula( )
3. El Mostrador ingresa la matricula del Alumno
en el campo de texto "Matricula" y da clic en el
botón "Obtener Alumn btnObtenerAlumno( )
o". obtenerAlumno(String matricula)
obtenerAlumno()
4. El Sistema busca la información del Alumno y la
despliega en los campos de texto
correspondientes con los campos deshabilitados.

llenaCamposAlumno(VOAlumno voAlumno)

dehabilitaCamposAlumno( )

5. Si se desea modificar la información del Alumno,


el Mostrador da clic en el botón "Editar Información btnEditarCampos( )
del Alumno" y pasa a 6

habilitaCamposAlumno( )
6. El Sistema habilita los campos de texto que
contienen la información del Alumno.

7. El Mostrador modifica la información de Alumno


y da clic en el botón "Actualizar Información". modificaInformacionAlumno( )
8. El Sistema actualiza la información del alumno
en la base de datos y pasa 10. btnActualizarInfromacionAlumno( )
actualizaAlumno(VOAlumno voOldAlumno, VOAlumno voNewAlumno)

actualizaAlumno(VOAlumno voOldAlumno, VOAlumno voNewAlumno)

Si desea eliminar el Alumno definitivamente del


Colegio, el Mostrador da clic en el botón "Eliminar
Alumno del Colegio" y pasa a 9. btnEliminarAlumno( )
eliminaAlumno(VOAlumno oVOAlumno, String status)
eliminaAlumno(VOAlumno oVOAlumno, String status)
9. El Sistema cambia el status del Alumno de
"Activo a "Inactivo".

10. Fin de caso

60
DIAGRAMA DE SECUENCIA

FLUJO ALTERNO - BÚSQUEDA DE LA MATRICULA DEL ALUMNO.

oCiPanelAlumnos : oCnAlumnos : oAlumnos :


: Mostrador
CiPanelAlumnos CnAlumnos AlumnosBean

btnBuscarMatricula( )
3.1 El Mostrador da clic en el botón "Buscar
Matricula". panelBusqueda( )
3.2 El Mostrador ingresa el Apellido Paterno,
Apellido Materno o Nombre del alumno para iniciar
la búsqueda (La búsqueda se puede realizar por ingresaNombreAlumno( )
cualquiera de los campos anteriores).
3.3 El Mostrador da clic en el botón "Buscar".

3.4 El Sistema realiza la búsqueda de las btnBuscar( )


buscarCoincidenciasAlumno(String paternoBusqueda, String maternoBusqueda, String nombreBusqueda)
coincidencias del nombre que ingreso el Mostrador,
las muestra en una tabla donde despliega todas las
coincidencias con los Apellidos o Nombre(s). buscarCoincidenciasAlumno(, , )

inicializaTablaAlumnos(ArrayList listaCoincidenciasAlumnos)

3.5 El Mostrador selecciona un registro de la tabla


para obtener la matricula y da clic en el botón seleccionaRegistro( )
"Obtener Matricula".
btnObtenerMatricula( )

obtenMatricula( )
3.6 El Sistema obtiene la matricula del registro
seleccionado, lo muestra en el campo de Matricula setMatricula(String matricula)
y cambia del Panel de Búsqueda al Panel de BC
Alumno
Regresa a 4 panelAlumno( )

DIAGRAMA DE CLASES DINÁMICAS

CiMenu
<<eventoMenu>> Inscripcion()
<<accionUsuario>> Alumnos()

CiPanelAlumnos
<<show>> CiPanelAlumnos()
<<accionUsuario>> ingresarMatricula()
<<eventoBoton>> btnObtenerAlumno()
llenaCamposAlumno(VOAlumno voAlumno)()
dehabilitaCamposAlumno()
<<eventoBoton>> btnEditarCampos()
<<eventoBoton>> btnEliminarAlumno() CnAlumnos
habilitaCamposAlumno() obtenerAlumno(String matricula)()
<<accionUsuario>> modificaInformacionAlumno() actualizaAlumno(VOAlumno voOldAlumno, VOAlumno voNewAlumno)()
<<eventoBoton>> btnActualizarInfromacionAlumno() eliminaAlumno(String matricula)()
<<eventoBoton>> btnBuscarMatricula() buscarCoincidenciasAlumno(String paternoBusqueda, String busquedaMaterno, String busquedaNombre)()
<<accionUsuario>> ingresaNombreAlumno() getContext()
<<eventoBoton>> btnBuscar()
inicializaTablaAlumnos(ArrayList listaCoincidenciasAlumnos)()
<<accionUsuario>> seleccionaRegistro()
<<eventoBoton>> btnObtenerMatricula()
AlumnosInterfaz
obtenMatricula()
obtenMatricula() obtenerAlumno(String Alumno) : VOAlumno
setMatricula(String matricula)() actualizaAlumno(VOAlumno voOldAlumno, VOAlno voNewAlumno) : bololean
<<show>> panelBusqueda() eliminaAlumno(String matricula) : boolean
<<show>> panelAlumno() getConcidenciasAlumno(String apellidoPaterno, String apellidoMaterno, String nombre) : ArrayList
getAlumnos() : ArrayList

<<uses>>
<<instantiate>> <<uses>>

AlumnosBean
AlumnosHome ejbCreate()
VOAlumno
create() setSessionContext()
ejbRemove()
setMatricula(String matricula) <<instantie>> ejbActivate()
getMatricula() : String ejbPassivate()
setApellidoPaterno(String apellidoPaterno) getAlumnos() : ArrayList
getApellidoPaterno() : String obtenerAlumno(String Alumno) : VoAlumno
setApellidoMaterno(String apellidoMaterno) actualizaAlumno(VOAlumno voOldAlumno, VOAlumno voNewAlumno) : boolean
getApellidoMaterno() : String eliminaAlumno(String matricula) : boolean
setNombre(String nombre) getCoincidenciasAlumno(String paternoBusqueda, String maternoBusqueda, String nombreBusqueda) : ArrayList
getNombre() : String
setCalle(String calle)
<<instantie>>
getCalle() : String
setNumero(String numero)
getNumero() : String
setColonia(String colonia)
getColonia() : String
setCodigoPostal(String codigoPostal})
getCodigoPostal() : String
setDelegacion(String delegacion)
getDelegacion() : String <<instantiate>>
setTelefono(String telefono)
getTelefono() : String
setFechaNacimiento(String fechaCumple)
getFechaNacimiento() : String
setCorreoElectronico(String correo)
getCorreoElectronico() : String
setTipoIngreso(String tipoIngreso)
getTipoIngreso() : String
setFechaRegistro(String fechaRegistro)
getFechaRegistro() : String
setIdSucursal(Integer idSucursal)
getIdSucursal() : Integer
setStatus(String status)
getStatus() : String

61
CU – MANTENIMIENTO SUCURSALES - ALTAS
CASO DE USO

CLAVE DEL CASO CU- - ALTA DE SUCURSAL


MANT_ALTA_SUC
PROYECTO: SAECH FECHA: 18/6/2005
AUTOR: JuVaz, RicBar CLAVE: CU-MANT_ALTA_SUC

NIVEL ALCANCE
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Escenario ideal de alta de Sucursales

ACTORES
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

EVENTOS QUE LO INICIAN


1 Seleccionar la opción de Altas de Sucursales del Menú de Mantenimiento de Cursos.
FLUJO DE EVENTOS PRIMARIO
1 El Sistema despliega la pantalla de Generación de Sucursales.
2 El P. A. captura la información de la Sucursal
a) Clave de Sucursal
b) Nombre
c) Descripción
d) Teléfono
3 El Sistema valida que los campos estén correctamente capturados los campos
4 El Sistema valida que no exista una Sucursal generada con los datos capturados.
5 El Sistema genera un Id de Sucursal.
6 El Sistema registra la Sucursal con los datos capturados.
7 El Sistema muestra un mensaje de confirmación con Id de Sucursal generado.
8 El Sistema se prepara para capturar una nueva Sucursal
9 Fin de Caso.
FLUJO DE EVENTOS ALTERNATIVOS
3a Si el sistema encuentra algún error de captura muestra un mensaje y va a 2
4a Si existe una Sucursal con la clave de sucursal capturada muestra un mensaje y va a 2
PRECONDICIONES
1 Debe existir un usuario con los privilegios necesarios para dar de Alta una Sucursal
2 Este usuario debe de haber iniciado sesión al sistema.
POSCONDICIONES
1 Una nueva sucursal ha sido agregada y dada de Alta.
DOCUMENTACIÓN ADJUNTA
Diagrama de Navegación de Pantallas
Modelo de Datos.

62
Porcentaje de transacciones totales que cubre el caso: 14.23%
Porcentaje de efectividad del proceso actual 100%

MODELO DE INTERFAZ

DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

63
mensajeErrorSucursal

validacionKO

capturaDatos generacionOK mensajeCreada

CapturaKO

mensajeErrorCaptura

DIAGRAMA DE SECUENCIA

CiMenu CiAltaSucursal CnAltaSucursal SucursalBean


Personal
Administrativo

Opc. Alta Sucursal


1.-El usuario selecciona la opción de Altas de Sucursales Show( )
del Menú de Mantenimiento de Cursos.

2.-El Sistema despliega la pantalla de Generación de


Sucursales.
Ingresa Datos
3.-El P. A. captura la información de la Sucursal
a)Clave de Sucursal
b)Nombre
c)Descripción
d)Teléfono
Aceptar
4.- El P.A. oprime el botón de Aceptar. validaCampos( )
5.-El Sistema valida que los campos estén correctamente
capturados los campos.
getDataSucursal(voSucursal)
getDataSucursal(voSucursal)
6.-El Sistema valida que no exista una Sucursal generada
con los datos capturados.

agregaSucursal(voSucursal) agregaSucursal(voSucursal)
7.-El Sistema genera un Id de Sucursal.
8.-El Sistema registra la Sucursal con los datos
capturados.

mensajeExito( )
9.-El Sistema muestra un mensaje de confirmación con Id
de Sucursal generado.
limpiaCampos( )
10.-El Sistema se prepara para capturar una nueva Sucursal

11.-Fin de Caso.

64
DIAGRAMA DE CLASES DINÁMICAS

CiMenu CiAltaSucursal CnAltaSucursal


voSucursal : VOSucursal voSucursal : VOSucursal Sucursal
<<event>> Alta de Sucursal() voSucursal : VOSucursal
show() validaCampos()
<<event>> aceptar() getDataSucursal() getDataSucursal()
mensajeExito() agregaSucursal() agregaSucursal()
limpiaCampos()

SucursalBean
voSucursal : VOSucursal
sessionContext : SessionContext
SucursalHome
ejbCreate()
VOSucursal
ejbRemove()
IdSucursal : Integer Sucursal create() ejbActivate()
ClaveSucursal : String ejbPassivate()
Nombre : String setSessionContext()
Descripcion : String getDataSucursal()
Telefono : String agregaSucursal()

VOSucursal()
void setIdSucursal()
void setClaveSucursal()
void setNombre()
void setDescripcion()
void setTelefono()
Integer getIdSucursal()
String getClaveSucursal()
String getNombre()
String getDescripcion()
String getTelefono()

65
CU – MANTENIMIENTO SUCURSALES – BAJAS
MODELO DE CASO DE USO

CLAVE DEL CASO CU- - BAJA DE SUCURSAL


MANT_BAJAS_SUC
Proyecto: SAECH Fecha: 18/6/2005
Autor: JuVaz, RicBar Clave: CU-MANT_BAJAS_SUC

Nivel Alcance
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
Descripción Breve
Escenario ideal de baja de Sucursales

Actores
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

Eventos que lo inician


1 Seleccionar la opción de Baja de Sucursales del Menú de Mantenimiento de Cursos.
Flujo de eventos primario
1 El sistema despliega una lista con todas las sucursales dadas de alta
2 El usuario elige una sucursal y oprime el botón eliminar
3 El sistema despliega un mensaje de confirmación
4 El usuario oprime aceptar
5 El sistema elimina de la base de datos la sucursal
6 Fin de caso
Flujo de eventos alternativos
4a Si el usuario oprime cancelar, se regresa al paso 1
5a Si el sistema encuentra referencias a esa sucursal muestra un mensaje de error y regresa a
1
Precondiciones
1 Debe existir un usuario con los privilegios necesarios para dar de Baja una Sucursal
2 Este usuario debe de haber iniciado sesión al sistema.
Poscondiciones
1 Una sucursal ha sido eliminada del sistema
Documentación Adjunta
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 14.23%


Porcentaje de efectividad del proceso actual 100%

66
MODELO DE INTERFAZ

67
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

KO
listaDeSucursales mensajeConfirmacionEliminacion
eliminar

OK

mensajeEliminacionOK

KO

DIAGRAMA DE SECUENCIA

CiMenu CiEliminacionSucursal CnEliminacion SucursalBean


Personal
Sucursal
Administrativo

Opc. Baja de Sucursales


1.-Seleccionar la opción de Baja de show()
Sucursales del Menú de Mantenimiento de
getListaSucursal() getListaSucursal()
Cursos.

2.-El sistema despliega una lista con todas initListSucursal()


las sucursales dadas de alta

3.-El usuario elige una sucursal y oprime el Selecciona Sucursal


botón eliminar
Eliminar
4.-El sistema despliega un mensaje de mensajeConfirmacion()
confirmación

5.-El usuario oprime aceptar Aceptar


6.-El sistema elimina de la base de datos la eliminaSucursal(voSucursal) eliminaSucursal(voSucursal)
sucursal
7.-Fin de caso

mensajeExito()

close()

68
DIAGRAMA DE CLASES DINÁMICAS

CnEliminacionSucursal
CiEliminacionSucursal voSucursal : VOSucursal

show() getListaSucursal() SucursalBean


CiMenu
(from Al taSucursal )
initListSucursal() eliminaSucursal() (from Al taSucursal )
mensajeConfirmacion() voSucursal : VOSucursal
mensajeExito() sessionContext : SessionContext
<<event>> Cambio de Sucursal()
close()
<<event>> Alta de Sucursal()
<<event>> SeleccionaSucursal() ejbCreate()
<<event>> Baja de Sucursal()
<<event>> Eliminar() Sucursal ejbRemove()
<<event>> Aceptar() (from Al taSucursal ) ejbActivate()
voSucursal : VOSucursal ejbPassivate()
setSessionContext()
getDataSucursal() getDataSucursal()
agregaSucursal() agregaSucursal()
modificaSucursal() modificaSucursal()
getListaSucursal() getListaSucursal()
VOSucursal eliminaSucursal() eliminaSucursal()
(from Al taSucursal )
IdSucursal : Integer SucursalHome
ClaveSucursal : String (from Al taSucursal )
Nombre : String
Descripcion : String Sucursal create()
Telefono : String

VOSucursal()
void setIdSucursal()
void setClaveSucursal()
void setNombre()
void setDescripcion()
void setTelefono()
Integer getIdSucursal()
String getClaveSucursal()
String getNombre()
String getDescripcion()
String getTelefono()

69
CU – MANTENIMIENTO SUCURSALES – CAMBIOS
MODELO DE CASO DE USO

CLAVE DEL CASO CU- - CAMBIOS A SUCURSAL


MANT_CAMBIO_SUC
Proyecto: SAECH Fecha: 18/6/2005
Autor: JuVaz, RicBar Clave: CU-MANT_CAMBIO_SUC

Nivel Alcance
Resumen muy general * Organización (caja negra)
Resumen Organización (caja blanca)
* Actividad de Usuario Módulo
Detalle Método
Descripción Breve
Escenario ideal de cambios a Sucursales

Actores
Actor Principal Personal Administrativo (P. A.)
Actores Secundarios

Eventos que lo inician


1 Seleccionar la opción de Cambio de Sucursales del Menú de Mantenimiento de Cursos.
Flujo de eventos primario
1 El sistema despliega una lista con todas las sucursales dadas de alta
2 El usuario elige una sucursal y oprime el botón modificar
3 El sistema despliega los detalles de la sucursal
4 El usuario captura los cambios y oprime modificar
5 El sistema pide al usuario confirmación
6 El usuario confirma la modificación
7 El Sistema valida que los campos estén correctamente capturados los campos
8 El sistema actualiza la información en la base de datos
9 El sistema muestra un mensaje de confirmación
10 Fin de caso
Flujo de eventos alternativos
6a Si el usuario oprime cancelar, se regresa al paso 1
7a Si el sistema encuentra errores muestra un mensaje y regresa a 3
Precondiciones
1 Debe existir un usuario con los privilegios necesarios para dar Cambios a una Sucursal
2 Este usuario debe de haber iniciado sesión al sistema.
Poscondiciones
1 Una sucursal ha sido modificada en el sistema
Documentación Adjunta
Diagrama de Navegación de Pantallas
Modelo de Datos.

Porcentaje de transacciones totales que cubre el caso: 14.23%


Porcentaje de efectividad del proceso actual 100%

70
MODELO DE INTERFAZ

71
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

modif icar
listaSucursales modif icacionSucursales modif icar conf irmacionCambios

cancelar

OK
cancelar

mensajeOK

DIAGRAMA DE SECUENCIA

CiMenu CiTablaModificacionSu CiModificacion CnModificacion SucursalBean


Personal
cursal Sucursal Sucursal
Administrativo

Opc. Cambio de Sucursales


1.-Seleccionar la opción de Cambio de Show( )
Sucursales del Menú de Mantenimiento de
Cursos. getDataSucursal() getDataSucursal()

2.-El sistema despliega una lista con todas las


sucursales dadas de alta
initTable()

Selecciona Sucursal
3.-El usuario elige una sucursal y oprime el
botón modificar Modificar show(voSucursal)
initFields()
4.-El sistema despliega los detalles de la
sucursal
Ingreso de Nuevos Datos
5.- El usuario captura los cambios y oprime
modificar Modificar
mensajeConfirmacion()
6.-El sistema pide al usuario confirmación
Aceptar
7.-El usuario confirma la modificación validaCampos()
8.-El Sistema valida que los campos estén
correctamente capturados modificaSucursal(voSucursal) modificaSucursal(voSucursal)
9.-El sistema actualiza la información en la
base de datos
mensajeExito()
10.-El sistema muestra un mensaje de
confirmación close()

11.-Fin de caso
close()

72
DIAGRAMA DE CLASES DINÁMICAS

CiTablaModificacionSucursal
CiMenu
(from Al taSucursal )
show()
<<event>> Seleccion Sucursal()
<<event>> Cambio de Sucursal() <<event>> Modificar()
<<event>> Alta de Sucursal() initTable()
close()

CiModificacionSucursal CnModificacionSucursal
voSucursal : VOSucursal voSucursal : VOSucursal

show() getDataSucursal()
initFields() validaCampos()
<<event>> IngresoDatos() modificaSucursal()
<<event>> Modificar() SucursalBean
mensajeConfirmacion() (from Al taSucursal )
<<event>> Aceptar() voSucursal : VOSucursal
mensajeExito() sessionContext : SessionContext
close()
Sucursal ejbCreate()
(from Al taSucursal ) ejbRemove()
voSucursal : VOSucursal ejbActivate()
ejbPassivate()
VOSucursal
getDataSucursal() setSessionContext()
(from Al taSucursal )
agregaSucursal() getDataSucursal()
IdSucursal : Integer modificaSucursal() agregaSucursal()
ClaveSucursal : String
modificaSucursal()
Nombre : String
Descripcion : String
Telefono : String
SucursalHome
VOSucursal() (from Al taSucursal )
void setIdSucursal()
void setClaveSucursal()
Sucursal create()
void setNombre()
void setDescripcion()
void setTelefono()
Integer getIdSucursal()
String getClaveSucursal()
String getNombre()
String getDescripcion()
String getTelefono()

73
CU – INSCRIPCIÓN
CASO DE USO

PROYECTO: SAECH FECHA: 15/Agosto/2005


AUTOR: Marban Corral Miguel Ángel CLAVE: CU-Inscripción
Sánchez Santiago Corina Versión 2.0

NIVEL ALCANCE
Resumen muy general X Organización (caja negra)
Resumen Organización (caja blanca)
X Actividad de Usuario Módulo
Detalle Método
DESCRIPCIÓN BREVE
Este caso describe el proceso para incorporar a una persona o Candidato al Instituto Coronet
may.

ACTORES
Actor Principal Mostrador
Actores Secundarios

EVENTOS QUE LO INICIAN


1 El Mostrador elige la opción de “Inscribir” en el Menú “Alumno” de la barra de Menús del
Sistema.
FLUJO DE EVENTOS PRIMARIO
1 El Mostrador selecciona Inscripción del menú principal.
2 El Sistema despliega pantalla de inscripción al colegio.
3 El Mostrador Ingresa folio del Candidato.
4 El Mostrador da clic en botón buscar Candidato.
5 El Sistema busca la información del Candidato y la encuesta generada en el prerregistro.
6 El Sistema despliega la información del Candidato en los campos correspondientes a
cada dato.
7 El Mostrador revisa la información del Candidato.
Si alguno de los datos es incorrecto, el Mostrador da clic en el botón editar campos y
corrige el dato.

8 El Mostrador da clic en el botón Inscribir Candidato.


9 El Sistema valida campos marcados con asterisco no sean nulos y manda mensaje de
confirmación.
10 El Mostrador da clic en la opción “si”.
11 El Sistema genera la matricula, almacena la información del alumno y la información de la
encuesta.
Si el Candidato se prerregistro, el Sistema elimina la información de la tabla de Candidato
y de la tabla encuesta.

12 El Sistema despliega mensaje de confirmación de inscripción correcta.


13 El Sistema despliega la matricula del alumno en el campo matricula.
14 El Mostrador da clic en botón Inscribir alumno a curso.
15 Fin del Caso.

74
FLUJO DE EVENTOS ALTERNATIVOS
Flujo Alterno Buscar Folio del Candidato
3.1 El Mostrador da clic en el botón Buscar Folio.
3.1. El Sistema despliega la pantalla de Busca Folio.
1
3.1. El Mostrador ingresa Apellido Paterno, Materno y Nombre(s) del Candidato.
2
3.1. El Mostrador da clic en el botón Buscar.
3
3.1. El Sistema despliega en la tabla las coincidencias encontradas.
4
3.1. El Mostrador selecciona un registro de la tabla.
5
3.1. El Mostrador da clic en el botón Obtener Folio.
6
3.1. El Sistema regresa la pantalla inscripción y pone el folio en el campo folio.
7
3.1. Regresa 4
8

Flujo Alterno Candidato No Prerregistrado


3.2 El Mostrador captura los datos del Candidato
3.2. El Mostrador da clic en el botón Llenar Encuesta.
1
3.2. Regresa a 4
2

Flujo Alterno para llenar la encuesta cuando el Candidato no se Prerregistro


3.2.1.1 El Mostrador da clic en el botón Llenar Encuesta.
3.2.1.2 El Sistema despliega pantalla para llenar la encuesta del alumno.
3.2.1.3 El Mostrador llena la encuesta.
3.2.1.4 El Mostrador da clic en el botón Guardar Encuesta.
3.2.1.5 El Sistema regresa a la pantalla de inscribir con la información de la encuesta.
3.2.1.6 Regresa a 3.2.2
PRECONDICIONES
1 El Sistema valida que el Administrador sea valido (login y Password).
2 El Sistema haya desplegado los Tabs (pestañas), con el Tab - Inscripción habilitado.
POSCONDICIONES
1 El Sistema le asigna una Matricula única al Alumno Inscrito. (Autoincrementable).
2 La información de un Alumno que esta en la tabla Candidato se traslada a la tabla Alumno
DOCUMENTACIÓN ADJUNTA
Diseño Conceptual
Diseño de Pantallas
Diagrama de Navegación de Pantallas
Modelo de Datos
Diagrama de Secuencia
Diagrama de Clases

NOTAS
La Matricula consta de 10 dígitos. Ejemplo: 2005010001

75
La Matricula se forma de la siguiente manera:
• Los primeros 4 dígitos son el año en curso (2005).
• Los siguientes 2 dígitos son la Sucursal donde se esta inscribiendo (01).
• Los últimos 4 dígitos se van auto incrementando desde 0001 hasta 9999 (0001).

Porcentaje de transacciones totales que cubre el caso: _ 25%_

Porcentaje de efectividad del proceso actual: 100%_

MODELO DE INTERFAZ

76
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

btnEditar
btnLimpiarCampos
btnBuscarCandidato( folio ) / voCandidato
btn InscribirCandidato( voAlumno, idSucursal, folio,voEncuesta ) / matricula

tabInscripcion

Pantalla de Pantalla de
Menú Inscripción Inscripción btnInscribirAlumnoACurso( VOAlumno ) Reinscripcion

btn Buscar Folio

btnLlenarEncuesta

Pantalla Llenar
Encuesta btnGuardarEncuesta / voEncuesta
btnCancelarEncuesta Pantalla
btnObtenerFolio / folio Buscar Folio
btnCancelarBusqueda

77
DIAGRAMA DE SECUENCIA: CASO CUANDO EL CANDIDATO NO SE PRERREGISTRO

oCiPanelInscripcion :
: Mostrador
CiPanelInscripcion

capturaDatosCandidato

3.2.1 El Mostrador captura los datos del


candidato.
eventoEncuesta( ) panelEncuesta.setVisible()
3.2.2 El Mostrador da click en el botón
Llenar Encuesta.
3.2.3 Paso 8

DIAGRAMA DE SECUENCIA: CUANDO SE LLENA LA ENCUESTA

ciPanelInscripcion : cnInscripcion : Inscripcion :


: Mostrador
CiPanelInscripcion CnInscripcion DIncripcionBean

eventoLlenarEncuesta( )
3.2.2.1 El Mostrador da click en el botón
Llenar Encuesta. panelBusquedaFolio.setVisible()
3.2.2.2 El sistema despliega pantalla para
llenar la encuenta del alumno.
inicializaComboCursos( )
getListaMaterias( )
getMaterias( )

llenarEncuesta( )
3.2.2.3 El Mostrador llena la encuesta.

3.2.2.4 El Mostrador da click en el botón eventoGuardarEncuesta( )


Guardar Encuesta.
validaCamposEncuesta( )

getEncuesta( )

3.2.2.5 El sistema regresa a la pantalla de


inscribir con la infromación de la encuesta. CiPanelInscripcion.show( )

78
DIAGRAMA DE SECUENCIA: BÚSQUEDA DEL FOLIO DEL CANDIDATO

ciPanelInscripcion : cnInscripcion : Inscripcion :


: Mostrador
CiPanelInscripcion CnInscripcion DInscripcion

3.1.1 El Mostrador da click en el botón buscaFolio()


Buscar Folio.
3.1.2 El sistema despliega la pantalla de
panelBusquedaFolio.setVisible()
Busca Folio.

3.1.3 El Mostrador ingresa Apellido ingresaApellidoPaternoMaternoNombre


Paterno, Materno y Nombre(s) del
candidato.
eventoBuscaApellido( )
3.1.4 El Mostrador da click en el botón
Buscar.
initTableSearch( )
3.1.5 El sistema despliega en la tabla las
coincidencias encontradas.
getCoincidenciasCandidatos(, , )

getCoincidenciasCandidatos(, , )

setModeloTabla()

3.1.6 El Mostrador selecciona un registro seleccionaRegistro


de la tabla.
eventoRegresaFolio( )
3.1.7 El Mostrador da click en el botón
Obtener Folio. panelInscripcion.setVisible()

3.1.8 El sistema regresa la pantalla setFolio( )


inscripción y pone el folio en el campo folio.

DIAGRAMA DE CLASES DINÁMICAS


CiMenu

<<eventoMenu>> Inscripcion() VOEncuestaAlumno


<<accionUsuario>> Alumnos()
setMatricula(String matricula)
getMatricula() : String
setComoSeEntero(String comoseEntero)
getComoSeEntero() : String
setCurso(Integer curso)
CiPanelInscripcion getCurso() : Integer
setActividad(String actividad)
<<eventoBoton>> eventoInscribirCandidato() getActividad() : String
<<evento>> CiPanelInscripcion.show() setSoyProfesionista(String respuesta)
<<accionUsuario>> ingresaFolio() <<instantiate>> getSoyProfesionista() : String
<<evento>> eventobuscarCandidto() setGiroEmpresa(String giroEmpresa)
<<s how>> CiPanelInscripcion() getGiroEmpresa() : String
<<eventoBoton>> eventoBuscaCanddato() setNombreEmpresa(String nombreEmpresa)
llenaCampos (VOCandidato voCandidato) getNombreEmpresa() : String
<<accionUsuario>> revisarDatos() setDireccionEmpresa(String direccionEmpresa)
<<instantiate>> getDireccionEmpresa() : String
<<eventoBoton>> eventoEditarCampos()
habilitaCampos() setColoniaEmpresa(String coloniaEmpresa)
<<accionUsuario>> corrigeDato() <<instantiate>> getColoniaEmpresa() : String
<<eventoBoton>> eventoInscribirAlumno() setCodigoPostaEmpresa(String codigopos talEmpresa)
CnInscripcion
validaCampos() : Boolean getCodigoPostaEmpresa() : String
getIdSucursal(String sucurs al) : Integer setPuesto(String pues to)
getCandidato(Integer folio) : VOCandidato getPuesto() : String
getEncuesta(Integer folio) : VOEncuestaAlumno incribirAlumno(VOAlumno voAlumno, VOEncuestaAlumno voEncuestaAlumno, Integer idSucurs al, Integer folio) : String
mensajeConfirmacion() setTelefonoTrabajo(String telefonoTrabajo)
getCoincidenciasCandidatos(String apPaterno, String apMaterno, String nombre) : ArraList getTelefonoTrabajo() : String
<<s etText>> setMatricula()
getEncuestaCandidato(Integer folio) : VOEncuestaAlumno setJefeInmediato(Strin jefeInmediato)
<<eventoBoton>> eventoInscribirAlumnoCurso() getSucursales() : ArrayList
bus carCandidato(Integer folio) : VOCandidato getJefeInmediato() : String
getListaMaterias() : ArrayList setCargoJefeInmediato(String cargoJefeInmediato)
<<eventoBoton>> eventoBuscarFolio()
<<evento>> panelBusquedaFolio.setVisible(true) getCargoJefeInmediato() : String
<<accionUsuario>> ingresaApellidoPaternoMaternoNombre() ...
<<eventoBoton>> eventoBuscar()
initTableSearch() <<instantiate>>
setModelTable(ArrayList listaCandidatos)
<<accionUsuario>> seleccionaRegistro()
<<eventoBoton>> eventoObtenerFolio()
obtenerFolio() : Integer <<instantiate>>
<<s etText>> setFolio()
<<evento>> panelInscripcion.setVisible(true)
<<accionUsuario>> capturaDatosCandidato() DInscripcion
<<eventoBoton>> eventoLlenarEncuesta()
<<evento>> panelEncuesta.setVisible(true) getCandidato(Integer folio) : voCandidato
<<accionUsuario>> llenarEncuesta() inscribirAlumno(VOAlumno voAlumno, VOEncuestaAlumno voEncuestaAlumno, Integer idSucursal, Integer folio) : String
<<eventoBoton>> eventoGuardarEncuesta() getCoincidenciasCandidatos(String apPaterno, String apMaterno, String nombre) : ArrayList
getEncuesta() : VOEncuesta opname()
<<instantiate>>
inicializaComboSucursal() getEncuestaCandidato(Integer folio)() : VOEncuestaAlumno
inicializaComboCursos() getSucursales() : ArrayLis t
<<accionUsuario>> llenarEncuesta()
<<eventoBoton>> eventoGuardarEncuesta()
...
<<instantiate>> <<uses>>

<<instantiate>> <<instantiate>> <<uses>>


DInscripcionHome

create() : Inscripcion
CiReinscripcion

VOAlumno
<<s how>> CiReinscripcion(String matricula)

setMatricula(String matricula)
VOCandidato getMatricula() : String DIncripcionBean
setApellidoPaterno(String apellidoPaterno)
setFolio(Integer folio) getApellidoPaterno() : String ejbCreate()
getFolio() : Integer setApellidoMaterno(String apellidoMaterno) setSes sionContext()
setApellidPaterno(String apellidoPaterno) getApellidoMaterno() : String ejbRemove()
getApellidoPaterno() : String setNombre(String nombre) ejbActivate()
setApellidoMaterno(String apellidoMaterno) getNombre() : String ejbPas sivate()
getApellidoPaterno() : String setCalle(String calle) getCandidato(Integer folio) : VOCandidato
setNombre(String nombre) getCalle() : String inscriburAlumno(VOAlumno voAlumno, VOEncues taAlumno voEncuestaAlumno, Integer idSucursal, Integer folio) : String
getNombre() : String setNumero(String numero) getCoincidenciasCandidato(String apPaterno, String apMaterno, String nombre) : ArrayLis t
setCalle(String calle) getNumero() : String getMaterias() : ArrayList
getCalle() : String setColonia(String colonia)
setNumero(String numero) getColonia() : String
setColonia(String Colonia) setCodigoPostal(String codigoPostal})
getColonia() : String getCodigoPostal() : String
setDelegacion(String delegacion) setDelegacion(String delegacion)
getDelegacion() : String getDelegacion() : String
setTelefono(String telefono) setTelefono(String telefono)
getTelefono() : String getTelefono() : String
setCodigoPostal(String codigoPostal) setFechaNacimiento(String fechaCumple)
getCodigoPostal() : String getFechaNacimiento() : String
setFechaNacimiento(String fechaCumple) setCorreoElectronico(String correo)
getFechaNacimiento() : String getCorreoElectronico() : String
setCorreoElectronico(String correo) setTipoIngreso(String tipoIngres o)
... getTipoIngreso() : String
setFechaRegistro(String fechaRegistro)
getFechaRegistro() : String
setIdSucursal(Integer idSucursal)
getIdSucursal() : Integer
setStatus(String status)
getStatus() : String

79
CU - REINSCRIPCIÓN

CASO DE USO

Proyecto: SAECH Fecha: Sábado 23 de julio, 2005


Autor: Gustavo Saturno Clave: CU-REINSCRIPCION
Jesús Urbina

Nivel Alcance
Resumen muy general Organización (caja negra)
Resumen X Organización (caja blanca)
X Actividad de Usuario Módulo
Detalle Método
Descripción Breve
Proceso de reinscripción de un cliente a un nuevo curso en la institución.

Actores
Actor Principal Empleado
Actor Secundario Sistema
Eventos que lo inician
1 El empleado selecciona la opción “Reinscripción” del menú “Cliente” de la barra de menús
de la interfaz principal
Flujo de eventos primario
1 El empleado teclea la matrícula del cliente en el campo de texto destinado a la matricula y
pulsa Aceptar. El botón de “Inscripción” permanece deshabilitado,
2 El sistema despliega la información del cliente (Nombre) así como también los posibles
cursos que puede tomar (en un combo), dependiendo de aquellos que ya haya tomado,
además de un campo de texto vacío que servirá para ir colocando la clave de cada curso
según se vaya seleccionando. Se habilita el botón “Inscripción”.
3 El empleado selecciona un curso del combo.
4 El sistema muestra la clave del curso en el campo de texto “Clave” y además una tabla con
información asociada a ese curso en particular (Grupo, Horario, Profesor de Gramática,
Profesor de Comprensión, Disponibilidad). Se habilita el botón “Inscribir”
5 El empleado selecciona un registro de la tabla (lo cual corresponde a un grupo asociado a
este curso) y pulsa el botón “Inscribir”
6 El sistema muestra un aviso para que el empleado confirme la acción que se llevará a cabo
7 El empleado pulsa el botón “Sí”
8 El sistema muestra un informe con los datos que se acaban de actualizar en la base de
datos (Curso inscrito, Grupo, Profesor de Gramática, Profesor de Comprensión, Horario) y
aparece el botón “Imprimir” con el cual se puede imprimir un resumen con esta información
para el cliente
9 El empleado presiona el botón “Nuevo” o el botón “Imprimir”
10 El sistema limpia la pantalla (se dejan de ver la información actual) y el campo de la
matricula
11 Fin de Caso

80
Flujo de eventos alternativos
1 La matricula introducida no se encuentra en la base de datos o el cliente no recuerda su
número de matrícula
1.1 El empleado presiona el botón “Buscar…”
1.2 El sistema muestra campos de texto para filtrar la búsqueda (Nombre, Apellido Paterno,
Apellido Materno, Sucursal) y los botones “Iniciar búsqueda” y “Limpiar campos”
1.3 El empleado llena estos campos y presiona el botón “Iniciar búsqueda”
1.4 El sistema muestra una tabla con datos sobre el cliente (Sucursal, Nombre, Apellido
Paterno, Apellido Materno, Matrícula, Teléfono, Correo Electrónico)
1.5 El empleado selecciona un registro de la tabla y pulsa el botón “Seleccionar”
1.6 El sistema muestra los datos del cliente (para el flujo normal, paso 2)

Precondiciones
1 Haber entrado al sistema con suficientes privilegios para poder llevar a cabo la reinscripción
Poscondiciones
1 Se crea un saldo negativo en la cuenta del cliente
2 Se actualiza la disponibilidad del grupo al que acaba de inscribirse el cliente
3 Se asocia el cliente con el grupo que él acaba de elegir
Documentación Adjunta
1 Diseño de Pantallas
2 Diagrama de Navegación de Pantallas
3 Diagrama de Secuencia
4 Modelo de Datos

Porcentaje de transacciones totales que cubre el 15 %


caso:
Porcentaje de efectividad del proceso actual: 100 %

81
MODELO DE INTERFAZ

Reinscripción - SAECH
Archivo Cliente Caja Mantenimiento Consultas Ayuda

Preinscripción Inscripción Reinscripción


Datos del Cliente

Aceptar

Matrícula
Buscar...

Información Disponible

Nombre Trimestre

Cursos Disponibles Fecha

Sucursal Lunes Martes Miércoles Jueves Viernes Prof. Gramática Prof. Comprensión Disponibilidad

Terminar Inscribir

Reinscripción - SAECH
Archivo Cliente Caja Mantenimiento Consultas Ayuda

Inscripción Reinscripción Preinscripción


Datos del Cliente

Aceptar

Matrícula
Buscar...

Búsqueda

Nombre Sucursal

Apellido Paterno
Limpiar campos Iniciar búsqueda
Apellido Materno
Resultados

Sucursal Nombre Apellido Paterno Apellido Materno Matrícula Teléfono Correo electrónico

Seleccionar

Terminar

82
Error en la búsqueda

No se encontró algún registro que coincida


con los datos proporcionados. Verifique su
información por favor.

Aceptar

Error al guardar

Ha habido un problema al intentar almacenar la


información. Verifique que tenga conexión con el
servidor y que la Base de Datos este disponible.

Aceptar

83
Confirmación de reinscripción

¿Los datos son correctos y confirma que


desea llevar a cabo la reinscripción?

Si No

Error de validación

Por favor teclee una matrícula valida.

Aceptar

84
DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Aceptar/elegirCurso
Imprimir

InscribirNuevo
Elige Reinscripcion Ventana Ventana
Menu Reinscripcion Resumen

Inscribir

Buscar Alumno
Aceptar
Salir
Ventana
Salir Busqueda

Salir

Menu

Menu

DIAGRAMA DE SECUENCIA

Escenario
oICapturaMatricula : oNCapturaMatricula : cteReinscripcion :
Normal Empleado :
PanelReinscripcion CnReinscripcion beanReinscripcion
Empleado

Aceptar
1. El empleado teclea la matrícula del cliente en getDatosAlumno(String)
el campo de texto destinado a la matricula y validaMatricula(String)
pulsa Aceptar. El botón de "Inscripción"
permanece deshabilitado.
getDatosCliente(String)
2. El sistema despliega la información del cliente
showInformacion( )
(Nombre) así como también los posibles cursos
que puede tomar (en un combo), dependiendo de
aquellos que ya haya tomado, además de un
campo de texto vacío que servirá para ir
colocando la clave de cada curso según se vaya
seleccionando. Se habilita el botón "Inscripción".

3. El empleado selecciona cursos del combo.


evtAceptar obtenerDatosPrimerIngreso( )
4. El sistema muestra la clave del curso en el getDatosCurso(String)
campo de texto "Clave" y además una tabla con
información asociada a ese curso en particular
(Grupo, Horario, Profesor de Gramática, Profesor
de Comprensión, Disponibilidad). Se habilita el
botón "Inscribir".

5. El empleado selecciona un registro de la tabla inscribir


(lo cual corresponde a un grupo asociado a este
curso) y pulsa el botón "Inscribir".
inscribir( )
6. El sistema muestra un aviso para que el
empleado confirme la acción que se llevará a
cabo.
buscaAlumno( )
7. El empleado pulsa el botón "Sí".

8. El sistema muestra un informe con los datos showResumen( ) setPreferenciaCliente(String, String, String)
que se acaban de actualizar en la base de datos
(Curso inscrito, Grupo, Profesor de Gramática,
Profesor de Comprensión, Horario) y aparece el
botón "Imprimir" con el cual se puede imprimir un
resumen con esta información para el cliente. nuevo/imprimir( )

9. El empleado presiona el botón "Nuevo" o el


botón "Imprimir".
reiniciaOperacion( )
10. El sistema limpia la pantalla (se dejan de ver
la información actual) y el campo de la matricula.

11. Fin de Caso

85
DIAGRAMA DE CLASES DINÁMICAS

PanelReinscripcion
(from Use Case View)
pnlImagen : JPanel
pnlMatricula : JPanel
pnlDatosAlumno : JPanel
pnlDatosCursos : JPanel
lblMatricula : JLabel
lblNombre : JLabel CnReinscripcion
lblCursosDisponibles : JLabel (from Use Case View)
lblFecha : JLabel matriculaInt : Integer
lblTrimestre : JLabel matriculaString : String
txtMatricula : JTextField
txtNombre : JTextField getDatosAlumno()
txtTrimestre : JTextField validaMatricula()
txtFecha : JTextField obtenerDatosPrimerIngreso()
cmbCursosDisponibles : JComboBox validaMatricula()
btnAceptar : JButton buscaAlumno()
btnBuscar : JButton inscribirAlumno()
btnTerminar : JButton getSucursales()
btnInscribir : JButton
tblDatosCursos : JTable

evtAceptar()
actualizarCursosDisponibles()
initComponents()
inscribir()

beanReinscripcion
(from Use Case View)

getDatosCliente()
getDatosCurso()
setPreferenciaCliente()

86
CU - PAGOS
CASO DE USO

Proyecto: SAECH Fecha:


Autor: Talia G. Ramos Robles Clave:
Pedro Antonio Marcial Palafox

Nivel Alcance
Resumen muy general Organización (caja negra)
Resumen Organización (caja blanca)
X Actividad de Usuario X Módulo
Detalle Método
Descripción Breve

Se realizan los pagos correspondientes a cada uno de los conceptos a seleccionar de acuerdo a
cada alumno, generando la factura correspondiente al alumno.

Actores

Actor Principal
Administrador

Actores Secundarios
Eventos que lo inician
1 El Administrador presiona Pagos para la realización de un pago.
2 El Sistema muestra la interfaz grafica de Pagos.
Flujo de eventos primario
1 El administrador captura la matricula del alumno y presiona el botón Aceptar.
2 El sistema verifica si la matricula es la correcta y si el alumno existe en la base de datos.
3 El sistema despliega el nombre del alumno, el RFC y el trimestre.
El sistema verifica si el alumno tiene adeudos de pago, si tiene adeudos muestra un mensaje
4
de confirmación de pago.
5 El administrador presiona en el mensaje de confirmación de adeudo el botón Aceptar.
6 El sistema muestra el concepto de pago que adeuda el alumno.
El administrador introduce la cantidad que el alumno pagara a su adeudo y presiona el botón
7
Pagar.
El sistema valida la cantidad a pagar; si la cantidad es mayor a cero o la cantidad a pagar no
8
rebasa el monto a pagar.
El sistema despliega en la tabla “Conceptos por Pagar” los datos del concepto de pago que
9
el alumno pagara. Los datos son: Clave, Descripción, Cantidad, Precio, Descuento y Abono.
El sistema calcula el monto total del pago del alumno los cuales son subtotal, IVA y total; el
10
sistema muestra los valores en la pantalla.
11 El administrador selecciona un concepto de pago.
12 El Sistema verifica si al concepto de pago se le puede aplicar descuento y/o cantidad.
Si se le puede aplicar descuento y/o cantidad al concepto de pago el administrador
13
seleccionara el descuento y/o la cantidad al concepto de pago seleccionado.
14 El administrador introduce la cantidad de Pago/Abono y selecciona el botón Agregar.
El sistema valida la cantidad a pagar; si esta dentro del descuento incluido, la cantidad es
15
mayor a cero o la cantidad a pagar no rebasa el monto a pagar.
El sistema despliega en la tabla “Conceptos por Pagar” los datos del concepto de pago que
16
el alumno pagara. Los datos son: Clave, Descripción, Cantidad, Precio, Descuento y Abono.
El Sistema calcula el monto total del pago del alumno los cuales son subtotal, IVA y total; el
17
sistema muestra los valores en pantalla.
Si el alumno desea realizar otro pago, el administrador regresa al paso 11 las veces que sea
18
necesario.

87
El administrador selecciona la forma en que el alumno realizara el pago, tarjeta de crédito,
19
cheque o efectivo.
20 El administrador elige el botón generar recibo.
21 El sistema muestra un mensaje de confirmación de pago.
22 El administrador presiona el botón aceptar.
23 El sistema inserta los datos generados de la factura en la base de datos.
24 El sistema muestra un mensaje de confirmación de pago realizado.
25 El administrador presiona el botón aceptar.
26 El sistema limpia los campos.
27 Fin de caso
Flujo de eventos alternativos
2.1 Si la matricula es invalida despliega un mensaje de error.
2.2 Si el alumno no esta registrado se despliega un mensaje de error.
5.1 Si el alumno no desea pagar los adeudos el administrador presiona el botón cancelar.
8.1 Si la cantidad a pagar no es correcta el sistema envía un mensaje de error.
8.2 El administrador selecciona el botón Aceptar.
Si al concepto de pago no se le puede aplicar el descuento y/o cantidad el sistema no
12.1
permite al administrador seleccionar cualquiera de las dos opciones.
14.1 Si el Administrador desea cancelar el concepto de pago presiona el botón Cancelar.
Si el Administrador desea eliminar un concepto de pago ya agregado a la tabla
14.1.1 “Conceptos por Pagar”, este selecciona el concepto de pago a eliminar y presiona el botón
eliminar.
El sistema elimina los datos del concepto de pago eliminado de la tabla “Conceptos por
14.1.2
Pagar”.
15.1 Si la cantidad a pagar no es correcta el sistema envía un mensaje de error.
15.2 El administrador selecciona el botón Aceptar.
22.1 El administrador selecciona el botón cancelar.
22.2 El sistema limpia todos los campos de la pantalla de pagos.
Precondiciones
1 El Alumno ya tenga una matrícula (Se haya Inscrito)

Poscondiciones
1 El Alumno tiene únicamente el horario a un curso

Documentación Adjunta
1 Modelo de Interfaz
1 Modelo de Caso de Uso
1 Diagrama de Navegación de Pantallas.
1 Modelo de Estados
1 Diagrama de Colaboración
1 Modelo de Secuencia
1 Diagrama de Clases Dinámicas
Porcentaje de transacciones totales que cubre el caso: _____20_______________
Porcentaje de efectividad del proceso actual: _________70______________

88
MODELO DE INTERFAZ

DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

ERROR: Matricula
Erronea Si / No
Confirma
Eliminacion

Inicio EliminaConceptodePago

Pagos Aceptar
Aceptar
Recibo
Genera Recibo
Aceptar

Fin

adeudo
ERROR: Usuario BuscaAlumno
Invalido SI/NO

Confirma Adeudo
Alumno

89
DIAGRAMA DE SECUENCIA

CiMenuPrincipal CiPanelPagos CnPagos Pagos


: Administrador

seleccionaPagos
jMenuItemPagosActionPerformed()
Capturamatricula /
PresionaBotonAceptar
validaMatricula(String matricula)

getAlumno(String matricula)
getAlumno(String matricula)
return(VOAlumno)
return(VOAlumno)

showDatosAlumno()

getEventoPago(String matricula, String status) getEventoPago(String matricula, String status)


return(VOEventoPago)
return(VOEventoPago)

mensajeConfirmacionAdeudo()
Presiona Boton Aceptar
getRegistroMovimientos(String matricula,
String idConcepto) getRegistroMovimientos(String matricula,
String idConcepto)
return(ArrayList(VOMovimiento))
return(VOMovimiento)
showAdeudoExistente()
IntroduceCantidadPagar
/ Presiona Aceptar

validaPrecio(String precio)

inicializaTablaDetallePago(lista
DetallePago(VOConcpetoPago))

calculaCuentas()

show(Subtotal,IVA,Total)
seleccionaConceptoPago
PermiteDescuento(bandera)
ingresaDescuento /
ingresaAbono

Presiona Boton Agregar


validaPrecio(String precio)

inicializaTablaDetallePago(listaDetalle
Pago(VOConceptoPago))

calculaCuentas()

show(Subtotal,IVA,Total)
seleccionaFormaDePago
presionaBotonGenerarRecibo
showConfirmacionPago()

presionaBotonAceptar
construyeRegistros()

return(ArrayList(VOMovimiento))

construyeEventos()

return(ArrayList(VOEventoPago))

actualizaeventoPago(String matricula,
String fecha, String hora) actualizaeventoPago(String matricula,
String fecha, String hora)
True
True

setRegistoMovimientos(ArrrayList(
VOMovimiento))
setRegistroMovimientos(VOMovimiento)
True
True

setEventoPago(ArrayList(VOEventoPago))
setEventoPago(VOEventoPago)

True
True

showConfirmacionDePago()
presionaBotonAceptar

limpiaCampos()

90
DIAGRAMA DE CLASES DINÁMICAS

CiPagos CnPagos Pagos


VOPago : VoPago VOPago : VoPago
CiPanelPagos() VOAlumno : VOAlumno VOAlumno : VOAlumno
<<evento>> void eventoBtnAgregar() VOInscripcionCurso
<<evento>> void eventoDescuentoEspecial() CnPagos() VOConceptoPago
void eventoDescuentoNormal() VOAlumno getAlumno()
<<evento>> void eventoDescuento() VOInscripcionCurso getInscripcionCurso() VOAlumno getAlumno()
<<evento>> void eventoBtnAceptar() VOConceptoPago getConcepto() VOInscripcionCurso getInscripcionCurso()
<<evento>> void eventoBtnEliminar() VOEventoPago getEventoPago() VOEventoPago getEventoPago()
void eventoBtnGenerarRecibo() void setEventoPago() ArrayList getRegistroMovimientos()
void limpiaCampos() VOMovimiento getRegistrosMovimientos() ArrayList getListaConceptos()
void inicializaComboConcepto() void setRegistroMovimientos() void setEventoPago()
void inicializaTablaDetallePago() void actualizaEventoPago() VOMovimiento getRegistroMovimientos()
void eventocboCoceptos() boolean verificaDescuento() void setRegistroMovimientos()
floar calculaDescuentos() float calculaDescuento() void actualizaEventoPago()
void calculaCuentas() ArrayList calculaCuentas() VOConceptoPago getConcepto()
ArrayList construyeRegistros() ArrayList getListaConceptos() VOConceptoPago verificaDescuento()
ArrayList construyeEventos()
void validaMatricula()
String validaPrecio()

PagosBean
VOPago : VoPago
VOAlumno : VOAlumno
VOInscripcionCurso
VOConceptoPago
sessionContext : SessionContext
VOMovimiento void ejbCreate()
idSucursal : String VOAlumno void ejbRemove()
VOEventoPago idMovimiento : String VOConceptoPago matricula : String void ejbActivate()
idEventoPago : String matricula : String idConcepto : String apellidoPaterno : String void ejbPassivate()
matricula : String idConcepto : String descripcion : String apellidoMaterno : String void ejbSessionContext()
fecha : String monto : String permitedescuento : String nombre : String VOAlumno getAlumno()
hora : String cantidad : String precio : String calle : String VOInscripcionCurso getInscripcionCurso()
descripcion : String fecha : String numero : String VOEventoPago getEventoPago()
status : String hora : String VOConcpetoPago() colonia : String ArrayList getRegistroMovimientos()
idConcepto tipoMovimiento : String String getIdConcepto() codigoPostal : String ArrayList getListaConceptos()
tipoPago : String String getDescripcion() delegacion : String void setEventoPago()
VOEventoPago() String getPermiteDescuento() telefono : String VOMovimiento getRegistroMovimientos()
String getMatricula() VOMovimiento() String getPrecio() RFC : String void setRegistroMovimientos()
void setMatricula() Stringn getIdSucursal() void setIdConcepto() CURP : String void actualizaEventoPago()
String getIdEventoPago() String getIdMovimiento() void setDescripcion() correoElectronico : String VOConceptoPago getConcepto()
void setIdEventoPago() String getMatricula() void setPermiteDescuento() fechaNacimiento : String VOConceptoPago verificaDescuento()
String getFecha() String getIdConcepto() void setPrecio() fechaRegistro : String
void setFecha() String getMonto() tipoIngreso : String
String getHora() String getCantidad() status : String VoInscripcionCurso
void setHora() String getFecha() idSucursal : Integer matricula : String
String getDescripcion() String getHora()
idInscripcionCurso : String
void setDescripcion() String getTipoMovimiento() String getMatricula() idCurso : String
String getStatus() String getTipoPago() String getApellidoPaterno() trimestre : String
void setStatus() void setIdSucursal() String getApellidoMaterno() calificacionG1 : String
String getIdConcepto() void setIdMovimiento() String getNombre() calificacionG2 : String
void setIdConcepto() void setMatricula() String getCalle() calificacionC1 : String
void setIdConcepto() String getNumero() calificacionC2 : String
void setMonto() String getColonia() fechaInscripcion : String
void setCantidad() String getCodigoPostal()
void setFecha() String getDelegacion() VOInscripcionCurso()
void setHora() String getTelefono() String getMatricula()
void setTipoMovimiento() String getRFC() String getidInscripcionCurso()
void setTipoPago() String getCURP() String getCurso()
String getCorreoElectronico() String getTrimestre()
String getFechaNacimiento() String getCalificacionG1()
String getFechaRegistro() String getCalificacionG2()
String getTipoIngreso() String getCalificacionC1()
String getStatus() String getCalificacionC2()
Integer getIdSucursal() String getFechaInscripcion()
void setMatricula() void setMatricula()
void setApellidoPaterno() void setidInscripcionCurso()
void setApellidoMaterno() void setCurso()
void setNombre() void setTrimestre()
void setCalle() void setCalificacionG1()
void setNumero() void setCalificacionG2()
void setColonia() void setCalificacionC1()
void setCodigoPostal() void setCalificacionC2()
void setDelegacion() void setFechaInscripcion()
void setTelefono()
void setRFC()
void setCURP()
void setCorreoElectronico()
void setFechaNacimiento()
void setFechaRegistro()
void setTipoIngreso()
void setStatus()
void setIdSucursal()

91
CU – CIERRES
CASO DE USO

Proyecto: SAECH ver 0.1 Fecha: 26/Julio/2005


Autor: Pérez Palma Heriberto Clave: CRRE0 (Actualización)
Venegas Flores Rolando

Nivel Alcance
Resumen muy general Organización (caja negra)
Resumen x Organización (caja blanca)
Actividad de Usuario Módulo
x Detalle Método
Descripción Breve
Este caso de uso permite generar tres tipos de cierre de caja al terminar el cajero su sesión.
Ayudado por un asistente.

Actores
Actor Principal Cajero
Actores Secundarios
Eventos que lo inician
1 El cajero elige de la ventana de Pagos la opción “Generar Cierre”
Flujo de eventos primario
1 El Sistema presenta la ventana del "Asistente de Cierre" Con un párrafo explicativo de
los pasos a seguir para generar los Cierres.
2 El Cajero pulsa el botón Siguiente.
3 El Sistema presenta una ventana con el detalle de Cierre de Productos (CU-CIERRE_1)
4 El Cajero Consulta la información generada por el Sistema y Pulsa Siguiente
5 El Sistema cierra la ventana y a continuación presenta una ventana con el detalle de Cierre
de la Editorial (CU-CIERRE_2)
6 El Cajero Consulta la información generada por el Sistema y Pulsa Siguiente.
7 El Sistema cierra la ventana y a continuación presenta una ventana con el detalle de Cierre
General (CU-CIERRE_3)
8 El Cajero Consulta la información generada por el Sistema y Pulsa Imprimir.
9 El cajero acepta la impresión.
10 El cajero pulsa el botón terminar.

Flujo de eventos alternativos


9.1 En caso de no se encuentre la impresora, el Sistema despliega un mensaje de error y avisa
al usuario que en otra ocasión puede volver a generar el cierre.
9.2 El Cajero pulsa Aceptar.
9.3 El sistema cierra el asistente dando por concluida la transacción y regresa a la ventana de
pagos.
Precondiciones
1 Debe haberse iniciado una sesión como cajero
Poscondiciones
1 Ingreso a la pantalla de Cierre de Productos Escolares
Documentación Adjunta

92
1 Diagrama de Navegación de Pantallas
2 Layout de Pantalla de Asistente de Cierre
3 Diagrama de Secuencia
4 Diagrama de Colaboración

MODELO DE INTERFAZ

DIAGRAMA DE NAVEGACIÓN DE PANTALLAS

Inicio Cancelar Salir

Cierres

Cancelar
Pantalla de Asistente Siguiente Pantalla de Cierre
de Cierres Productos

Siguiente
Cancelar

Pantalla de
Cierre Editorial

Siguiente
Cancelar

Pantalla de Imprimir Pantalla de


Impresion Cierre General

Cancelar

Aceptar

93
DIAGRAMA DE SECUENCIA

oAsistente : oCi erreProductos : oCierreEditorial : oCierreGeneral : impresion : oImpresora :


: Cajero
CiCierre CiCierreDeProductos CiCierreEdi torial CiCierreGeneral ImpresionCierres Impresora
1 El Sistema presenta la ventana
del "Asistente de Cierre" Con
un párrafo explicativo de los generarCi erre()
pasos a seguir para generar los
Cierres.

2 El Cajero pulsa el botón onclickSiguiente( )


Siguiente.
show()

3 El Sistema presenta una


ventana con el detalle de Cierre de
CerrarVentana()
Productos (CU-CIERRE_1)
onClickSiguiente( )
4 El Cajero Consulta la
información generada por el
Sistema y Pulsa Siguiente

5 El Sistema cierra la ventana y a show()


continuación presenta una
ventana con el detalle de Cierre de
CerrarVentana()
la Editorial (CU-CIERRE_2)

6 El Cajero Consulta la
información generada por el onCli ckSi guiente( )
Sistema y Pulsa Siguiente.
show()
7 El Sistema cierra l a ventana y a
continuación presenta una
ventana con el detalle de Cierre
General (CU-CIERRE_3) CerrarVentana()

8 El Cajero Consulta la
información generada por el
Sistema y Pulsa Imprimi r. onClickImprimir( )

ImprimirCierre( )
ImprimirPagina( )

9 El cajero acepta la impresión. Muestra dialogo de impresión

10 El cajero pulsa el botón Aceptar i mpresi on


terminar.
Cerrar Asistente
CerrarVentana()

94
DIAGRAMA DE CLASES DINÁMICAS

CICierres CNCierres

show() <<ArrayList>> getCierreEditorial()


<<void>> initComponents() <<ArrayList>> getCierreProductos()
<<void>> l_txt_General_GranTotalActionPerformed() <<void>> AgregaCorte()
<<void>> l_btn_General_imprimirActionPerformed() <<void>> getCierreSubtotal()
<<void>> l_btn_CierreEditorialSiguienteActionPerformed() <<void>> UltimoCierre()
TablaModeloAbstracto <<void>> l_btn_CierreProductosSiguienteActionPerformed() Cierres(interface)
<<void>> l_btn_AsistenteSiguienteActionPerformed()
TablaModeloProductos() <<void>> onClickSiguienteAsistente() <<ArrayList>> getCierreEditorial()
getRowCount() <<void>> onClickSiguienteProductos() <<ArrayList>> getCierreProductos()
getColumnCount() <<void>> onClickSiguienteEditorial() <<void>> agregaCorte()
getValueAt() <<void>> onClickImprimir() <<void>> getCierreSubtotales()
getColumnName() <<void>> initTableProductos() <<void>> UltimoCierre()
setTablaModeloProducto() <<void>> setModeloTablaProductos()
getItems() <<void>> initTableEditorial()
CierresBean
<<void>> setModeloTablaEditorial()
<<void>> initTableTotales() ejbContex : EJBContext
<<void>> setModeloTablaTotales()
<<void>> initTableSubTotales() ejbCreate()
<<void>> setModeloTablaSubtotales() ejbRemuve()
<<void>> insertaNuevoCorteCierre() ejbActivate()
<<void>> initTableGeneral() ejbPassivate()
<<void>> setModeloTablaGeneral() <<seccionContext>> setSeccionContext()
<<ArrayList>> getCierreEditorial()
CierreHome <<ArrayList>> getCierreProductos)()
(interface) <<void>> AgregaCorte()
<<void>> getCierreSubtotales()
<<void>> UltimoCierre()
create()

VoCierre
idsucursal : String = ""
fecha : String = ""
hora : String = ""

<<void>> getIdSucursal()
<<void>> getFecha()
<<void>> getHora()
<<String>> setIdSucursal()
<<String>> setFecha()
<<String>> setHora()
<<String>> voProductos()

VoCierreEditorial VoCierreProductos
idConcepto : String = "" idConcepto : String = ""
descripcion : String = ""; descripcion : String = ""
cantidad : Sting = "" cantidad : Sting = ""
precio : String = "" precio : String = "
tipoPago : String = "" tipoPago : String = "

<<void>> getIdConcepto() <<void>> getIdConcepto()


<<void>> getDescripcion() <<void>> getDescripcion()
<<void>> getCantidad() <<void>> getCantidad()
<<void>> getPrecio() <<void>> getPrecio()
<<void>> getrTipoPago() <<void>> getrTipoPago()

95
CU – CIERRES - PRIMER PANTALLA
CASO DE USO

Proyecto: SAECH ver 0.1 Fecha: 11/abril/2005


Autor: Venegas Flores Rolando Clave: CRRE1
Pérez Palma Heriberto

Nivel Alcance
Resumen muy general Organización (caja negra)
Resumen x Organización (caja blanca)
Actividad de Usuario Módulo
x Detalle Método
Descripción Breve
Este caso de uso permite generar el tipo de cierre de caja no. uno

Actores
Actor Principal Cajero
Actores Secundarios
Eventos que lo inician
1 El cajero ha ejecutado el paso 2 de CU-Cierre_0
Flujo de eventos primario
1 El Sistema presenta una ventana donde aparece un detalle del cierre con los siguientes
datos:
i) Fecha de este cierre.
ii) En la parte media de la ventana los siguientes conceptos:
i.e.1) Número de Cambios de Horario e ingresos por este
concepto.
i.e.2) Número de Constancias e ingresos por este concepto.
i.e.3) Número de Credenciales e ingresos por este concepto.
i.e.4) Número de Exámenes extraordinarios e ingresos por
este concepto.
i.e.5) Número de Exámenes de Admisión e ingresos por este
concepto.
i.e.6) Número de Reposiciones de Tarjeta e ingresos por este
concepto.
ii.7) Número de Tarjetas Beca e ingresos por este concepto.
ii.8) Número de Tarjetas de Horario Mixto e ingresos por este
concepto.
ii.9) Número de Diplomas e ingresos por este concepto.
ii.10) Número de Cuotas de Laboratorio e ingresos por este
concepto.
iii) En la parte inferior derecha de la ventana desplegado aparecerá el
total por estos
conceptos.
iv) Del lado inferior izquierdo, dos campos con el nombre e ID del cajero
que genera el cierre.
2 El Cajero consulta la información que le interese y continúa con el CU-Cierre_0.
3 Fin de la Transacción.
Flujo de eventos alternativos

96
1.1 La clave verificada por el Sistema no coincide
1.2 El Sistema regresa al caso de uso CU-Cierre_0
Precondiciones
1 Debe haberse iniciado una sesión como cajero
Documentación Adjunta
1 Layout de Pantalla Cierre Productos

Porcentaje de transacciones totales que cubre el caso: ____________________

Porcentaje de efectividad del proceso actual: _______________________

MODELO DE INTERFAZ

97
CU – CIERRES - SEGUNDA PANTALLA
CASO DE USO

Proyecto: SAECH ver 0.1 Fecha: 27/Julio/2005


Autor: Venegas Flores Rolando Clave: CRRE2
Pérez Palma Heriberto

Nivel Alcance
Resumen muy general Organización (caja negra)
Resumen x Organización (caja blanca)
Actividad de Usuario Módulo
x Detalle Método
Descripción Breve
Este caso de uso permite generar el tipo de cierre de caja no. dos (Libros vendidos durante el
turno de caja)
Actores
Actor Principal Cajero
Eventos que lo inician
1 El cajero ha ejecutado el paso no. 4 de CU-Cierre_0
Flujo de eventos primario
1 El Sistema presenta una ventana donde aparece un detalle con los siguientes datos:
iii) Fecha en que se llevó a cabo el cierre (Encabezado).
iv) En la parte mediana de la ventana los siguientes conceptos:
ii.1) Número de Cursos 101 e ingresos por este concepto.
ii.2) Número de Cursos 201 e ingresos por este concepto.
ii.3) Número de Cursos 301 e ingresos por este concepto.
ii.4) Número de Cursos 401 e ingresos por este concepto.
ii.5) Número de Cursos 501 e ingresos por este concepto.
ii.6) Número de Cursos Intensivo (ingles lógico 100 hrs. en
casa) e ingresos por este concepto.
ii.7) Número de Libros de Texto e ingresos por este concepto.
ii.8) Número de libros de Tarea e ingresos por este concepto.
ii.9) Número de CD’s e ingresos por este concepto.
ii.10) Número de Cassettes e ingresos por este concepto.
iii) En la parte inferior derecha de la ventana desplegado aparecerá el
total por estos
conceptos.
v) Del lado inferior izquierdo, dos campos con el nombre e ID del
cajero que genera el cierre.

2 El Cajero consulta la información que le interese y continúa con el CU-Cierre_0.


3 Fin de la Transacción.

98
Flujo de eventos alternativos

Precondiciones
1 Debe haberse iniciado una sesión como cajero
Poscondiciones
1
Documentación Adjunta
1 Modelos de Interfaz

Porcentaje de transacciones totales que cubre el caso: ____________________

Porcentaje de efectividad del proceso actual: _______________________

MODELO DE INTERFAZ

99
CU – CIERRES - TERCERA PANTALLA

CASO DE USO

Proyecto: SAECH ver 0.1 Fecha: 27/Julio/2005


Autor: Venegas Flores Rolando Clave: CRRE3
Pérez Palma Heriberto

Nivel Alcance
Resumen muy general Organización (caja negra)
Resumen x Organización (caja blanca)
Actividad de Usuario Módulo
x Detalle Método
Descripción Breve
Este caso de uso permite generar el tipo de cierre de caja no. tres
Actores
Actor Principal Cajero
Eventos que lo inician
1 El cajero ha ejecutado el paso no. seis de CU-Cierre_0
Flujo de eventos primario
1 El Sistema presenta una ventana donde aparece tres rejillas con los siguientes datos:
vi) Fecha en que se llevó a cabo el cierre (Encabezado).
vii) En la parte izquierda de la ventana los siguientes conceptos:
ii.1) Número de Cursos 101 y cantidad.
ii.2) Número de Cursos 201 y cantidad
ii.3) Número de Cursos 301 y cantidad.
ii.4) Número de Cursos 401 y cantidad.
ii.5) Número de Cursos 501 y cantidad
ii.6) Número de Cursos Intensivo y cantidad
ii.7) Número de SP I y cantidad.
ii.8) Número de SP II y cantidad.
ii.9) Número de SP III y cantidad.
ii.10) Número de Literatura I y cantidad.
ii.11) Número de Literatura II y cantidad.
ii.12) Número de TC I y cantidad.
ii.13) Número de TC II y cantidad.
ii.14) Número de TC III y cantidad.
ii.15) Número de TC IV y cantidad.
ii.16) Número de Becas y cantidad.
viii) En la parte derecha superior de la ventana los siguientes conceptos
1) Numero de Inscripciones e ingreso por este concepto.
2) Número de Re-inscripciones e ingreso por este concepto.
3) Numero de ½ Becas e ingreso por este concepto.
4) Numero de 1/4 Becas e ingreso por este concepto.
5) Numero de Recomendados e ingreso por este concepto.
6) Numero de Descuentos e ingreso por este concepto.
7) Numero de A cuenta e ingreso por este concepto.
8) Numero de Resto e ingreso por este concepto.
ix) En la parte derecha inferior de la ventana los siguientes conceptos
1) Total de Cheques e ingreso por este concepto.

100
2) Total de Tarjetas e ingreso por este concepto.
3) Total de Efectivo e ingreso por este concepto.
x) En la parte inferior derecha de la ventana desplegada aparecerá el
gran total por estos conceptos.
xi) Del lado inferior izquierdo, dos campos con el nombre e ID del
cajero que genera el cierre.

2 El Cajero consulta la información que le interese y continúa con el CU-Cierre_0.


3 Fin de la Transacción.

Flujo de eventos alternativos

Precondiciones
1 Debe haberse iniciado una sesión como cajero
Poscondiciones
1
Documentación Adjunta
1 Layout de Pantallas de Cierre General e Impresión

Porcentaje de transacciones totales que cubre el caso: ____________________

Porcentaje de efectividad del proceso actual: _______________________

MODELO DE INTERFAZ

101
102
MODELO DE DATOS GENERAL SAECH

Encuesta
IdEncuesta
Folio(FK)
IdCurso(FK)
ComoSeEntero Candidato
Actividades Folio
SoyProfesionista 1 1 ApellidoPaterno 1
EstoyInscrito ApellidoMaterno
GiroEmpresa Nombre
NombreEmpresa Calle
DireccionEmpresa Numero
DelegacionEmpresa Colonia ConceptoPago Movimiento
ColoniaEmpresa CodigoPostal Idconcepto IdMovimiento
CodigoPostalEmpresa Delegacion Descripcion Matricula(Fk)
Puesto Telefono Clave IdConcepto(FK)
TelefonoTrabajo RFC Precio 1 *
Saldo
JefeInmediato CURP Cantidad
CargoJefeInmediato CorreoElectronico Fecha
ColegiaturaCubierta FechaNacimiento TipoPago
TipoMovimiento
*

Materia
IdMateria
Nombre
DetalleHorari
Descripcion
Horario 1 * o 1
Clave
Duracion 1 IdHorario IdHorario InscripcionCurso
Descripcion 1 Alumno
Predecesor Dia
Matricula Matricula
HoraInicio
Folio(FK) IdInscripcionCurso(FK)
1 HoraFin IDCurso(FK)
1
Trimestre
1 CalificacionG1
CalificacionG2
Profesor CalificacionC1
* CalificacionC2
IdProfesor FechaInscripcion
Nombre
ApellidoPaterno
1 *
ApellidoMaterno
*
Calle
Colonia Curso
Numero IdCurso
Delegacion * IdMateria(FK) MensajeClase
CodPostal IdHorario(FK) IdCurso(FK)
RFC IdProfesorG(FK) IdMensaje
2 *
CURP IdProfesorC(FK) 1 * Mensaje
CorreoElectronico IdSucursal(Fk) FechaPublicacion
TelefonoCasa * Aula
TelefonoOficina
TelefonoCelular 1

Usuario
Administrativo
1 IdUsuario
IdAdministrativo
Login
1 Nombre
Contraseña
Sucursal ApellidoPaterno
IdAdministrativo(FK)
1 1 ApellidoMaterno
IdSucursal 1 Matricula(FK)
ClaveSucursal IdProfesor(FK)
Nombre 1
Descripcion *
Telefono
MensajeSucursal
IdMensaje
IdUsuario(FK)
IdSucursal(FK)
Mensaje
FechaPublicacion
FechaCaducidad

103
CONCLUSIONES

Durante el desarrollo del sistema SAECH pudimos aplicar los conocimientos


adquiridos a lo largo de la carrera, así como aquellos que se aprendieron durante el
proyecto de investigación, como fueron, por ejemplo, el definir un proceso para poder
desarrollar un sistema, o ya individualmente cada uno de nosotros con el PSP (Personal
Software Process), nos ha permitido conocer y estimar los desempeños en
programación de cada uno de nosotros, así como darnos una idea de cuanto esfuerzo y
valor se requiere para elaborar programas individualmente.

Referente con el TSP (Team Software Process), al trabajar en equipo fue de gran
utilidad, ya que, en este caso el equipo en general, se dio cuenta de lo difícil que es
trabajar varían personas en un proyecto, y que a su vez los problemas que por ciertas
circunstancias tuvimos durante el desarrollo, también se les presentan a las grandes
organizaciones, tanto para poder cumplir las metas que se definieron desde un
principio en el lanzamiento del proyecto, hacer que se cumplan dichas metas, y poder
relacionarse con otro tipo de persona que posiblemente pueden tener las mismas o
diferentes ideas. Ya hablando del proceso en si de TSP, nos dimos cuenta que es, de
cierta forma ideal para poder desarrollar sistemas en equipo, ya que si se siguen los
lineamientos que este establece, se le puede dar un seguimiento al proyecto, de tal
forma que se conoce el estado en el que se encuentra y poder dar una evaluación a
dicho proyecto.

Entre los conocimientos que se adquirieron fue el TSP, el cuál pudimos


confirmar que es un proceso que ayuda al desarrollo de software, ya que da disciplina y
control en todas las etapas de un proyecto. Aunque nosotros no aplicamos el TSP
correctamente, nos ayudó a organizarnos mejor, ya que desde un principio en las juntas
que se deben de tener en el TSP, se definió el proceso que se debía seguir, cada una de
las fases, en nuestro caso la duración de los ciclos y que al final de cada ciclo se debía
tener una versión de la aplicación. Además que durante en el transcurso del proyecto se
planeaban juntas informativas sobre los avances del mismo y el estado en el que se
encontraba. Pero todo eso se iba viendo y organizando como veíamos el estado del
proyecto y de las fechas de terminación de los ciclos.

A la par con el TSP, se aplico Extreme Programming (XP), y ya en la práctica,


nos dimos cuenta que por un a parte nos ayuda a reducir el número de errores durante
la programación, aunque no todos lo aplicaron así, ya que a veces la pareja no se ponía
de acuerdo o por los tiempos, o por que no se acoplaban bien, algunas veces se
terminaba programando individualmente, pero cuando la pareja se acoplaba, se daba
cuenta que es una muy buena practica, ya que la inserción de errores se redujo y los
tiempos también.

El contacto con el cliente también fue un aspecto muy importante durante el desarrollo
del sistema, ya que pudimos conocer como es el trato real con el cliente, y aprendimos a
levantar requerimientos reales. Aunque cuando el equipo tomó el proyecto, se nos
entregaron requerimientos que con el transcurso del tiempo fueron cambiando, cada
vez que se mostraba una versión al cliente, y eso nos afectaba mucho ya que si el
cambio era muy brusco se tenía que volver a hacer el análisis y diseño, y ver que
también esos cambios no le afectaran a algún otro módulo. En esa parte de integrar
todo fue muy tediosa ya que por no seguir el estándar de codificación, a veces los

104
módulos individualmente funcionaban, pero ya integrados con otros empezaban a
fallar y eso nos demoraba bastante.

Creemos que el desarrollo del Sistema SAECH, nos permitió darnos cuenta de cómo
pudieran ser las cosas ya en un ámbito más laboral o para trabajar en una organización
o empresa. Tanto lo que se aprendió en PSP y TSP nos va a servir como base para
empezar a desarrollar más en forma sistemas y ver que se puede mejorar, en este caso
el proceso, de tal forma que si el proceso que seguimos no funciona para lo que
deseamos, hacer las modificaciones pertinentes al proceso para que al seguirlo, se
cumplan las metas que se proponen desde un principio.

En general el sistema nos ayudó mucho en la formación académica, gracias a que fue un
proyecto real, se realizó con cuidado y nos dejó un reflejo de lo que será nuestra labor
como programadores.

105
PROPUESTA DE MEJORA DEL PROCESO (PIP)
Número Descripción del Problema
de PIP
1 En el proceso inicial no se considero el tiempo necesario para aprender a
desarrollar páginas Web con herramientas como JSP.
2 No se considero ningún asesor para el desarrollo de páginas JSP y tuvimos
problemas para generar páginas que intercambian y actualizan
información de forma dinámica en tiempo real.
3 Otro problema que se presento fue que los requerimiento de algunos
módulos asignado, no estaban completos, además que hubo una ocasión
en que se tuvo que regresar a realizar el análisis y diseño, ya que lo que se
había entregado no estaba completo.
4 Otro problema que se presentó es que no se siguió el proceso, como se
había acordado en las juntas que se realizaron después del lanzamiento del
Proyecto. Además que debido al tiempo que se había definido para la
primera entrega del sistema, no se siguió con el proceso.
5 No se tomaron tiempos, ni tamaños y tampoco se llevo un registro de los
defectos que estuvimos obteniendo durante el desarrollo del módulo.
Además que no se siguieron las fases del proceso, sobre todo las fases de
revisión, y es ahí donde no se hizo el filtrado de defectos. Aunque la
mayoría de los defectos fueron de codificación y fáciles de resolver.
Aunque si se nos presentaron algunos de diseño, aunque muy pocos, pero
más difíciles de encontrar y resolver.
6 Se prolongo la fecha para liberar el módulo sin errores, además que
conforme se liberaba una versión, a causa de los requerimientos, se tuvo
que estar haciendo mantenimiento, hasta que ya cumplía con lo
especificado por el cliente.
7 La relación de trabajo de algunas parejas no fue la que se desearía para
poder trabajar de forma más dinámica, dado que las ideas que uno
proponía al otro no le convencían.
8 Los requerimientos eran muy escasos y por eso la implementación se hizo
poco eficiente.
9 La herramienta para hacer el despliegue de los EJB en el servidor
(DeployTool) también tiene errores por lo que se complicó encontrar los
errores al hacer pruebas, principalmente las de integración.
10 La tecnología de los EJB no se dominaba a un nivel lo suficientemente
avanzado como para desarrollar de una manera rápida y adecuada.
11 No se siguió correctamente el proceso de TSP, ya que no se tomaron
tiempos de desarrollo, ni se midió el tamaño del código, no se hicieron
revisiones, no se contaron defectos introducidos y no se realizaron PIP’s
para cada ciclo del proyecto.
12 Se enfrento con dificultades al aplicar XP al inicio de la realización del
diseño de la aplicación.
13 Se obtuvieron errores en la codificación debido al escaso conocimiento de
los EJB.

Propuesta Descripción de la Propuesta


Número
de PIP
1 Se da una semana más para el aprendizaje de JSP, se recorre la entrega
para el siguiente ciclo.

106
2 Crear un grupo, con los integrantes del proyecto, que dedique tiempo a
la investigación de temas que no dominan los integrantes del proyecto, y
establecer sesiones en las que se expondrán estos temas.
3 La propuesta que nosotros proponemos para poder resolver este tipo de
problema, es que cuando se asignen módulos, revisar con cuidado los
requerimientos de módulo, revisar que estén completos, entendibles, y
que en caso que haga falta alguna cosa (ya sea Modelo de Datos, Diseño
de Pantallas, etc.) revisar lo que se tiene, que este bien y realizar lo que
haga falta, ya sea Diseño de pantallas, Diagramas de Secuencia,
Diagramas de Clases, Modelo de Datos, Caso de Uso, etc. Para tener todo
completo y así continuar con la siguiente fase del Proceso.
4 Con referente a seguir el proceso que se define para el equipo, es realizar
un plan de proyecto en el cual se contemplen todas las fases del proceso
y de cierta forma proporcionar el tiempo, ya que como no se tiene
historia de cuanto tiempo se puede tardar en cada fase.
Ya que se tenga una estimación, cumplir con los tiempos que se
definieron y no saltarse ninguna fase, ya que eso pone desorden y ya
estando en la etapa de pruebas, el tiempo en ésta se alarga mucho, a
causa de los defectos que se van encontrando por un mal análisis y
diseño del caso.

5 Con respecto a la toma de tiempos, tamaños y defectos, como se estuvo


trabajando en parejas, asignar a alguno de los dos, para que vaya
registrando todo, tiempos, y defectos que se vayan encontrando
conforme se va desarrollando el módulo. Y que esa persona se encargue
de todo eso, tomando esa responsabilidad.
6 A causa de los malos requerimientos, el no seguir el proceso, en la etapa
de pruebas se prolongo para cada uno de los módulos. Lo que se propone
es seguir las fases del proyecto, sin saltarse ninguna de ellas, hacer
revisiones del análisis y diseño, que es donde se generan más errores en
la lógica del programa. Además de seguir el plan de proyecto con las
fechas que se establecieron para poder cumplir con la entrega del
módulo.
7 Rotar en cada ciclo de pareja.
8 Hacerle más visitas al cliente (las que sean necesarias) además de
preguntar con nuestro asesor todo lo relacionado con el sistema y la
lógica de negocio que sigue la empresa.
9 Esta herramienta es la única que se encontró para llevar a cabo el trabajo
por lo tanto no ha habido más opciones al respecto mas que hacer
pruebas exhaustivas e ir verificando que se este haciendo bien el
despliegue de los EJB’s. Otra solución propuesta (pero que sería muy
drástica) sería cambiar de servidor aplicativo (al servidor JBoss).
10 Aquí se deben usar los manuales de uso para esta tecnología además del
empleo de textos especializados y asesoramiento de personal capacitado.
11 La razón por la que no se siguió el proceso TSP, fue porque se tenían
fechas cortas para la entrega de los módulos, y entre todo el equipo
decidimos no seguir el proceso para poder cumplir con las fechas
acordadas. En pocas palabras le dimos prioridad al programa y no al
proceso. La solución que proponemos para que esto no le vuelva a pasar
a futuros equipos, es tomar en cuenta los tiempos que se consumen en el
proceso, y con esto poder hacer una estimación del tiempo total de
desarrollo (incluyendo el tiempo del proceso), y así entregar los módulos
en la fecha establecida, pero siguiendo el proceso.
12 La primer solución sería que cada integrante de la pareja de una
propuesta con argumentos válidos y seleccionar la que tenga los mejores
argumentos, si no se llega a un acuerdo, la solución mas drástica seria

107
rotar de pareja.
13 Si no se tiene un amplio conocimiento sobre esta tecnología, lo mejor
sería no correr el riesgo de usarla y utilizar otra tecnología con la cual se
este mas familiarizado, otra solución propuesta es la de antes de ponerse
a codificar, estimar un tiempo para la curva de aprendizaje con respecto
a la tecnología.

108
Notas y Comentarios
• Tuvimos errores de programación debido a que no se siguió el proceso,
el extreme programming fue muy difícil de llevar a cabo, ya que los
horarios de los integrantes diferían demasiado.
• Lo bueno de desarrollar en parejas, es que si se reduce mucho la
introducción de errores, aunque no se tomaron tiempos, y en tiempos se
tiene un registro de los defectos generados, el desarrollo del módulo fue
más rápido.
• La realización de pruebas automatizadas resulto de muy buena ayuda, ya
que nos ayudaba a encontrar las fallas del módulo, en donde ocurría el
error y que es lo que causaba que no funcionara de forma correcta, eso
también nos agradó bastante.
• Trabajar en equipo también fue bueno, y mas cuando todos teníamos
idea de lo que cada quien estaba realizando, es decir, todos conocíamos
el sistema, quien estaba trabajando en que módulo y si había algún
problema se discutía para poder encontrar una solución para ello.
• Con el uso de los Post-Tit, en donde escribíamos como íbamos, en que
versión de los módulos nos encontramos, la fase en que estábamos, etc.
Fue también buena, aunque a veces se nos pasaba actualizarlo y hacer
anotaciones para que los demás estuvieran enterados de lo que estaba
haciendo cada pareja. Así nos dábamos cuenta de que tan bien o mal
íbamos en la aplicación.
• Durante el proyecto nos encontramos con muchos errores de
programación y de integración debido a que no se siguió el proceso,
además no tomábamos en cuenta el tiempo de integración, y es por eso
que hubo ocasiones en las que nos quedábamos hasta muy tarde para
terminar entregables que eran para el otro día, todo esto se debió a que
no hubo una buena organización, ni disciplina de parte del equipo.
• El uso de XP fue complicado al inicio del caso de uso que se realizó, pero
con el tiempo al implementar este proceso se facilito esta tarea; además
de que al aplicarlo aprendimos que al realizar este proceso se mojara la
calidad en las distintas etapas como son planeación, diseño, codificación
y pruebas.
• Otro proceso que se dificulto fue el seguimiento de ciclos en la vida del
sistema ya que no pudimos aplicarlo completamente como fueron
planeadas las distintas tareas. Aunque este proceso ayuda a llevar un
control de los distintos casos de uso y las personas que realizan cada uno
de ellos, los entregables de cada etapa, etc.

109

También podría gustarte