ESCUELA POLITÉCNICA NACIONAL ESCUELA DE FORMACIÓN DE TECNÓLOGOS DESARROLLO DE SISTEMA DE ADMINISTRACIÓN ESTUDIANTIL DE LICENCIAS TIPO C PARA LA ESCUELA DE CONDUCCIÓN SAN FRANCISCO AUTOCLUB PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE TECNÓLOGO EN ANÁLISIS DE SISTEMAS INFORMÁTICOS ESPÍN BAQUERO DIANA ALEJANDRA [email protected] DIRECTOR: ING. LUZ MARINA VINTIMILLA [email protected] Quito, Julio 2013 DECLARACIÓN Yo Diana Alejandra Espín Baquero, declaro bajo juramento que el trabajo aquí descrito es de mi autoría; que no ha sido previamente presentada para ningún grado o calificación profesional; y, que he consultado las referencias bibliográficas que se incluyen en este documento. A través de la presente declaración cedo mis derechos de propiedad intelectual correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la normatividad institucional vigente. __________________________________ DIANA ALEJANDRA ESPÍN BAQUERO CERTIFICACIÓN Certifico que el presente trabajo fue desarrollado por Diana Alejandra Espín Baquero, bajo mi supervisión. ________________________ Ing. Luz Marina Vintimilla DIRECTOR DEL PROYECTO AGRADECIMIENTO Mi agradecimiento es para mi familia, mi esposo y mi hija. Gracias Andrés por todo, por ser mi compañero de vida, mi amigo, mi apoyo, la persona que siempre ha estado junto a mí en las buenas y en las malas, por enseñarme a vivir y convencerme de que se puede hacer a un lado las telarañas y vivir feliz. Quiero agradecer también a mi madre quien siempre estuvo apoyándonos y que con su ejemplo me demostró que nunca es tarde para luchar por lo que se quiere. Gracias por nunca dejar de presionarme. A mis hermanas quienes siempre estarán presentes aunque nuestros trabajos no lo permitan. También de manera muy especial a l@s “Inges” de la “Poli” quienes siempre tuvieron palabras de alago para nosotros y quienes con muchas de sus frases nos inspiran a salir de aquí y apuntar alto. En especial a la Ingeniera Luz Marina Vintimilla a quien agradezco mucho su tiempo y apoyo. Diana. DEDICATORIA Quiero dedicar este trabajo a mi mentor, apoyo, compañero, amigo y esposo Andrés Ramos, ya que sin ti, esto no hubiese sido posible. A mi hija Valentina, quien espero llegue lejos y siempre manteniendo esa esencia. Quien con su amor ha sabido siempre sacarnos sonrisas hasta en los peores momentos con su admirable madurez e inteligencia. A mi madre quien siempre luchó por mis hermanas y por mí. Y a quien espero verle siempre feliz. A mi padre, quien me dio muchas enseñanzas y valores, quien me hace falta todos los días de mi vida. ÍNDICE DE CONTENIDOS Resumen.………………………………………...……………………………………….1 1. Capítulo I: Generalidades………………………………………………………….2 1.1. Ámbito del proyecto………………………………………………………....2 1.2. Planteamiento del problema……………………………………………….3 1.2.1. Mercado meta……………………………………………………...4 1.2.2. Proceso en estudio...……………………………………………...4 1.3. Formulación y sistematización del problema…………………………….8 1.3.1. Formulación………………………………………………………..8 1.3.2. Sistematización..…………………………………………………..8 1.4. Objetivos de la investigación………………………………………………8 1.5. Justificación del proyecto…………………………………………………..8 1.6. Análisis de Costos…………………………………………………………..9 2. Capítulo II: Fundamento teórico………………………………………………….10 2.1. Ingeniería de software…………………………………………………..…10 2.1.1. Software…………………………………………………………...11 2.1.1.1. Características del Software…………………………..11 2.1.2. Fases genéricas………………………………………………….12 2.1.2.1. Fase de definición……………………………………..13 2.1.2.2. Fase de desarrollo……………………………………..13 2.1.2.3. Fase de mantenimiento………………………………..14 2.2. Base de datos……………………………………………………………....14 2.3. Microsoft SQL Server 2008………………………………………………..16 2.4. Microsoft SQL Server Management Studio 2008 Express…………….18 2.5. Microsoft Office 2010………………………………………………………20 2.5.1. Microsoft Access 2010……….………………………………….21 2.6. ODBC………………………………………………………………………..26 2.7. Visual Basic 7.0…………………………………………………………….29 2.7.1. VBA 7.0……………………………………………………………31 3. Capítulo III: Marco metodológico……………………………………………...…32 3.1. Metodología RUP…………………………………………………………..32 3.1.1. Características……………………………………………………33 3.1.2. Ciclo de vida………………………………………………………34 3.2. Construcción del sistema…………………………………………………35 3.2.1. Fase de inicio…………………………………………………….35 3.2.1.1. Modelado de negocio…………………………………36 3.2.1.2. Análisis de requerimientos……………………………37 3.2.1.3. Productos…………….…………………………………37 3.2.1.3.1. Documento Visión……………………………37 3.2.1.3.2. Diagramas de casos de uso...………………37 3.2.2. Fase de elaboración…….……………………………………….39 3.2.2.1. Análisis y diseño…….…………………………………39 3.2.2.2. Productos…………….…………………………………40 3.2.2.2.1. Diagrama de clases………………………….40 3.2.2.2.2. Modelo entidad – relación…..………………40 3.2.2.2.3. Diagrama de secuencia….………………….41 3.2.2.2.4. Diagrama de estados…….………………….42 3.2.2.2.5. Diagrama de colaboración…….……………44 3.2.3. Fase de construcción….…………………………………………45 3.2.3.1. Implementación…….…………………………………..45 3.2.4. Fase de transición….……………………………………………46 3.2.4.1. Pruebas…….……………………………………………46 3.2.4.2. Despliegue…….………………………………………..48 Conclusiones.…………………………………………………………………………. 49 Recomendaciones…………………………………………………………………….50 Bibliografía……………………………………………………………………………...51 Anexos…………………………………………………………………………………...53 ÍNDICE DE FIGURAS Figura 2.1. Fases del software………………………………………………………..13 Figura 2.2. Base de datos……………………………………………………………..15 Figura 2.3. SQL Server 2008 en el contexto de desarrollo………………………..17 Figura 2.4. Access y su motor ACE.………………………………………………….22 Figura 2.5. Arquitectura del motor ACE..…………………………………………….23 Figura 2.6. Trabajo de OBDC…………..……………………………………………..26 Figura 3.1. Historia de RUP…………….……………………………………………..33 Figura 3.2. Modelos desarrollados en flujos de trabajo de RUP…………….……33 Figura 3.3. Fases del ciclo de vida de RUP…………….…………………….……..35 Figura 3.4. Actor - Diagrama de casos de uso..………………………………..…..38 Figura 3.5. Caso de uso………………………….……………………………………38 Figura 3.6. Límite del sistema…………………...………………………………....…38 Figura 3.7. Caso de uso general………………...……………………………….......38 Figura 3.8. Actor - Diagrama de secuencia……..………………………………..…41 Figura 3.9. Objeto activo - Diagrama de secuencia……..……………………..…..42 Figura 3.10. Mensajes - Diagrama de secuencia…..……..……………………..…42 Figura 3.11. Diagrama de secuencia de gestión de estudiante del SAESFAC…42 Figura 3.12.Nodos – Diagrama de estados………………………………………….43 Figura 3.13.Estado – Diagrama de estados…………………………………………43 Figura 3.14. Flujo – Diagrama de estados…………………………………………..43 Figura 3.15. Diagrama de estados de curso del SAESFAC……………………….44 Figura 3.16 Diagrama de colaboración de cierre de matrículas del SAESFAC…45 ÍNDICE DE TABLAS Tabla 1.1 Horas de capacitación…………………………………………………..5 Tabla 2.1. Lista de herramientas de SQL Server………………………………..19 Tabla 2.2. Tabla de datos SQL vs. Access……………………………………….24 RESUMEN La presente tesis muestra los principales aspectos del desarrollo de un Sistema de Administración Estudiantil para la Escuela de Conducción San Francisco AutoClub de la Universidad San Francisco de Quito. El Sistema creado será utilizado únicamente para los estudiantes del curso previo a la obtención de la licencia profesional tipo “C” el cual tiene una duración de 6 meses. El sistema desarrollado cumplirá las siguientes funciones: registro de alumnos, asignación de aulas, asignación de profesores por materia, registro de notas y asistencia, generación de reportes de calificaciones, listado de estudiantes matriculados, suspensos y graduados. Para dicho desarrollo se utilizó herramientas Microsoft. En la parte de gestión de base de datos se trabajó con Microsoft SQL Server 2008. Para el front-end se recurrió a la herramienta de la suite Office 2010 “Microsoft Access 2010” con soporte de VBA. 1 CAPÍTULO I 1. GENERALIDADES En el presente capítulo se considerará la descripción específica del ámbito en el que se ha desarrollado el Sistema de Administración Estudiantil de la escuela de conducción San Francisco AutoClub y por sobre todo se definirán los objetivos, justificativos y proyección financiera que enmarcarán este trabajo. 1.1. ÁMBITO DEL PROYECTO El Sistema de Administración Estudiantil desarrollado para el San Francisco AutoClub SAESFAC, está basado en algunos aspectos básicos: registro de alumnos, asignación de aulas, carga de notas de teoría y práctica de los cursos previos a la obtención de la licencia profesional tipo C. El manejo de los procesos mencionados a través del sistema permite a la escuela de conducción un correcto manejo de la información para poder presentarla a sus alumnos y a las autoridades de la Agencia Nacional de Tránsito. El Sistema cuenta con restricciones de acceso el cual es permitido únicamente al personal del San Francisco AutoClub SFAC. No se generalizó el acceso al sistema a los estudiantes ya que éstos se encuentran en un target medio-bajo lo cual nos determina que no tienen capacidades ni económicas ni cognoscitivas para el acceso a un sistema de administración estudiantil. Por lo tanto los reportes generados por el sistema se presentan a los usuarios finales como impresiones físicas o descargas en Excel. El presente sistema permitirá al personal de SFAC matricular alumnos, registrar notas de teoría, práctica, supletorios y grados dependiendo del estado en el cual se encuentre el curso en ese momento ya que esto impedirá que se sobrepase reglas y tiempos de entrega de información implantados por la Agencia Nacional de Tránsito. 2 1.2. PLANTEAMIENTO DEL PROBLEMA San Francisco AutoClub es una escuela de conducción que capacita y forma a futuros conductores. Actualmente tiene una capacidad de mil estudiantes. “Somos una escuela de capacitación y formación de conductores aprobada por la Agencia Nacional de Tránsito, cuyos cursos son válidos para obtener licencias no profesionales y licencias profesionales. A más de los cursos regulares aprobados por la ANT, brindamos servicios tales como la evaluación y certificación de conductores profesionales y noprofesionales, cursos de conducción defensiva, conducción evasiva y de protección, conducción ofensiva, cursos eco-drive, motociclismo defensivo y ofensivo, diseño de sistemas integrales para la gestión del transporte, así como otros productos y servicios diseñados según la necesidad de cada cliente. Por ser parte de la Universidad San Francisco de Quito (USFQ) contamos con su aval técnico y académico, conformado por instructores civiles, preparados en diversas áreas de la planificación del tránsito y la conducción avanzada. Operamos desde enero del 2006 y hasta la fecha hemos graduado a más de 12.207 nuevos conductores entre no profesionales y profesionales.”1 La escuela de conducción San Francisco AutoClub busca como objetivo “Generar soluciones para la movilidad con creatividad y pasión”. El San Francisco AutoClub está encaminado a ser una escuela de conducción y capacitación en tránsito que lidere en asesoría, capacitación e investigación en la gestión de la movilidad con un alto respeto por la vida aplicando para esto el respeto, la honestidad y el profesionalismo. La escuela de conducción brinda cursos de conducción previo la obtención de las licencias tipo B (Sportman) y tipo C (Profesional). Las licencias tipo B se las obtiene para conducir vehículos livianos sin ningún fin comercial. Las licencias 1 http://www.usfq.edu.ec/sobre_la_usfq/servicios/varios/autoclub/Paginas/sobre_nosotros.aspx 3 Profesionales tipo C son obtenidas para conducir taxis convencionales, taxis ejecutivos, camionetas livianas o mixtas de hasta 3500 kg y de hasta 8 pasajeros y cualquier vehículo liviano siempre y cuando el conductor se vea beneficiado económicamente por conducirlo. 1.2.1. MERCADO META El San Francisco AutoClub tiene dos mercados meta: uno para los alumnos de la licencia tipo B y otro para los estudiantes de la licencia tipo C. Éstos últimos son hombres y mujeres mayores de 18 años que ya tengan la licencia tipo B o que hayan al menos aprobado el 4to curso del colegio. La escuela realiza un proceso de selección para determinar si el aspirante cuenta con los conocimientos mínimos como para poder acceder a la educación brindada por el AutoClub. Los cursos de la licencia tipo C son muy cotizados ya que en la ciudad de Quito las únicas entidades autorizadas para realizados son el Sindicato de Choferes Profesionales de Pichincha y el San Francisco AutoClub. 1.2.1. PROCESO EN ESTUDIO El proceso que tomaremos para su estudio para la aplicación de esta tesis será el relacionado con el curso de conducción previo a la obtención de la licencia de conducción profesional tipo C. Los cursos de conducción de la licencia tipo C se encuentran regulados por la Agencia Nacional de Tránsito ANT, principal autoridad reguladora de tránsito y transporte terrestre del Ecuador. El curso contempla 480 horas de capacitación y su distribución se las puede encontrar en la Tabla 1.1 Para iniciar con un curso de la licencia tipo C la ANT debe enviar una aprobación de apertura de matrículas, una vez recibida esta aprobación inicia el proceso de matriculación de aspirantes, para esto el estudiante debe acercarse a la escuela con los siguientes documentos: 4 • Dos copias a color de aprobación al menos del 1er año de bachillerato (certificada por el colegio y notariadas); o alternativamente, dos copias a color de la licencia tipo B. • Dos copias a color legibles de la cédula de identidad y papeleta de votación. • Dos copias a color legibles del certificado del tipo sanguíneo (cualquier laboratorio). • Original y copia a color de certificado médico de salud actualizado (máximo 3 meses) de cualquier centro de salud (público o privado). • Cuatro fotos tamaño carné a color. • Recibo de depósito bancario por el valor de la matrícula (USD 408). CREDITOS BÁSICOS Educación Vial 64 Ley y Reglamento de TTTSV 64 Mecánica Básica 48 Psicología Aplicada a la Conducción 32 Computación 32 Primeros Auxilios 16 Educación Ambiental 16 SUMAN 272 CREDITOS DE ESPECIALIZACIÓN Conducción Vehicular 32 Practica de Conducción 32 Relaciones Humanas 48 Atención al Cliente 32 Inglés Básico 32 Geografía Urbana 32 SUMAN 208 TOTAL HORAS LICENCIA "C" 480 Tabla 1.1 Horas de capacitación Se emite una factura por el valor del pago de la matrícula. Esta factura se emite a través del sistema de facturación generado por el departamento de Servicios Integrados de la USFQ. 5 “Al momento de entregar esta documentación, se asignará un turno para entrevista y/o ensayo de admisión y exámenes sensométricos y psicosomático, mismos que deben ser aprobados para la admisión al curso”.2 Una vez aprobados, los aspirantes escogen el horario de teoría y el horario de práctica. La teoría los estudiantes la recibirán durante los 6 meses que dura el curso dos horas diarias de lunes a viernes y los horarios son desde las 07h00 hasta las 21h00. En cuanto a la práctica los estudiantes reciben capacitación durante 3 semanas consecutivas dentro de los seis meses del curso, los horarios son igualmente desde las 07h00 hasta las 21h00, los estudiantes por lo tanto no pueden escoger el mismo horario para la teoría como para la práctica. Después del proceso de matrículas se procede a ordenar alfabéticamente la lista de estudiantes matriculados, se asigna un “código”: un número consecutivo que va desde el 1 al primer estudiante hasta el último número al último alumno de la lista. Luego de esto se procede a la asignación de aulas. El director de la escuela designa los profesores en los distintos horarios y en cada una de las aulas. Los alumnos deben asistir como mínimo al 80% de las horas de cada una de las materias caso contrario pierde el curso por inasistencia ya que no tiene opción a rendir examen supletorio. En la práctica deben asistir un mínimo de 90% de las horas, caso contrario deben recuperarlas para que estén habilitados para rendir el examen final de práctica. La nota mínima necesaria para aprobar las materias de teoría y práctica es de 16/20, caso contrario tienen derecho a un único examen supletorio en el cual el puntaje mínimo es igualmente 16/20. 2 http://www.usfq.edu.ec/sobre_la_usfq/servicios/varios/autoclub/licencias/Paginas/licencias_profesionales.aspx 6 Siempre y cuando el estudiante haya aprobado todas y cada una de las materias de teoría y de práctica se lo habilita para rendir el examen de grado que es una recopilación de todas las materias. El puntaje mínimo para aprobar el examen de grado es de 16/20 si el estudiante no consigue este puntaje tiene la opción de un examen supletorio en el cual el puntaje mínimo es de 16/20. Los estudiantes que hayan aprobado el examen de grado son los graduados que podrán obtener los documentos necesarios para sacar su licencia profesional en la ANT. Los cursos de licencia tipo C cuentan con un gran número de estudiantes por lo cual el manejo de su información es de vital importancia para el AutoClub. Hoy en día ésta información se la maneja de manera conjunta en un archivo de Excel que abarca toda la información de dichos estudiantes. El uso de este tipo de archivos para el manejo de información cuenta con los siguientes inconvenientes: • El archivo no es multiusuario. • No permite tener pistas de auditoría informática. • No puede ser auto respaldable. La pérdida o maleabilidad de la información de los alumnos de la licencia tipo C sería sumamente perjudicial para el correcto trabajo del AutoClub y también para sus estudiantes. Para la solución del problema se propone la creación de un sistema informático de administración estudiantil para el manejo de todos los datos de los alumnos de la licencia tipo C que permita tener correctos respaldos, pistas de auditoría y que brinde la oportunidad de obtener reportes con la información recopilada. 7 1.3. FORMULACIÓN Y SISTEMATIZACIÓN DEL PROBLEMA 1.3.1. FORMULACIÓN ¿Cuáles son las mejores características de la ingeniería de software que se puede ofrecer a la escuela de conducción San Francisco AutoClub para el correcto manejo de la información de los alumnos de la licencia tipo C? 1.3.2 SISTEMATIZACIÓN: ¿Qué modelo de datos se requiere? ¿Cuáles son las herramientas de desarrollo más apropiadas para el proyecto? ¿Cuáles son las características de la arquitectura física y de programación que se debe diseñar para este proyecto? 1.4. OBJETIVOS DE LA INVESTIGACIÓN 1.4.1 OBJETIVO GENERAL Desarrollar un sistema de administración estudiantil de licencias tipo C para la escuela de conducción San Francisco AutoClub 1.4.2. OBJETIVOS ESPECÍFICOS 1. Seleccionar las herramientas de desarrollo más apropiadas para el proyecto. 2. Diseñar características de la arquitectura física y de programación para este proyecto. 3. Programar los módulos del sistema. 4. Verificar la funcionalidad del sistema. 1.5. JUSTIFICACIÓN DEL PROYECTO Con el desarrollo de un sistema informático para el manejo de datos de estudiantes de la licencia tipo C de la escuela de conducción San Francisco AutoClub se optimizará el manejo académico de los estudiantes para, de esta 8 manera, tener la información necesaria en tiempo real a varios usuarios del proceso académico. El sistema ayudará al registro de estudiantes; asignación de aulas y profesores; registro de notas; creación de reportes; impresión de cuadros de notas, certificados, títulos y permisos de aprendizaje. 1.6. ANÁLISIS DE COSTOS HARDWARE 1 Laptop Intel Core 2 Duo 1.8 GHz, 4GB, HD 150GB, Monitor 14" $ 800,00 1 Impresora Samsung SCX-410, laser toner, multifunción $ 250,00 SOFTWARE Microsoft Office 2010 Microsoft Sql Server 2008 $ 349,00 $ 4.000,00 RECURSOS HUMANOS 1 Analista de sistemas (costo por hora $10,00 * 200 horas) $ 2.000,00 1 Desarrollador (costo por hora $8,00 * 120 horas) $ 500,00 1 Tester (costo por hora $6,00 * 40 horas) $ 240,00 OTROS Gastos indirectos $ 100,00 Suministros de oficina Servicios de internet TOTAL $ 8.239,00 Estos costos son financiados en su totalidad por San Francisco AutoClub, tomando en cuenta que la empresa es la beneficiaria única y directa. 9 CAPÍTULO II 2. FUNDAMENTO TEÓRICO En el presente capítulo se documentará la teoría en la cual se basa el desarrollo del Sistema de Administración Estudiantil del San Francisco AutoClub y se realizará una descripción de las herramientas a ser utilizadas en este proyecto. 2.1. INGENIERÍA DE SOFTWARE En la actualidad los sistemas y el software en sí son recursos sumamente importantes para organizaciones, empresas y usuarios en general ya que éstos se encuentran en varios medios usados diariamente tanto en asuntos personales, laborales y educativos. Es por esto que una ingeniería de software es tan necesaria, para que con bases sólidas y bien establecidas se pueda ofrecer soluciones efectivas, necesarias y sustentables a los diferentes usuarios. La ingeniería de software es por lo tanto la esquematización de reglas, normas, herramientas, técnicas y métodos que rigen la construcción, administración, mantenimiento, planificación y demás actividades que estén ligadas con la creación en sí del software.3 El profesional de esta rama, el Ingeniero de Software debe considerar el análisis previo de la situación, el diseño del proyecto, la programación o desarrollo del software, las pruebas, correcciones y mantenimientos del sistema y su correcta implementación y sociabilización. El ingeniero de software gestiona el proyecto a fin de que éste se desarrolle dentro de los parámetros esperados por empleados y clientes. Dentro de la gestión que debe realizar el profesional está el tomar en cuenta el ciclo de vida del software. 3 PRESSMAN, Roger. Ingeniería de Software, Un Enfoque Práctico. Mc Graw Hill, 2002. México. pp. 14 10 En la actualidad, con un mundo tan inmerso en la tecnología, la ingeniería de software está en todos lados, industrias, fábricas, escuelas, hogares, empresas públicas y privadas, etc. es por esto que el ingeniero de software debe cumplir con un buen trabajo para poder cubrir los, cada vez más exigentes, requerimientos de los usuarios. Esto sin dejar de lado que cada funcionalidad o rasgo adicional significan más tiempo y dinero invertidos en el proyecto. La Ingeniería de Software es una disciplina en la cual están comprendidos los diferentes aspectos de la producción del software desde la concepción hasta el mantenimiento final. Establece una disciplina que los profesionales las apliquen a fin de obtener soluciones de alta calidad.4 2.1.1. SOFTWARE Es el producto que elabora o desarrolla el Ingeniero de Software. El software va desde programas que pueden correr en cualquier generación computador así como todo lo relacionado con representaciones virtuales de imágenes, texto, audio y video. Software es el conjunto de programas que son desarrollados en el entorno de una computadora. Normalmente son de tres tipos: 5 • De control.- supervisan el trabajo de procesos tales como los Sistemas Operativos. • De proceso.- permite la creación de programas, así como los compiladores, etc. • De aplicación.- son los utilizados por el usuario final y sirven para trabajar en problemas específicos. 2.1.1.1. Características del Software 1) “El Software se desarrolla, no se fabrica en un sentido clásico”6 4 5 Sommerville pp. 6 ALONSO F, MARTINEZ L, SEGOVIA J. Introducción a la Ingeniería del Software. Delta Publicaciones. 2005. España. pp. 75 6 PRESSMAN, Roger. Ingeniería de Software, Un Enfoque Práctico. Mc Graw Hill, 2002. México. pp. 5 11 A diferencia de la construcción de algo físico, el Software se desarrolla cumpliendo niveles de un ciclo de vida, como por ejemplo el espiral, en este en cada ciclo dentro de la espiral el producto puede ser ya utilizado por el usuario final. 2) “El Software no se ‘estropea’ ” A diferencia del Hardware que presenta fallos al inicio de su vida, cuando éstos son superados tiene una etapa de relativa “calma” (sin presentar errores), pero pasado un tiempo las partes físicas se vuelven viejas, obsoletas y llegan a presentar tantos problemas que se vuelven inservibles. Esto no sucede con el Software ya que este no se ve afectado por el entorno que avejenta al Hardware. Pero aunque no se estropee, se puede deteriorar por fallas del sistema y actualizaciones que se deban hacer al Software. 3) Construcción a medida A pesar de que hoy en día es más frecuente la utilización de componentes de software reutilizables como plantillas o auxiliares, el software sigue siendo enfocado a construirlo a la medida de las necesidades del usuario. 2.1.2. FASES GENÉRICAS DEL CICLO DE VIDA DEL SOFTWARE Todo proyecto de Software se rige a un ciclo de vida. Para cada proyecto, aún cuando tengan grandes diferencias existe un ciclo de vida que se compone de varios pasos y difieren normalmente en el fin de éstos. Independientemente del tipo o complejidad de cada proyecto de Ingeniería de Software, éste debe cumplir con al menos tres grandes fases genéricas:7 7 PRESSMAN, Roger. Ingeniería de Software, Un Enfoque Práctico. Mc Graw Hill, 2002. México. pp. 15 12 Figura 2.1. Fases de software 2.1.2.1. Fase de definición o planificación En esta fase el punto clave es el “QUÉ”. En esta fase se busca determinar qué hará el sistema, qué información queremos procesar, qué información queremos obtener, qué procesos realizará, qué restricciones tendrá, qué criterios cumplirá. En esta etapa del proyecto se establece los Requisitos del Software o también llamado el “Plan de Software”; y el Análisis de los requisitos del software que lo obtenemos en una “Especificación de Requisitos”. 8 Exige al ingeniero de software grandes conocimientos cognitivos así como una perspicacia adicional a través del conocimiento emocional ya que es en esta etapa donde se obtiene toda la información necesaria para saber claramente que es lo que quiere o necesita el cliente. Uno de los grandes retos en esta rama es tratar con clientes que no saben claramente lo que necesitan y es ahí donde el profesional debe investigar a fondo para poder determinarlo y brindar la solución más eficiente que satisfaga las necesidades del cliente. En esta etapa es donde se establece a donde se quiere llegar y cuáles serán los alcances de nuestro trabajo. La etapa se llama “concepción” ya que es aquí donde el producto de software inicia. 2.1.2.2. Fase de desarrollo Esta es la fase del “CÓMO”. Se busca determinar cómo se cumplirá con los requisitos establecidos, cómo se diseñarán las estructuras de datos, cómo se ALONSO F, MARTINEZ L, SEGOVIA J. Introducción a la Ingeniería del Software. Delta Publicaciones. 2005. España. pp. 78 8 13 hará uso de la arquitectura de software, cómo serán las interfaces, cómo se convertirá el diseño en lenguaje de programación, cómo se respetará las restricciones y cómo se realizarán las pruebas de control. En esta etapa se realiza el plan de trabajo a fin de cumplir las metas planteadas. Se determina el camino que se planea tomar para poder cubrir los alcances del proyecto. Las tres grandes tareas en esta fase son: diseño de software, generación del código y pruebas del software. 2.1.2.3. Fase de mantenimiento El punto clave en esta fase son los “CAMBIOS”. Cambios relacionados con errores en el sistema, actualizaciones requeridas y mejoras solicitadas por el cliente o el entorno. Es en esta etapa en la cual se presenta y entrega el producto terminado al usuario final. Aquí entran actividades como pruebas, capacitaciones, sociabilización del sistema, etc. 2.2. BASE DE DATOS Para el presente proyecto es de vital importancia una base de datos para poder mantener la información correctamente almacenada a fin de procesarla y consultarla a todo momento sin tener inconvenientes. La base de datos, en su forma más simple, es el conjunto de información ordenada de una determinada manera a fin de que se facilite su consulta. 14 Figura 2.2 Base de datos En términos técnicos, una base de datos es un fichero en el cual se almacena información en campos ordenados en distintas columnas y distribuidos en registros o filas. 9 Las bases de datos son creadas para la representación de algunos aspectos del mundo real para poder manipularlos fácilmente y procesarlos según las necesidades específicas. El diseño de la base de datos es de gran importancia para la programación de software ya que es de éstas de donde obtiene la información que procesará, por lo tanto el diseño de la base debe ser realizado pensando en todos los factores que intervendrán en el proceso a sistematizar y ordenarlos de manera consecuente para que sea fácil su utilización. Usuario final es el actor por el cual se realiza en sí la base de datos, éste requiere acceder a la base de datos para consultarla, actualizarla y/o generar informes. Hay diferentes tipos de actores que interactúan con una base de datos. 10 El administrador de la base de datos es el responsable de mantener la base de datos ordenada, velando porque los registros no se corrompan ni se eliminen por http://www.emagister.com/curso-informatica-administracion-publica-3/bases-datos-concepto-caracteristicasfuncionalidades 10 RAMOS MARTÍN Alicia, RAMOS MARTIN Ma. Jesús. Operaciones con Bases de Datos Ofimáticas y Corporativas. Paraninfo. 2008. España. pp. 4 9 15 error. Este actor tiene como principal responsabilidad sacar copias de seguridad (backups). Diseñador de base de datos, crea las diferentes tablas donde se almacenarán los registros que contienen la información. Este actor determina las relaciones internas que tendrán las tablas y registros dentro de la base de datos. Analista de sistemas y programador de aplicaciones estos actores trabajan con la base de datos para realizar aplicaciones que busquen, creen, eliminen o impriman información dentro de las bases. 2.3. MICROSOFT SQL SERVER 2008 En el presente sistema se hizo uso de Microsoft SQL Server 2008 para la compilación de la base de datos generada para trabajar en el proyecto. Se escogió esta versión por su compatibilidad con Access al ser ambas de la empresa Microsoft. Es una plataforma que propone controlar la demanda crítica de aplicaciones, reduce el tiempo y costos de desarrollo, tanto en el manejo de aplicaciones como en la posibilidad de tener una visión global de toda la empresa mediante una estructura productiva e inteligente.11 Microsoft SQL Server 2008 permite manipular y acceder a datos críticos para el negocio desde diversos dispositivos, plataformas y servicios de datos dentro de la organización. En esta plataforma, lo que Microsoft busca es mejorar la productividad de los desarrolladores proporcionando una esperada integración entre los Frameworks, las tecnologías de conectividad de datos, lenguajes de programación, servicios web, herramientas de desarrollo y datos. 11 http://msdn.microsoft.com/es-ec/, Mayo 2012 16 Una de las estrategias planteadas por SQL Server es la reducción de costos y de la complejidad entregando una base de datos de fácil manejo para su construcción, administración e implementación de aplicaciones, esto lo consigue por un modelo de programación simplificado. Figura 2.3 SQL Server 2008 en el contexto de desarrollo Microsoft® , 2010 Utiliza tres esquemas fundamentales en la metodología de diseño: El Modelo Global.- es la identificación del flujo de información dentro de la organización, El Modelo Lógico.- representa la estructura de los datos a través de entidades y dependencias las cuales garantizan su consistencia e integridad, y El Modelo Físico.- es el almacén de los datos, es aquí donde se convierten en información. 17 Las herramientas incluidas en SQL Server 2008 son: base de datos relacional, servicios de réplica, servicios de notificación, servicios de integración, servicios de análisis, servicios de reportes, además de las herramientas de administración y desarrollo. 2.4. MICROSOFT SQL SERVER MANAGEMENT STUDIO 2008 EXPRESS Este componente de Microsoft SQL Server 2008 nos permitió una administración de la base de datos de una manera eficiente. Fue utilizada al ver la bibliografía Microsoft donde recomiendan su utilización para poder aprovechar sus beneficios. En esta herramienta se construyó vistas de tablas para su posterior consulta. Fue a través de esta herramienta donde se corrió el script de la base de datos y donde se realizaron los store procedures. Para obtener acceso a todos los componentes de SQL Server, configurarlos, administrarlos y desarrollarlos se creó un entorno de gestión integrado SQL Server Management Studio. Este combina una serie de editores de script con un amplio grupo de herramientas gráficas que ofrece acceso a SQL Server a programadores y administradores de todos los niveles de especialización.12 Algunas de las características generales de SQL Server Management Studio son: • Compatibilidad con las tareas administrativas de SQL Server. • Entorno único integrado para administración y edición de SQL Server Database Engine (Motor de base de datos de SQL Server). • Cuadros de diálogo para la administración de objetos de SQL Server, los cuales permiten ejecutar las acciones inmediatamente, enviarlas a un editor de código o escribirlas en scripts para ejecutarlas posteriormente. • Exportación e importación del registro de servidor de SQL Server Management Studio desde un entorno de Management Studio a otro. 12 http://msdn.microsoft.com/es-es/library/bb500397%28v=sql.105%29.aspx, Mayo 2012 18 • Un explorador Web integrado para una rápida exploración de MSDN o la Ayuda en pantalla. SQL Server Management Studio ofrece ventanas de herramientas para todas las fases del desarrollo y la administración. Algunas herramientas se pueden utilizar en cualquier componente de SQL Server, mientras que otras son sólo para ciertos componentes. A continuación se listan herramientas que se pueden utilizar con todos los componentes de SQL Server: Herramienta Finalidad Usar el Explorador de Examinar objetos administrar orígenes de datos y ver registros. Administrar servidores Almacenar información de conexión de servidores a registrados los que se obtiene acceso con frecuencia. Usar el Explorador de Almacenar y organizar secuencias de comandos e soluciones información de conexión relacionada en proyectos servidores, crear y ubicar objetos, denominados Secuencias de comandos de SQL Server. Es posible almacenar varias Secuencias de comandos de SQL Server como Soluciones y utilizar el control de código fuente para administrar las secuencias de comandos a medida que evolucionan. Usar las plantillas de Crear consultas basadas en las plantillas existentes. SQL Server También es posible crear consultas personalizadas o Management Studio modificar las plantillas existentes de modo que se ajusten a su situación. Ayuda dinámica Mostrar una lista de temas relacionados de la Ayuda cuando se hace clic en un componente o en un tipo de código. Tabla 2.1 Lista de herramientas de SQL Server 19 2.5. MICROSOFT OFFICE 2010 Es una suite de oficina creada por la empresa Microsoft para brindar soluciones y prestaciones a fin de facilitar el trabajo diario en las oficinas a través de herramientas amigables y de fácil uso y rápido aprendizaje. Esta suite integra funcionalidades para integrar aplicaciones de escritorio, servidores y servicios para sistemas operativos Microsoft Windows y Mac OS X. fue lanzado en 1989 por Microsoft para la empresa Apple Macintosh y a año seguido una segunda versión para Windows. La primera versión del Microsoft Office ofrecía los programas: Microsoft Word (procesador de texto), Microsoft Excel (herramienta compuesta por varias hojas de cálculo, utilizada primordialmente en tareas contables y financieras) y Microsoft Power Point (herramienta para realizar presentaciones utilizada en su mayoría en el campo de la enseñanza y los negocios.). Una versión “Pro” (profesional) incluía Microsoft Access y Schedule Plus (fue un gestor de información personal, al estilo de una agenda de contactos que posteriormente se integró a Microsoft Outlook). Desde el año 1997 hasta el año 2003 la suite ofimática utilizó un grupo de formatos conocidos como 97-2003 o 98-2004. Desde el año 2007 con el lanzamiento del Office 2007, dichos formatos cambiaron a los Office Open XML (docx, xlsx, pptx). Microsoft Office 2010 es una versión de la suite ofimática de Microsoft y sucesora de Microsoft Office 2007. Ésta versión incluye compatibilidad extendida para diversos formatos de archivos y actualizaciones de la interfaz de usuario. Con esta versión se lanza también al mercado Office Web Apps, versión gratuita que incluye Word, Excel, Power Point y OneNote que trabaja directamente en navegadores Web. A su vez nos ofrece también Office Mobile 2010 que estará disponible en equipos Windows Phone. Algunas herramientas de esta versión de suite incluyen un comprobador de accesibilidad que se ejecuta automáticamente mientras de crea el archivo y va 20 identificando áreas que podrían platear problemas de visión o uso para usuarios con discapacidades. 2.5.1. MICROSOFT ACCESS 2010 Microsoft Access 2010 fue el componente que nos permitió construir el Front-end eficiente y amigable con el usuario. Microsoft Access es un sistema de gestión de bases de datos relacionales para los sistemas operativos Microsoft Windows. Es un componente de la suite ofimática Microsoft Office. Permite crear ficheros de bases de datos relacionales que pueden ser fácilmente gestionadas por una interfaz gráfica simple. Además, estas bases de datos pueden ser consultadas por otros programas. Este programa permite manipular los datos en forma de tablas (formadas por filas y columnas), crear relaciones entre tablas, consultas, formularios para introducir datos e informes para presentar la información. “Access 2010 es una herramienta de diseño e implementación de aplicaciones de base de datos que se puede usar para realizar un seguimiento de la información importante. Puede conservar los datos en el equipo o publicarlos en la Web, de forma que otras personas puedan usar la base de datos con un explorador web.” 13 Office 2010. Esta herramienta nos permite desarrollar de manera fácil y rápida aplicaciones de base de datos relacional para la administración de la información. Access 2010 incluye características que permiten un trabajo con datos almacenados en otros programas. Se puede importar o vincular datos desde diferentes orígenes tales como:14 • Excel.- se puede incorporar datos desde una hoja de cálculo o un rango con nombre en un libro de Excel. 13 14 http://office.microsoft.com/es-hn/access-help/tareas-basicas-en-access-2010-HA101829991.aspx, Julio 2012 http://office.microsoft.com/es-hn/access-help/tareas-basicas-en-access-2010-HA101829991.aspx, Agosto 2012 21 • Access.- se puede usar una base de datos para contener todos los formularios, informes y macros, mientras que se puede conservar los datos en otra base de datos. También permite combinar datos de muchas bases de datos de Access diferentes en una, lo que facilita el resumen de datos de varios departamentos o asociados de negocios. • Base de datos ODBC.- ayuda a crear bases de datos "centrales", en las que se combinan datos de sistemas diferentes. • Archivo de texto.- puede conectarse a un archivo de texto simple e incluso usar Access para cambiar el contenido de ese archivo. • Archivo XML.- también ofrece compatibilidad con diversos programas, incluidos algunos servidores web. • Lista de SharePoint.- permite que los datos sean utilizables con un explorador web, la forma estándar de usar una lista de SharePoint. • Servicios de datos.- Puede conectarse a servicios de datos web dentro de la organización. • Carpeta de Outlook.- puede conectarse a carpetas de Outlook, para que la información de contacto se integre más fácilmente con el resto de los datos. Figura 2.4. Access y su motor ACE forman el sistema de administración de base de datos (DBMS) completo. Microsoft® , 2010 22 Access 2010 es responsable de la interfaz de usuario y de cómo los usuarios ven, utilizan y modifican datos gracias a los formularios, informes, consultas, macros, asistentes, etc. El motor de Microsoft Access (motor ACE) ofrece servicios principales de administración de base de datos como por ejemplo: • Almacenamiento de datos. • Definición de datos. • Integridad de datos. • Manipulación de datos. • Recuperación de datos. • Cifrado de datos. • Uso compartido de datos. Este servicio permite compartir datos en un entorno multiusuario de red. • Publicación de datos. Se puede trabajar en un entorno web cliente o servidor. • Importación, exportación y vinculación de datos. Concede la facilidad de trabajar con datos de diferentes orígenes. Figura 2.5 Arquitectura del motor ACE en el entorno de programación de acceso a datos Microsoft® , 2010 23 Por lo tanto Access es la forma en que el motor ACE se muestra gráficamente a los usuarios. En versiones anteriores al Access 2007, el motor que se usaba era el JET éste no venía como parte de esta plataforma sino que lo distribuían como un producto independiente por lo cual Access era visto como una herramienta muy básica. Access 2007 y 2010 tienen incorporado el motor ACE, el cual fue desarrollado basando en el antiguo motor JET por lo cual es compatible con versiones anteriores de la herramienta Office. Con el lanzamiento de Access 2010 se realizaron importantes mejoras al motor ACE lo cual permite ahora también que admita la versión de 64 bits y mejora la interacción con tecnologías relacionadas de Share Point y los servicios web. Esta mejora permite que el sistema creado sea fácilmente escalable y accesible por la web. Microsoft se ha comprometido con Access como plataforma de programación, por lo cual evolucionó del simple administrador de base de datos a una robusta herramienta de programación para brindar servicios de calidad con software amigable para el usuario. Access 2010 trabaja con varios datos que son distintos a los tipos de datos con los que trabaja SQL Server, por lo tanto se debe determinar cuál es el tipo de datos más adecuado para cada columna de cada tabla o vista de SQL Server que vaya a importar o vincular. A continuación se presenta una tabla en la cual se enumeran los tipos principales de SQL Server y en las siguientes columnas se muestra cómo Access los interpreta. bigint TIPO DE DATOS DE ACCESS Texto binario(tamaño del campo) Binario bit Sí/No TIPO DE DATOS DE SQL SERVER TAMAÑO DE CAMPO DE ACCESS 255 Igual que el tamaño de campo de SQL Server 24 char(tamaño del campo), donde tamaño del campo es menor o igual que 255 Texto char(tamaño del campo), donde tamaño del campo es mayor que 255 Memo datetime Fecha/Hora decimal(precisión, escala) Numérico Decimal (Las propiedades Precisión y Escala de Access coinciden con la precisión y escala de SQL Server.) flotante Numérico Doble image Objeto OLE int Numérico money Moneda nchar(tamaño del campo), donde tamaño del campo es menor o igual que 255 Texto nchar(tamaño del campo), donde tamaño del campo es mayor que 255 Memo ntext Memo numeric(precisión, escala) Numérico nvarchar(tamaño del campo), donde tamaño del campo es menor o igual Texto que 255 Igual que el tamaño de campo de SQL Server Entero largo Igual que el tamaño de campo de SQL Server Decimal (Las propiedades Precisión y Escala de Access coinciden con la precisión y escala de SQL Server.) Igual que el tamaño de campo de SQL Server nvarchar(tamaño del campo), donde tamaño del campo es mayor que Memo 255 nvarchar(MAX) Memo real Numérico smalldatetime Fecha/Hora Simple smallint Numérico smallmoney Moneda sql_variant Texto text Memo timestamp Binario 8 tinyint Numérico Byte uniqueidentifier Numérico Id. de réplica varbinary Binario Igual que el tamaño de campo de SQL Server varbinary(MAX) Objeto OLE Entero 255 25 varchar(tamaño del campo), donde tamaño del campo es menor o igual que 255 Texto varchar(tamaño del campo), donde tamaño del campo es mayor que 255 Memo varchar(MAX) Memo xml Igual que el tamaño de campo de SQL Server Memo 15 Tabla 2.2. Tabla de datos SQL vs. Access 2.6. ODBC ODBC (Open DataBase Connectivity – Conectividad abierta de Base de Datos) es una interfaz la cual habilita el acceso de las aplicaciones a los datos de cualquier base de datos en la cual haya un controlador ODBC. Es por lo tanto un medio de comunicación entre una base de datos con ODBC y la aplicación que la llama. El uso de ODBC genera una API que permite que la aplicación sea independiente del sistema de administración de base de datos DBMS de origen. Figura 2.6. Trabajo de OBDC 15 http://office.microsoft.com/es-es/access-help/importar-o-vincular-datos-de-sql-server-HA010200494.aspx#BM3 26 Componentes de OBDC:16 • API de OBDC.- Biblioteca de llamadas a funciones, conjunto de códigos de error y sintaxis de lenguaje de consulta estructurado (SQL) estándar para tener acceso a los datos de los DBMS. • Administrador de controladores ODBC.- Biblioteca de vínculos dinámicos que carga controladores de base de datos OBDC en nombre de una aplicación. Es transparente a la aplicación. • Controladores de bases de datos ODBC.- bibliotecas DLL que procesan llamadas a funciones ODBC para DBMS específicos. • Biblioteca de cursores ODBC.- biblioteca de vínculos dinámicos que se encuentra entre el administrador de controladores ODBC y los controladores, y que controla el desplazamiento por los datos. • Administrador de ODBC.- Herramienta utilizada para configurar un DBMS de modo que quede disponible como origen de datos de una aplicación. Para trabajar en datos de bases SQL Server en Microsoft Access se tiene dos opciones: 1.- Importación de datos.- Mediante este proceso Access crea una copia para sí de la base de datos SQL Server. Al ser una copia los cambios realizados en Access no se verán reflejados en las tablas de SQL, así como cualquier cambio posterior en SQL no se lo verá en las tablas copiadas de Access. 2.- Vinculación de datos.- cuando uno realiza una vinculación de datos Access se conecta directamente a la base de datos de SQL para que los cambios realizados en alguna de las dos plataformas se lo vea en ambas. En el presente proyecto la conexión se la realizó por una conexión de vinculación de Microsoft Access 2010 con Microsoft SQL Server 2008. Está decisión fue tomada en base a lo siguiente: 16 http://msdn.microsoft.com/es-es/library/thzzea08%28v=vs.80%29.aspx, Noviembre 2012 27 • El sistema será multiusuario y se necesita que siempre la base cuente con datos reales y actualizados del trabajo realizado por los diferentes actores. • Nuestra base de datos SQL contiene grandes tablas lo que dificultaría su importación a una sola base de datos de Access. Al hacerlo así nos limitaría a tan solo 2 GB menos el espacio necesario para los objetos del sistema. • El sistema permitirá imprimir reportes y se busca que éstos sean confiables y actualizados por lo cual deben ser obtenidos los datos directamente de la base de datos SQL. Para realizar la vinculación de datos de Access a SQL Server, Access crea una tabla vinculada que refleja la estructura y el contenido del objeto de origen. Solo se reflejan en ambos lados los cambios en contenidos, pero si lo que se desea es realizar un cambio en la estructura de la base, éste cambio se lo debe realizar en SQL Server. Los pasos para realizar una vinculación son los siguientes: 1. Revisar los permisos de conexión de la base de datos SQL Server. 2. Identificar las tablas y vistas a vincular. 3. Revisar los datos y considerar la información de los datos en la tabla de datos SQL vs Access en este documento de tesis. 4. Identificar la base de datos de Access en la que se desea crear las tablas vinculadas. 5. Para enlazar a los datos se debe abrir la base de datos destino. 6. En la parte “Datos externos” del menú superior, damos clic en “Base de datos ODBC” 7. Se escoge “Vincular al origen de datos creando una tabla vinculada” 8. En el cuadro de “Seleccionar origen de datos” se hace clic en “Nuevo” 9. Cuando se abre el diálogo “Vincular tablas” escogemos cada tabla o vista que deseamos vincular. Al finalizar con este proceso Access nos muestra la o las tablas vinculadas para poder comenzar a trabajar con éstas. 28 2.7. VISUAL BASIC 7.0 Lenguaje de programación orientado a objetos que se basa en estructuras para su diseño. Este lenguaje se basa en el lenguaje de programación Basic un lenguaje ampliamente aceptado por su fácil uso ya que su concepción fue para principiantes. Microsoft después de unos años busca mezclar la sencillez del Basic con un robusto lenguaje de programación Visual y es cuando nace Visual Basic. Con este lenguaje Microsoft consigue un lenguaje de programación aún más atractivo ya que además de sencillo es amigable por su gran interfaz gráfica. Después de esto Visual Basic ya no es un lenguaje para principiantes sino que se convirtió en una perfecta alternativa para los programadores de cualquier nivel. Con Visual Basic se pueden crear aplicaciones compatibles con plataformas Windows. Visual Basic .NET es la evolución del lenguaje Visual Basic implementado sobre el framework .NET de Microsoft. Esta transición tuvo algunos inconvenientes ya que la versión actual no era compatible con versiones anteriores, pero aun así el manejo de las instrucciones era similar a las versiones anteriores. Esta evolución permitió a los profesionales utilizar una herramienta conocida para el desarrollo de aplicaciones más avanzadas y modernas. Un elemento declarado es un elemento de programación definido en una instrucción de declaración. Los elementos declarados incluyen variables, constantes, enumeraciones, clases, estructuras, módulos, interfaces, procedimientos, parámetros de procedimientos, valores devueltos de funciones, referencias a procedimientos externos, operadores, propiedades, eventos y delegados. Las instrucciones de declaración incluyen lo siguiente:17 • Instrucción Dim.- declara y asigna espacio para almacenar una o más variables. 17 http://msdn.microsoft.com/es-es/library/ms172579%28v=vs.80%29.aspx, Agosto 2012 29 • Instrucción Const.- declara y define una o más constantes. • Instrucción Enum.- declara una enumeración y define los valores de sus miembros. • Instrucción Class.- declara el nombre de una clase e introduce la definición de las variables, propiedades, eventos y procedimientos que la clase comprende. • Structure.- declara el nombre de una estructura e introduce la definición de las variables, propiedades, eventos y procedimientos que incluye la estructura. • Module.- declara el nombre de un módulo e introduce la definición de las variables, propiedades, eventos y procedimientos que incluye el módulo. • Instrucción Interface.- declara el nombre de una interfaz e introduce las definiciones de los miembros que incluye la interfaz. • Instrucción Function.- declara el nombre, los parámetros y el código que definen \un procedimiento Function. • Instrucción Sub.- declara el nombre, los parámetros y el código que definen \un procedimiento Sub. • Declare.- declara una referencia a un procedimiento implementado en un archivo externo. • Operator.- declara el símbolo de operador, los operandos y el código que definen un procedimiento de operador en una clase o estructura. • Property.- declara el nombre de una propiedad y los procedimientos de propiedades que se utilizan para almacenar y recuperar el valor de la propiedad. • Event.- declara un evento definido por el usuario. • Delegate.- se utiliza para declarar un delegado. La instrucción Delegate define los tipos de parámetros y el tipo de valor devuelto de una clase de delegado. 30 2.7.1. VBA 7.0 Este lenguaje al ser integrado con Access 2010 permitió escribir código fundamental para lograr avanzados procesos del sistema para cumplir con distintos requisitos. “Visual Basic for Applications” VBA o Visual Basic para aplicaciones es una versión del lenguaje de programación Visual Basic creado para ampliar las funcionalidades de las herramientas de la suite Office 2010, entre esas Access 2010.18 VBA es un lenguaje que parte del Visual Basic 5.0 y del 6.0. Viene integrado en las herramientas Word, Excel, Access y Power Point de Microsoft Office 2010. Al ser descendiente de éstas dos versiones del Visual Basic, la programación con este lenguaje puede realizar grandes procesos, pero siempre y cuando vaya acompañado de la herramienta de Office con la cual trabaja. 19 http://msdn.microsoft.com/eses/library/office/ee814735%28v=office.14%29.aspx#ProductVersionKeyword_Introduction, Mayo 2013 19 http://es.wikipedia.org/wiki/Visual_Basic_for_Applications, Mayo 2013 18 31 CAPÍTULO III 3. MARCO METODOLÓGICO Para el desarrollo de software necesitamos de metodologías y estándares para poder contar con guías a fin de tener conocimiento acerca del camino que se debe recorrer antes de llegar a nuestro objetivo. Es responsabilidad del equipo que estará a cargo del proyecto el seleccionar una metodología que esté acorde a sus objetivos y cumpla con sus requerimientos. Para el presente proyecto se escogió la metodología RUP para poder cumplir con un producto de calidad. 3.1. METODOLOGÍA RUP Rational Unified Process o Proceso Unificado de Racional es “un marco de trabajo genérico que puede especializarse para una gran variedad de sistemas software, para diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños de proyecto”20 Este proceso se basa en guiar al proyecto a que sea construido en base a componentes interconectados a través de interfaces. Los orígenes del RUP se encuentran en el modelo espiral originalmente de Barry Boehm en el año de 1986. Las actividades de este modelo se conforman en una espiral, en la que cada iteración (o bucle) representa un conjunto de actividades. El RUP se caracteriza por ser incremental, estar centrado en la arquitectura y guiado por los casos de uso. El ciclo de vida RUP es una implementación del Desarrollo en espiral. Fue creado ensamblando los elementos en secuencias semi-ordenadas. JACOBSON I, BOOCH G, RUMBAUGH J. El Proceso Unificado de Desarrollo de Software. Addison Wesley, 1999. pp.4 20 32 El RUP es el resultado del trabajo de varias personas a lo largo de tres décadas, partiendo desde la metodología Ericsson en 1967, pasando por la compañía Objetory a finales de los 80`s hasta llegar a mediados de los años 90´s cuando Rational se une a UML y en 1998 lanzan RUP. Figura 3.1. Historia de RUP 3.1.1. CARACTERÍSTICAS Lo que hace único al RUP es que está dirigido por casos de uso, centrado en la arquitectura y que es iterativo e incremental. Dirigido por casos de uso: el RUP parte desde el uso de los casos de uso para la obtención de requisitos con los que se inicia el proyecto de Software. Figura 3.2. Modelos desarrollados en los flujos de trabajo de RUP. 21 JACOBSON I, BOOCH G, RUMBAUGH J. El Proceso Unificado de Desarrollo de Software. Addison Wesley, 1999. pp.32 21 33 El modelo de casos de uso se transforma en el modelo de diseño por medio del modelo de análisis ya que éste último es una especificación detallada del modelo de casos de uso y trabaja como una primera aproximación de modelo de diseño. Proceso centrado en la arquitectura.- Cada producto tiene una función y una forma. La función la determina los casos de uso y la forma está determinada por la arquitectura de software, es por esto que la arquitectura es una parte medular en el proceso. Los casos de uso deben encajar en la arquitectura y la arquitectura debe permitir que los casos de uso requeridos se desarrollen. Iterativo e Incremental.- Por razones de tiempo empleado en el proyecto de software es recomendable subdividir el mismo en partes más pequeñas o iteraciones. Cada iteración representa un incremento en el proyecto. En cada iteración se determinan los casos de uso relevantes y crean un diseño utilizando la arquitectura seleccionada, la cual trabajará como guía. Cada iteración debe cumplir con lo siguiente: • Establecer oportunidad y alcance, • Identificar las entidades externas o actores con las que se trata, • Identificar los casos de uso. 3.1.2. CICLO DE VIDA DEL RUP El ciclo de vida de la metodología RUP, al ser ésta una metodología iterativa, se compone de fases y disciplinas. 34 Figura 3.3. Fases del ciclo de vida del método RUP 3.2. CONSTRUCCIÓN DEL SISTEMA Este sistema SAESFAC, ha seguido las fases de la metodología RUP, lo cual se evidencia en el desarrollo de los siguientes ítems. 3.2.1. FASE DE INICIO En esta fase se genera una descripción del producto final y se presenta el análisis de negocio para el producto. Se centra en estas preguntas: 1. “¿Cuáles son las principales funciones del sistema para sus usuarios más importantes?” 2. “¿Cómo podría ser la arquitectura del sistema?” 3. “¿Cuál es el plan de proyecto y cuánto costará desarrollar el producto?”22 Para responder la primera pregunta se utiliza el modelo de casos de uso con los más críticos que para el presente sistema se encuentra en el manual técnico en la página 3. Se realizan bosquejos mostrando los subsistemas los más importantes JACOBSON I, BOOCH G, RUMBAUGH J. El Proceso Unificado de Desarrollo de Software. Addison Wesley, 1999. pp.11 - 12 22 35 lo cuales para el sistema SAESFAC son gestión de personal, gestión estudiantil y gestión de curso. Se deben identificar los riesgos más importantes y priorizarlos. Además se planifica detalladamente la fase de elaboración y se estima de manera aproximada todo el proyecto. En el caso del sistema de Administración Estudiantil del SFAC se realizó la planificación de la siguiente manera: • Para la fase de inicio se tomarán 6 semanas del 21 de mayo al 30 de junio del 2012 • Para la fase de elaboración se tomarán aproximadamente 12 semanas que irían desde el 2 de julio al 23 de septiembre de 2012. • Se planeó que para la fase de construcción se tomará un aproximado de 20 semanas las cuales serían entre el 24 de septiembre del 2012 y el 8 de febrero del 2013 • Las pruebas y la implementación tomarán entre 2 a 4 semanas las cuales se realizarían entre mediados de febrero y el mes de marzo del 2013. Dentro de la fase de inicio encontramos las disciplinas de modelado de negocio y los análisis de requerimientos. 3.2.1.1. Modelado de negocio El Modelado del Negocio consiste en tener un conocimiento preciso de lo que actualmente se hace en los procesos que serán considerados en el nuevo sistema. En esta etapa se busca tener una visión general de la empresa. Después de esto, identificar y descubrir los procesos correspondientes así como los usuarios responsables y el flujo de procesos e información en el área directamente relacionada al sistema. Con esto se determina ventajas y desventajas así como posibles mejoras a sus procesos actuales. 36 3.2.1.2. Análisis de requerimientos Esta etapa tiene su principal actividad en la Fase de Elaboración, sin embargo ya se van considerando ciertos aspectos en la Fase de Inicio, al momento de identificar los procesos actuales también se van viendo sus necesidades o requerimientos. También se debe identificar los requerimientos funcionales, operativos, ergonómicos, de prueba y de rendimiento de cada componente. Buscamos la identificación de los Casos de Uso. 3.2.1.3. Productos 3.2.1.3.1. Documento Visión Para el sistema SAESFAC la fase de inicio se la realizó mediante reuniones mantenidas con el director del San Francisco AutoClub y su personal docente y administrativo para poder recopilar los requisitos de todos los miembros del equipo. Se estudió exhaustivamente los procesos realizados. Se identificó plenamente los potenciales usuarios del sistema que sería el personal de la escuela. Y se describieron las ventajas del cambio, las cuales las puede encontrar al inicio de este documento en el capítulo 1 en la página número 2. 3.2.1.3.2. Diagramas de casos de uso Un caso de uso es una descripción de las acciones de un sistema desde el punto de vista del usuario. El caso de uso es una estructura que ayuda a los analistas a trabajar con los usuarios para determinar la forma en que se usará un sistema. Con una colección de casos de uso se puede hacer el bosquejo de un sistema en términos de lo que los usuarios intenten hacer con él. En los diagramas de casos de uso se muestra en forma gráfica y explícita la interacción de los entes externos con nuestro sistema, aquí mostramos cómo esperamos que los usuarios interactúen con el sistema. 37 En los diagramas de casos de uso se puede nombrar los siguientes elementos: Actor.- Es la representación gráfica de una entidad externa ya sea usuario, proceso u objeto material que interactúa con el sistema o subsistema. Se lo representa como un monigote. Figura 3.4. Actor – Diagrama de casos de uso Caso de uso.- Un caso de uso define una pieza de comportamiento coherente más no revela la estructura interna del sistema. Es una descripción lógica de una parte de funcionalidad del sistema. Se representa gráficamente como una elipse con su nombre colocado dentro o bajo ella. Figura 3.5. Caso de uso Límite de un sistema.- se lo representa dentro de un rectángulo y se colocan todos los casos de uso del sistema dentro de éste. Figura 3.6. Límite del sistema Para el presente sistema se partió del modelado de negocio y se procedió a la elaboración del primer diagrama de casos de uso el cual abarca a groso modo que es lo que espera el director de un sistema en su escuela. Figura 3.7. Caso de Uso general 38 Los diagramas de casos de uso obtenidos en esta fase se encuentran en el Manual Técnico en la página 1 y 2. 3.2.2. FASE DE ELABORACIÓN En la fase de elaboración se seleccionan los casos de uso que permiten definir la arquitectura base del sistema y se desarrollaran en esta fase, se realiza la especificación de los casos de uso seleccionados y el primer análisis del dominio del problema, se diseña la solución preliminar. Al terminar esta fase se obtiene la línea base de la arquitectura. También permite que el director del proyecto planifique y estime actividades para lograr terminar el proyecto a tiempo y según reglas que se establecerán a partir de aquí. 3.2.2.1. Análisis y diseño Es una etapa en la que se realiza el prototipado del Sistema, por lo tanto requiere la participación activa de los usuarios involucrados en el proyecto, sean estos directos o indirectos De manera general las tareas que se realizan en esta etapa o fase del proyecto son: • El análisis funcional del Sistema, con la especificación del modelo de casos de Uso • La especificación de los requerimientos de Salidas. Comprende un modelado lo más preciso posible a lo que se implementará. • La especificación de los requerimientos de Entradas, que consiste en el prototipado de las interfaces o pantallas de actualización de datos. • Especificación de interfaces con otros sistemas o aplicaciones. • Definición del Modelo de Clases, que consiste en la definición de la estructura de información del sistema. • Especificación de los diagramas de Secuencia. • Mapeo del modelo de clases al modelo relacional. Consiste en convertir el modelo de clase de datos a un modelo de BD relacional. • La especificación de la estructura de menús del sistema. 39 • El diseño detallado de Programas. En el que se hace uso de los diagramas de Estados, diagramas de Actividades. • El diseño del modelo de clases de implementación. 3.2.2.2. Productos 3.2.2.2.1. Diagrama de clases El diagrama de clases es un producto de la fase de elaboración y es parte de la vista lógica. Sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenido. Un diagrama de clases está compuesto por los siguientes elementos: • Clase: atributos, métodos y visibilidad. Es la unidad básica que encapsula toda la información de un Objeto (un objeto es una instancia de una clase). A través de ella podemos modelar el entorno en estudio. • Relaciones: Herencia, Composición, Agregación, Asociación y Uso. Las relaciones muestran el comportamiento que tienen las clases entre sí. Hay relaciones de herencia, agregación, asociación y dependencia. En el SAESFAC hemos identificado las clases de Empleado, estudiante, curso, aula, horario, notas, materias. El diagrama de clases se encuentra en el manual técnico en la página número 3. 3.2.2.2.2. Modelo entidad-relación Este modelo es parte de la fase de elaboración en la vista lógica. El modelo Entidad – Relación (E-R) se basa en una percepción del mundo real, la cual está formada por objetos básicos llamados entidades, los cuales poseen atributos y las relaciones entre estos objetos. El Modelo Entidad Relación es una herramienta apropiada en la transformación de un sistema de mundo real a un modelo conceptual. Para muchos diseñadores y modeladores de sistemas el mundo es visto en una forma abstracta, por ello su preocupación se basa en describir con precisión el negocio, en lugar de preocuparse acerca de detalles tales como el rendimiento de la base de datos. 40 Para nuestro caso se realizó el diagrama en base a las ideas planteadas en el diagrama de clases. El diagrama entidad-relación del SAESFAC se encuentra en el manual técnico en la página número 4. 3.2.2.2.3. Diagrama de Secuencia El diagrama de secuencias es parte de la fase de elaboración y pertenece a la vista de implementación. Representa una interacción en el sistema como un gráfico de dos dimensiones. La dimensión vertical es el eje de tiempo y la dimensión horizontal muestra una representación gráfica de los roles de objetos individuales en la colaboración. Los diagramas de secuencias se crean para poder mostrar gráficamente como trabajan las diferentes secuencias de actividades que se van a generar en el sistema que construiremos. Por ejemplo en nuestro sistema hemos construido los diagramas de secuencia para la gestión de curso, gestión de notas y gestión de estudiante. Los elementos en los diagramas de secuencia son los siguientes: Actor exterior.- es un actor que inicia la secuencia de eventos en un determinado ciclo del sistema. Se lo representa a través de un monigote y va normalmente sobre la línea vertical de vida de la secuencia. Figura 3.8. Actor – Diagrama de secuencias Objeto activo.- es el objeto que participa en la secuencia de eventos. Se lo representa con un rectángulo recostado con su nombre en el interior. Debajo de este aparece una línea punteada que representa los momentos en los cuales éste objeto no participa de la secuencia y en un momento determinado se crea un rectángulo vertical que es la representación del momento en la secuencia en la cual participa el objeto. 41 Figura 3.9. Objeto activo – Diagrama de secuencia Mensaje.- es la representación gráfica de la interacción de un objeto sobre otro en la secuencia de estudio. Se lo representa como una flecha y la punta de ésta representa la dirección de la interacción. Figura 3.10.Mensajes – Diagrama de secuencia En la vista de implementación se realizaron los diagramas de secuencia para la gestión de curso, gestión de notas y gestión de estudiante. Los diagramas antes mencionados se encuentran en el manual técnico en las páginas 5, 6 y 7. Figura 3.11. Diagrama de secuencia de gestión de estudiante del SAESFAC 3.2.2.2.4. Diagrama de Estados El diagrama de estados es parte de la fase de elaboración y pertenece a la vista de implementación. También conocido como motor de estados, es una manera 42 para caracterizar un cambio en un sistema es decir que los objetos que lo componen modificaron su estado como respuestas a los sucesos y al tiempo. El diagrama muestra los cambios de estado junto con las transiciones entre los estados. Los elementos son: Nodo inicial y final.- denotan el estado inicial y final del objeto. El nodo inicial se lo representa con un círculo de color negro. El nodo final se lo representa con un círculo negro rodeado de una circunferencia. Figura 3.12.Nodos – Diagrama de estados Estado.- Representa un estado. Se lo representa con un rectángulo con esquinas redondeadas. En la parte superior del rectángulo está el nombre del estado. Puede contener una línea horizontal en la mitad, debajo de la cual se indican las actividades que se hacen en el estado. Figura 3.13.Estado – Diagrama de estados Flujo de control.- denota la transición de los estados. El nombre del evento (si existiera) que causa esta transición etiqueta el cuerpo de la flecha. Se representa por una flecha y la punta de esta muestra la dirección del flujo. Figura 3.14. Flujo – Diagrama de estados En el sistema SAESFAC se realizó el diagrama de estados del curso y del estudiante. Ambos diagramas se encuentran en el manual técnico en las páginas 8 y 9. 43 Figura 3.15. Diagrama de estados de curso del SAESFAC 3.2.2.2.5. Diagrama de Colaboración El diagrama de colaboración es parte de la fase de elaboración y pertenece a la vista de implementación. Es una forma de representar la interacción entre objetos. Muestra cómo las instancias específicas de las clases trabajan juntas para conseguir un objetivo común. Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un objeto a otro. La implementación es llamada enlace. 44 Los objetos interactúan entre sí pasándose mensajes y se conectan a través de enlaces. Los mensajes especifican la transmisión de información entre objetos. Y los enlaces especifican un camino a lo largo del cual un objeto puede enviar un mensaje a otro objeto. Para el sistema SAESFAC se realizaron los diagramas de colaboración basándose en los diagramas obtenidos de secuencia. Los diferentes diagramas de colaboración se encuentran en el manual técnico en las páginas 10, 11 y 12. Figura 3.16 Diagrama de colaboración de cierre de matrículas del SAESFAC 3.2.3. FASE DE CONSTRUCCIÓN Es en esta fase donde se crea el producto. La línea base del sistema se transforma en un sistema completo. Al finalizar esta fase, el producto contiene todos los casos de uso determinados para el producto final de esta iteración. 3.2.3.1. Implementación La fase de Construcción y las actividades de Implementación comprenden lo siguiente: • Asignación de los programas especificados a los programadores. • Definición de los estándares de codificación. • Codificación de programas. • Implementación de la Base de Datos del módulo o sistema. • Pruebas individuales de programas. • Integración de los programas en los módulos o componentes. 45 • Implementación de los criterios de Seguridad, Control y Auditoría del sistema. • Pruebas integrales de los módulos o componentes (testing). • Consolidación de los programas en el menú del módulo y éste a su vez en el menú general del sistema. Esta es una de las fases más técnicas del sistema, en la cual hay una interacción y comunicación permanente entre el equipo de analistas, diseñadores y el equipo de programadores, la participación del usuario es muy mínima, estando limitada a coadyuvar en las pruebas de programas o módulos. En esta fase se creó la instancia de base de datos con Microsoft SQL Server 2008. Después de esto se determinó el método de acceso a la base de datos que fue por autenticación de SQL Server la cual no se basa en las cuentas de usuario Windows ya que las cuentas de usuario y contraseñas se crean utilizando SQL Server. Utilizando SQL Server Management Studio se ejecutó el script de la base de datos. Luego de esto se procedió a la creación de consultas, vistas y store procedures necesarios para el funcionamiento del sistema. Por último se realizó la conexión a tablas vinculadas a través de Access 2010 por medio de ODBC. En Access 2010 se crearon las interfaces de usuario y se generaron las restricciones respectivas. 3.2.4. FASE DE TRANSICIÓN Se determina si la versión está en capacidad de ser entregada a los usuarios. Se revisan los errores y se estudia si estos pueden ser corregidos en esta versión o si se necesitará una nueva iteración para hacerlo. 3.2.4.1. Pruebas Las actividades relacionadas a las Pruebas en RUP se las realiza en todo el ciclo de vida del proyecto, las pruebas se inician desde la primera iteración de la fase 46 de Elaboración, verificando el cumplimiento de los prototipos respecto a los requerimientos de los usuarios, luego en la fase de Construcción con más énfasis cuando se van desarrollando los programas y los componentes del sistema, sin embargo, la mayor actividad de pruebas es a la conclusión de la fase de Construcción, cuando se van integrando todos los módulos o componentes del Sistema y se deben realizar las pruebas integrales. Las pruebas que se realizan son muy variadas, siendo las más usuales: • Pruebas de Funcionalidad, orientadas a determinar el cumplimiento de las funcionalidades del sistema respecto a los requerimientos de los usuarios. • Pruebas de Integridad, orientadas a probar el sistema en su conjunto y evaluar si los módulos y componentes operan bien estando interrelacionados. • Pruebas de Sobrecarga, orientadas a probar fundamentalmente el desempeño de la base de datos, la velocidad de los algoritmos de búsqueda de datos y las funciones de ordenamiento de la base de datos. • Pruebas de Tensión, orientadas a probar los programas de manera simultánea desde varias terminales. • Pruebas de ergonomía del sistema, orientadas a evaluar la facilidad de uso de los programas, su amigabilidad, su personalización, etc. En el sistema de administración estudiantil se realizaron varios tipos de pruebas entre ellas las de funcionalidad en las cuales se determinaron algunas fallas de comprensión, estos errores fueron oportunamente corregidos. En la parte de pruebas de Integridad se descubrió un error en la parte de integrar el formulario independiente al formulario de navegación ya que al programar el formulario independientemente se realizaba un criterio llamando únicamente al formulario pero al integrarlo al módulo de navegación se debía llamar primero al módulo de navegación para después llamar al formulario y con esto obtener el criterio de búsqueda. Gracias a las pruebas de integridad se pudo detectar este error y corregirlo. El formulario específico dónde se halló dicho error fue en el “Registro de Matrícula” en la Gestión de Estudiantes. 47 3.2.4.2. Despliegue En esta etapa es cuando se presenta el sistema al usuario final. Se entrega el producto terminado al jefe del proyecto quien evaluará si el sistema ya se encuentra en estado de ser utilizado por el usuario final. Esta etapa se encuentra principalmente en la fase de Transición. Para este proyecto el usuario ha cumplido con la etapa de Transición. El sistema ha sido sometido a la pre-defensa donde el tribunal ha revisado la calidad del sistema. 48 CONCLUSIONES 1) El presente proyecto permitió al San Francisco AutoClub contar con un sistema amigable para la administración estudiantil de los alumnos de la licencia tipo C. 2) Al haber realizado el desarrollo con la herramienta Microsoft Access 2010 se pudo ofrecer un sistema robusto a través de una herramienta para ellos conocida pero no aprovechada. 3) Por medio de Microsoft Access se puede realizar sistemas a pequeñas y medianas empresas quienes no cuentan con infraestructura robusta ni medios para conseguirla. 4) Microsoft Access ha tenido una gran evolución con el pasar de los años, la cual se ha convertido en una robusta herramienta de manejo y conexión remoto a base de datos. Y nos brinda una amplia gama de opciones al momento de querer escalar a otras plataformas como por ejemplo la plataforma Web. 5) La solución Microsoft SQL Server 2008 con su suite Microsoft SQL Server Management Studio 2008 Express son muy útiles para trabajar en bases de datos a pequeña o a gran escala. 49 RECOMENDACIONES 1) Se recomienda seguir los protocolos ya establecidos en el San Francisco AutoClub para que el sistema brinde un correcto acompañamiento. 2) La creación de registros sensibles como cursos, cambio de estado de matrículas y carga de notas de grado lo debe hacer una persona con responsabilidad designada por el San Francisco AutoClub. 3) Respaldar la base de datos con cierta periodicidad y en especial luego de pasos claves como matriculación y registro de notas. 4) En base al trabajo realizado y habiendo analizado el funcionamiento de la herramienta Microsoft Access 2010 se recomienda que en el pensum de la carrera de Tecnología en Análisis de Sistemas Informáticos se incluya la cátedra de ofimática avanzada para mejorar la productividad en las empresas a través de herramientas muy conocidas y a la vez muy poco explotadas. 50 BIBLIOGRAFÍA LIBROS PRESSMAN, Roger. Ingeniería de Software, Un Enfoque Práctico. Mc Graw Hill, 2002. México. SOMMERVILLE, Ian. Ingeniería del Software. Addison Wesley. 2005. España. ALONSO F, MARTINEZ L, SEGOVIA J. Introducción a la Ingeniería del Software. Delta Publicaciones. 2005. España. NEVADO CABELLO, Ma Victoria. Introducción a las Bases de Datos Relacionales. Visión Libros. 2010. España. RAMOS MARTÍN Alicia, RAMOS MARTIN Ma. Jesús. Operaciones con Bases de Datos Ofimáticas y Corporativas. Paraninfo. 2008. España. SINCLAIR, Russell. From Access to SQL Server. Apress; Springer-Verlag, 2000. New York. COUCH, Andrew. Microsoft® Access® 2010 VBA Programming Inside Out; Microsoft, 2011. USA. VIESCAS, John L. Building Microsoft® Access Applications; Microsoft, 2005. USA. WEITZENFELD, Alfredo. Ingeniería de Software orientada a Objetos con UML, Java en Internet. Cengage Learning Editores, 2005. GUÉRIN, Brice-Arnaud. Gestión de proyectos informáticos. Eni Ediciones. 2012. España. JACOBSON I, BOOCH G, RUMBAUGH J. El Proceso Unificado de Desarrollo de Software. Addison Wesley, 1999. Madrid RUMBAUGH J, JACOBSON I, BOOCH G. El Lenguaje Unificado de Modelado, Manual de Referencia. Addison Wesley, 2000. Madrid 51 SITIOS WEB Emagister, Septiembre 2012, http://www.emagister.com/curso-informatica- administracion-publica-3/bases-datos-concepto-caracteristicas-funcionalidades Microsoft, SQL Server Express Edition – Windows, Mayo 2012, http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/express.aspx Microsoft, Microsoft Access 2010 – Office.com, Mayo 2012, http://office.microsoft.com/es-es/access/ Microsoft, Introducción a la programación de Access – Access – Office 2010, Mayo 2012, http://office.microsoft.com/es-es/access-help/introduccion-a-la- programacion-de-access-HA010341717.aspx?CTT=1 http://msdn.microsoft.com/es-ec/ http://office.microsoft.com/es-hn/access-help/tareas-basicas-en-access-2010HA101829991.aspx?CTT=5&origin=HA010341722 http://msdn.microsoft.com/es-es/library/thzzea08%28v=vs.80%29.aspx http://msdn.microsoft.com/es-es/library/ms172579%28v=vs.80%29.aspx http://msdn.microsoft.com/eses/library/office/ee814735%28v=office.14%29.aspx#ProductVersionKeyword_Intro duction, Mayo 2013 http://es.wikipedia.org/wiki/Visual_Basic_for_Applications, Mayo 2013 http://office.microsoft.com/es-es/access-help/importar-o-vincular-datos-de-sqlserver-HA010200494.aspx#BM3 52 ANEXOS 53 DICCIONARIO DE DATOS NOMBRE DE CAMPO ID_ALUMNO NOMBRES APELLIDOS DIRECCION TELEFONO CELULAR FECHA_NACIMIENTO EMAIL ID_EMPLEADO SIGLAS_EMPLEADO NOMBRES_EMPLEADO APELLIDOS_EMPLEADO TITULO_EMPLEADO DIRECCION_EMPLEADO TELEFONO_EMPLEADO CELULAR_EMPLEADO FECHA_NACIMIENTO_EMPLEADO EMAIL_EMPLEADO ID_MATERIA MATERIA CREDITOS_MATERIA DESCRIPCION_MATERIA ID_AULA AULA DESCRIPCION_AULA ID_CURSO FECHA_INICIO_CURSO FECHA_FIN_CURSO NUMERO_AUTOS_CURSO PUNTAJE_MINIMO_TEORIA PUNTAJE_MINIMO_PRACTICA ID_ESTADO_CURSO ESTADO_CURSO DESCRIPCION_ESTADO_CURSO ID_ESTADO_ALUMNO ESTADO_ALUMNO DESCRIPCION_ESTADO_ALUMNO ID_ESTADO_EMPLEADO ESTADO_EMPLEADO DESCRIPCION_ESTADO_EMPLEADO ID_ESTADO_GENERAL ESTADO_GENERAL DESCRIPCION_ESTADO_GENERAL ID_ESTADO_ALUMNO_MATRICULADO ESTADO_ALUMNO_MATRICULADO DESCRIPCION_ESTADO_ALUMNO_MATRICULADO ID_TIPO_SANGRE TIPO_SANGRE ID_ESTADO_CIVIL ESTADO_CIVIL DESCRIPCIÓN Identificador de alumno Nombres de alumno Apellidos de alumno Dirección de alumno Teléfono de alumno Celular de alumno Fecha de nacimiento de alumno Correo electrónico de alumno Identificador de empleado Siglas de empleado para manejo interno Nombres de empleado Apellidos de empleado Título académico de empleado Dirección de empleado Teléfono de empleado Celular de empleado Fecha de nacimiento de empleado Correo electrónico de empleado Identificador de materia Nombre de materia Número de créditos de materia Descripción de materia Identificador de aula Nombre de aula Descripción de aula Identificador de curso Fecha en la que inicia el curso Fecha en la que finaliza el curso Número de autos disponibles para el curso Puntaje mínimo para aprobar teoría Puntaje mínimo para aprobar práctica Identificador del estado del curso Estado del curso Descripción del estado del curso Identificador del estado de alumno Estado de alumno Descripción del estado de alumno Identificador del estado de empleado Estado de empleado Descripción del estado de empleado Identificador del estado general Estado general Descripción del estado general Identificador del estado de alumno matriculado Estado de alumno matriculado Descripción del estado de alumno matriculado Identificador de tipo de sangre Tipo de sangre Identificador de estado civil Estado civil 54 ID_NACIONALIDAD NACIONALIDAD ID_SEXO SEXO NUMERO_ALUMNOS NUMERO_AULAS ID_HORARIO HORARIO ID_CARGO CARGO DESCRIPCION_CARGO ID_CICLO_PRACTICA FECHA_INICIO_CICLO_PRACTICA FECHA_FIN_CICLO_PRACTICA FECHA_INICIO_CICLO_TEORIA FECHA_FIN_CICLO_TEORIA ASISTENCIA_NOTA_MATERIA NOTA1_NOTA_MATERIA NOTA2_NOTA_MATERIA NOTA3_NOTA_MATERIA NOTA4_NOTA_MATERIA SUPLETORIO_NOTA_MATERIA NOTA1_NOTA_PRACTICA SUPLETORIO_NOTA_PRACTICA GRADO_NOTA_GRADO SUPLETORIO_NOTA_GRADO COD_ALUM_ALUMNO_MATRICULADO Identificador nacionalidad Nacionalidad Identificador sexo Sexo Número de alumnos en un horario determinado Número de aulas que se necesitarán para el número de alumnos Identificador de horario Horario Identificador de cargo Cargo Descripción de cargo Identificador de ciclo de práctica Fecha en que inicia el ciclo de práctica Fecha en que finaliza el ciclo de práctica Fecha en que inicia el ciclo de teoría Fecha en que finaliza el ciclo de teoría Porcentaje de asistencia en una materia Primera nota de la materia Segunda nota de la materia Tercera nota de la materia Cuarta nota de la materia Nota de supletorio de la materia Nota final de práctica Nota de supletorio de práctica Nota de grado Nota de supletorio de grado Código de alumno matriculado 55 MANUAL TÉCNICO 56 MANUAL TÉCNICO 1. FASE DE INICIO 1.1. IDENTIFICACIÓN DE ACTORES Actores Director Secretaria Profesor Supervisor de flota Actividades Crea cursos Cierra matriculas Habilita Grados Finaliza cursos Registra ciclo de teoría Registra ciclo de práctica Registrar nuevo alumno Matricular alumno registrado Asigna profesores y aulas Registrar notas de supletorio de teoría Registrar notas de grado Registrar notas de supletorio de grado Imprime reportes Registrar notas de teoría y asistencia Registrar notas de práctica -1- 1.2. DIAGRAMA DE CASOS DE USO DEL SISTEMA SFAC 1.2.1. DIAGRAMA DE CASOS DE USO GENÉRICO 1.2.2. DIAGRAMA DE CASOS DE USO ESPECÍFICO -2- 2. FASE DE ELABORACIÓN 2.1 VISTA LÓGICA 2.1.1. DIAGRAMA DE CLASES DEL SAESFAC -3- char(10) int int int int int int varchar(4) varchar(50) varchar(50) varchar(50) varchar(100) varchar(30) varchar(30) datetime varchar(30) <pk> <fk1> <fk2> <fk3> <fk4> <fk5> <fk6> T E003_ESTADO_EMPLEADO NUMERO_ALUMNOS int <pk> NUMERO_AULAS int TT005_DISTRIBUCION_AULA TE001_ESTADO_CURSO TE005_ESTADO_ALUMNO_MATRICULADO ID_EST ADO_CURSO int <pk> ESTADO_CURSO varchar(100) DESCRIPCION_ESTADO_CURSO varchar(150) ID_ALUMNO ID_CURSO NOTA1_NOTA_PRACTICA SUPLETORIO_NOT A_PRACTICA char(10) <pk,fk> char(6) <pk,fk> float float TX005_NOTA_PRACT ICA FK_TX005_NO_REFERENCE_T X007_AL ID_EST ADO_ALUMNO_MATRICULADO int <pk> ESTADO_ALUMNO_MATRICULADO varchar(100) DESCRIPCION_ESTADO_ALUMNO_MAT RICULADO varchar(150) ID_EMPLEADO char(10) <pk,fk> PASSWORD varchar(500) TT007_CARGO int <pk> datetime datetime <fk> char(6) ID_AULA ID_ESTADO_GENERAL AULA DESCRIPCION_AULA TB004_AULA ID_CURSO char(6) <pk> ID_ESTADO_CURSO int <fk> FECHA_INICIO_CURSO datetime FECHA_FIN_CURSO datetime NUMERO_AUTOS_CURSO int PUNTAJE_MINIMO_TEORIA float FK_TX002_MA_REFERENCE_TB004_AU PUNTAJE_MINIMO_PRACTICA float TB005_CURSO FK_TX003_CI_REFERENCE_TB005_CU ID_EST ADO_ALUMNO int <pk> ESTADO_ALUMNO varchar(100) FK_TX003_CI_REFERENCE_TB003_MA DESCRIPCION_ESTADO_ALUMNO varchar(150) FK_TB005_CU_REFERENCE_TE001_ES T E002_ESTADO_ALUMNO FK_TX007_AL_REFERENCE_TT008_CI ID_ESTADO_GENERAL int <pk> ESTADO_GENERAL varchar(100) DESCRIPCION_EST ADO_GENERAL varchar(150) TE004_EST ADO_GENERAL int int varchar(50) varchar(100) FK_TX002_MA_REFERENCE_TT006_HO T X003_CICLO_T EORIA TB003_MAT ERIA FECHA_INICIO_CICLO_T EORIA datetime FK_TB001_AL_REFERENCE_TE002_ES ID_MAT ERIA int <pk> FECHA_FIN_CICLO_TEORIA datetime ID_ESTADO_GENERAL int <fk> <pk,fk1> ID_CURSO char(6) FK_TB003_MA_REFERENCE_TE004_ES MATERIA varchar(150) ID_MATERIA int <pk,fk2> FK_T T008_CI_REFERENCE_TB005_CU CREDITOS_MATERIA int DESCRIPCION_MATERIA varchar(200) FK_T X002_MA_REFERENCE_TB002_EM ID_CICLO_PRACTICA FECHA_INICIO_CICLO_PRACTICA FECHA_FIN_CICLO_PRACTICA ID_CURSO FK_TB004_AU_REFERENCE_TE004_ES T T008_CICLO_PRACTICA ID_CARGO int <pk> CARGO varchar(30) DESCRIPCION_CARGO varchar(50) TT006_HORARIO <pk> ID_HORARIO int HORARIO varchar(30) ID_ESTADO_ALUMNO_MATRICULADO ID_ALUMNO ID_CURSO ID_HORARIO_TEORIA ID_HORARIO_PRACTICA ID_AULA ID_CICLO_PRACTICA CODIGO_ALUMNO_ALUMNO_MATRICULADO int <fk1> TX004_NOTA_MATERIA FK_T X002_MA_REFERENCE_T B005_CU char(10) <pk,fk2> FK_T X007_AL_REFERENCE_TB004_AU ID_ALUMNO char(10) <pk,fk1> char(6) <pk,fk3> FK_TX007_AL_REFERENCE_TB005_CU ID_CURSO char(6) <pk,fk1> int <fk4> ID_MATERIA int <pk,fk2> int FK_TX004_NO_REFERENCE_TX007_AL <fk5> ASISTENCIA_NOTA_MAT ERIA int int <fk6> NOTA1_NOTA_MATERIA float int <fk7> NOTA2_NOTA_MATERIA float int NOTA3_NOTA_MATERIA float NOTA4_NOTA_MATERIA float SUPLETORIO_NOT A_MATERIA float TX007_ALUMNO_MAT RICULADO FK_TX007_AL_REFERENCE_TB001_ALTX006_NOTA_GRADO TX002_MATERIA_AULA_PROFESOR ID_ALUMNO char(10) <pk,fk> ID_CURSO char(6) <pk,fk> ID_CURSO char(6) <pk,fk1> GRADO_NOTA_GRADO float ID_MATERIA int <pk,fk2> SUPLETORIO_NOTA_GRADO float ID_EMPLEADO char(10) <pk,fk3> FK_TX007_AL_REFERENCE_TE005_ES FK_TX004_NO_REFERENCE_TB003_MA ID_HORARIO int <pk,fk4> FK_T X006_NO_REFERENCE_TX007_AL FK_TX002_MA_REFERENCE_T B003_MA ID_AULA int <pk,fk5> ID_ALUMNO char(10) <pk> ID_TIPO_SANGRE int <fk1> ID_NACIONALIDAD int <fk2> ID_ESTADO_CIVIL int <fk3> ID_SEXO int <fk4> FK_TB002_EM_REFERENCE_TT002_ES ID_ESTADO_ALUMNO int <fk5> NOMBRES varchar(50) APELLIDOS varchar(50) DIRECCION varchar(100) TELEFONO varchar(30) CELULAR varchar(30) FECHA_NACIMIENT O datetime EMAIL varchar(50) TB001_ALUMNO TT004_SEXO ID_SEXO int <pk> FK_TX007_AL_REF_TT006_HO SEXO varchar(30) FK_TX007_AL_REFERENCE_T T006_HO FK_T B001_AL_REFERENCE_TT 004_SE FK_TB002_EM_REFERENCE_TT 007_CA ID_ESTADO_EMPLEADO int <pk> FK_T B002_EM_REFERENCE_TE003_ES ESTADO_EMPLEADO varchar(100) DESCRIPCION_EST ADO_EMPLEADO varchar(150) TB006_ACCESO FK_TB006_AC_REFERENCE_TB002_EM ID_EMPLEADO ID_NACIONALIDAD ID_T IPO_SANGRE ID_ESTADO_CIVIL ID_SEXO ID_CARGO ID_ESTADO_EMPLEADO SIGLAS_EMPLEADO NOMBRES_EMPLEADO APELLIDOS_EMPLEADO TITULO_EMPLEADO DIRECCION_EMPLEADO TELEFONO_EMPLEADO CELULAR_EMPLEADO FECHA_NACIMIENTO_EMPLEADO EMAIL_EMPLEADO TB002_EMPLEADO FK_TB002_EM_REFERENCE_TT003_NA FK_T B001_AL_REFERENCE_TT001_T I FK_TB001_AL_REFERENCE_TT 003_NA FK_T B001_AL_REFERENCE_TT002_ES ID_NACIONALIDAD int <pk> NACIONALIDAD FK_Tvarchar(30) B002_EM_REFERENCE_T T001_TI T T003_NACIONALIDAD FK_TB002_EM_REFERENCE_TT004_SE TT002_ESTADO_CIVIL ID_ESTADO_CIVIL int <pk> ESTADO_CIVIL varchar(30) TT 001_T IPO_SANGRE ID_TIPO_SANGRE int <pk> TIPO_SANGRE varchar(5) 2.1.2.- DIAGRAMA DE ENTIDAD RELACIÓN DEL SISTEMA SAESFAC -4- 2.2 VISTA DE IMPLEMENTACIÓN 2.2.1. DIAGRAMAS DE SECUENCIA 2.2.1.1. Diagrama de secuencia de Gestión de Curso del SAESFAC -5- 2.2.1.2.- Diagrama de secuencia de Gestión de Notas -6- 2.2.1.3.- Diagrama de secuencia de Gestión de Estudiantes -7- 2.2.2. DIAGRAMAS DE ESTADO 2.2.2.1.- Diagrama de Estados de Curso 8 2.2.2.2.- Diagrama de Estados de Alumno Matriculado 9 2.2.3. DIAGRAMAS DE COLABORACIÓN 2.2.3.1. Gestión del curso 2.2.3.1.1. Diagrama de colaboración de creación de curso 2.2.3.1.2. Diagrama de colaboración de cierre de matrículas 2.2.3.1.3. Diagrama de colaboración de habilitación de grados 10 2.2.3.1.4. Diagrama de colaboración de cierre de curso 2.2.3.2. Diagrama de colaboración de Gestión de notas 11 2.2.3.3. Diagrama de colaboración de matriculación de estudiante 12 4. IMPLEMENTACIÓN 4.1. SCRIPT DE LA BASE DE DATOS /*==============================================================*/ /* DBMS name: Microsoft SQL Server 2008 */ /* Created on: 11/05/2012 13:26:16 */ /*==============================================================*/ if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB001_ALUMNO') and o.name = 'FK_TB001_AL_REFERENCE_TT001_TI') alter table TB001_ALUMNO drop constraint FK_TB001_AL_REFERENCE_TT001_TI go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB001_ALUMNO') and o.name = 'FK_TB001_AL_REFERENCE_TE002_ES') alter table TB001_ALUMNO drop constraint FK_TB001_AL_REFERENCE_TE002_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB001_ALUMNO') and o.name = 'FK_TB001_AL_REFERENCE_TT003_NA') alter table TB001_ALUMNO drop constraint FK_TB001_AL_REFERENCE_TT003_NA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB001_ALUMNO') and o.name = 'FK_TB001_AL_REFERENCE_TT002_ES') alter table TB001_ALUMNO drop constraint FK_TB001_AL_REFERENCE_TT002_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB001_ALUMNO') and o.name = 'FK_TB001_AL_REFERENCE_TT004_SE') alter table TB001_ALUMNO drop constraint FK_TB001_AL_REFERENCE_TT004_SE go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB002_EMPLEADO') and o.name = 'FK_TB002_EM_REFERENCE_TE003_ES') alter table TB002_EMPLEADO drop constraint FK_TB002_EM_REFERENCE_TE003_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB002_EMPLEADO') and o.name = 'FK_TB002_EM_REFERENCE_TT003_NA') alter table TB002_EMPLEADO drop constraint FK_TB002_EM_REFERENCE_TT003_NA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB002_EMPLEADO') and o.name = 'FK_TB002_EM_REFERENCE_TT001_TI') alter table TB002_EMPLEADO drop constraint FK_TB002_EM_REFERENCE_TT001_TI 13 go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB002_EMPLEADO') and o.name = 'FK_TB002_EM_REFERENCE_TT002_ES') alter table TB002_EMPLEADO drop constraint FK_TB002_EM_REFERENCE_TT002_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB002_EMPLEADO') and o.name = 'FK_TB002_EM_REFERENCE_TT004_SE') alter table TB002_EMPLEADO drop constraint FK_TB002_EM_REFERENCE_TT004_SE go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB002_EMPLEADO') and o.name = 'FK_TB002_EM_REFERENCE_TT007_CA') alter table TB002_EMPLEADO drop constraint FK_TB002_EM_REFERENCE_TT007_CA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB003_MATERIA') and o.name = 'FK_TB003_MA_REFERENCE_TE004_ES') alter table TB003_MATERIA drop constraint FK_TB003_MA_REFERENCE_TE004_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB004_AULA') and o.name = 'FK_TB004_AU_REFERENCE_TE004_ES') alter table TB004_AULA drop constraint FK_TB004_AU_REFERENCE_TE004_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB005_CURSO') and o.name = 'FK_TB005_CU_REFERENCE_TE001_ES') alter table TB005_CURSO drop constraint FK_TB005_CU_REFERENCE_TE001_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TB006_ACCESO') and o.name = 'FK_TB006_AC_REFERENCE_TB002_EM') alter table TB006_ACCESO drop constraint FK_TB006_AC_REFERENCE_TB002_EM go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TT008_CICLO_PRACTICA') and o.name = 'FK_TT008_CI_REFERENCE_TB005_CU') alter table TT008_CICLO_PRACTICA drop constraint FK_TT008_CI_REFERENCE_TB005_CU go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX002_MATERIA_AULA_PROFESOR') and o.name = 'FK_TX002_MA_REFERENCE_TB005_CU') alter table TX002_MATERIA_AULA_PROFESOR drop constraint FK_TX002_MA_REFERENCE_TB005_CU go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') 14 where r.fkeyid = object_id('TX002_MATERIA_AULA_PROFESOR') and o.name = 'FK_TX002_MA_REFERENCE_TB003_MA') alter table TX002_MATERIA_AULA_PROFESOR drop constraint FK_TX002_MA_REFERENCE_TB003_MA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX002_MATERIA_AULA_PROFESOR') and o.name = 'FK_TX002_MA_REFERENCE_TB002_EM') alter table TX002_MATERIA_AULA_PROFESOR drop constraint FK_TX002_MA_REFERENCE_TB002_EM go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX002_MATERIA_AULA_PROFESOR') and o.name = 'FK_TX002_MA_REFERENCE_TT006_HO') alter table TX002_MATERIA_AULA_PROFESOR drop constraint FK_TX002_MA_REFERENCE_TT006_HO go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX002_MATERIA_AULA_PROFESOR') and o.name = 'FK_TX002_MA_REFERENCE_TB004_AU') alter table TX002_MATERIA_AULA_PROFESOR drop constraint FK_TX002_MA_REFERENCE_TB004_AU go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX003_CICLO_TEORIA') and o.name = 'FK_TX003_CI_REFERENCE_TB005_CU') alter table TX003_CICLO_TEORIA drop constraint FK_TX003_CI_REFERENCE_TB005_CU go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX003_CICLO_TEORIA') and o.name = 'FK_TX003_CI_REFERENCE_TB003_MA') alter table TX003_CICLO_TEORIA drop constraint FK_TX003_CI_REFERENCE_TB003_MA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX004_NOTA_MATERIA') and o.name = 'FK_TX004_NO_REFERENCE_TX007_AL') alter table TX004_NOTA_MATERIA drop constraint FK_TX004_NO_REFERENCE_TX007_AL go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX004_NOTA_MATERIA') and o.name = 'FK_TX004_NO_REFERENCE_TB003_MA') alter table TX004_NOTA_MATERIA drop constraint FK_TX004_NO_REFERENCE_TB003_MA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX005_NOTA_PRACTICA') and o.name = 'FK_TX005_NO_REFERENCE_TX007_AL') alter table TX005_NOTA_PRACTICA drop constraint FK_TX005_NO_REFERENCE_TX007_AL go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX006_NOTA_GRADO') and o.name = 'FK_TX006_NO_REFERENCE_TX007_AL') alter table TX006_NOTA_GRADO 15 drop constraint FK_TX006_NO_REFERENCE_TX007_AL go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REFERENCE_TE005_ES') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REFERENCE_TE005_ES go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REFERENCE_TB001_AL') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REFERENCE_TB001_AL go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REFERENCE_TB005_CU') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REFERENCE_TB005_CU go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REF_TT006_HO') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REF_TT006_HO go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REFERENCE_TT006_HO') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REFERENCE_TT006_HO go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REFERENCE_TB004_AU') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REFERENCE_TB004_AU go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TX007_ALUMNO_MATRICULADO') and o.name = 'FK_TX007_AL_REFERENCE_TT008_CI') alter table TX007_ALUMNO_MATRICULADO drop constraint FK_TX007_AL_REFERENCE_TT008_CI go if exists (select 1 from sysobjects where id = object_id('TB001_ALUMNO') and type = 'U') drop table TB001_ALUMNO go if exists (select 1 from sysobjects where id = object_id('TB002_EMPLEADO') and type = 'U') drop table TB002_EMPLEADO go if exists (select 1 from sysobjects 16 where id = object_id('TB003_MATERIA') and type = 'U') drop table TB003_MATERIA go if exists (select 1 from sysobjects where id = object_id('TB004_AULA') and type = 'U') drop table TB004_AULA go if exists (select 1 from sysobjects where id = object_id('TB005_CURSO') and type = 'U') drop table TB005_CURSO go if exists (select 1 from sysobjects where id = object_id('TB006_ACCESO') and type = 'U') drop table TB006_ACCESO go if exists (select 1 from sysobjects where id = object_id('TE001_ESTADO_CURSO') and type = 'U') drop table TE001_ESTADO_CURSO go if exists (select 1 from sysobjects where id = object_id('TE002_ESTADO_ALUMNO') and type = 'U') drop table TE002_ESTADO_ALUMNO go if exists (select 1 from sysobjects where id = object_id('TE003_ESTADO_EMPLEADO') and type = 'U') drop table TE003_ESTADO_EMPLEADO go if exists (select 1 from sysobjects where id = object_id('TE004_ESTADO_GENERAL') and type = 'U') drop table TE004_ESTADO_GENERAL go if exists (select 1 from sysobjects where id = object_id('TE005_ESTADO_ALUMNO_MATRICULADO') and type = 'U') drop table TE005_ESTADO_ALUMNO_MATRICULADO go if exists (select 1 from sysobjects where id = object_id('TT001_TIPO_SANGRE') and type = 'U') drop table TT001_TIPO_SANGRE go if exists (select 1 from sysobjects where id = object_id('TT002_ESTADO_CIVIL') and type = 'U') drop table TT002_ESTADO_CIVIL go 17 if exists (select 1 from sysobjects where id = object_id('TT003_NACIONALIDAD') and type = 'U') drop table TT003_NACIONALIDAD go if exists (select 1 from sysobjects where id = object_id('TT004_SEXO') and type = 'U') drop table TT004_SEXO go if exists (select 1 from sysobjects where id = object_id('TT005_DISTRIBUCION_AULA') and type = 'U') drop table TT005_DISTRIBUCION_AULA go if exists (select 1 from sysobjects where id = object_id('TT006_HORARIO') and type = 'U') drop table TT006_HORARIO go if exists (select 1 from sysobjects where id = object_id('TT007_CARGO') and type = 'U') drop table TT007_CARGO go if exists (select 1 from sysobjects where id = object_id('TT008_CICLO_PRACTICA') and type = 'U') drop table TT008_CICLO_PRACTICA go if exists (select 1 from sysobjects where id = object_id('TX002_MATERIA_AULA_PROFESOR') and type = 'U') drop table TX002_MATERIA_AULA_PROFESOR go if exists (select 1 from sysobjects where id = object_id('TX003_CICLO_TEORIA') and type = 'U') drop table TX003_CICLO_TEORIA go if exists (select 1 from sysobjects where id = object_id('TX004_NOTA_MATERIA') and type = 'U') drop table TX004_NOTA_MATERIA go if exists (select 1 from sysobjects where id = object_id('TX005_NOTA_PRACTICA') and type = 'U') drop table TX005_NOTA_PRACTICA go if exists (select 1 from sysobjects where id = object_id('TX006_NOTA_GRADO') and type = 'U') drop table TX006_NOTA_GRADO 18 go if exists (select 1 from sysobjects where id = object_id('TX007_ALUMNO_MATRICULADO') and type = 'U') drop table TX007_ALUMNO_MATRICULADO go /*==============================================================*/ /* Table: TB001_ALUMNO */ /*==============================================================*/ create table TB001_ALUMNO ( ID_ALUMNO char(10) not null, ID_TIPO_SANGRE int not null, ID_NACIONALIDAD int not null, ID_ESTADO_CIVIL int not null, ID_SEXO int not null, ID_ESTADO_ALUMNO int not null, NOMBRES varchar(50) not null, APELLIDOS varchar(50) not null, DIRECCION varchar(100) not null, TELEFONO varchar(30) null, CELULAR varchar(30) null, FECHA_NACIMIENTO datetime not null, EMAIL varchar(50) not null, constraint PK_TB001_ALUMNO primary key (ID_ALUMNO) ) go /*==============================================================*/ /* Table: TB002_EMPLEADO */ /*==============================================================*/ create table TB002_EMPLEADO ( ID_EMPLEADO char(10) not null, ID_NACIONALIDAD int not null, ID_TIPO_SANGRE int not null, ID_ESTADO_CIVIL int not null, ID_SEXO int not null, ID_CARGO int not null, ID_ESTADO_EMPLEADO int not null, SIGLAS_EMPLEADO varchar(4) not null, NOMBRES_EMPLEADO varchar(50) not null, APELLIDOS_EMPLEADO varchar(50) not null, TITULO_EMPLEADO varchar(50) not null, DIRECCION_EMPLEADO varchar(100) not null, TELEFONO_EMPLEADO varchar(30) not null, CELULAR_EMPLEADO varchar(30) not null, FECHA_NACIMIENTO_EMPLEADO datetime not null, EMAIL_EMPLEADO varchar(30) not null, constraint PK_TB002_EMPLEADO primary key (ID_EMPLEADO) ) go /*==============================================================*/ /* Table: TB003_MATERIA */ /*==============================================================*/ create table TB003_MATERIA ( ID_MATERIA int identity, ID_ESTADO_GENERAL int not null, MATERIA varchar(150) not null, CREDITOS_MATERIA int not null, DESCRIPCION_MATERIA varchar(200) not null, constraint PK_TB003_MATERIA primary key (ID_MATERIA) ) go /*==============================================================*/ /* Table: TB004_AULA */ /*==============================================================*/ create table TB004_AULA ( ID_AULA int identity, ID_ESTADO_GENERAL int not null, AULA varchar(50) not null, DESCRIPCION_AULA varchar(100) not null, 19 constraint PK_TB004_AULA primary key (ID_AULA) ) go /*==============================================================*/ /* Table: TB005_CURSO */ /*==============================================================*/ create table TB005_CURSO ( ID_CURSO char(6) not null, ID_ESTADO_CURSO int not null, FECHA_INICIO_CURSO datetime not null, FECHA_FIN_CURSO datetime not null, NUMERO_AUTOS_CURSO int not null, PUNTAJE_MINIMO_TEORIA float not null, PUNTAJE_MINIMO_PRACTICA float not null, constraint PK_TB005_CURSO primary key (ID_CURSO) ) go /*==============================================================*/ /* Table: TB006_ACCESO */ /*==============================================================*/ create table TB006_ACCESO ( ID_EMPLEADO char(10) not null, PASSWORD varchar(500) not null, constraint PK_TB006_ACCESO primary key (ID_EMPLEADO) ) go /*==============================================================*/ /* Table: TE001_ESTADO_CURSO */ /*==============================================================*/ create table TE001_ESTADO_CURSO ( ID_ESTADO_CURSO int identity, ESTADO_CURSO varchar(100) not null, DESCRIPCION_ESTADO_CURSO varchar(150) null, constraint PK_TE001_ESTADO_CURSO primary key (ID_ESTADO_CURSO) ) go /*==============================================================*/ /* Table: TE002_ESTADO_ALUMNO */ /*==============================================================*/ create table TE002_ESTADO_ALUMNO ( ID_ESTADO_ALUMNO int identity, ESTADO_ALUMNO varchar(100) not null, DESCRIPCION_ESTADO_ALUMNO varchar(150) null, constraint PK_TE002_ESTADO_ALUMNO primary key (ID_ESTADO_ALUMNO) ) go /*==============================================================*/ /* Table: TE003_ESTADO_EMPLEADO */ /*==============================================================*/ create table TE003_ESTADO_EMPLEADO ( ID_ESTADO_EMPLEADO int identity, ESTADO_EMPLEADO varchar(100) not null, DESCRIPCION_ESTADO_EMPLEADO varchar(150) null, constraint PK_TE003_ESTADO_EMPLEADO primary key (ID_ESTADO_EMPLEADO) ) go /*==============================================================*/ /* Table: TE004_ESTADO_GENERAL */ /*==============================================================*/ create table TE004_ESTADO_GENERAL ( ID_ESTADO_GENERAL int identity, ESTADO_GENERAL varchar(100) not null, DESCRIPCION_ESTADO_GENERAL varchar(150) null, constraint PK_TE004_ESTADO_GENERAL primary key (ID_ESTADO_GENERAL) ) go /*==============================================================*/ /* Table: TE005_ESTADO_ALUMNO_MATRICULADO */ 20 /*==============================================================*/ create table TE005_ESTADO_ALUMNO_MATRICULADO ( ID_ESTADO_ALUMNO_MATRICULADO int identity, ESTADO_ALUMNO_MATRICULADO varchar(100) not null, DESCRIPCION_ESTADO_ALUMNO_MATRICULADO varchar(150) null, constraint PK_TE005_ESTADO_ALUMNO_MATRICU primary key (ID_ESTADO_ALUMNO_MATRICULADO) ) go /*==============================================================*/ /* Table: TT001_TIPO_SANGRE */ /*==============================================================*/ create table TT001_TIPO_SANGRE ( ID_TIPO_SANGRE int identity, TIPO_SANGRE varchar(5) not null, constraint PK_TT001_TIPO_SANGRE primary key (ID_TIPO_SANGRE) ) go /*==============================================================*/ /* Table: TT002_ESTADO_CIVIL */ /*==============================================================*/ create table TT002_ESTADO_CIVIL ( ID_ESTADO_CIVIL int identity, ESTADO_CIVIL varchar(30) not null, constraint PK_TT002_ESTADO_CIVIL primary key (ID_ESTADO_CIVIL) ) go /*==============================================================*/ /* Table: TT003_NACIONALIDAD */ /*==============================================================*/ create table TT003_NACIONALIDAD ( ID_NACIONALIDAD int identity, NACIONALIDAD varchar(30) not null, constraint PK_TT003_NACIONALIDAD primary key (ID_NACIONALIDAD) ) go /*==============================================================*/ /* Table: TT004_SEXO */ /*==============================================================*/ create table TT004_SEXO ( ID_SEXO int identity, SEXO varchar(30) not null, constraint PK_TT004_SEXO primary key (ID_SEXO) ) go /*==============================================================*/ /* Table: TT005_DISTRIBUCION_AULA */ /*==============================================================*/ create table TT005_DISTRIBUCION_AULA ( NUMERO_ALUMNOS int not null, NUMERO_AULAS int not null, constraint PK_TT005_DISTRIBUCION_AULA primary key (NUMERO_ALUMNOS) ) go /*==============================================================*/ /* Table: TT006_HORARIO */ /*==============================================================*/ create table TT006_HORARIO ( ID_HORARIO int identity, HORARIO varchar(30) not null, constraint PK_TT006_HORARIO primary key (ID_HORARIO) ) go /*==============================================================*/ /* Table: TT007_CARGO */ /*==============================================================*/ create table TT007_CARGO ( ID_CARGO int identity, CARGO varchar(30) not null, 21 DESCRIPCION_CARGO varchar(50) null, constraint PK_TT007_CARGO primary key (ID_CARGO) ) go /*==============================================================*/ /* Table: TT008_CICLO_PRACTICA */ /*==============================================================*/ create table TT008_CICLO_PRACTICA ( ID_CICLO_PRACTICA int identity, FECHA_INICIO_CICLO_PRACTICA datetime not null, FECHA_FIN_CICLO_PRACTICA datetime not null, ID_CURSO char(6) not null, constraint PK_TT008_CICLO_PRACTICA primary key (ID_CICLO_PRACTICA) ) go /*==============================================================*/ /* Table: TX002_MATERIA_AULA_PROFESOR */ /*==============================================================*/ create table TX002_MATERIA_AULA_PROFESOR ( ID_CURSO char(6) not null, ID_MATERIA int not null, ID_EMPLEADO char(10) not null, ID_HORARIO int not null, ID_AULA int not null, constraint PK_TX002_MATERIA_AULA_PROFESOR primary key (ID_CURSO, ID_MATERIA, ID_EMPLEADO, ID_HORARIO, ID_AULA) ) go /*==============================================================*/ /* Table: TX003_CICLO_TEORIA */ /*==============================================================*/ create table TX003_CICLO_TEORIA ( FECHA_INICIO_CICLO_TEORIA datetime not null, FECHA_FIN_CICLO_TEORIA datetime not null, ID_CURSO char(6) not null, ID_MATERIA int not null, constraint PK_TX003_CICLO_TEORIA primary key (ID_CURSO, ID_MATERIA) ) go /*==============================================================*/ /* Table: TX004_NOTA_MATERIA */ /*==============================================================*/ create table TX004_NOTA_MATERIA ( ID_ALUMNO char(10) not null, ID_CURSO char(6) not null, ID_MATERIA int not null, ASISTENCIA_NOTA_MATERIA int not null, NOTA1_NOTA_MATERIA float not null, NOTA2_NOTA_MATERIA float not null, NOTA3_NOTA_MATERIA float not null, NOTA4_NOTA_MATERIA float not null, SUPLETORIO_NOTA_MATERIA float null, constraint PK_TX004_NOTA_MATERIA primary key (ID_ALUMNO, ID_CURSO, ID_MATERIA) ) go /*==============================================================*/ /* Table: TX005_NOTA_PRACTICA */ /*==============================================================*/ create table TX005_NOTA_PRACTICA ( ID_ALUMNO char(10) not null, ID_CURSO char(6) not null, NOTA1_NOTA_PRACTICA float not null, SUPLETORIO_NOTA_PRACTICA float null, constraint PK_TX005_NOTA_PRACTICA primary key (ID_ALUMNO, ID_CURSO) ) go /*==============================================================*/ /* Table: TX006_NOTA_GRADO */ /*==============================================================*/ 22 create table TX006_NOTA_GRADO ( ID_ALUMNO char(10) not null, ID_CURSO char(6) not null, GRADO_NOTA_GRADO float not null, SUPLETORIO_NOTA_GRADO float null, constraint PK_TX006_NOTA_GRADO primary key (ID_ALUMNO, ID_CURSO) ) go /*==============================================================*/ /* Table: TX007_ALUMNO_MATRICULADO */ /*==============================================================*/ create table TX007_ALUMNO_MATRICULADO ( ID_ESTADO_ALUMNO_MATRICULADO int not null, ID_ALUMNO char(10) not null, ID_CURSO char(6) not null, ID_HORARIO_TEORIA int not null, ID_HORARIO_PRACTICA int not null, ID_AULA int not null, ID_CICLO_PRACTICA int not null, CODIGO_ALUMNO_ALUMNO_MATRICULADO int null, constraint PK_TX007_ALUMNO_MATRICULADO primary key (ID_ALUMNO, ID_CURSO) ) go alter table TB001_ALUMNO add constraint FK_TB001_AL_REFERENCE_TT001_TI foreign key (ID_TIPO_SANGRE) references TT001_TIPO_SANGRE (ID_TIPO_SANGRE) go alter table TB001_ALUMNO add constraint FK_TB001_AL_REFERENCE_TE002_ES foreign key (ID_ESTADO_ALUMNO) references TE002_ESTADO_ALUMNO (ID_ESTADO_ALUMNO) go alter table TB001_ALUMNO add constraint FK_TB001_AL_REFERENCE_TT003_NA foreign key (ID_NACIONALIDAD) references TT003_NACIONALIDAD (ID_NACIONALIDAD) go alter table TB001_ALUMNO add constraint FK_TB001_AL_REFERENCE_TT002_ES foreign key (ID_ESTADO_CIVIL) references TT002_ESTADO_CIVIL (ID_ESTADO_CIVIL) go alter table TB001_ALUMNO add constraint FK_TB001_AL_REFERENCE_TT004_SE foreign key (ID_SEXO) references TT004_SEXO (ID_SEXO) go alter table TB002_EMPLEADO add constraint FK_TB002_EM_REFERENCE_TE003_ES foreign key (ID_ESTADO_EMPLEADO) references TE003_ESTADO_EMPLEADO (ID_ESTADO_EMPLEADO) go alter table TB002_EMPLEADO add constraint FK_TB002_EM_REFERENCE_TT003_NA foreign key (ID_NACIONALIDAD) references TT003_NACIONALIDAD (ID_NACIONALIDAD) go alter table TB002_EMPLEADO add constraint FK_TB002_EM_REFERENCE_TT001_TI foreign key (ID_TIPO_SANGRE) references TT001_TIPO_SANGRE (ID_TIPO_SANGRE) go alter table TB002_EMPLEADO add constraint FK_TB002_EM_REFERENCE_TT002_ES foreign key (ID_ESTADO_CIVIL) references TT002_ESTADO_CIVIL (ID_ESTADO_CIVIL) go alter table TB002_EMPLEADO add constraint FK_TB002_EM_REFERENCE_TT004_SE foreign key (ID_SEXO) references TT004_SEXO (ID_SEXO) go 23 alter table TB002_EMPLEADO add constraint FK_TB002_EM_REFERENCE_TT007_CA foreign key (ID_CARGO) references TT007_CARGO (ID_CARGO) go alter table TB003_MATERIA add constraint FK_TB003_MA_REFERENCE_TE004_ES foreign key (ID_ESTADO_GENERAL) references TE004_ESTADO_GENERAL (ID_ESTADO_GENERAL) go alter table TB004_AULA add constraint FK_TB004_AU_REFERENCE_TE004_ES foreign key (ID_ESTADO_GENERAL) references TE004_ESTADO_GENERAL (ID_ESTADO_GENERAL) go alter table TB005_CURSO add constraint FK_TB005_CU_REFERENCE_TE001_ES foreign key (ID_ESTADO_CURSO) references TE001_ESTADO_CURSO (ID_ESTADO_CURSO) go alter table TB006_ACCESO add constraint FK_TB006_AC_REFERENCE_TB002_EM foreign key (ID_EMPLEADO) references TB002_EMPLEADO (ID_EMPLEADO) go alter table TT008_CICLO_PRACTICA add constraint FK_TT008_CI_REFERENCE_TB005_CU foreign key (ID_CURSO) references TB005_CURSO (ID_CURSO) go alter table TX002_MATERIA_AULA_PROFESOR add constraint FK_TX002_MA_REFERENCE_TB005_CU foreign key (ID_CURSO) references TB005_CURSO (ID_CURSO) go alter table TX002_MATERIA_AULA_PROFESOR add constraint FK_TX002_MA_REFERENCE_TB003_MA foreign key (ID_MATERIA) references TB003_MATERIA (ID_MATERIA) go alter table TX002_MATERIA_AULA_PROFESOR add constraint FK_TX002_MA_REFERENCE_TB002_EM foreign key (ID_EMPLEADO) references TB002_EMPLEADO (ID_EMPLEADO) go alter table TX002_MATERIA_AULA_PROFESOR add constraint FK_TX002_MA_REFERENCE_TT006_HO foreign key (ID_HORARIO) references TT006_HORARIO (ID_HORARIO) go alter table TX002_MATERIA_AULA_PROFESOR add constraint FK_TX002_MA_REFERENCE_TB004_AU foreign key (ID_AULA) references TB004_AULA (ID_AULA) go alter table TX003_CICLO_TEORIA add constraint FK_TX003_CI_REFERENCE_TB005_CU foreign key (ID_CURSO) references TB005_CURSO (ID_CURSO) go alter table TX003_CICLO_TEORIA add constraint FK_TX003_CI_REFERENCE_TB003_MA foreign key (ID_MATERIA) references TB003_MATERIA (ID_MATERIA) go alter table TX004_NOTA_MATERIA add constraint FK_TX004_NO_REFERENCE_TX007_AL foreign key (ID_ALUMNO, ID_CURSO) references TX007_ALUMNO_MATRICULADO (ID_ALUMNO, ID_CURSO) go alter table TX004_NOTA_MATERIA add constraint FK_TX004_NO_REFERENCE_TB003_MA foreign key (ID_MATERIA) references TB003_MATERIA (ID_MATERIA) go 24 alter table TX005_NOTA_PRACTICA add constraint FK_TX005_NO_REFERENCE_TX007_AL foreign key (ID_ALUMNO, ID_CURSO) references TX007_ALUMNO_MATRICULADO (ID_ALUMNO, ID_CURSO) go alter table TX006_NOTA_GRADO add constraint FK_TX006_NO_REFERENCE_TX007_AL foreign key (ID_ALUMNO, ID_CURSO) references TX007_ALUMNO_MATRICULADO (ID_ALUMNO, ID_CURSO) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REFERENCE_TE005_ES foreign key (ID_ESTADO_ALUMNO_MATRICULADO) references TE005_ESTADO_ALUMNO_MATRICULADO (ID_ESTADO_ALUMNO_MATRICULADO) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REFERENCE_TB001_AL foreign key (ID_ALUMNO) references TB001_ALUMNO (ID_ALUMNO) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REFERENCE_TB005_CU foreign key (ID_CURSO) references TB005_CURSO (ID_CURSO) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REF_TT006_HO foreign key (ID_HORARIO_TEORIA) references TT006_HORARIO (ID_HORARIO) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REFERENCE_TT006_HO foreign key (ID_HORARIO_PRACTICA) references TT006_HORARIO (ID_HORARIO) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REFERENCE_TB004_AU foreign key (ID_AULA) references TB004_AULA (ID_AULA) go alter table TX007_ALUMNO_MATRICULADO add constraint FK_TX007_AL_REFERENCE_TT008_CI foreign key (ID_CICLO_PRACTICA) references TT008_CICLO_PRACTICA (ID_CICLO_PRACTICA) go 25 MANUAL DE USUARIO 1 MANUAL DE USUARIO Al momento de ingresar al sistema le recibe un formulario de acceso donde debe ingresar su nombre de usuario y contraseña: Una vez que se ingresaron los datos correctos llegamos a una pantalla genérica principal. Como se puede observar en la imagen existen 5 menús superiores: Inicio (pantalla inicial como se muestra en la imagen), gestión personal, gestión estudiante, gestión curso y configuración. A continuación se detallará los procesos que se pueden realizar en cada una de ellas. 1. GESTIÓN PERSONAL Dentro de este menú se encuentra un solo formulario que se ve de la siguiente manera: 1 Este formulario se lo utiliza para la creación de nuevos empleados. Para crear un nuevo registro, guardar, deshacer (salir de un registro sin guardarlo) o eliminar un registro se utilizan en ese mismo orden los siguientes botones que se encuentran al final del formulario. 2. GESTIÓN ESTUDIANTE Dentro de este menú se encuentran las acciones que recaen o tienen directamente relación con el estudiante. Tenemos 5 submenús: 2 2.1. REGISTRO ALUMNO En este formulario se realiza el registro de un alumno nuevo que busca ingresar a la escuela de conducción. Primero se lo registra, y se le toman los exámenes de ingreso, si el estudiante aprueba éstos exámenes está apto para cancelar los valores correspondientes y matricularse en el curso. Este registro de alumno se lo puede realizar únicamente cuando el estado del curso este en: “Matrículas Abiertas” 2.2. PROCESO DE MATRÍCULA Para realizar la matrícula de un estudiante, se escoge el alumno, previamente registrado, ya sea por su número de cédula o por apellidos y nombres. Se escoge el curso (se habilita solo los cursos en los cuales su estado sea “Matrículas Abiertas”), se selecciona el horario de teoría y con las opciones que quedan escoge el horario de práctica y por ultimo selecciona el ciclo de práctica que son las tres semanas en las cuales realizará la práctica el estudiante. 3 2.3. REGISTRO DE NOTAS Dentro de la opción “Registro de notas” tenemos dos menús: Teoría y Práctica 2.3.1. Registro de notas TEORÍA Para el registro de Notas de teoría se debe primero escoger el curso, en este combo box solo se habilitarán los cursos que estén en el estado “Habilitación de notas”. Después se escoge la materia. Para el horario y aula se muestran únicamente las opciones en las que el usuario (profesor) haya sido asignado para dar clase. Ya seleccionados estos parámetros se cargan los alumnos del aula y horario seleccionados, el profesor debe digitar la asistencia (valor de porcentaje de 1 a 100) y las notas de trabajo en equipo, estudio de casos, prueba práctica y prueba teórica notas que se califican sobre 20 puntos. 4 2.3.2. Registro de notas PRÁCTICA Para el registro de notas de práctica el único habilitado para este registro será el Supervisor de flotas. El supervisor escoge el curso que este en estado “Habilitado notas” y posteriormente escoge al alumno, carga su nota final de práctica y si ésta es menor que 16 da la orden de tomar un examen supletorio y lo pasa en este mismo formulario. 2.4. REGISTRO SUPLETORIO En este formulario se registran las notas de supletorio de teoría de los alumnos que en la asistencia obtuvieron menos del 80% y/o que en el promedio de las cuatro notas de la materia hayan obtenido menos de 16. Esta tarea la realiza únicamente la Secretaria. Para el registro se debe escoger el curso, la materia y el alumno y se registra la nota. 2.5. GRADO En este formulario se ingresa la información de los exámenes de grado. Hay dos opciones: grado y supletorio. En este formulario se escoge el curso que su estado sea “Habilitación grados”, se escoge el alumno (en el combo box se muestra los 5 alumnos que se encuentren en el estado “Apto para grado”) y se publica la nota de grado sobre 20 y si ésta es menor que 16 el alumno debe rendir un examen supletorio de grado y lo pasa en este mismo formulario. 3. GESTIÓN CURSO En esta parte del sistema, se gestiona todo lo que tiene relación con el curso. Tenemos 8 subsecciones como se ve en la imagen: 3.1. MATERIA Este formulario nos permite crear y actualizar materias que se imparten en los cursos. 6 3.2. AULA Este formulario nos permite crear y actualizar las aulas disponibles para los cursos. 3.3. CICLO TEORÍA Este formulario nos permite crear los ciclos en los que las materias de teoría será impartidas. 3.4. CICLO PRÁCTICA Este formulario nos permite crear los ciclos en los que los alumnos pueden tomar las tres semanas de práctica que deben cumplir. 7 3.5. MATERIA AULA PROFESOR En este formulario se asignará un profesor a un aula en un horario determinado por cada materia del curso activo. Por lo tanto este formulario no permitirá que se asigne dos veces la misma aula en un mismo horario durante la misma materia, pasa de igual manera con el profesor. 3.6. CIERRE MATRICULAS En esta opción es dónde, únicamente el director, cambia el estado del curso de “Matriculas abiertas” a “Cierre de matrículas”. Por lo tanto en el combo box donde selecciona el curso solo se muestran los cursos que estén en el primer estado. El proceso realizado aquí es el siguiente: 1) El director selecciona el curso y elige cerrar matrículas. 2) Se cambia el estado del curso a “Cierre matrículas”, con esto se impide que nuevos alumnos sean matriculados. 3) Se ordena alfabéticamente a los alumnos matriculados en el presente curso. 4) Se asigna el código del alumno a lista ordenada desde el número 1 hasta el último matriculado. 8 5) Se contabiliza cuántos alumnos se han matriculado por horario en el presente curso, con este dato obtiene el número de aulas a ser utilizadas por horario. 6) Se asigna el aula a los estudiantes en forma aleatoria dependiendo del horario escogido y del número de aulas disponibles. 7) Por último se cambia el estado del curso a “Habilitado notas” para que inicie el curso. 3.7. HABILITAR GRADOS En esta opción es dónde, únicamente el director, cambia el estado del curso de “Habilitación de notas” a “Habilitación grados”. Por lo tanto en el combo box donde selecciona el curso solo muestra los cursos que estén en el primer estado. El proceso realizado aquí es el siguiente: 1) Cambia el estado del curso a “Habilitado grados” con esto se impide que pasen más notas de teoría o práctica 2) Consulta la vista “Lista aprobados única”. En esta vista se muestran los estudiantes que aprobaron todas las materias de teoría y la práctica. 3) A los alumnos de este curso que consten en esta lista les cambia el estado a “Aptos para grados” 4) Los que no estén en la lista su estado cambiará a: “Suspenso” esto quiere decir que perdieron el presente curso. 3.8. FINALIZAR CURSO En esta opción es dónde, únicamente el director, cambia el estado del curso de “Habilitación grados” a “Finalizado”. Por lo tanto en el combo box donde selecciona el curso solo muestra los cursos que estén en el primer estado. 9 El proceso realizado aquí es el siguiente: 1) Cambia el estado del curso a “Finalizado” con esto se impide que pasen más notas de grado. 2) Se consulta la tabla de notas de grado de los alumnos de este curso. 3) Los alumnos que tengan el estado “Apto para grado” que tengan en nota de grado o de supletorio igual o mayor a 16 se les cambia el estado a “Graduado”, caso contrario se cambia su estado a “No aprobado” 4. CONFIGURACIÓN En esta parte del sistema, se gestiona todo lo que tiene relación con los parámetros y tablas de estados. También aquí se encuentra el formulario para la creación del curso. 10