Vous êtes sur la page 1sur 8

REFINAMIENTO DE SOFTWARE

Christian David Ramírez Bejarano


Miguel Ángel Barbosa Díaz
Edwin Alexander Amaya Cárdenas

Aplicación Web: Sistema de gestión de tickets


Trabajo presentado como requisito para la asignatura de:
REFINAMIENTO DE SOFTWARE

Adriana Marcela Sosa Cuervo


DOCENTE-TUTOR

CORPORACION UNIFICADA DE EDUCACIÓN SUPERIOR


FACULTAD DE INGENIERÍA DE SISTEMAS
BOGOTA D.C.

2019
Introducción

El patrón Modelo – Vista – Controlador fue inventado en el contexto de Smalltak para realizar una
separación entre la interfaz gráfica y el código del funcionamiento de una aplicación. Esta idea
teórica afectó, de forma importante, a gran parte del código de Smalltalk y fue posteriormente
aplicada a los lenguajes que están basados en objetos.

En el paradigma MVC, las entradas del usuario, los modelos del mundo exterior y la
retroalimentación visual son explícitamente separados y manejados por tres tipos de objetos, cada
uno especializado para un conjunto de tareas específicas.

Objetivo

El objetivo primordial del patrón es dar soporte a los modelos funcionales y mapas mentales de la
información relevante para los usuarios, permitiendo un modelo que facilite la consulta y manejo
de los mismos. La única manera de construir artefactos manejables es ayudar al usuario a
construir modelos del sistema. Pero esto es imposible si el modelo mental no ha sido diseñado
dentro del artefacto desde el principio. Intentar adicionar los modelos mentales del usuario
cuando ya se ha avanzado en el desarrollo puede ser imposible. A continuación un gráfico que
resume el patrón
Cuadro comparativo MVC entre java - .net - php

VENTAJAS DESVENTAJAS CLASES Y EJEMPLOS SIMPLES


CARACTERISTICAS
JAVA El JDK es una Hay diferentes El lenguaje de private void iniciar() {
herramienta libre tipos de soporte programación Java /**Se instancian las clases*/
de licencias (sin técnico para la proporciona soporte miVentanaPrincipal=new VentanaPrincipal();
costo), creada misma para la arquitectura miVentanaRegistro=new VentanaRegistro();
por Sun.- Está herramienta, MVC. Provee de dos miVentanaBuscar= new VentanaBuscar();
respaldado por por lo que el clases que son las miLogica=new Logica();
un gran número análisis de la encargadas de miCoordinador= new Coordinador();
de proveedores. - mejor opción se realizar las
Existe soporte dificulta - Para notificaciones de /**Se establecen las relaciones entre clases*/
dado por Sun. - manejo a bajo cambios en los miVentanaPrincipal.setCoordinador(miCoordinador);
Debido a que nivel deben estados de los miVentanaRegistro.setCoordinador(miCoordinador);
existen diferentes usarse métodos objetos. Se definen a miVentanaBuscar.setCoordinador(miCoordinador);
productos de nativos, lo que continuación los miLogica.setCoordinador(miCoordinador);
Java, hay más de limita la objetos:
un proveedor de portabilidad. - /**Se establecen relaciones con la clase
servicios. - Sun El diseño de Observer: Es coordinador*/
saca al mercado interfaces cualquier objeto que
cada 6 meses una gráficas con awt desee ser notificado miCoordinador.setMiVentanaPrincipal(miVentanaPri
nueva versión del y swing no es cuando el estado de ncipal);
JDK. - Es simple.o Existen otro objeto sea
independiente de herramientas alterado. miCoordinador.setMiVentanaRegistro(miVentanaRegi
la plataforma de como el Observable: Es stro);
desarrollo. - JBuilder que cualquier objeto
Existen dentro de permiten cuyo estado puede miCoordinador.setMiVentanaBuscar(miVentanaBusca
su librería clases generar representar interés y r);
gráficas como interfaces sobre el cual otro miCoordinador.setMiLogica(miLogica);
awt y swing, las gráficas de objeto ha
cuales permiten manera sencilla, demostrado ese miVentanaPrincipal.setVisible(true);
crear objetos pero tienen un interés. }
gráficos comunes costo adicional. Estas dos clases no public Logica getMiLogica() {
altamente - Puede ser que sólo se utilizan en la return miLogica;
configurables y no haya JDBC aplicación del patrón }
con una para bases de MVC, tienen una
arquitectura datos poco utilidad mayor public void setMiLogica(Logica miLogica) {
independiente de comerciales. - dentro del lenguaje. this.miLogica = miLogica;
la plataforma. - Algunas Serán útiles en }
Java permite a los herramientas cualquier sistema en
desarrolladores tienen un costo el que se necesite public void mostrarVentanaRegistro() {
aprovechar la adic.ional que algunos objetos miVentanaRegistro.setVisible(true);
flexibilidad de la sean notificados }
Programación cuando ocurran
Orientada a cambios en otros public void mostrarVentanaConsulta() {
Objetos en el objetos. miVentanaBuscar.setVisible(true);
diseño de sus }
aplicaciones. - Se El Modelo es un
puede acceder a subtipo de public void registrarPersona(PersonaVo miPersona) {
bases de datos Observable y la Vista miLogica.validarRegistro(miPersona);
fácilmente con es un subtipo de }
JDBC, Observer. Estas dos
independienteme clases manejan
nte de la adecuadamente la
plataforma función de
utilizada.o El notificación de
manejo de las cambios que
bases de datos es necesita la
uniforme, es arquitectura MVC.
decir Proporcionan el
transparente y mecanismo por el
simple. cual las Vistas
pueden ser
notificadas
automáticamente de
los cambios
producidos en el
Modelo. Referencias
al objeto Modelo
tanto en el
Controlador como
en la Vista permiten
acceder a los datos
de ese objeto
Modelo
.NET El marco de Una de las Debe considerar public class ComprobanteViewModel {
ASP.NET MVC limitaciones en cuidadosamente si #region Cabecera
ofrece las el desarrollo implementar una public string Cliente { get; set; }
siguientes conASP es que aplicación Web public int CabeceraProductoId { get; set; }
ventajas: con el mediante el marco public string CabeceraProductoNombre { get; set; }
Resulta más fácil tradicional de ASP.NET MVC o el public int CabeceraProductoCantidad { get; set; }
de administrar la utilizamos modelo de public decimal CabeceraProductoPrecio { get; set; }
complejidad al lenguajes de formularios Web #endregion
dividir una scriptingno Forms de ASP.NET.
aplicación en el tipeados como El marco de MVC no #region Contenido
modelo, la vista y VSBcrip o JScrip. reemplaza el modelo public List<ComprobanteDetalleViewModel>
el controlador. Podemos de formularios Web ComprobanteDetalle { get; set; }
No utiliza el instalar otros Forms; Puede usar #endregion
estado de vista ni motores cualquier marco de
formularios scripting que aplicaciones Web. (Si #region Pie
basados en impongan tiene aplicaciones public decimal Total()
servidor. Esto verificación de existentes basadas {
hace que el tipos; sin en formularios Web return ComprobanteDetalle.Sum(x =>
marco de MVC embargo, no Forms, estas x.Monto());
ideal para los son seguirán }
desarrolladores universalmente funcionando public DateTime Creado { get; set; }
que desean el conocidos o exactamente igual #endregion
control total utilizamos que siempre.)
sobre el como los Antes de decidirse a public ComprobanteViewModel()
comportamiento anteriores. usar el marco de {
de una aplicación. Tiene que MVC o el modelo de ComprobanteDetalle = new
Usa un modelo correr en PCs formularios Web List<ComprobanteDetalleViewModel>();
de controlador normales que Forms para un sitio Refrescar();
frontal que tenganWindows Web concreto, }
procesa las y un sopese las ventajas
solicitudes de servidorWeb de cada enfoque. public void Refrescar() {
aplicación Web a CabeceraProductoId = 0;
través de un CabeceraProductoNombre = null;
único CabeceraProductoCantidad = 1;
controlador. Esto CabeceraProductoPrecio = 0;
le permite }
diseñar una
aplicación que public bool SeAgregoUnProductoValido()
admite una {
infraestructura de return !(CabeceraProductoId == 0 ||
enrutamiento string.IsNullOrEmpty(CabeceraProductoNombre) ||
avanzada. Para CabeceraProductoCantidad == 0 ||
obtener más CabeceraProductoPrecio == 0);
información, }
consulte
controlador public bool ExisteEnDetalle(int ProductoId)
frontal en el sitio {
Web de MSDN. return ComprobanteDetalle.Any(x =>
Ofrece x.ProductoId == ProductoId);
compatibilidad }
mejorada para el
desarrollo public void RetirarItemDeDetalle() {
controlado por if (ComprobanteDetalle.Count > 0)
pruebas (TDD). {
Funciona bien var detalleARetirar =
para las ComprobanteDetalle.Where(x => x.Retirar)
aplicaciones Web .SingleOrDefault();
que son
compatibles con ComprobanteDetalle.Remove(detalleARetirar);
equipos grandes }
de }
desarrolladores y
diseñadores Web public void AgregarItemADetalle()
que necesitan un {
alto grado de ComprobanteDetalle.Add(new
control sobre el ComprobanteDetalleViewModel
comportamiento {
de la aplicación. ProductoId = CabeceraProductoId,
ProductoNombre = CabeceraProductoNombre,
PrecioUnitario = CabeceraProductoPrecio,
Cantidad = CabeceraProductoCantidad,
});

Refrescar();
}

public Comprobante ToModel()


{
var comprobante = new Comprobante();
comprobante.Cliente = this.Cliente;
comprobante.Creado = DateTime.Now;
comprobante.Total = this.Total();

foreach(var d in ComprobanteDetalle)
{
comprobante.ComprobanteDetalle.Add(new
ComprobanteDetalle {
ProductoId = d.ProductoId,
Monto = d.Monto(),
PrecioUnitario = d.PrecioUnitario,
Cantidad = d.Cantidad
});
}

return comprobante;
}
}
PHP Muy fácil de Se necesita El patrón Modelo- <?php
Vista-Controlador
aprender. · Se instalar un para el diseño de
require_once("db/db.php");
caracteriza por servidor web. aplicaciones Web es require_once("controllers/personas_controller.php");
ser un lenguaje ·Todo el trabajo un estándar de la
industria en el mundo ?>
muy rápido. · lo realiza el
Java. Hay muchos
Soporta en cierta servidor y no <?php
libros y recursos
medida la delega al excelentes disponible class Conectar{
orientación a cliente. Por s sobre el tema que
ayudan a acelerar el public static function conexion(){
objeto. Clases y tanto puede ser proceso de $conexion=new mysqli("localhost", "root", "",
herencia. · Es un más ineficiente aprendizaje para el "mvc");
lenguaje a medida que equipo de desarrollo.
En un breve repaso, $conexion->query("SET NAMES 'utf8'");
multiplataforma: las solicitudes
MVC viene de Model, return $conexion;
Linux, Windows, aumenten de View, Controller, o
entre otros. · número. · La bien: Modelo, Vista y }
Capacidad de legibilidad del Controlador. La idea
}
básica de este patrón
conexión con la código puede es separar nuestros ?>
mayoría de los verse afectada sistemas en tres
manejadores de al mezclar capas, el Modelo, la <?php

base de datos: sentencias class personas_model{


MysSQL, HTML y PHP. · Vista y el private $db;
Controlador.
PostgreSQL, La private $personas;
Oracle, MS SQL programación  El Modelo se
Server, entre orientada a encarga de todo lo
que tiene que ver con public function __construct(){
otras. · Capacidad objetos es aún la persistencia de
de expandir su muy deficiente $this->db=Conectar::conexion();
datos. Guarda y
potencial para recupera la $this->personas=array();
información del
utilizando aplicaciones medio persistente }
módulos. · Posee grandes. · que utilicemos, ya public function get_personas(){
documentación Dificulta la sea una base de
datos, ficheros de $consulta=$this->db->query("select * from
en su página modularización. personas;");
texto, XML, etc.
oficial la cual · Dificulta la  La Vista presenta la while($filas=$consulta->fetch_assoc()){
incluye organización información obtenida
descripción y por capas de la con el modelo de $this->personas[]=$filas;
manera que el
ejemplos de cada aplicación. usuario la pueda
}
una de sus Seguridad: PHP visualizar. return $this->personas;
funciones. · Es es un poderoso El Controlador,
}
libre, por lo que lenguaje e dependiendo de la
acción solicitada por }
se presenta como intérprete, ya el usuario, es el que
una alternativa sea incluido pide al modelo la ?>
de fácil acceso como parte de información necesaria
e invoca a la
para todos. · un servidor web
plantilla(de la vista)
Incluye gran en forma de que corresponda para
cantidad de módulo o que la información
funciones. · No ejecutado como sea presentada.
Hay algo de esfuerzo
requiere un binario CGI necesario para
definición de separado, es aprender a utilizar un
tipos de variables capaz de marco MVC en php.
Sin embargo, para el
ni manejo acceder a desarrollador de
detallado del bajo archivos, aplicaciones Web
nivel. ejecutar grandes, este
esfuerzo debe ser
comandos y
recompensado por los
abrir numerosos beneficios
conexiones de de utilizar un patrón
red en el de diseño MVC, tales
como:
servidor. Estas
propiedades  Aplica la modularidad
y la partición de
hacen que aplicación.
cualquier cosa  Aumenta la creación
que sea de roles específicos
ejecutada en un en el desarrollo.
servidor web  Aumenta la capacidad
de gestión de código.
sea insegura  Aumento de la
por naturaleza. extensibilidad del
código (Capacidad de
adaptación a
cambios).
REFERENCIAS

http://www.juntadeandalucia.es/servicios/madeja/cont
http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/257enido/recurso/122

https://docs.microsoft.com/es-es/aspnet/mvc/overview/older-versions-1/overview/asp-net-mvc-
overview

https://anexsoft.com/ejemplo-de-facturador-con-asp-net-mvc

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html

https://es.slideshare.net/Helmilpa/estudio-comparativo-de-php-aspnet-y-java

https://victorroblesweb.es/2013/11/18/tutorial-mvc-en-php-nativo/

Vous aimerez peut-être aussi