Autores: Juan Carlos Álvarez Izquierdo
Cristina García Gil
Tutor: Miguel Ángel Laguna Serrano
Desarrollo de una Línea de Producto Software de comercio
electrónico
Ingeniería Técnica Informática de Gestión
26 de Mayo del 2008
CONTENIDO
1. Visión general y objetivos2. Conceptos importantes en líneas de
producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema5. Implementación de la línea de producto6. Presentación de la aplicación7. Conclusiones
CONTENIDO
1. Visión general y objetivos2. Conceptos importantes en líneas de
producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema5. Implementación de la línea de producto6. Presentación de la aplicación7. Conclusiones
Líneas de producto software (LPS)
Desarrollo de una LPS de comercio electrónicoEncontrar soluciones para manejar su variabilidad.Proporcionar mecanismos para la configuración de la aplicación final.Desarrollo del núcleo de la línea que dará lugar a una aplicación funcional por sí misma.Conseguir un número aceptable de productos finales.
Objetivos
CONTENIDO
1. Visión general y objetivos
2. Conceptos importantes en líneas de producto
3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema5. Implementación de la línea de producto6. Presentación de la aplicación7. Conclusiones
Trabajos anteriores
Basado en el Modelo de Características propuesto en la tesis de maestría de Lau, Waterloo 2006
Mecanismo para manejar la variabilidad
Se detallan características obligatorias y opcionales
En nuestra propuesta, se han tomado
Partes obligatorias de catálogo de productos y proceso de compra
Partes opcionales respecto al catálogo
Variabilidad en modelos UML: <<merge>>
Necesitamos mecanismo para mostrar variabilidad en tiempo de configuración, no sólo en ejecución
Mecanismo UML 2, “combinación de paquetes”
Añade detalles de forma incremental a los modelos
“Relación entre dos modelos que indica que los contenidos de ambos se combinan”
CONTENIDO
1. Visión general y objetivos2. Conceptos importantes en líneas de
producto
3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema5. Implementación de la línea de producto6. Presentación de la aplicación7. Conclusiones
Requisitos No Funcionales
Sistema final compuesto por paquetes
Sistema flexible ante nuevas funciones
Integración de paquetes de forma automática
Paquetes independientes
Requisitos Funcionales
Paquete Base
Acceso al catálogo de productos
Ver detalle de productos
Realizar una compra y su pago
Gestión interna del catálogo de productos
Requisitos Funcionales
Paquete CategoryMultilevel Dar soporte a categorías de varios niveles
(subcategorías)
Paquete Search Realizar búsquedas de productos disponibles a
la venta
Paquete DirectDownload Permitir la descarga automática de un
producto electrónico, tras comprobar su pago
Paquete PlugginShoppingCart Visualizar el detalle de los productos agregados
al carrito desde cualquier página
Casos de uso
Base
CategoriesMultilevel
<<merge>>
Search
<<merge>>
usuario
Comprar Pagar<<include>>
usuario
buscar productos
Ver producto
usuario
Consultar catálogo
Consultar catálogo
<<include>>
<<extend>>
DirectDow nload
usuario
Descargar productos electronicos
<<merge>>
Administrador
Añadir Catálogo
Añadir Producto
Añadir Categoria
Eliminar Catalogo
Eliminar Categoria
Eliminar Producto
Añadir subcategoria
administrador
Ver producto
<<extend>>
CONTENIDO
1. Visión general y objetivos2. Conceptos importantes en líneas de
producto 3. Requisitos y Casos de Uso
4. Análisis y Diseño del sistema5. Implementación de la línea de producto6. Presentación de la aplicación7. Conclusiones
Análisis y Diseño
Base
PhysicalProduct ServiceProduct ElectronicProduct
<<merge>> <<merge>> <<merge>>
CategoriesMultilevel
<<merge>>
Search
<<merge>>
PlugginShoppingCart
<<merge>>
DirectDownload
<<merge>>
Paquete Base:Category
+dataProducts: DataSet
+list_products()+add_product(p: Product)+save_in_BD()+delete()+update(nombre: string...)+Category(id: string)
Catalog
+dataCategories: DataSet+dataProducts: DataSet
+list_categories()+list_products()+add_category()+add_product()+save_in_BD()+delete()+update(nombre: string....)+all_categories()+all_products()+Catalog(nombre: string...)+Catalog(id: string)
Product
+thumbnail: string+longDescription: string+standardDescription: string+suggestedRetailPrice: Money+price: Money
+set_category()+update(nombre: string....)+delete()+list_categories()+set_category(id_categor: string)+delete_category(id_categor: string)+Product(id: string)
Money
+currency: string+amount: decimal
EShopArtifact
+icon: string+id: int+name: string+description: string+active: bool
1*
*1..*
*
1
Order
+date: string+paymentInfo: PaymentInfo+status: OrderStatus+orderId: int+emailAdress: string
-add_product(i: OrderItem)+add_email(email: string)+save_in_BD()+total()+Order(s: ShoppingCart, date: string...)
ShoppingCart
+delete_product(i: ShoppingCartItem)+detele_product(id: string)+add_product(i: ShoppingCartItem)-f ind_item(id: string)+total()+ShoppingCart()
1*
PaymentInfo
+status: OrderStatus
+pay()+cancel_payment()+PaymentInfo()
OrderItem
+status: OrderStatus
+sended(itemId: string)+OrderItem(p: Product)
1
1
1*
ShoppingCartItem
+ShoppingCartItem(p: Product)
11
Paypal
+email: string
+save_in_BD()
1..*1
OrderStatus<<enumeration>>
+Pending+Cancelled+Completed
ElectronicProduct
+size: int
Product
ElectronicProduct
Category
+list_subcategories()+save_in_BD_subcategories()+set_category(c: Category)
0..1*
Catalog
+all_subcategories()
1 *
Paquete CategoryMultilevel
Search
+nameProduct: string+w ithCatalog: bool+id_catalogo: string+result: DataSet+quantity: int
-searching(nombre: string)-searching_w ithCatalog(nombre: string, catalogo: string)+Search(nameProduct: string, catalog: string)
Catalog Product
*
1
1
*
Paquete Search
Paquete DirectDownload
ElectronicProduct
+link: string
+getLink()+makeLink()
Modelo relacionalCatalog (id_catalogo, name,description,icon,active) Category (id_category,id_catalogo, name, descripcion,icon, active) Product (id_producto,id_catalogo,name,description,icon,active,longDescription,standardDescription,suggestedRetailPrice,price, size,link) Prod_agrupa_Cat (id_categoria,id_producto) OrderItem (itemId,orderId,id_producto,name, price,status) Orders (orderId, date,email,status,total) PaymentInfo (id_payment,orderId,status,price,tipo) Paypal (id_payment,email)
CONTENIDO1. Visión general y objetivos2. Conceptos importantes en líneas de producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema
5. Implementación de la línea de producto1. Tecnología utilizada
Soluciones generales para una aplicación de comercio electrónico
Soluciones de la Línea de Producto en un entorno web
6. Presentación de la aplicación7. Conclusiones
Tecnología utilizada
Lenguaje C# , permite clases parcialesPackage merge clases parciales C#
ASP.NET, utiliza C# de forma nativa
Visual Studio 2005, entorno de desarrollo de .NET
SQL Server Express, como gestor de base de datos
CONTENIDO1. Visión general y objetivos2. Conceptos importantes en líneas de producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema
5. Implementación de la línea de producto1. Tecnología utilizada
Soluciones generales para una aplicación de comercio electrónico
Soluciones de la Línea de Producto en un entorno web
6. Presentación de la aplicación7. Conclusiones
Diseño de la interfazMaster.page
Plantilla que especifica el formato de todas las páginas de la parte visible de la tienda
Albergará partes comunes de todas las páginas
Facilita el trabajo de diseño de la interfaz
Hojas de estilo CSS
Definen reglas para determinar la apariencia (tamaño y tipo de letra, colores, etc)
Facilitan cualquier cambio en la forma de mostrar los distintos elementos
Ventajosas para trabajos desarrollados en grupo y para futuras ampliaciones
Gestión internaNecesaria para la gestión del catálogo de productos
La realiza el administrador, debe identificarse como tal.
Se ha utilizado la seguridad propia de .NETAutenticación de formularios Web.configAlgoritmo SHA1 para cifrar la contraseña
Paypal como forma de pago
Necesitamos forma de pago real y segura (cifrado de datos)
Facilidad de uso y de reconocimiento internacional
Fácil integración a un sistema de ventas particular
Servicio gratuito, en contraposición de las pasarelas de los bancos
CONTENIDO1. Visión general y objetivos2. Conceptos importantes en líneas de producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema
5. Implementación de la línea de producto1. Tecnología utilizada
Soluciones generales para una aplicación de comercio electrónico
Soluciones de la Línea de Producto en un entorno web
6. Presentación de la aplicación7. Conclusiones
Variabilidad en capa de lógica:Clases parciales
Clases parciales de C# para tratar la variabilidad
Definición de las clases en uno o más archivos de código fuente
Archivos de código fuente en paquetes diferentes, añadiendo funcionalidad a la clase
Base CategoryMultilevel
Category
+products
Category
+categories
+list_subcategories()<<merge>>
Category
+products+categories
+list_subcategories()
Variabilidad en Interfaz:Controles de usuario
Recurso de ASP.NET, crea elementos reutilizables similares a los formularios web, tienen extensión .ascx
Porciones de código HTML
Se incrustan a páginas web de ASP.NET
Solución a la variabilidad en la interfaz de usuario cuando se agregan dinámicamente
Controles de usuario dinámicos
Aportan la interfaz necesaria para obtener las funciones extra que ofrecen los paquetes opcionales
Se añaden o no de forma dinámica a las páginas de ASP.NET cuando el sistema reconoce los paquetes instalados
Incrustados en los denominados PlaceHolder (huecos contenedores)
Controles de usuario dinámicos
Cada PlaceHolder puede alojar tantos controles de usuario como se desee
Los PlaceHolder se ubican en el lugar preciso de la página según el diseño de interfaz deseado
Para facilitar trabajos futuros, se ha incluido al menos un PlaceHolder en todas las páginas del proyecto
Agregar controles de forma automática
<?xml version="1.0" encoding="utf-8" ?>
<paquetes>
<paquete>
<nombre>../Search</nombre>
<activado>true</activado>
<archivos>
<archivo>MasterSearchBox.ascx</archivo>
</archivos>
</paquete>
<paquete>
<nombre>../CategoryMultilevel</nombre>
<activado>true</activado>
<archivos>
<archivo>CatalogCategoriesTree.ascx</archivo>
<archivo>ProductoCategoriesTree.ascx</archivo>
<archivo>AdmCategoryAddSubcategory.ascx</archivo>
</archivos>
</paquete>
<paquete>
<nombre>../PlugginShoppingCart</nombre>
<activado>true</activado>
<archivos>
<archivo>LeftMasterCartSummary.ascx</archivo>
</archivos>
</paquete>
El sistema reconoce los paquetes instalados mediante un archivo XML (paquetes.xml)
Incluye información sobre los paquetes incluidos y los controles de usuario que interactúan con el paquete base, así como su ubicación
Páginas del sistema leen este archivo y reconocen si debe agregar algún control en ellas
Nombrados de forma especial para saber en qué paginas se agregan: “Nombre_páginaNombreControl.ascx”
Compilar solamente los elementos necesarios de los paquetes elegidos
Archivo .csproj de Visual Studio, controla los elementos a compilar
-> NombredelProyecto.csproj
Modificamos este archivo a nuestro gusto para compilar los elementos de cada paquete (clases, páginas web, controles de usuario)
Configuración de la aplicación final
<ItemGroup>
<Compile Include=“Search/Search.cs" />
<Compile Include="Search\Searching.aspx. cs"> <DependentUpon>Searching.aspx</DependentUpon> <SubType>ASPXCodeBehind</SubType> </Compile>
<Compile Include="Search\Searching.aspx.designer.cs"> <DependentUpon>Searching.aspx</DependentUpon> </Compile>
</ItemGroup>
<Content Include="Search\Searching.aspx" />
Pasos a seguir
1. Abrir la solucion en Visual Studio2. Ejecutar proyecto de Configuracion
Elegir los paquetes de la aplicación web final
Modificar el .csproj y XML Configurar los parámetros de la tienda
Nombre de la tienda Productos por página Email receptor del pago Moneda utilizada Datos del administrador
Modificar Web.config Seleccionar Base de Datos a utilizar
Servidor Nombre de la base de datos Posibilidad de crear una nueva
Configuración de la aplicación final
Configuración de la aplicación final
CONTENIDO
1. Visión general y objetivos2. Conceptos importantes en líneas de
producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema5. Implementación de la línea de producto
6. Presentación de la aplicación7. Conclusiones
CONTENIDO
1. Visión general y objetivos2. Conceptos importantes en líneas de
producto 3. Requisitos y Casos de Uso4. Análisis y Diseño del sistema5. Implementación de la línea de producto6. Presentación de la aplicación
7. Conclusiones
Objetivos cumplidosDesarrollar una línea de producto de comercio electrónico, que tras ser
configurada y compilada, da como resultado una familia de aplicaciones funcionales por sí mismas.
Núcleo de la línea y cuatro paquetes opcionales distintos compatibles entre sí, que nos proporcionan una variabilidad de dieciséis productos diferentes.
Soluciones tales como clases parciales, compilar sólo los paquetes elegidos o agregar controles de usuario dinámicamente para manejar la variabilidad de la línea en un entorno web
Configurar los distintos productos finales de la línea de forma inmediata
Añadir funciones adicionales, Aplicación de configuración de cada tienda para incluir
personalizaciones Autoinstalación para cada tienda
Trabajos futuros
Desarrollo de nuevos paquetes opcionales que complementen la línea de comercio electrónico
Registro de clientes
Historial de compras
Gestión de ventas
Nuevos métodos de pago
[…]
Proporcionar soluciones a la variabilidad en la base de datosConfiguración de la aplicación final a través de
su modelo de características de forma automática
Autores: Juan Carlos Álvarez Izquierdo
Cristina García Gil
Tutor: Miguel Ángel Laguna Serrano
Desarrollo de una Línea de Producto Software de comercio
electrónico
Ingeniería Técnica Informática de Gestión
26 de Mayo del 2008
Top Related