Ingeniería de Software Modelos de análisis, diseño e implementación

Preview:

Citation preview

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.(Sirve para identificar el tipo de usuario)

Fig2. Pantalla de Contraseña.(Sirve para validar al usuario profesor)

Modelo del análisis … (3)

• Maquetas … (2)

Fig3. Pantalla de Comandos Profesor.(Sirve para que el profesor elija una acción)

Fig4. Pantalla de interfaz de consultas.(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. Crear la ventana principal con los parámetros adecuados

2. Cargar las imágenes a utilizar en la aplicación3. Crear los botones para identificar el Tipo de usuario4. Mostrar las imágenes y formato de la interfaz 5. Esperar la pulsación de uno de los dos botones

asociados a cada tipo de usuario6. Retornar el Tipo de Usuario

Fig1. Pantalla Principal.

Modelo del análisis … (5)

• DFD N2 para el Proceso 2

Fig2. Pantalla de Contraseña.

Fig3. Pantalla de Comandos Profesor.

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 N1Es el responsable decrear la Interfaz Gráficade 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); }else{ EmitirMensaje(hwnd,"Contraseña Incorrecta\nIntente de nuevo",MENSAJEERROR); } break; /*Finaliza: 2.2*/

int EmitirMensaje(HWND hwnd, char *texto, int tipo){ UINT uType; char titulo[64]; switch(tipo) { 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;