lunes, 3 de diciembre de 2012

Ingeniería de Software Asistida por Computadora (CASE)


Todo el mundo conoce la historia de los hijos del zapatero: el zapatero esta tan ocupado haciendo zapatos para otros que sus hijos van descalzos. Durante los últimos 20 años, muchos de los ingenieros de software han sido los “hijos del zapatero”. Aunque han construidos sistemas complejos que automatizan el trabajo de otros, ellos mismos no han aplicado estas técnicas. De hecho hasta hace poco, la ingeniería de software era fundamentalmente una actividad manual en la que las herramientas se utilizaban únicamente en las etapas finales. 

Hoy en día, los ingenieros de software han recibido su primer par de zapatos – la ingeniería de software asistida por computadora (sus siglas en ingles CASE). No hay tanta variedad de zapatos como nos gustaría. Sin embargo, constituyen una pieza indispensable del guardarropa del ingeniero y, con el tiempo, se harán mas confortables, mas fáciles de usar y mas adaptables a las necesidades de cada usuario. 

Orígenes del CASE 

En 1955, los ingenieros mecánicos y eléctricos trabajan con herramientas manuales: libros y tablas que contenían formulas y los algoritmos necesarios para el análisis de un problema; calculadoras (mecánicas) para realizar los cálculos necesarios y asegurar que el producto iba a funcionar; bolígrafos y lápices, mesas de dibujo y reglas que permita al ingeniero crear los modelos del producto que iba a construir. Se hizo un buen trabajo, pero se hizo a mano. 

Paso una década y el mismo grupo de ingeniería comenzó a experimentar con la ingeniería basada en computadora. Muchos se resistieron a utilizar computadoras. Una excusa habitual era: “no me fió de los resultados”. Sin embargo, otros se lanzaron hacia delante. El proceso estaba cambiando. 
Pasamos a 1975. Las formulas y los algoritmos que el ingeniero necesitaba se incorporaron a programas de computadora que se utilizaban para analizar una gran variedad de problemas de ingeniería. La gente confiaba en los resultados de estos programas. De hecho, la mayoría de su trabajo no podía realizarse sin ellos. Las estación es de trabajo graficas, conectadas a potentes computadoras, estuvieron en uso y sustituyeron a las mesas de dibujo y otras herramientas para la creación de modelos de ingeniería. Se estaba construyendo un puente entre la ingeniería y el trabajo de manufactura, creando el primer enlace el diseño asistido por computadora (CAD) y la fabricación asistida por computadora (CAM.) Volviendo al futuro, encontramos ingeniería asistida por computadora (CAE), diseño asistido por computadora y fabricación integrada por computadora


¿Qué es el CASE? 

Las herramientas CASE son usadas en algunas de las fases de desarrollo de sistemas de información, incluyendo análisis, diseño y programación. Su objetivo fundamental es proveer un lenguaje para describir el sistema general que sea lo suficientemente explícito para generar todos los programas necesarios. 

La CASE supone la aplicación de principios científicos a través de una metodología que ayude a producir software de alta calidad en un tiempo mucho más reducido. 

Bloques que Componen el CASE 

La Ingeniería del Software Asistida por Computadora (CASE) puede ser tan simple como una herramienta que permite desarrollar una actividad específica, o tan compleja como un "entorno" que integre distintas herramientas, bases de datos, hardware, red, sistemas operativos, estándares y muchos otros componentes. 


                    
Cada bloque constituye la base del siguiente, con las herramientas situadas en la cima de la pila. Es interesante ver que el fundamento para un CASE efectivo

tiene poco que ver con las herramientas de ingeniería del software en si mismas. 
Herramientas CASE: 

 
Marco de integración: Es un conjunto de programas especializados que permiten a cada herramienta CASE comunicarse con las demás. 


Servicios de portabilidad: Este conjunto constituye un puente entre las herramientas CASE, su marco de integración y la arquitectura de entorno. De esta forma permiten que las herramientas CASE y su marco de integración puedan migrar a través de diferentes plataformas de hardware y sistemas operativos sin problemas de adaptación. 

Sistema operativo: Gestiona el hardware, la red y las herramientas; mantiene el entorno unido. 
Plataforma hardware: Son las estaciones de trabajo individuales interconectadas mediante la red para que los ingenieros del software puedan comunicarse de forma efectiva. 


Arquitectura de entorno: Es la base del CASE, en este bloque se construyen los entornos de la ingeniería del software, engloba los sistemas de software y hardware. Además considera los patrones del trabajo humano que se aplican durante el proceso de ingeniería del software. 

 

Reingenieria




Ingeniería es la forma como el hombre desarrolla técnicas para realizar de manera más fácil, las cosas, a fin de que cualquier persona pueda, siguiendo los mismos procedimientos repetir con los mismos resultados dicha acción. Reingeniería entonces es, la revisión de esos procesos, a fin de hacerlos mucho más efectivos, nuevo enfoque que analiza y modifica los procesos básicos de trabajo en el negocio.
En realidad, las perspectivas de la reingeniería pueden ser muy atractivas para la gente de negocios, pues le permitirá aplicar a plenitud todos sus conocimientos en sus empresas, con el propósito de hacerlos más efectivos: mayor rapidez, mayor cantidad, mayor calidad, menores costos, mayores ganancias.

¿POR QUE DEBEMOS HACER REINGENIERÍA?


El ritmo del cambio en la vida de los negocios se ha acelerado a tal punto que ya no pueden ir al paso las iniciativas capaces de alcanzar mejoras increméntales en rendimiento. La única manera de igualar o superar la rapidez del cambio en el mundo que nos rodea es lograr avances decisivos, discontinuos.
Según Hammer y Champy las Tres "C" son las tendencias que están provocando estos cambios:

  • Consumidores: Ahora los consumidores le pueden pedir al vendedor qué quieren, cuándo lo quieren, cómo lo quieren y en algunos casos hasta cuánto están dispuestos a pagar y de qué forma, esto nos quiere decir que el vendedor ya no manda sino el consumidor.
  • Competencia: Antiguamente la competencia era simple y casi cualquier empresa que pudiera entrar en el mercado y ofreciera un producto aceptable, a buen precio, lograría vender.Pero ahora no sólo hay más competencia sino que compiten de distintas formas.Se puede competir con base al precio, con base a variaciones del producto, con base a calidad o con base al servicio previo, durante y posterior a la venta.Por último, no hay que olvidar que la tecnología moderna tambien a introducido nuevas formas de competir.
  • Cambio: Ya se ha hecho notar que los consumidores y la competencia ha cambiado, pero también hay que hacer énfasis al hecho de que la forma en que se cambia ha cambiado. Sobretodo se tiene que el cambio ahora se ha vuelto más esparcido y persistente; además, el ritmo del cambio se ha acelerado.


Se necesita reingeniería en una empresa cuando:

  • Cuando el rendimiento de la organización esta por detrás de la competencia.  

  • Cuando la organización esta en crisis; como una caída en el mercado.       

  • Cuando las condiciones del mercado cambian; como por ejemplo tecnología.

  • Cuando se quiere obtener una posición de líder del mercado.  

  • Cuando hay que responder a una competencia agresiva.

  • Cuando la empresa es líder y sabe que debe seguir mejorando para mantener el liderazgo.




Las empresas deben realizar estos 5 pasos generales para dar un nuevo diseño a sus procesos de operación:

  1. Desarrollar la visión y los objetivos de los procesos de la empresa, establecer prioridades y metas.
  2. Identificar los procesos que es necesario volver a diseñar. Identificación de los procesos críticos, cuellos de botellas, etc.
  3. Entender y medir los procesos actuales.
  4. Reunir a las personas involucradas y realizar sesiones de trabajo.
  5. Diseñar y elaborar un prototipo del proceso. Implementación técnica.
 
 
CARACTERISTICAS
  • Enfocada a procesos: No a departamentos o áreas, trabajos, personas o estructuras. Los viejos principios de la administración que fragmentaban el trabajo en varias unidades ya no funcionan, ahora hay nuevos principios. Se define un proceso como una colección de actividades que reciben una o más entradas y generan una salida que es de valor para el cliente.
  • Debe ser Rápida: En general debe ser rápida porque se esperan resultados en tiempos cortos.
  • Visión Holística: Observa todos los procesos desde una perspectiva integral. Ve el todo y no las partes. Tiene una perspectiva global.
  • Multiespecialista (generalista): La reingeniería es anti-especialización. La especialidad tiene virtudes pero su defecto es la pérdida de flexibilidad. En reingeniería lo que más requieres es flexibilidad.
  • Se apoya en el principio de la incertidumbre (Teoría del Caos): En reingeniería todo es "pulso y vista". Pura intuición pero no ciega. Parte del supuesto de que el determinismo no existe y por lo tanto no existe nada establecido ni predeterminado. Hay que aprender a administrar o manejar la incertidumbre. Hay que tener una tolerancia a la vaguedad, ya que no hay guías ni precisión. Es construir un puente al vacio sin conocer la otra orilla.
  • Destrucción creativa: Lo anterior ya no funciona y por lo tanto hay que destruirlo, pero de una manera creativa, construyendo los nuevos procesos. Se basa en el principio de que en un espacio sólo cabe un edificio, para construir lo nuevo tiene que hacerse sobre las ruinas o cenizas de lo viejo. Tienes que destruir tu empresa ó tu viejo "yo" ó tu organización para hacer una nueva de cero, pero esta destrucción tiene que hacerse de manera sistemática en base a los principios de la transformación organizacional.
  • Libre sin plan preestablecido: El modelo es que no hay modelo. Cada quien tiene que hacer su propio proyecto de reingeniería. En el momento que rompas con lo anterior te quedas en el aire, por eso debes tener una tolerancia a la ambigüedad hasta que recompongas los procesos.
  • Renovadora: Cambia de mentalidad o de enfoque. Metanoia. No debemos pensar en tareas aisladas, sino en procesos integrados. Si sigues viendo el mundo como era antes. Si piensas que no hay nada nuevo bajo el sol y que no debes cambiar tus actitudes, tus comportamientos, tu forma de trabajar o si no estás dispuesto a enfrentar la incertidumbre o la vaguedad, entonces la reingeniería no es para ti. El día que cambies de mentalidad, el día que tengas un cambio cultural, una Metanoia, ese día podrás hacer reingeniería.
 
 

Roles de la Reingenieria

Para llevar a cabo la reingeniería de procesos se han identificado los siguientes roles:
  1. El Líder: Es un alto ejecutivo que respalda, autoriza y motiva el esfuerzo total de reingeniería. Debe tener la autoridad suficiente para que persuada a la gente de aceptar los cambios radicales que implica la reingeniería. Sin este líder el proceso de reingeniería queda en buenos propósitos sin llegar a culminarse como se espera.Debe mantener el objetivo final del proceso, necesita la visión para reinventar la empresa bajo nuevos esquemas competitivos, mantiene comunicados a empleados y directivos de los propósitos a lograr, así como los avances logrados. Designa a quienes serán los dueños de los procesos y asigna la responsabilidad de los avances en el rendimiento.
  2. Dueño del proceso: Gerente de área responsable de un proceso específico y del esfuerzo de ingeniería correspondiente. En las empresas tradicionales no se piensa en función de procesos, se departamentalizan las funciones, con lo que se ponen fronteras organizacionales a los procesos. Los procesos deben de identificarse lo más pronto posible, asignar un líder y este a los dueños de los procesos. Es importante que los dueños de procesos tengan aceptación de los compañeros con los que van a trabajar, aceptar los procesos de cambio que trae la reingeniería, y su función principal es vigilar y motivar la realización de la reingeniería. El oficio de los dueños no termina cuándo se completa el proyecto de reingeniería, cuándo se tiene el compromiso de estar orientado a procesos, cada proceso sigue ocupando de un dueño que se responsabilice de su ejecución.
  3. Equipo de reingeniería: Formado por un grupo de individuos dedicados a rediseñar un proceso específico, con capacidad de diagnosticar el proceso actual, supervisar su reingeniería y su ejecución. Es el encargado de realizar el trabajo pesado de producir ideas, planes y convertirlos en realidades. Cabe mencionar que un equipo solo puede trabajar con un proceso a la vez, de tal manera que se debe formar un equipo por cada proceso que se está trabajando. El equipo debe tener entre 5 y 10 integrantes, máximo, de los cuales una parte debe de conocer el proceso a fondo, pero por poco tiempo para que no lo acepten como algo normal, y otra parte debe ser formada con personal ajeno al proceso, pudiendo ser gente de fuera de la empresa , que lo pueda cuestionar y proponer alternativas.
  4. Comité directivo. Cuerpo formulador de políticas, compuesto de altos administradores que desarrollan la estrategia global de la organización y supervisan su progreso, normalmente incluye a los dueños de proceso. Puede estar o no presente en el proceso, da orden de prioridad, opinan sobre cuestiones que van mas allá de los procesos y proyectos en particular.
  5. "Zar" de la reingeniería. Es el responsable de desarrollar técnicas e instrumentos de reingeniería y de lograr sinergia entre los distintos proyectos en la empresa .Se encarga de la administración directa coordinando todas las actividades de reingeniería que se encuentren en marcha; apoya y capacita a los dueños de proceso y equipos de reingeniería.
 
 
 
 
 

 

 


 
 
 

Preguntas de Ingenieria web




¿QUE ENTIENDE USTED POR INGENIERIA WEB?

La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad.
¿QUE COMPONENTES FORMAN PARTE DE LA INGENIERIA WEB?
  1-Diseño de sitio web
        -Interfaz
        -Estetica
        -Contenido
        -Navegacion
        -Arquitectura
        -Componentes
2-Herramientas para el diseño.
3-Personal espcialista para cada componente.
4-Procesos de la ingenieria web.

3¿INGENIERIA WEB ES UNA METODO UNICO O ES LA MEZCLA DE ALGUNOS METODOS YA ESTUDIADOS?

Es una mezcla de metodos como son:

-diseño de proesos para aplicaciones web

-generacion de codigo para aplicaciones web

-herramientas case para aplicaciones web

-desarrollo de web

-modelo conceptual de aplicaciones web

-control de calidad y prueba de sistema

-ingenieria de requisito

-metricas

-gestion de proyecto

 

4-¿CUAL ES EL PROCESO QUE DEBE SEGUIR EL EQUIPO DE INGENIERIA WEB?

 

Existen algunas actividades importantes y que forman parte el proceso, estas son:

-formulación

-lanificación análisis

-modelización

-generación de páginas

 -test

-evaluación del cliente


5-¿QUIENES CONFORMAN EL EQUIPO DE INGENIERIA WEB?

- Desarrolladores y proveedores de contenido:Generacion y copilacion de contendio abarca una amplia gama de objetos de datos.

- Editores de Web:organizacion de variado contenido para poder incluirlo en la web apps,debe haber una conexion entre el equipo tecnico de diseño y los proveedores de contenido.

- Ingeniero de Web:iinvolucrado en el amplio rango de actividades,obtencion de requisitos,modelo de analisis,diseo arquitectonico,de interfaz etc..

- Especialistas de soporte_apoyo continuo a las web apps dado que esta evolucionando constantemente,los especialistas de soporte es responsable de correccion,adaptacion,y mejoras del sitio,actualizando contenido e implementando procedimientos.

- Administrador:tiene la responsabilidad de la operacion diaria de la apps, desarrollo e implementacion de politicas de operaciones y de procedimientos de soporte y realimentacion.

- Diseño de Interfaces de usuario

- Desarrollo y despliegue de servicios web 

- Metodologías de diseño web


- Métodos, herramientas y automatización de pruebas para aplicaciones web.

6-¿INDIQUE ALGUNAS APLICACIONES QUE NOS SIRVEN DE HERRAMIENTAS PARA LA INGENIERIA WEB?

-Dream Viewer

-Wix

-Active Web

-Webs

-Magicx web Designe

 

7-¿INDIQUE QUE APLICACIONES DE LAS QUE HACE USB,UTILIZA LA ING. WEB?

-Ingeniería web empírica

-Ingeniería web movil

-Personalización y adaptación de aplicaciones web

-Herramientas y métodos de prototipado.

-Control de calidad y pruebas de sistemas

-Diseño de interfaces de usuario

Ingenieria Web



La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web.[1]

La ingeniería web se debe al crecimiento desenfrenado que está teniendo la Web está ocasionando un impacto en la sociedad y el nuevo manejo que se le está dando a la información en las diferentes áreas en que se presenta ha hecho que las personas tiendan a realizar todas sus actividades por esta vía.

Desde que esto empezó a suceder el Internet se volvió más que una diversión y empezó a ser tomado más en serio, ya que el aumento de publicaciones y de informaciones hizo que la Web se volviera como un desafío para los (Ingeniería del software) ingenieros del software, a raíz de esto se crearon enfoques disciplinados, sistemáticos y metodologías donde tuvieron en cuenta aspectos específicos de este nuevo medio.

Introducción

Uno de los aspectos más tenidos en cuenta, en el desarrollo de sitios web es sin duda alguna el diseño gráfico y la organización estructural del contenido. En la actualidad la web está sufriendo grandes cambios, que han obligado a expertos en el tema a utilizar herramientas y técnicas basadas en la ingeniería del software, para poder garantizar el buen funcionamiento y administración de los sitios web. ´

Para garantizar el buen funcionamiento y mantenimiento de los sitios web, este debe contar con ciertos atributos y características que en conjunto forman un concepto muy importante, para alcanzar el éxito en cualquier organización, herramienta, y todo aquello que se pueda considerar como servicio. Dicho concepto es la calidad, que con atributos como, usabilidad, navegabilidad, seguridad, mantenibilidad, entre otros, hace posible por un lado la eficiencia del artefacto web y por ende la satisfacción del usuario final.

Pero para tener artefactos de calidad, a esa misma se le debe planificar, programar y controlar, es decir la calidad no podrá ser agregada a un artefacto web o a cualquier otro producto, al final del proceso de desarrollo, si no que se deberá implementar durante todo el ciclo de vida del desarrollo. Para finalizar el resultado de un proceso de calidad, podría arrojar recomendaciones para introducir mejoras, y la decisión final podría consistir en lanzar una nueva versión del sitio web o en modificar algunos atributos ausentes o pobremente diseñados. Cabe destacar que la ingeniería de la web hace una diferencia entre un webSite y una aplicación, ya que la ingeniería de la web no se dedica a la construcción de sitios web si no a la construcción de aplicaciones web la principal característica que los distingue (aplicaciones de sitios web) es que los sitios web son sitios en la web en donde se publica contenido generalmente estático o un muy bajo nivel de interactividad con el usuario, mientras que las aplicaciones son lugares con alto contenido de interactividad y funcionalidades que bien podrían ser de un software convencional, la aplicación web más sencillo seria uno que contenga formularios y subiendo de nivel encontramos los que realizas conexión con bases de datos remotas, y administradores de contenidos entre otras.

Entonces la ingeniería de la Web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web.[1] En este sentido, la ingeniería de la Web hace referencia a las metodologías, técnicas y herramientas que se utilizan en el desarrollo de aplicaciones Web complejas y de gran dimensión en las que se apoya la evaluación, diseño, desarrollo, implementación y evolución de dichas aplicaciones.

Áreas

El desarrollo de aplicaciones Web posee determinadas características que lo hacen diferente del desarrollo de aplicaciones o software tradicional y sistemas de información. La ingeniería de la Web es multidisciplinar y aglutina contribuciones de diferentes áreas: arquitectura de la información, ingeniería de hipermedia/hipertexto, ingeniería de requisitos, diseño de interfaz de usuario, usabilidad, diseño gráfico y de presentación, diseño y análisis de sistemas, ingeniería de software, ingeniería de datos, indexado y recuperación de información, testeo, modelado y simulación, despliegue de aplicaciones, operación de sistemas y gestión de proyectos.

La ingeniería de la Web no es un clon o subconjunto de la ingeniería de software aunque ambas incluyen desarrollo de software y programación, pues a pesar de que la ingeniería de la Web utiliza principios de ingeniería de software, incluye nuevos enfoques, metodologías, herramientas, técnicas, guías y patrones para cubrir los requisitos únicos de las aplicaciones web. Sin embargo el termino de ingeniería de la web ha sido un termino muy controvertido especialmente para profesionales en disciplinas tales como la ingeniería del software ya que no la consideran como un campo dentro de la ingeniería.

Los principales aspectos de la ingeniería de la Web incluyen, entre otros, los siguientes temas:

  • Diseño de procesos de negocio para aplicaciones web.
  • Herramientas CASE para aplicaciones web.
  • Generación de código para aplicaciones web.
  • Desarrollo web colaborativo.
  • Modelado conceptual de aplicaciones web.
  • Diseño de Modelos de datos para sistemas de información web.
  • Ingeniería web empírica.
  • Entornos de desarrollo de aplicaciones web integrados.
  • Herramientas de autor para contenido multimedia.
  • Pruebas de rendimiento de aplicaciones basadas en web.
  • Personalización y adaptación de aplicaciones web.
  • Herramientas y métodos de prototipado.
  • Control de calidad y pruebas de sistemas.
  • Ingeniería de requisitos para aplicaciones web.
  • Aplicaciones para la Web Semántica.
  • Factorías de software para la web.
  • Métodos, herramientas y automatización de pruebas para aplicaciones web.
  • Aplicaciones web móviles y ubícuas.
  • Usabilidad de aplicaciones web.
  • Accesibilidad para la web.
  • Metodologías de diseño web.
  • Formación en ingeniería de la web.
  • Diseño de interfaces de usuario.
  • Métricas para la web, estimación de costes y medición.
  • Gestión de proyectos web y gestión de riesgos.
  • Desarrollo y despliegue de servicios web.