jueves, 15 de diciembre de 2011

SEMANA 19 - INGIENERIA DIRECTA E INVERSA

1.INGIENERIA DIRECTA
La ingeniería es el compendio de conocimientos y técnicas científicas aplicadas a la invención, perfeccionamiento y utilización de técnicas para la resolución de problemas que afectan directamente a la sociedad en su actividad cotidiana.
En ella, el conocimiento, manejo y dominio de las matemáticas, la física y otras ciencias, obtenido mediante estudio, experiencia y práctica, se aplica con juicio para desarrollar formas eficientes de utilizar los materiales y las fuerzas de la naturaleza para beneficio de la humanidad y del ambiente.
Pese a que la ingeniería como tal (transformación de la idea en realidad) está intrínsecamente ligada al ser humano, su nacimiento como campo de conocimiento específico está unido al comienzo de la revolución industrial, constituyendo uno de los actuales pilares en el desarrollo de las sociedades modernas.
Otro concepto que define a la ingeniería es el saber aplicar los conocimientos científicos a la invención, perfeccionamiento o utilización de la técnica en todas sus determinaciones. Esta aplicación se caracteriza por utilizar principalmente el ingenio de una manera más pragmática y ágil que el método científico, puesto que una actividad de ingeniería, por lo general, está limitada a un tiempo y recursos dados por proyectos. El ingenio implica tener una combinación de sabiduría e inspiración para modelar cualquier sistema en la práctica.

Etimología
La etimología del término ingeniería es reciente, pues deriva de ingeniero, que data de 1325 del idioma inglés, cuando un engine’er (de forma literal del inglés, el que opera un engine, es decir, un motor o máquina) refiriéndose inicialmente a un constructor de máquinas militares.[1] En este contexto, ya obsoleto, un “engine” se refería a una máquina militar (hoy en día se traduce como "motor"), es decir, un dispositivo mecánico usado en las contiendas militares (por ejemplo, una catapulta). El término “engine” es aún más antiguo, pues deriva del término latino ingenium (c. 1250), al español ingenio)[2] El término evolucionó más adelante para incluir todas las áreas en las que se utilizan técnicas para aplicar el método científico. En otras lenguas como el árabe, la palabra ingeniería también significa geometría.

 El ingeniero

 
Su función principal es la de realizar diseños o desarrollar soluciones tecnológicas a necesidades sociales, industriales o económicas. Para ello el ingeniero debe identificar y comprender los obstáculos más importantes para poder realizar un buen diseño. Algunos de los obstáculos son los recursos disponibles, las limitaciones físicas o técnicas, la flexibilidad para futuras modificaciones y adiciones y otros factores como el coste, la posibilidad de llevarlo a cabo, las prestaciones y las consideraciones estéticas y comerciales. Mediante la comprensión de los obstáculos, los ingenieros deducen cuáles son las mejores soluciones para afrontar las limitaciones encontradas cuando se tiene que producir y utilizar un objeto o sistema.
Los ingenieros utilizan el conocimiento de la ciencia, la matemática y la experiencia apropiada para encontrar las mejores soluciones a los problemas concretos, creando los modelos matemáticos apropiados de los problemas que les permiten analizarlos rigurosamente y probar las soluciones potenciales. Si existen múltiples soluciones razonables, los ingenieros evalúan las diferentes opciones de diseño sobre la base de sus cualidades y eligen la solución que mejor se adapta a las necesidades.
En general, los ingenieros intentan probar si sus diseños logran sus objetivos antes de proceder a la producción en cadena. Para ello, emplean entre otras cosas prototipos, modelos a escala, simulaciones, pruebas destructivas y pruebas de fuerza. Las pruebas aseguran que los artefactos funcionarán como se había previsto.
Para hacer diseños estándar y fáciles, las computadoras tienen un papel importante. Utilizando los programas de diseño asistido por ordenador (DAO, más conocido por CAD, Computer-Aided Design), los ingenieros pueden obtener más información sobre sus diseños. El ordenador puede traducir automáticamente algunos modelos en instrucciones aptas para fabricar un diseño. La computadora también permite una reutilización mayor de diseños desarrollados anteriormente, mostrándole al ingeniero una biblioteca de partes predefinidas para ser utilizadas en sus propios diseños.
Los ingenieros deben tomar muy seriamente su responsabilidad profesional para producir diseños que se desarrollen como estaba previsto y no causen un daño inesperado a la gente en general. Normalmente, los ingenieros incluyen un factor de seguridad en sus diseños para reducir el riesgo de fallos inesperados.
La ciencia intenta explicar los fenómenos recientes y sin explicación, creando modelos matemáticos que correspondan con los resultados experimentales. Tecnología e ingeniería constituyen la aplicación del conocimiento obtenido a través de la ciencia, produciendo resultados prácticos. Los científicos trabajan con la ciencia y los ingenieros con la tecnología. Sin embargo, puede haber puntos de contacto entre la ciencia y la ingeniería. No es raro que los científicos se vean implicados en las aplicaciones prácticas de sus descubrimientos. De modo análogo, durante el proceso de desarrollo de la tecnología, los ingenieros se encuentran a veces explorando nuevos fenómenos.
También puede haber conexiones entre el funcionamiento de los ingenieros y los artistas, principalmente en los campos de la arquitectura y del diseño industrial.
Existe asimismo alguna otra creencia en la forma de entender al ingeniero del siglo XXI, ya que las raíces de este término no quedan claras, porque el término ingeniero es un anglicismo proveniente de "engineer", que proviene de engine, es decir máquina.
En algunos países, como España, existen técnicos que se dedican a labores de ingeniería: los ingenieros técnicos. Esa división de las profesiones liberales de construcción se aplica también a la arquitectura, existiendo arquitectos, de nivel de grado universitario y su versión terciaria o técnica, el arquitecto Técnico.
2. INGIENERIA INVERSA

De Wikipedia, la enciclopedia libre
El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.
Hoy en día (principios del siglo XXI), los productos más comúnmente sometidos a ingeniería inversa son los programas de computadoras y los componentes electrónicos, pero, en realidad, cualquier producto puede ser objeto de un análisis de Ingeniería Inversa.
El método se denomina así porque avanza en dirección opuesta a las tareas habituales de ingeniería, que consisten en utilizar datos técnicos para elaborar un producto determinado. En general, si el producto u otro material que fue sometido a la ingeniería inversa fue obtenido en forma apropiada, entonces el proceso es legítimo y legal. De la misma forma, pueden fabricarse y distribuirse, legalmente, los productos genéricos creados a partir de la información obtenida de la ingeniería inversa, como es el caso de algunos proyectos de Software libre ampliamente conocidos.
El programa Samba es un claro ejemplo de ingeniería inversa, dado que permite a sistemas operativos UNIX compartir archivos con sistemas Microsoft Windows. El proyecto Samba tuvo que investigar información confidencial (no liberada al público en general por Microsoft) sobre los aspectos técnicos relacionados con el sistema de archivos Windows. Lo mismo realiza el proyecto WINE para el conjunto de API de Windows y OpenOffice.org con los formatos propios de Microsoft Office, o se hace para entender la estructura del sistema de archivos NTFS y así poder desarrollar drivers para la lectura-escritura sobre el mismo (principalmente para sistemas basados en GNU/Linux).
La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone profundizar en el estudio de su funcionamiento, hasta el punto de que podamos llegar a entender, modificar y mejorar dicho modo de funcionamiento.
Pero este término no sólo se aplica al software, sino que también se considera ingeniería inversa el estudio de todo tipo de elementos (por ejemplo, equipos electrónicos, microcontroladores, u objeto fabril de cualquier clase). Diríamos, más bien, que la ingeniería inversa antecede al nacimiento del software, tratándose de una posibilidad a disposición de las empresas para la producción de bienes mediante copiado[1] desde el mismo surgimiento de la ingeniería.
En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones. La gran mayoría del software de pago incluye en su licencia una prohibición expresa de aplicar ingeniería inversa a su código, con el intento de evitar que se pueda modificar su código y que así los usuarios tengan que pagar si quieren usarlo.
La ingeniería inversa nace en el transcurso de la Segunda Guerra Mundial, cuando los ejércitos enemigos incautaban insumos de guerra como aviones u otra maquinaria de guerra para mejorar las suyas mediante un exhaustivo análisis.

domingo, 11 de diciembre de 2011

SEMANA 18 - ODBC . Conceptos

ODBC  . Conceptos

ODBC es una interfaz de nivel de llamada que permite que las aplicaciones tengan acceso a los datos de cualquier base de datos en la que haya un controlador ODBC. La utilización de ODBC permite crear aplicaciones de base de datos con acceso a cualquier base de datos en la que el usuario final tenga un controlador ODBC. ODBC proporciona una API que permite que la aplicación sea independiente del sistema de administración de bases de datos (DBMS) de origen.
ODBC es la parte de base de datos de la Arquitectura de servicios abiertos de Microsoft Windows (WOSA), una interfaz que permite que las aplicaciones de escritorio basadas en Windows se conecten a varios entornos de computación sin tener que volver a crear la aplicación para cada plataforma.
A continuación se incluyen componentes de ODBC:
·         API de ODBC
Biblioteca de llamadas a funciones, conjunto de códigos de error y sintaxis de lenguaje de consulta estructurado (SQL) estándar para tener acceso a los datos de los DBMS.
·         Administrador de controladores ODBC
Biblioteca de vínculos dinámicos (Odbc32.dll) que carga controladores de bases de datos ODBC en nombre de una aplicación. Esta DLL es transparente a la aplicación.
·         Controladores de bases de datos ODBC
Biblioteca o bibliotecas DLL que procesan llamadas a funciones ODBC para DBMS específicos. Para obtener una lista de los controladores proporcionados, vea Lista de controladores ODBC.
·         Biblioteca de cursores ODBC
Biblioteca de vínculos dinámicos (Odbccr32.dll) que se encuentra entre el Administrador de controladores ODBC y los controladores, y que controla el desplazamiento por los datos.
·         Administrador de ODBC
Herramienta utilizada para configurar un DBMS de modo que quede disponible como origen de datos de una aplicación.
Para que una aplicación sea independiente de los DBMS tiene que trabajar a través de un controlador ODBC creado específicamente para un DBMS, en lugar de trabajar directamente con el DBMS. El controlador convierte las llamadas en comandos que el DBMS correspondiente puede utilizar, con lo que se simplifica el trabajo del desarrollador, y hace que esté disponible para una amplia gama de orígenes de datos.
Las clases de base de datos admiten cualquier origen de datos para el que se tenga un controlador ODBC. Entre ellos se puede incluir, por ejemplo, una base de datos relacional, una base de datos de método de acceso secuencial indizado (ISAM), una hoja de cálculo de Microsoft Excel o un archivo de texto. Los controladores ODBC administran las conexiones al origen de datos y se utiliza SQL para seleccionar los registros de la base de datos.
. Configuración
Una aplicación de Conectividad abierta de bases de datos (ODBC) utiliza un origen de datos ODBC para conectarse a una instancia de Microsoft MicrosoftSQL Server. Un origen de datos ODBC es una definición almacenada que registra:
·         El controlador ODBC que se va a utilizar para las conexiones que especifican el origen de datos.
·         La información que utiliza el controlador ODBC para conectarse a un origen de datos.
·         Opciones específicas del controlador que se van a utilizar para la conexión. Por ejemplo, un SQL Server origen de datos ODBC puede registrar las opciones de ISO que va a utilizar o si los controladores deben registrar estadísticas de rendimiento.
Cada origen de datos ODBC de un cliente tiene un nombre del origen de datos (DSN) exclusivo. Un origen de datos ODBC para el controlador ODBC de SQL Server incluye toda la información utilizada para conectarse a una instancia de SQL Server, más las opciones fundamentales.


viernes, 2 de diciembre de 2011

SEMANA 17 - INTRODUCCIÓN A LAS HERRAMIENTAS CASE

 INTRODUCCIÓN A LAS HERRAMIENTAS CASE
Introducción
Hoy en día, muchas empresas se han extendido a la adquisición de herramientas CASE (Ingeniería Asistida por Computadora), con el fin de automatizar los aspectos clave de todo el proceso de desarrollo de un sistema, desde el principio hasta el final e incrementar su posición en el mercado competitivo, pero obteniendo algunas veces elevados costos en la adquisición de la herramienta y costos de entrenamiento de personal así como la falta de adaptación de la herramienta a la arquitectura de la información y a las metodologías de desarrollo utilizadas por la organización. Por otra parte, algunas herramientas CASE no ofrecen o evalúan soluciones potenciales para los problemas relacionados con sistemas o virtualmente no llevan a cabo ningún análisis de los requerimientos de la aplicación.
Sin embargo, CASE proporciona un conjunto de herramientas semiautomatizadas y automatizadas que están desarrollando una cultura de ingeniería nueva para muchas empresas. Uno de los objetivos más importante del CASE (a largo plazo) es conseguir la generación automática de programas desde una especificación a nivel de diseño.
Ahora bien, con la aparición de las redes de ordenadores en empresas y universidades ha surgido en el mundo de la informática la tecnología cliente / servidor. Son muchas de las organizaciones que ya cuentan con un número considerable de aplicaciones cliente / servidor en operación: Servidores de Bases de Datos y Manejadores de Objetos Distribuidos. Cliente / servidor es una tecnología de bajo costo que proporciona recursos compartidos, escalabilidad, integridad, encapsulamiento de servicios, etc. Pero al igual que toda tecnología, el desarrollo de aplicaciones cliente / servidor requiere que la persona tenga conocimientos, experiencia y habilidades en procesamiento de transacciones, diseño de base de datos, redes de ordenadores y diseño gráfica de interfase.
El objeto de estudio está centrado en determinar ¿cuáles son las influencias de las herramientas CASE en las empresas desarrolladoras de sistemas de información cliente / servidor? Y ¿cuáles son las tendencias actuales de las empresas fabricantes de sistemas cliente / servidor?.
A continuación, en el siguiente artículo ahondaremos más en el propósito general de las
Herramientas CASE y el impacto que puede ocasionar el uso de las mismas en una empresa.
2. 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, las té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 conceptual 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.
En la década de los setenta el proyecto ISDOS desarrolló un lenguaje llamado "Problem Statement Language" (PSL) para la descripción de los problemas 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)
La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas 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.
. Erwin Platinium
Las Herramientas case es la mejor base para el proceso de análisis y desarrollo de software, así que las computadoras afectan nuestras vidas nos guste o no. Utilizamos las maquinas en nuestra vida diaria, la mayor parte del tiempo sin reconocer conscientemente que estamos haciéndolo, a diario utilizamos aplicaciones domésticas como microondas, televisión, vídeo Casseteras o en la calle los cajeros automáticos, entre otros.
La verdad es que no podemos escapar de las computadoras. El rápido incremento es una hazaña de las computadoras junto al dramático decremento en tamaño y costo, y así esta tecnología, es una larga variedad de aplicaciones que éstas pueden soportar.
Desde el inicio de la escritura de software, ha existido un conocimiento de la necesidad de herramientas automatizadas para ayudar al diseñador del software. Inicialmente, la concentración estaba en herramientas de apoyo a programas como traductores, recopiladores, ensambladores, procesadores de macros, montadores y cargadores. Este conjunto de aplicaciones, aumentó de una manera rápida en un breve espacio de tiempo, causando una gran demanda por nuevo software a desarrollar. A medida que se escribía nuevo software, habían ya en existencia millones y millones de líneas de código que necesitaban se mantenidas y actualizadas.
Significado sigla CASE
Computer
Aided Assisted Automated
Software Systems
Engineering
2. Qué son las Herramientas CASE?
Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software (Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.).
CASE es también definido como el Conjunto de métodos, utilidades y técnicas que facilitan el mejoramiento del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.
Existe también el CASE integrado que fue comenzando a tener un impacto muy Significativo en los negocios y sistemas de información de las organizaciones, además con este CASE integrado las compañías pueden desarrollar rápidamente sistemas de mejor calidad para soportar procesos críticos del negocio y asistir en el desarrollo y promoción intensiva de la información de productos y servicios.
3. Historia de las Herramientas CASE.
Las Herramientas CASE se iniciaron con un procesador de palabras que fue usado para crear y manipular documentación. Los 70’s vieron la introducción de técnicas gráficas y diagramas de flujo de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.
La introducción de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE
. Power designer
PowerDesigner combina de forma única los estándares gráficos y no gráficos de las técnicas de modelado (Requerimientos, UML, Modelado de Procesos de Negocio, XML y modelado de datos líder del mercado) con ambientes líderes y modernos como .NET, Workspace, PowerBuilder, Java, Eclipse, etc., ofreciendo soluciones innovadoras de análisis, diseño y desarrollo para el ciclo de vida de software.

Sybase® PowerDesigner adicionalmente ofrece técnicas avanzadas para mejorar la calidad, integridad y funcionamiento de los sistemas DW. PowerDesigner cumple con las necesidades de DW a través de técnicas como el manejo de requerimientos, modelado de procesos, modelado conceptual, lógico y físico de datos, modelado multidimensional con jerarquías, ETL, EII, y mapeo de replicación de fuentes externas.

PowerDesigner ofrece diagramas multidimensionales que documentan el ambiente DW con objetos multidimensionales enlazados a tablas físicas y con la posibilidad de mostrar jerarquías, jerarquías virtuales y mucho más. Una definición de DW tampoco podría estar completa sin la definición de las transformaciones de la fuente de datos que será guardada en ella. El Liquidity Model de PowerDesigner (ILM), documenta todos los aspectos en el movimiento de información. Fuentes de datos inicial y destino, múltiples transformaciones, publicaciones y suscripciones sirven para documentar cualquier ETL, EII o proceso de replicación usado en DW y Datamarts.
PowerDesigner, la herramienta de modelamiento número uno de la industria, permite a las empresas, de manera más fácil, visualizar, analizar y manipular metadatos, logrando un efectiva arquitectura empresarial de información.
PowerDesigner para Arquitectura Empresarial también brinda un enfoque basado en modelos, el cual permite alinear al negocio con la tecnología de información, facilitando la implementación de arquitecturas efectivas de información empresarial. Brinda potentes técnicas de análisis, diseño y gestión de metadatos a la empresa.
PowerDesigner combina varias técnicas estándar de modelamiento con herramientas líder de desarrollo, como .NET, Sybase WorkSpace, Sybase Powerbuilder, Java y Eclipse, para darle a las empresas soluciones de análisis de negocio y de diseño formal de base de datos. Además trabaja con más de 60 bases de datos relacionales.
Beneficios
  • Alinea el negocio y la tecnología de información para mejorar la productividad.
  • Brinda soporta abierto a ambientes heterogéneos de todas clases.
  • Es altamente personalizable, permitiendo acogerse a los estándares y regulaciones.
  • Facilita la arquitectura empresarial, documentando los sistemas existentes.
  • Aumenta la agilidad del negocio con “Link & Sync” y análisis de impacto
. Aplicación del alumno