miércoles, 13 de mayo de 2009

Tópicos Avanzados en la Ingeniería de Software

Ingenieria Web
¿Qué es?Los sistemas y aplicaciones(WebApps) basados en Web hacen posibleque una población extensa de usuariosfinales dispongan de una granvariedad de contenido y funcionalidadLa ingeniería Web no es un clónico perfectode la ingeniería del software, perotoma prestado muchos de los conceptosy principios básicos de la ingenieríadel software, dando importancia alas mismas actividades técnicas y degestión. Existen diferencias sutiles enla forma en que se llevan a cabo estasactividades, pero la filosofía primordiales idéntica dado que dicta un enfoquedisciplinado para el desarrollo de unsistema basado en computadora.

¿Quiénlo hace? Los ingenieros Web ylos desarrolladores de contenido notécnicos crean las WebApps.

¿Por qué es importante? A medidaque las WebApps se integran cada vezmás en grandes y pequeñas compañías(por ejemplo, comercio electrónico),y cada vez es más importante lanecesidad de construir sistemas fiables,utilizables y adaptables. Esta esla razón por la que es necesario unenfoque disciplinado para el desarrollode WebApps.

¿Cuáles son los pasos a seguir? Aligual que cualquier disciplina de ingeniería,la ingeniería Web aplica. unenfoque genérico que se suaviza conestrategias, tácticas y métodos especializados.El proceso de ingenieríaWeb comienza con una formulación delproblema que pasa a resolverse conlas WebApps. Se planifica el proyecto y se analizan los requisitos de l aWebApp, entonces se lleva a cabo eldiseño de interfaces arquitectónico y del navegador. El sistema se implementautilizando lenguajes y herramientasespecializados asociados conla Web, y entonces comienzan las prues.Dado que las WebApps están ennte evolución, deben de estaelos mecanismos para el controlde configuraciones, garantía decalidad y soporte continuado.

¿Cuál es el producto obtenido? La elaboración de una gran variedad deproductos de trabajo de ingenierfa Web(por ejemplo, modelos de análisis.modelos de diseño, procedimientos depruebas). Y como producto final laWebApp operativa.

¿Cómo puedo estar seguro de quelo he hecho correctamente? Aplicandolas mismas prácticas SQA que seaplican en todos los procesos de ingenieríadel software -las revisiones técnicasformales valoran los modelos deanálisis y diseño-; las revisiones especializadas tienen en consideración la usabilidad y la comprobación se aplicapara descubrir errores en el contenido,funcionalidad y compatibilidad.

Tópicos Avanzados en la Ingeniería de Software

Ingeniería asistida por computadora

Ingeniería asistida por computadora o por ordenador (CAE, del inglés Computer Aided Engineering) es el conjunto de programas informáticos que permiten analizar y simular los diseños de ingeniería realizados con el ordenador, o creados de otro modo e introducidos en el ordenador, para valorar sus características, propiedades, viabilidad y rentabilidad. Su finalidad es optimizar su desarrollo y consecuentes costos de fabricación y reducir al máximo las pruebas para la obtención del producto deseado.

La mayoría de ellas se presentan como módulos o extensiones de aplicaciones CAD, que incorporan:

·         Análisis cinemático.

·         Análisis por el método de elementos finitos (FEM, Finite Elements Method).

·         Maquinado por control numérico CNC (Computered Numeric Control).

·         De exportación de ficheros "Stl" (Estereolitografía) para máquinas de prototipado rápido.

 

 Herramientas Case

De acuerdo con Kendall y Kendall la ingeniería de sistemas asistida por ordenador es la aplicación de tecnología informática a las actividades, lastécnicas y las metodologías propias de desarrollo, su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o mas fases del ciclo de vida del desarrollo de sistemas.

Cuando se hace la planificación de la base de datos, la primera etapa del ciclo de vida de las aplicaciones de bases de datos, también se puede escoger una herramienta CASE (Computer-Aided Software Engineering) que permita llevar a cabo el resto de tareas del modo más eficiente y efectivo posible. Una herramienta CASE suele incluir:

Un diccionario de datos para almacenar información sobre los datos de la aplicación de bases de datos.

Herramientas de diseño para dar apoyo al análisis de datos.

Herramientas que permitan desarrollar el modelo de datos corporativo, así como los esquemas concep

tual y lógico.

Herramientas para desarrollar los prototipos de las aplicaciones.

El uso de las herramientas CASE puede mejorar la productividad en el desarrollo de una aplicación de bases de datos.

 Historia

En la década de los setenta el proyecto ISDOS desarrolló un lenguaje llamado "Problem Statement Language" (PSL) para la descripción de losproblemas de usuarios y las necesidades de solución de un sistema de información en un diccionario computarizado. Problem Statement Analyzer (PSA) era un producto asociado que analizaba la relación de problemas y necesidades.

Pero la primera herramienta CASE como hoy la conocemos fue "Excelerator" en 1984, era para PC. Actualmente la oferta de herramientas CASE es muy amplia y tenemos por ejemplo el EASYCASE o WINPROJECT. (Monografías.com)

 Tecnología Case

La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo desistemas de información y se plantean los siguientes objetivos:

Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta se consigue agilizar el trabajo.

Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.

Simplificar el mantenimiento de los programas.

Mejorar y estandarizar la documentación.

Aumentar la portabilidad de las aplicaciones.

Facilitar la reutilización de componentes software.

Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.

Automatizar:

Ø El desarrollo del software

Ø La documentación

Ø La generación del código

Ø El chequeo de errores

Ø La gestión del proyecto

Permitir:

Ø La reutilización del software

Ø La portabilidad del software

Ø La estandarización de la documentación

Componentes de una herramienta case

De una forma esquemática podemos decir que una herramienta CASE se compone de los siguientes elementos:

Repositorio (diccionario) donde se almacenan los elementos definidos o creados por la herramienta, y cuya gestión se realiza mediante el apoyo de un Sistema de Gestión de Base de Datos (SGBD) o de un sistema de gestión de ficheros.

Meta modelo (no siempre visible), que constituye el marco para la definición de las técnicas y metodologías soportadas por la herramienta.

Carga o descarga de datos, son facilidades que permiten cargar el repertorio de la herramienta CASE con datos provenientes de otros sistemas, o bien generar a partir de la propia herramienta esquemas de base de datos, programas, etc. que pueden, a su vez, alimentar otros sistemas. Este elemento proporciona así un medio de comunicación con otras herramientas.

Comprobación de errores, facilidades que permiten llevar a cabo un análisis de la exactitud, integridad y consistencia de los esquemas generados por la herramienta.

Interfaz de usuario, que constará de editores de texto y herramientas de diseño gráfico que permitan, mediante la utilización de un sistema de ventanas, iconos y menús, con la ayuda del ratón, definir los diagramas, matrices, etc. que incluyen las distintas metodologías.

Estructura general de una herramienta case

La estructura CASE se basa en la siguiente terminología:

CASE de alto nivel son aquellas herramientas que automatizan o apoyan las fases finales o superiores del ciclo de vida del desarrollo de sistemas como la planificación de sistemas, el análisis de sistemas y el diseño de sistemas.

CASE de bajo nivel son aquellas herramientas que automatizan o apoyan las fases finales o inferiores del ciclo de vida como el diseño detallado de sistemas, la implantación de sistemas y el soporte de sistemas.

CASE cruzado de ciclo de vida se aplica a aquellas herramientas que apoyan actividades que tienen lugar a lo largo de todo el ciclo de vida, se incluyen actividades como la gestión de proyectos y la estimación.

 Estado Actual

En las últimas décadas se ha trabajado en el área de desarrollo de sistemas para encontrar técnicas que permitan incrementar la productividad y elcontrol de calidad en cualquier proceso de elaboración de software, y hoy en día la tecnología CASE (Computer Aided Software Engineering) reemplaza al papel y al lápiz por el ordenador para transformar la actividad de desarrollar software en un proceso automatizado.

La tecnología CASE supone la –informatización de la informática—es decir –la automatización del desarrollo del software--, contribuyendo así a elevar la productividad y la calidad de en el desarrollo de los sistemas de información de forma análoga a lo que suponen las técnicas CAD/CAM en el área de fabricación.

En este nuevo enfoque que persigue mejorar la calidad del software e incrementar la productividad en el proceso de desarrollo del mismo, se plantean los siguientes objetivos:

<<> Permitir la aplicación práctica de metodologías, lo que resulta muy difícil sin emplear herramientas.

<<> Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.

<<> Simplificar el mantenimiento del software.

Mejorar y estandarizar la documentación.

Aumentar la portabilidad de las aplicaciones.

Facilitar la reutilización de componentes de software

Permitir un desarrollo y un refinamiento (visual) de las aplicaciones, mediante la utilización de controles gráficos (piezas de código reutilizables).

 

 Integración de las herramientas case en el futuro

Las herramientas CASE evolucionan hacia tres tipos de integración:

La integración de datos permite disponer de herramientas CASE con diferentes estructuras de diccionarios locales para el intercambio de datos.

La integración de presentación confiere a todas las herramientas CASE el mismo aspecto.

La integración de herramientas permite disponer de herramientas CASE capaces de invocar a otras CASE de forma automática.

 Clasificación de las herramientas case

No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:

- Las plataformas que soportan.

- Las fases del ciclo de vida del desarrollo de sistemas que cubren.

- La arquitectura de las aplicaciones que producen.

- Su funcionalidad.

CASE es una combinación de herramientas software (aplicaciones) y de metodologías de desarrollo :

1. Las herramientas permiten automatizar el proceso de desarrollo del software.

2. Las metodologías definen los procesos automatizar.

Una primera clasificación del CASE es considerando su amplitud :

TOOLKIT: es una colección de herramientas integradas que permiten automatizar un conjunto de tareas de algunas de las fases del ciclo de vida del sistema informático: Planificación estratégica, Análisis, Diseño, Generación de programas.

WORKBENCH: Son conjuntos integrados de herramientas que dan soporte a la automatización del proceso completo de desarrollo del sistema informático. Permiten cubrir el ciclo de vida completo. El producto final aportado por ellas es un sistema en código ejecutable y su documentación.

Una segunda clasificación es teniendo en cuenta las fases (y/o tareas) del ciclo de vida que automatizan:

UPPER CASE: Planificación estratégica, Requerimientos de Desarrollo Funcional de Planes Corporativos.

MIDDLE CASE: Análisis y Diseño.

LOWER CASE: Generación de código, test e implantación


para más información visitar:http://prof.usb.ve/lmendoza/Documentos/PS-6117%20(Laboratorio)/Transparencias%20PS6117%20(Lab)%20HC.pdfhttp://www.virtual.unal.edu.co/cursos/sedes/manizales/4100010/Lecciones/Cap5/HtasCASE.htm
http://www.monouml.org/docs/formal/spanish/x176.html


Tópicos Avanzados en la Ingeniería de Software

Ingenieria del software del comercio electronico
La computación cliente/servidor es un intento de equilibrar el proceso de una red hasta que se comparta la potencia de procesamiento entre computadoras que llevana cabo servicios especializados tales como accedera bases de datos (servidores), y aquellos que llevan a cabotareas tales como la visualización IGU que es más adecuadopara el punto final dentro de la red. Por ejemplo,permite que las computadoras se ajusten a tareas especializadastales como el procesamiento de bases de datosen donde se utilizan hardware y software de propósitoespecial para proporcionar un procesamiento rápido dela base de datos comparado con el hardware que se encuentra en las mainframes que tienen que enfrentarsecon una gran gama de aplicaciones.

Comercio Electrónico

Para ilustrar la apariencia de un sistema distribuido examinaremosun ejemplo tomado de un área de aplicaciónconocida como comercio electrónico. En un sentidoamplio, el término «comercio electrónico» (Ecommerce)se puede definir como la aplicación de la tecnologíade sistemas distribuidos que apoya las operaciones comerciales.A continuación, se detallan algunos de dichos sistemas:
Sistemas para vender algunos artículos o serviciosutilizando Internet, donde los clientes interactúancon el sistema que utiliza navegadores. Entre lossistemas típicos de comercio electrónico de estacategoría se incluyen los que venden libros, ropay CDs.

Sistemas para simular alguna actividad comercial entiempo real utilizando tecnología de red. Un buenejemplo de este tipo de sistemas es una subasta en lared.Un sistema de subasta típico solicitaría artículosa los usuarios de Internet, ubicaría los datos enuna página Web y entonces comenzaría la oferta para ese artículo. Normalmente la compañía de subastasespecificaría un período de oferta para así darla porfinalizada.

Sistemas que proporcionan algún servicio basado e nred para usuarios. Probablemente los más conocidos son los que ofrecen cuentas de correo gratis, donde los ingresos de dicha empresa probablemente procedan de la publicidad en las páginas Web que se utilizan para ese sitio Web. Estas son compañías quemediante un honorario monitorizan su sitio Web y leenvían un mensaje, normalmente por correo electrónicoo mediante un buscador si han detectado unproblema, como el mal funcionamiento del servidor que se utiliza para el sitio Web.

Sistemas que proporcionan servicios de asesoramiento.Los sistemas típicos de este tipo son los que procesan una descripción de artículos, como un CD,para los que establecerán el mejor precio, despuésde haber explorado un número de sistemas de ventaen la red.

Sistemas internos que el cliente no ve, pero que dansoporte a más actividades comerciales convencionales.Por ejemplo, un sistema que apoya el suministrode mercancías a un comerciante minorista de la calle.Muchos de los ingresos delcomercio electrónico proceden de la publicidad enlínea. Muchas páginas Web asociadas a las aplicaciones de comercio electrónico contendrán pequeñosespacios publicitarios conocidos como banners.Estos anuncios se pueden «pinchar», conduciendoasí al usuario del navegador a un sitio Web el cualnormalmente vende algún producto o servicio. 

Los sistemas de publicidad son una forma particular desistemas de comercio electrónico que llevan a cabofunciones tales como vender un banner (espaciopublicitario), monitorizando el éxito de estos anuncios y la administración del pago de los honorariosde publicidad.

De Interés.!