jueves, 29 de noviembre de 2012

CASE





Proporciona al ingeniero la posibilidad de automatizar actividades  manuales y de mejorar su visión general de la ingeniería. Al igual que las herramientas de ingeniería y de diseño asistidos por computadora que utilizan los ingenieros de otras disciplinas, las herramientas CASE ayudan a garantizar que la calidad se diseñe antes de llegar a construir el producto.

La ingeniería del software asistida por computadora puede ser tan sencilla como una única herramienta que preste su apoyo para una única actividad de ingeniería del software, o tan compleja como todo un entorno que abarque «herramientas», una base de datos, personas, hardware, una red, sistemas operativos, estándares, y otros mil componentes

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.

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticasdestinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costos, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras. Ya en los años 70 un proyecto llamado ISDOS diseñó un lenguaje y por lo tanto un producto que analizaba la relación existente entre los requisitos de un problema y las necesidades que éstos generaban, el lenguaje en cuestión se denominaba PSL (Problem Statement Language) y la aplicación que ayudaba a buscar las necesidades de los diseñadores PSA (Problem Statement Analyzer).
Aunque ésos son los inicios de las herramientas informáticas que ayudan a crear nuevos proyectos informáticos, la primera herramienta CASE fue Excelerator que salió a la luz en el año 1984 y trabajaba bajo una plataforma PC.
Las herramientas CASE alcanzaron su techo a principios de los años 90. En la época en la que IBM había conseguido una alianza con la empresa de software AD/Cycle para trabajar con sus mainframes, estos dos gigantes trabajaban con herramientas CASE que abarcaban todo el ciclo de vida del software. Pero poco a poco los mainframes han ido siendo menos utilizados y actualmente el mercado de las Big CASE ha muerto completamente abriendo el mercado de diversas herramientas más específicas para cada fase del ciclo de vida del software.

Clasificación

Aunque no es fácil y no existe una forma única de clasificarlas, las herramientas CASE se pueden clasificar teniendo en cuenta los siguientes parámetros:
1.      Las plataformas que soportan.
2.     Las fases del ciclo de vida del desarrollo de sistemas que cubren.
3.     La arquitectura de las aplicaciones que producen.
4.     Su funcionalidad.
La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:
§  Upper CASE (U-CASE), herramientas que ayudan en las fases de planificación, análisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML.
§  Middle CASE (M-CASE), herramientas para automatizar tareas en el análisis y diseño de la aplicación.
§  Lower CASE (L-CASE), herramientas que semi-automatizan la generación de código, crean programas de detección de errores, soportan la depuración de programas y pruebas. Además automatizan la documentación completa de la aplicación. Aquí pueden incluirse las herramientas de Desarrollo rápido de aplicaciones.
Existen otros nombres que se le dan a este tipo de herramientas, y que no es una clasificación excluyente entre sí, ni con la anterior:
§  Integrated CASE (I-CASE), herramientas que engloban todo el proceso de desarrollo software, desde análisis hasta implementación.
§  MetaCASE, herramientas que permiten la definición de nuestra propia técnica de modelado, los elementos permitidos del metamodelo generado se guardan en un repositorio y pueden ser usados por otros analistas, es decir, es como si definiéramos nuestro propio UML, con nuestros elementos, restricciones y relaciones posibles.
§  CAST (Computer-Aided Software Testing), herramientas de soporte a la prueba de software.
§  IPSE (Integrated Programming Support Environment), herramientas que soportan todo el ciclo de vida, incluyen componentes para la gestión de proyectos y gestión de la configuración activa.
Por funcionalidad podríamos diferenciar algunas como:
§  Herramientas de generación semiautomática de código.
§  Editores UML.
§  Herramientas de Refactorización de código.
§  Herramientas de mantenimiento como los sistemas de control de versiones·

Reingenieria





¿QUE ES RE INGENIERÍA?
Reingeniería en un concepto simple es el rediseño de un proceso en un negocio o un cambio drástico de un proceso. A pesar que este concepto resume la idea principal de la reingeniería esta frase no envuelve todo lo que implica la reingeniería.
Reingeniería es comenzar de cero, es un cambio de todo o nada, además ordena la empresa alrededor de los procesos. La reingeniería requiere que los procesos fundamentales de los negocios sean observados desde una perspectiva transfuncional y en base a la satisfacción del cliente.
Para que una empresa adopte el concepto de reingeniería, tiene que ser capaz de deshacerse de las reglas y políticas convencionales que aplicaba con anterioridad y estar abierta a los cambios por medio de los cuales sus negocios puedan llegar a ser más productivos
Una definición rápida de reingeniería es "comenzar de nuevo". Reingeniería también significa el abandono de viejos procedimientos y la búsqueda de trabajo que agregue valor hacia el consumidor.
Las actividades de valor agregado tienen dos características, es algo que el cliente aprecia y es importante que se ejecuten correctamente desde la primera vez. La reingeniería se basa en crear procesos que agreguen el mayor valor a la empresa.
La base fundamental de la reingeniería es el servicio al cliente, a pesar del énfasis en esto, en general las empresas no logran la satisfacción del cliente y una de las razones es que los métodos y los procesos han dejado de ser inadecuados en tal grado que el reordenamiento no es suficiente, lo que se necesita es elaborar de nuevo la "ingeniería" del proceso.
A juicio de Hammer la esencia de la reingeniería es que la gente este dispuesta a pensar de un modo diferente en el proceso y accedan a deshacerse de las anticuadas reglas y suposiciones básicas de los procesos en la organización.
Además la reingeniería requiere el abandono de los viejos procesos y la búsqueda de nuevos que agreguen valor al consumidor, rompiendo la estructura y cultura de trabajo.

¿QUE IMPLICA LA REINGENIERÍA?
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.
Según Stamatis, reingeniería no necesariamente implica corte de personal, aunque puede suceder. Debe ser aplicada siempre con una visión a largo plazo ya que cualquier intento a corto plazo será un fracaso. Las nuevas tendencias creen que el futuro es que las empresas se den cuenta rápidamente las áreas de oportunidad en sus reingenierías y vuelvan a realizarlas constantemente.

Existen factores necesarios para que una reingeniería sea efectiva. Estos son:
  • orientación hacia el proceso
  • Ambición
  • Rompimiento de reglas
  • Creatividad en el uso de la tecnología.
Las características comunes después de realizar una reingeniería son:
  • Varios trabajos se comprimen en uno solo
  • Se comprimen verticalmente los procesos
  • Los pasos del proceso siguen un orden natural
  • Existen procesos en múltiples versiones
  • Se realiza el trabajo donde tiene sentido
  • Se reducen chequeos y controles
  • Se da la administración por casos
  • Opera de forma centralizada y descentralizada




Ingeniería Web




1-¿Que entiende ud. por Ingeniería 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.

2-¿Que componentes forman parte de la Ingeniería 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-¿ Ingeniería web es un método único o es mezcla de algunos de los métodos 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 Ingeniería 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 Ingeniería web?¿Que función general realiza cada función?

- 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 Ingeniería web?

-Team Viewer
-Wix
-Active Web
-Webs
-Magicx web Designe

7-¿Indique que aplicaciones de las que hace usb, utiliza Ingeniería 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



INGENIERÍA 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.
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.

 

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 softwaretradicional 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 yprogramació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 laingenierí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.

Modelo Cliente-Servidor





Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información en forma transparente aún en entornos multiplataforma.
 En el modelo cliente servidor, el cliente envía un mensaje solicitando un determinado servicio a un servidor (hace una petición), y este envía uno o varios mensajes con la respuesta (provee el servicio).
En un sistema distribuido cada máquina puede cumplir el rol de servidor para algunas tareas y el rol de cliente para otras.
La idea es tratar a una computadora como un instrumento, que por sí sola pueda realizar muchas tareas, pero con la consideración de que realice aquellas que son mas adecuadas a sus características.
Si esto se aplica tanto a clientes como servidores se entiende que la forma más estándar de aplicación y uso de sistemas Cliente/Servidor es mediante la explotación de las PC’s a través de interfaces gráficas de usuario; mientras que la administración de datos y su seguridad e integridad se deja a cargo de computadoras centrales tipo mainframe. Usualmente la mayoría del trabajo pesado se hace en el proceso llamado servidor y el o los procesos cliente sólo se ocupan de la interacción con el usuario (aunque esto puede variar).
En otras palabras la arquitectura Cliente/Servidor es una extensión de programación modular en la que la base fundamental es separar una gran pieza de software en módulos con el fin de hacer más fácil el desarrollo y mejorar su mantenimiento.
Esta arquitectura permite distribuir físicamente los procesos y los datos en forma más eficiente lo que en computación distribuida afecta directamente el tráfico de la red, reduciéndolo grandemente.
CLIENTE / SERVIDOR
Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.
La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.
Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.
La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.
La red Cliente/Servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.

¿CUÁNDO IMPLANTAR CLIENTE/SERVIDOR?
1. Cambios estructurales y organizativos.
2. Cambios en organigramas.
3. Respuesta dinámica de mercado.
4. Cambio en procesos de negocio.

¿QUÉ AYUDA A LA IMPLEMENTACIÓN?
1. La demanda de sistemas fáciles.
2. Precio/rendimiento de estaciones y servidores.
3. Creciente acceso a la información para decisiones:
  1. Separación datos-programas.
  2. Programas flexibles.
4. Nuevas tecnologías de alta productividad.

FUNCIONAMIENTO DEL SISTEMA CLIENTE / SERVIDOR
Un sistema cliente/servidor funciona tal como se detalla en el siguiente diagrama:



  •       El cliente envía una solicitud al servidor mediante su dirección IP y el puerto, que está reservado para un servicio en particular que se ejecuta en el servidor.
  •       El servidor recibe la solicitud y responde con la dirección IP del equipo cliente y su puerto.