Modelo de ánalisis, diseño e implementación

Transcripción

Modelo de ánalisis, diseño e implementación
Ingeniería de Software
Modelos de análisis, diseño e
implementación
Descripción del sistema
•
Un profesor necesita un sistema de registro de tareas para cada una de sus
materias. Por cada ciclo escolar (semestre) imparte un máximo de 6 materias y un
mínimo de 1 materia. La cantidad de tareas que puede dejar a sus alumnos por
materia va de 0 a n y cada tarea está asociada a una de tres evaluaciones
parciales. El sistema en cuestión debe proporcionarle al profesor la capacidad de
registrar cada ciclo escolar con sus respectivas materias así como los alumnos
inscritos en cada materia. En el transcurso de un ciclo escolar el sistema debe
permitirle dar de alta, modificar o eliminar tareas. Una tarea tiene asociada la
siguiente información: una descripción que define lo que el alumno debe realizar,
la fecha de entrega y la evaluación parcial a la que pertenece. El sistema también
debe permitir al profesor registrar cuándo un alumno entrega una tarea así como
la calificación que se alcanzó. El sistema debe ser capaz de mostrar una lista de
tareas con su respectiva calificación y promedio acumulado por evaluación parcial.
Adicionalmente, el sistema también debe permitir la entrada de alumnos, los
cuales solo pueden consultar la lista de tareas por materia, esta información es lo
único que pueden ver pero no modificar, lo anterior hace necesario que al entrar
al sistema como profesor se solicite una contraseña.
Modelo del análisis
• DFD N0
Modelo del análisis … (2)
• Maquetas
Fig1. Pantalla Principal.
Fig2. Pantalla de Contraseña.
(Sirve para identificar el tipo de usuario)
(Sirve para validar al usuario profesor)
Modelo del análisis … (3)
• Maquetas … (2)
Fig3. Pantalla de Comandos Profesor.
Fig4. Pantalla de interfaz de consultas.
(Sirve para que el profesor elija una acción)
(Sirve para que el usuario elija la lista de tareas a mostrar)
Modelo del análisis … (2)
• DFD N1
Modelo del análisis … (4)
• Miniespecificación del Proceso 1
«Identificar tipo usuario»
1.
2.
3.
4.
5.
6.
Crear la ventana principal con los parámetros
adecuados
Cargar las imágenes a utilizar en la aplicación
Crear los botones para identificar el Tipo de usuario
Mostrar las imágenes y formato de la interfaz
Esperar la pulsación de uno de los dos botones
asociados a cada tipo de usuario
Retornar el Tipo de Usuario
Fig1. Pantalla Principal.
Modelo del análisis … (5)
• DFD N2 para el Proceso 2
Fig3. Pantalla de Comandos Profesor.
Fig2. Pantalla de Contraseña.
Modelo de análisis … (6)
• DFD N2 para el Proceso 3
Fig4. Pantalla de interfaz de consultas.
Modelo del diseño
• Primera aproximación del primer corte al DFD N1
Modelo del diseño … (2)
• Refinamiento de la primera aproximación del
DFD de N1
Es el responsable de
crear la Interfaz Gráfica
de Usuario (IGU)
Modelo del diseño … (3)
• Primera aproximación de los primeros cortes al DFD N2
del Proceso 2
Modelo del diseño … (4)
• Refinamiento de la primera aproximación para el Proceso 2
Modelo del diseño … (5)
• Primera aproximación de los primeros cortes al DFD N2
del Proceso 2
Modelo del diseño … (6)
• Refinamiento de la primera aproximación para el Proceso 3
Modelo del diseño … (7)
• DE para los incrementos 1, 2 y 3
Implementación
• DE’s con anotaciones de implementación
/*Inicia: MCP*/
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
/*This is the handle for our window */
MSG messages;
/* Here messages to the application are saved */
WNDCLASSEX wincl;
/* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
/* This function is
called by windows */
/*… Aquí sigue más código de la plantilla*/
}
/*Finaliza: MCP*/
/*Inicia: Gestor de interacción con el usuario*/
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
static HBITMAP hBitmapProf, hBitmapAlum;
static HWND hBotonProf, hBotonAlum, hBotonSalir, hBotonRegresar;
/*… Aquí sigue más código*/
switch (message)
/* handle the messages */
{
case WM_COMMAND:
switch(LOWORD(wParam)) {
/*Inicia: 2 Procesar Comandos Profesor*/
case ID_BTNPROF:
edo = EDOPROF1;
/*Invocación a 2.1*/
SendMessage(hwnd,WM_COMMAND,(WPARAM) ID_MSGHIVAL, (LPARAM) PROFESOR);
break;
/*………….. Y sigue más código*/
Implementación … (2)
• DE’s con anotaciones de implementación …
/*Inicia: 2.1 Habilitar Interfaz de validación de usuario*/
case ID_MSGHIVAL:
ShowWindow(hBotonAlum,FALSE);
ShowWindow(hBotonProf,FALSE);
ShowWindow(hCtrlClave,TRUE);
ShowWindow(hBotonRegresar,TRUE);
ShowWindow(hBotonValidarUProf,TRUE);
SetFocus(hCtrlClave);
TipoUsuario = lParam;
strcpy(szMensaje,"Introduzca contraseña de profesor");
InvalidateRect(hwnd, NULL, TRUE);
break;
/*Finaliza: 2.1 Habilitar Interfaz de validación de usuario*/
/*Inicioa: 2.2 Validar usuario Profesor*/
case ID_BTNVALIDAR:
/*Obtener la Contraseña editada*/
GetDlgItemText(hwnd, ID_TXTCLAVE, szClave, 31);
if(!strcmp(szClave,"hola")){
/*Invocación a 2.3*/
SendMessage(hwnd,WM_COMMAND,(WPARAM) ID_MSGHICOM, (LPARAM) PROFESOR);
int EmitirMensaje(HWND hwnd, char *texto, int tipo)
}else{
{
EmitirMensaje(hwnd,"Contraseña Incorrecta\nIntente de nuevo",MENSAJEERROR);
UINT uType;
}
char titulo[64];
break;
switch(tipo)
/*Finaliza: 2.2*/
{
case MENSAJEERROR:
strcpy(titulo,"Error");
uType = MB_OK | MB_ICONERROR;
break;
case INFORMACION:
strcpy(titulo,"Información");
uType = MB_OK | MB_ICONINFORMATION;
break;
case CONFIRMACION:
strcpy(titulo,"Confirmación");
uType = MB_YESNO | MB_ICONQUESTION;
break;
}
return MessageBox(hwnd,texto,titulo,uType);
}
Implementación … (3)
• Diagrama de estados para el requisito implícito de regresar
entre pantallas y la codificación del comando regresar.
case ID_BTNREGRESAR:
if(edo == EDOPROF1 || edo == EDOALUMNO){
SendMessage(hwnd, WM_COMMAND, (WPARAM) ID_MSGHIINI, (LPARAM) NOUSUARIO);
edo = EDOINICIO;
}else if(edo == EDOCONSULTAR){
SendMessage(hwnd, WM_COMMAND, (WPARAM) ID_MSGHICOM, (LPARAM) PROFESOR);
edo = EDOPROF2;
}
break;

Documentos relacionados