Categoría Automatización de Procesos:
El ABASTO.cl Cotizaciones eficaces
Portal web diseñado para la simplificación del proceso de realizar cotizaciones. Esta es la pagina web de SKADI, una empresa creada por un equipo de cuatro estudiantes de Ingeniería Civil Informática de la Universidad Técnica Federico Santa María, que se dedica al desarrollo de software en base a páginas Web.
Situación Deseada:
Lo que SKADI, en conjunto con El Abasto, pretende es proponer un sistema de automatización para las cotizaciones que simplifique y reduzca el tiempo de espera de los clientes. Esto se pretende lograr mediante un portal web donde basta estar inscrito en el sistema, para así poder ingresar las características del producto deseado. El sistema se encarga de mandarle un e-mail a cada una de las empresas que pertenezcan al rubro de dicho producto. Con un plazo de tiempo predeterminado por el sistema, se reciben todas las ofertas obtenidas y se le envía un resumen de las características y precios disponibles al cliente, permitiéndole a éste simplemente ir a comprar el producto, sin perder tiempo importante en la cotización y el análisis de los precios.
Diagrama Vendedor:

*Recibir Cotización: la empresa recibe la cotización dependiendo del rubro al que está asociado y los filtros que preestableció.
*Responder Cotización:si la empresa estima conveniente participar en esta cotización, responde dicha cotización y envía un presupuesto
*Ofrecer Contra-Oferta: si otra empresa ofrece un mejor presupuesto para la misma cotizacion, puede realizar otro presupuesto mejorando asi sus posibilidades de venta
*Calificación:opcional , pero recomendable que finalizada la transaccion la empresa califique al usuario dependiendo de su compromiso de comprar
Diagrama Comprador:

*Cotizar Producto:el usuario ingresa y realiza su cotizacion ingresando el rubro, especificando sus detalles y la fecha en que desea que se termine el plazo de cotizacion.
*Respuesta Cotización:el sistema envía e-mails a los proveedores que pertenezcan al rubro y cumplan los filtros establecidos y estos deben responder en el plazo estipulado.
*Contra-Oferta:si el cliente no queda satisfecho con las cotizaciones, puede pedir una segunda cotizacion a las empresas que ofertaron, los cuales tienen un limite de dos dias para responder dicha cotizacion.
*Resumen de Alternativas: finalizado el proceso de cotizacion, el sistema se encarga de enviar un mail al usuario, para que pueda tomar una decision fácilmente
*Tomar Decisiones:el cliente esta listo y tiene la opcion de decidir que compañía utilizar para realizar su compra, si asi lo desea
*Calificación: opcional, pero recomendable que finalizada la transaccion el cliente califique a la empresa dependiendo de su cumplimiento a lo descrito en su presupuesto.

UML =Unified Modeling Language (Lenguaje Unificado de Modelamiento)
UML como estándar para el modelamiento de sistemas de software
Es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software. Se usa para entender, diseñar, configurar, mantener y controlar la información sobre los sistemas a construir. UML capta la información sobre la estructura estática y el comportamiento dinámico de un sistema. Un sistema se modela como una colección de objetos discretos que interactúan para realizar un trabajo que finalmente beneficia a un usuario externo. UML no es un lenguaje de programación. Es un lenguaje de propósito general para el modelado orientado a objetos.
UML está compuesto por los siguientes diagramas y conceptos principales:
Diagrama de Clases: Clase, asociación, generalización, dependencia, realización, interfaz.
Diagramas de Casos de Uso: Caso de Uso, Actor, asociación, extensión, generalización.
Diagramas de Componentes: Componente, interfaz, dependencia, realización.
Diagramas de Despliegue: Nodo, componente, dependencia, localización.
Diagramas de Estados: Estado, evento, transición, acción.
Diagramas de Actividad: Estado, actividad, transición, determinación, división, unión.
Diagramas de Secuencia: Interacción, objeto, mensaje, activación.
Diagramas de Colaboración: Colaboración, interacción, rol de colaboración, mensaje.
Diagramas de Clases: Paquete, subsistema, modelo.
Todos: Restricción, estereotipo, valores, etiquetados.
Un Modelo captura una vista de un sistema del mundo real. Es una abstracción de dicho sistema, considerando un cierto propósito. Así, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propósito del modelo, y a un apropiado nivel de detalle. Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de interés. El código fuente del sistema es el modelo más detallado del sistema (y además es ejecutable). Sin embargo, se requieren otros modelos. Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos.
Diagrama de Clases
El Diagrama de Clases es el diagrama principal para el análisis y diseño. Un diagrama de clases presenta las clases del sistema con sus relaciones estructurales y de herencia. La definición de clase incluye definiciones para atributos y operaciones.
Cada clase se representa en un rectángulo con tres compartimientos:
- nombre de la clase
- atributos de la clase
- operacione s de la clase

Diagrama de Clases del proyecto ABASTO:
El modelo básicamente muestra lo siguiente:
- Clases existentes con su nombre (Objetos)
- Relaciones entre las clases (Si el objeto A pertenece a B, entonces tambien B posee A)[Especificando de cuantas son las relaciones, 1 a 1, o 1 a muchos, etc)
- Atributos que tienen las clases (diferentes variables que contiene)
- Método de las Clases (Funciones propias de cada método, si se tiene un objeto se le ordena que realice ciertas acciones)

Los atributos de una clase no deberían ser manipulables directamente por el resto de objetos.
Por esta razón se crearon niveles de visibilidad para los elementos que son:
- (-) Privado : es el más fuerte. Esta parte es totalmente invisible (excepto para clases friends en terminología C++)
- (#) Los atributos/operaciones protegidos están visibles para las clases friends y para las clases derivadas de la original.
- (+) Los atributos/operaciones públicos son visibles a otras clases (cuando se trata de atributos se está transgrediendo el principio de encapsulación)
Relaciones entre clases:
Los enlaces entre objetos pueden representarse entre las respectivas clases y sus formas de relación son:
- Asociación y Agregación (vista como un caso particular de asociación)
- Generalización/Especialización.
Las relaciones de Agregación y Generalización forman jerarquías de clases.
Relaciones entre clases:
Los enlaces entre objetos pueden representarse entre las respectivas clases y sus formas de relación son:
- Asociación y Agregación (vista como un caso particular de asociación)
- Generalización/Especialización.
Las relaciones de Agregación y Generalización forman jerarquías de clases.
Asociación:
La asociación expresa una conexión bidireccional entre objetos. Una asociación es una abstracción de la relación existente en los enlaces entre los objetos. Puede determinarse por la especificación de multiplicidad (mínima…máxima)
- Uno y sólo uno
- 0..1 Cero o uno
- M..N Desde M hasta N (enteros naturales)
- * Cero o muchos
- 0..* Cero o muchos
- 1..* Uno o muchos (al menos uno)
Agregación:
La agregación representa una relación parte_de entre objetos. En UML se proporciona una escasa caracterización de la agregación. Esta relación puede ser caracterizada con precisión determinando las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno de sus objetos componentes.
Una agregación se podría caracterizar según:
Puede el objeto parte comunicarse directamente con objetos externos al objeto agregado?
No => inclusiva
Si => no inclusiva
Puede cambiar La composición del objeto agregado?
Si => dinámica
No => estática
Diagrama de Clases y Diagramas de Objetos pertenecen a dos vistas complementarias del modelo. Un Diagrama de Clases muestra la abstracción de una parte del dominio. Un Diagrama de Objetos representa una situación concreta del dominio. Las clases abstractas no son instanciadas.
Generalización:
Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases, se obtiene usando los mecanismos de abstracción de Generalización y/o Especialización. La Generalización consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general. Los nombres usados: clase padre – clase hija. Otros nombres: superclase – subclase, clase base – clase derivada. Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones (y asociaciones) de la clase padre están disponibles en sus clases hijas. La Generalización y Especialización son equivalentes en cuanto al resultado: la jerarquía y herencia establecidas. Generalización y Especialización no son operaciones reflexivas ni simétricas pero sí transitivas. La especialización es una técnica muy eficaz para la extensión y reutilización.
La noción de clase está próxima a la de conjunto. Dada una clase, podemos ver el conjunto relativo a las instancias que posee o bien relativo a las propiedades de la clase. Generalización y especialización expresan relaciones de inclusión entre conjuntos