Proveer al DCyT metodología para el desarrollo de aplicaciones web en la arquitectura MVC
Carlos F. Batalla | Ing. en Informatica de la Universidad Centroccidental Lisandro Alvarado con experiencia en desarrollo en los lenguajes de programación ABAP,C# y SQL para PostgreSQL y SQL Server. Experiencia en administración de sistemas Linux y ambientes de virtualización. |
Fidel Palma | Ingeniero Electrónico: Mención Comunicaciones. Especialista de Telecom, trabaja en el área de Redes y Telefonía IP, actualmente está encargado de gestionar la seguridad de redes y la conectividad entre sitios usando tecnología de Fortinet, Mikrotik y Ubiquiti. Actualmente adquiriendo responsabilidad en el área de gestión de servidores virtualizados con XenServer y Servicios Cloud, utilizando Docker y AWS.; |
Yimi Rosendo | Ingeniero en informática, Especialista en Gerencia de Telecomunicaciones, he trabajado más en el área de redes, he desarrollado pocas aplicaciones web, un sistema de control de estudio para una escuela de postgrado de la Universidad Militar Bolivariana y un sistema registro y control de personal militar, desarrollo con el servidor Apache, PHP, PHP MY ADMIN. |
Ivan Puertas | Ingeniero Electrónico mención control, trabajé en programación de PLC y sistemas SCADA. He sido docente de las siguientes cátedras: Sistemas de control, Laboratorio de Instrumentación Industrial, sistemas digitales I y II, y Electrónica. He trabajado también en el área de soporte técnico. Actualmente mi interés se centra en la elaboración de prototipos con la plataforma Arduino y en Phyton como lenguaje de desarrollo. Adicionalmente trabajo en otra área distinta de la ingeniería como docente Investigador en el área cultural, con una maestría en educación por parte de la Universidad Experimental Rómulo Gallegos, siendo facilitador y asesor en cursos de licenciatura y especialización. |
Es un patrón de arquitectura de software orientado a la modularización y medularización, que originalmente define 3 capas:
Entorno de Desarrollo Integrado, por sus siglas en inglés, es una aplicación que proporciona servicios que permiten facilitar el trabajo de desarrollo de software.
Usualmente el IDE consiste en un editor de código fuente, un compilador (o intérprete) y un depurador. Muchos IDE modernos cuentan también con un navegador de clases, buscador de objetos y un diagrama de jerarquía de clases, para desarrollo POO. Fuente: Wikipedia
Es la parte de un sitio web que interactúa con los usuarios, por eso se dice que está del lado del cliente. Fuente: Platzi.com
es la parte que se conecta con la base de datos y el servidor que utiliza dicho sitio web, esto es invisible para el usuario y allí decimos que funciona del lado del servidor. Fuente: Platzi.
Un sistema manejador de bases de datos o DataBase Management System (DBMS) son aplicaciones cuya función es servir de interfaz entre la base de datos, el usuario y las distintas aplicaciones utilizadas. Fuente: Clases
aqui debe ir la definicion del lenguaje: Ingles
11/22/19, 09:03 *QUIERE DECIR* que todas las variables y entidades dentro de la codificación se definen *EN INGLÉS*
Se debe desarrollar un sistema de registro académico, cuyos usuarios, según el contexto, podrán tener la condición de alumnos y/o profesores. El contexto será la materia en la que dicho usuario estara relacionado. Esta entidad estara representada en el sistema y tendra las propiedades y los estados de un aula real. El backend de dicho sistema será una API desarrollada en Nodejs.
REGLAS DE NEGOCIO | DESCRIPCIÓN |
Username: | Solo se aceptarán caracteres numéricos correspodientes al nro. de cédula del usuario |
Correo electrónico: | Solo se aceptarán dominios gmail y ucla.edu.ve |
aqui van las consideraciones al escoger un db. Como se ajusta al mvc
aqui vas a colocar escenario demostrativo en PG donde se hagan validaciones que preserven la integridad del modelo. Para esto, debes crear unas tablas y crear unos DOMAINS asociado a esas tablas, con algun sistema de control de estudio como cumlaude. debes incluir un MER de esas hipotetica DB para ilustrarlo mejor. Como en consideraciones, colocaste que el idioma es ingles, los nombres de las tablas seran en ingles.
especificacion tecnica de la creacion de la tabla y su constraint:
CREATE TABLE tb_user ( id serial PRIMARY KEY ,deleted SMALLINT ,suspended SMALLINT ,username VARCHAR(30) ,firstname VARCHAR(100) not null ,lastname VARCHAR(100) not null ,email VARCHAR(100) ,CHECK (deleted <1) ,CHECK (suspended <1) );
especificacion tecnica del trigger:
CREATE TRIGGER trValidaCorreo BEFORE INSERT ON tb_user FOR EACH ROW EXECUTE PROCEDURE validaCorreo();
CREATE OR REPLACE FUNCTION validaCorreo() RETURNS trigger AS $$ BEGIN IF NEW.email ~* '^[A-Za-z0-9._%-]+@gmail.com+$' OR NEW.email ~* '^[A-Za-z0-9._%-]+@ucla.edu.ve+$' THEN ELSE RAISE EXCEPTION 'Solo son permitidos correos ucla.edu.ve o gmail.com'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql SECURITY DEFINER;
CREATE EXTENSION citext; CREATE DOMAIN dm_email AS citext CHECK( VALUE ~* '^[A-Za-z0-9._%-]+@gmail.com+$' OR ~* '^[A-Za-z0-9._%-]+@ucla.edu.ve+$' );
CREATE TABLE tb_user ( id serial primary key ,deleted smallint ,suspended smallint ,username varchar(30) ,firstname varchar(100) not null ,lastname varchar(100) not null ,email dm_email );
db_lenguajesaltonivel_demo=# SELECT 'lenguajesdealtonivel@gmail.com'::dm_email; dm_email -------------------------------- lenguajesdealtonivel@gmail.com (1 row)
db_lenguajesaltonivel_demo=# SELECT 'lenguajesdealtonivel@gmail'::dm_email; ERROR: value for domain dm_email violates check constraint "dm_email_check"
INSERT INTO "db_lenguajesaltonivel_demo"."public"."tb_user" ( deleted ,suspended ,username ,firstname ,lastname ,email ) VALUES ( 0 ,0 ,'15598676' ,'Carlos' ,'Batalla' ,'carlos@.com' ); ERROR: value for domain dm_email violates check constraint "dm_email_check"
aqui van las consideraciones del framework
aqui van las consideraciones al escoger un db. Como se ajusta al mvc
const pg = require('pg') const conString = "postgres://db_usr:pwd@serverName/db_lenguajesaltonivel_demo" pg.connect(conString, (err, client) => { client.query("SELECT * FROM tb_user", (err, res) => { //en res.rows esta el arreglo que contiene los regs. del query }) })
En la etapa de /testing/ es importante apuntar a la automatización de las pruebas, ya que a medida que un sistema va a creciendo, se hará insostenible el /testing/ manual.
Es necesario entonces que utilizar un framework con el que hacer un código de automatización que sea estable, mantenible y reusable.
Características |
|||||||
Framework |
Lenguajes |
Integración |
Comunidad |
Documentación |
Licencia |
Actualizado |
Ejemplos de Uso |
Selenium |
Java, C#, Ruby, Groovy, Perl, PHP, Python |
- |
Si |
Si |
Apache |
Si |
Ejecutar scripts que actúen como un usuario, para abrir ventanas e ingresar datos |
Jmeter |
Java, NodeJS, PHP, ASP.NET |
- |
Si |
Si |
Open source |
Si |
Pruebas de estrés |
Junit |
Java |
- |
Si |
Si |
CPL |
Si |
Probar los métodos de las clases, pasándo parámetros y confirmando que el resultado sea el esperado |
REST Assured |
Ruby, Groovy, Python, .Net |
- |
Si |
Si |
Apache |
Si |
Test que crean una interacción con el endpoint http |
Spock |
Java, Groovy |
- |
Si |
Si |
Apache |
Si |
Test orientados a BDD, alta compatibilidad por estar basado en Junit |