martes, 25 de septiembre de 2012

Cloud computing


El llamado cloud computing o computación de nube (en estricta traducción) es el término que se le da a la tendencia de basar las aplicaciones en servicios alojados de forma externa, en la propia web.

Dicho de otra forma, los datos y relaciones en este esquema no están en nuestros equipos ni dependen del sistema operativo de los mismos, sino en la red (the cloud, en la nube).

El Cloud computing permite al usuario acceder a un catálogo de servicios estandarizados y responder a las necesidades de su negocio, de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando únicamente por el consumo efectuado.

Este concepto incorpora el software como servicio, como en la Web 2.0 y otras tendencias tecnológicas recientes, que tienen en común el que confían en Internet para satisfacer las necesidades de cómputo de los usuarios.

Beneficios

- Integración probada de servicios Web. Por su naturaleza, la tecnología de Cloud Computing se puede integrar con mucha mayor facilidad y rapidez con el resto de sus aplicaciones empresariales (tanto software tradicional como Cloud Computing basado en infraestructuras), ya sean desarrolladas de manera interna o externa.

- Prestación de servicios a nivel mundial. Las infraestructuras de Cloud Computing proporcionan mayor capacidad de adaptación, recuperación de desastres completa y reducción al mínimo de los tiempos de inactividad.

- Una infraestructura 100% de Cloud Computing no necesita instalar ningún tipo de hardware. La belleza de la tecnología de Cloud Computing es su simplicidad... y el hecho de que requiera mucha menor inversión para empezar a trabajar.

- Implementación más rápida y con menos riesgos. Podrá empezar a trabajar muy rápidamente gracias a una infraestructura de Cloud Computing. No tendrá que volver a esperar meses o años e invertir grandes cantidades de dinero antes de que un usuario inicie sesión en su nueva solución. Sus aplicaciones en tecnología de Cloud Computing estarán disponibles en cuestión de semanas o meses, incluso con un nivel considerable de personalización o integración.

- Actualizaciones automáticas que no afectan negativamente a los recursos de TI. Si actualizamos a la última versión de la aplicación, nos veremos obligados a dedicar tiempo y recursos (que no tenemos) a volver a crear nuestras personalizaciones e integraciones. La tecnología de Cloud Computing no le obliga a decidir entre actualizar y conservar su trabajo, porque esas personalizaciones e integraciones se conservan automáticamente durante la actualización.

- Contribuye al uso eficiente de la energía. En este caso, a la energía requerida para el funcionamiento de la infraestructura. En los datacenters tradicionales, los servidores consumen mucha más energía de la requerida realmente. En cambio, en las nubes, la energía consumida es sólo la necesaria, reduciendo notablemente el desperdicio.






¿Que es MDD?


El Desarrollo de Software Dirigido por Modelos (DSDM, también denominado MDD por su acrónimo en inglés, Model-Driven Development) es una propuesta para el desarrollo de software en la que se le atribuye a los modelos el papel principal de todo el proceso, frente a las propuestas tradicionales basadas en lenguajes de programación y plataformas de objetos y componentes de software.

Son varias las razones que han motivado la aparición de este nuevo paradigma. En primer lugar nos encontramos con la creciente complejidad de las aplicaciones de software, que han de satisfacer un mayor número de requisitos (heterogeneidad, distribución, alta disponibilidad, adaptabilidad, etc.) con mejores prestaciones y menores tiempos de desarrollo. Por otro lado, las nuevas tecnologías evolucionan demasiado deprisa (COM, DCOM, COM+, CORBA, CCM, J2EE, .NET, Web Services, SOA...), lo que hace que las inversiones en tecnologías concretas sean demasiado volátiles. Si bien es cierto que esos problemas no son nuevos en el campo de la Ingeniería de Software, está comprobado que la mejor forma de tratar con ellos es elevando el nivel de abstracción de los modelos desde las primeras etapas del desarrollo.

De hecho, el DSDM no es el primer intento por resolver este tipo de problemas. A lo largo de la evolución de la Ingeniería de Software hemos asistido a muchas propuestas para que los programas reflejen de una forma mejor y a más alto nivel, no sólo el dominio del problema, sino también para que traten de ocultar la complejidad de la tecnología sofware subyacente. Normalmente esto se ha llevado a cabo mediante la definición de lenguajes de programación, cada vez de más alto nivel (COBOL, Pascal, C, C++, Eiffel, Java, Python, Ruby, etc.), y la aparición de nuevas técnicas y mecanismos, por ejemplo los marcos de trabajo (frameworks) como Struts o Rails. Sin embargo, estos intentos no han conseguido lograr del todo su objetivo. Quizás una de las razones de su aparente fracaso es que estaban basados en las propias tecnologías del software, cuando es precisamente ahí donde residen la mayoría de los problemas.


Principios básicos del DSDM

Uno de los términos claves en la filosofía del DSDM es el concepto de modelo. De forma sencilla podríamos definir un modelo como una abstracción simplificada de un sistema o concepto del mundo real. Como tal, el modelo contiene un menor nivel de detalle que su correspondiente artefacto de la vida real. Sin embargo, ésta no es la única definición que encontraremos en la literatura sobre el término "modelo". A modo de ejemplo, las siguientes citas muestran algunas de las acepciones más comunes de este concepto en el ámbito de la Ingeniería de Software y del DSDM:

Un modelo es una descripción de un sistema, o parte de éste, escrito en un lenguaje bien definido. (Warmer y Kleppe, 2003).
Un modelo es una representación de una parte de la funcionalidad, estructura y/o comportamiento de un sistema (OMG, 2001).

Un modelo es una descripción o especificación de un sistema y su entorno definida para cierto propósito. Un modelo es representado habitualmente como una combinación de elementos gráficos y de texto. (Miller y Mukerji, 2003).

Según Wermer y Kleppe (2003), cada modelo se centra en la descripción de un único aspecto del sistema, de acuerdo a un propósito específico, y descrito hasta un cierto nivel de abstracción adecuado para el problema modelado. Tal descripción puede facilitarse de forma gráfica o textual (Miller y Mukerji, 2003), haciendo uso generalmente de lenguajes de modelado cuya semántica esté bien definida. A este respecto, la idea compartida por todos los paradigmas englobados dentro del DSDM es la conveniencia de utilizar para el modelado lenguajes de mayor nivel de abstracción que los lenguajes de programación habituales, esto es, lenguajes que manejen conceptos más cercanos al dominio de la aplicación. Así pues, dependiendo del ámbito DSDM que se trate, estos lenguajes que proporcionan mayor nivel de abstracción se denominanlenguajes de modelado (contexto de MDA) o lenguajes específicos del dominio (contexto de DSM y SF).

¿Que es SOA?


SOA significa integración a través de sistemas diversos. SOA utiliza protocolos estándar e interfaces convencionales – usualmente Web Services – para facilitar el acceso a la lógica de negocios y la información entre diversos servicios. SOA nos brinda los principios y la guía para transformar el conjunto de recursos de TI de la compañía – los cuales son por lo general heterogéneos, distribuidos, inflexibles y complejos - en recursos flexibles, integrados y simplificados, que pueden ser cambiados y compuestos para alinearse más fácilmente con los objetivos del negocio. Podemos decir entonces, que SOA no es una herramienta, no más bien es un conjunto de patrones de construcción de las nuevas aplicaciones de la empresa – más dinámicas y menos dependientes.En la Arquitectura Orientada a Servicios, se puede reemplazar un servicio sin tener que preocuparse por la tecnología fundamental; la interfase es lo que importa, y está definida en un estándar universal en servicios Web y XML. Esto es flexibilidad a través de la interoperabilidad. También es la habilidad de asegurar los activos existentes, aplicaciones y bases de datos legales y hacerlos parte de las soluciones empresariales extendiéndolos al SOA en vez de reemplazarlos. El resultado en la red es la habilidad de evolucionar rápida y eficientemente, en otras palabras, adaptarse “orgánicamente” de acuerdo a la demanda del negocio. Esto es realmente nuevo

Lenguajes de alto nivel 
Los lenguajes de alto nivel como BPEL o WS-Coordination llevan el concepto de servicio un paso adelante al proporcionar métodos de definición y soporte para flujos de trabajo y procesos de negocio.SOA define las siguientes capas de software:

  • Aplicaciones básicas - Sistemas desarrollados bajo cualquier arquitectura o tecnología, geográficamente dispersos y bajo cualquier figura de propiedad;
  • De exposición de funcionalidades - Donde las funcionalidades de la capa aplicativa son expuestas en forma de servicios (generalmente como servicios web);
  • De integración de servicios - Facilitan el intercambio de datos entre elementos de la capa aplicativa orientada a procesos empresariales internos o en colaboración;
  • De composición de procesos - Que define el proceso en términos del negocio y sus necesidades, y que varía en función del negocio;
  • De entrega - donde los servicios son desplegados a los usuarios finales.SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de negocio y puede dar soporte a las actividades de integración y consolidación.
Beneficios :
Los beneficios que puede obtener una organización que adopte SOA son:

  • Mejora en los tiempos de realización de cambios en procesos.
  • Facilidad para evolucionar a modelos de negocios basados en tercerización.
  • Facilidad para abordar modelos de negocios basados en colaboración con otros entes (socios, proveedores).
  • Poder para reemplazar elementos de la capa aplicativa SOA sin disrupción en el proceso de negocio.
  • Facilidad para la integración de tecnologías disimiles.
SOA es la evolución del modelo de programación orientado a componentes, ya que SOA agrega herramientas de computación distribuida a estas tecnologías que hemos venido utilizando por años. Podríamos decir que el cambio más grande es filosófico: en lugar de pensar en el diseño de aplicaciones individuales para resolver problemas especificos, SOA ve el software como un patrón que soporta todo el proceso del negocio. Cada elemento de un servicio es un componente que puede ser utilizado muchas veces a través de muchas funciones y procesos dentro y fuera de la empresa. Los servicios se pueden actualizar y escalar conforme sea requerido, o se pueden cambiar a una librería de terceros, sin afectar la operación del negocio – esto se da por que el componente clave de SOA no es la aplicación o el componente en uso si no más bien el contrato de uso, la interface.


Tecnologia OO/WS

Los métodos de ingeniería web dirigidos por modelos han mejorado tanto la calidad como la eficiencia a la hora de desarrollar aplicaciones web. estos métodos utilizan modelos conceptuales para capturar de forma abstracta una representación detallada de la aplicación web a desarrollar. la ventaja más destacada de esta aproximación es que a partir de estos modelos, ampliamente validados en entornos industriales, es factible la generación sistemática del código que implementa la aplicación web. las aplicaciones web 2.0 destacan, fundamentalmente, en la alta implicación de los usuarios a la hora de crear sus contenidos, ya sean en forma de opiniones, fotos, definición es o vídeos  este hecho enfatiza el carácter colaborativo de las aplicaciones web 2.0 y otorga al usuario un rol primordial en la aplicación. para lograr la colaboración del usuario, es un requisito imprescindible que la aplicación proporcione una interacción precisa e intuitiva. este objetivo se ha conseguido en las aplicaciones web 2.0 mediante:
 1) una interfaz de usuario tecnológicamente muy avanzada y con un elevado grado de usabilidad; 
2) la reutilización de un conjunto de buenas prácticas, ampliamente aplicadas en el dominio de la web 2.0, que proporcionan al usuario una forma sencilla y conocida de interactuar con la aplicación.
Con el objetivo de desarrollar aplicaciones web 2.0 de calidad, ambos aspectos tienen que estar presentes en los métodos de ingeniería web. esta tesis doctoral presenta el método de ingeniería web dirigido por modelos oows 2.0 como una evolución incremental y necesaria del método oows. el objetivo esencial de este nuevo método es el de proporcionar la expresividad conceptual requerida para el desarrollo de aplicaciones web 2.0. en concreto, las contribuciones se centran en soportar los aspectos avanzados de la interacción con el usuario final, tan relevantes en este tipo de aplicaciones. para lograr esta meta, la tesis doctoral introduce una serie de modelos conceptuales que capturan, sin ambigüedades, las nuevas necesidades de interacción demandadas por las aplicaciones web 2.0.


Ley de Murphy para la programacion


Las Leyes de Murphy son dichos populares comúnmente utilizados cuando algo no sale de la mejor manera. Un ejemplo típico es que si te cambias a fila del lado, la que acabas de dejar avanzará más rápido. En resumen, lo que quiere decir es que si algo tiene la posibilidad de salir mal, saldrá mal. Este tema genera ciertos desacuerdos, obviamente porque para muchos es considerado como una muestra total de pesimismo, ya que habla de lo negativo que podemos encontrar diariamente, desde las cosas más simples y rutinarias de nuestra vida, hasta las decisiones más importantes. Su creador es Edward A. Murphy Jr. Hay muchísimas variaciones de esta ley  en este caso pondremos unos relacionados con la programación:

1.-Cualquier programa, no importa cual, se queda obsoleto nada mas instalarlo. 
2.-Es más fácil cambiar las especificaciones para que se ajusten al programa que viceversa. 
3.-Si un programa es útil, alguien te obligará a hacer cambios en el. 
4.-Si un programa es inútil, alguien te obligará a documentarlo exhaustivamente. 
5.-Solamente el 10 por ciento del código de cualquier programa llegará a ejecutarse en algún momento. 
6.-El Software crece siempre hasta consumir todos los recursos disponibles. 
7.-Cualquier programa no trivial, contiene al menos un error. 
8.-La probabilidad de hacer el ridículo en una demostración pública de tu software es directamente proporcional al número de gente viéndola, creciendo además de manera exponencial el riesgo cuanto mayor sea la cantidad de dinero invertido en dicha aplicación. 9.-Hasta que un programa no lleve al menos 6 meses en producción no se descubrirá su error mas grave. 
10.-Hay una variedad infinita de errores indetectables. Por contra, los detectables son por definición finitos. 
11.-El esfuerzo requerido para corregir un error se incrementa de manera exponencial con el tiempo. 
12.-La complejidad de un programa siempre crece hasta que excede la capacidad del programador que lo tiene que mantener. 
13.-Cualquier código de tu autoría que no hayas revisado en meses, bien podría haberlo escrito cualquier otra persona, porque al volverlo a revisar no te enterarás de nada. 
14.-Dentro de cada pequeño programa hay un gran programa pujando por salir a la luz. 
15.-Cuanto mas pronto comiences trabajar en tu programa, mas tiempo te llevará. 
16.-Un proyecto mal planificado necesita hasta tres veces mas tiempo de lo esperado para terminarlo; un proyecto cuidadosamente planificado solo lleva 2 veces mas tiempo de lo estimado al principio. 
17.-Meter mas programadores en un proyecto que va con retraso tan solo consigue retrasarlo mas. 
18.-Un programa nunca está menos de un 90% completo y nunca mas de un 95% completo. 
19.-Si tu programa automatiza una porquería, solo conseguirás una porquería automatizada. 
20.-Construye un programa que incluso un tonto pueda usar y solamente un tonto querrá usarlo. 
21.-Los usuarios en realidad no saben lo que quieren de un programa hasta que lo usan.




Fuente: http://www.xeduced.com/2008/06/20/las-21-leyes-de-la-programacion/

XML


XML es una tecnología en realidad muy sencilla que tiene a su alrededor otras tecnologías que la complementan y la hacen mucho más grande y con unas posibilidades enormes y básicas para la sociedad de la información.

XML, con todas las tecnologías relacionadas, representa una manera distinta de hacer las cosas, más avanzada, cuya principal novedad consiste en permitir compartir los datos con los que se trabaja a todos los niveles, por todas las aplicaciones y soportes. Así pues, el XML juega un papel importantísimo en este mundo actual, que tiende a la globalización y la compatibilidad entre los sistemas, ya que es la tecnología que permitirá compartir la información de una manera segura, fiable, fácil. Además, XML permite al programador y los soportes dedicar sus esfuerzos a las tareas importantes cuando trabaja con los datos, ya que algunas tareas tediosas como la validación de estos o el recorrido de las estructuras corre a cargo del lenguaje y está especificado por el estándar, de modo que el programador no tiene que preocuparse por ello.

Vemos que XML no está sólo, sino que hay un mundo de tecnologías alrededor de él, de posibilidades, maneras más fáciles e interesantes de trabajar con los datos y, en definitiva, un avance a la hora de tratar la información, que es en realidad el objetivo de la informática en general. XML, o mejor dicho, el mundo XML no es un lenguaje, sino varios lenguajes, no es una sintaxis, sino varias y no es una manera totalmente nueva de trabajar, sino una manera más refinada que permitirá que todas las anteriores se puedan comunicar entre si sin problemas, ya que los datos cobran sentido. Todo esto lo veremos con calma en la Introducción a XML.

XML es interesante en el mundo de Internet y el e-bussiness, ya que existen muchos sistemas distintos que tienen que comunicarse entre si, pero como se ha podido imaginar, interesa por igual a todas las ramas de la informática y el tratamiento de datos, ya que permite muchos avances a la hora de trabajar con ellos.

Así pues, os recomendamos seguir esta lectura en la introducción a XML. A lo largo de los siguientes capítulos, vamos a ver algunas características importantes de la tecnología que nos permitirán comprender mejor el mundo XML y cómo soluciona nuestros problemas a la hora de trabajar con los datos.







lunes, 24 de septiembre de 2012

Domótica

La domótica es el conjunto de tecnologías aplicadas al control y la automatización inteligente de la vivienda, que permite una gestión eficiente del uso de la energía, además de aportar seguridad, confort, y comunicación entre el usuario y el sistema.

Un sistema domótico es capaz de recoger información proveniente de unos sensores o entradas, procesarla y emitir órdenes a unos actuadores o salidas. El sistema puede acceder a redes exteriores de comunicación o información.

La domótica aplicada a edificios no destinados a vivienda, es decir oficinas, hoteles, centros comerciales, de formación, hospitales y terciario, se denomina, inmótica.

La domótica permite dar respuesta a los requerimientos que plantean estos cambios sociales y las nuevas tendencias de nuestra forma de vida, facilitando el diseño de casas y hogares más humanos, más personales, polifuncionales y flexibles


¿QUÉ APORTA LA DOMÓTICA?

La domótica contribuye a mejorar la calidad de vida del usuario:

  • Facilitando el ahorro energético: gestiona inteligentemente la iluminación, climatización, agua caliente sanitaria, el riego, los electrodomésticos, etc., aprovechando mejor los recursos naturales, utilizando las tarifas horarias de menor coste, y reduce de esta manera la factura energética. Además, mediante la monitorización de consumos, se obtiene la información necesaria para modificar los hábitos y aumentar el ahorro y la eficiencia.
  • Fomentando la accesibilidad: facilita el manejo de los elementos del hogar a las personas con discapacidades de la forma que más se ajuste a sus necesidades, además de ofrecer servicios de teleasistencia para aquellos que lo necesiten.
  • Aportando seguridad de personas, animales y bienes: controles de intrusión y alarmas técnicas que permiten detectar incendios, fugas de gas o inundaciones de agua, etc.
  • Convirtiendo la vivienda en un hogar más confortable: gestión de electrodomésticos, climatización, ventilación, iluminación natural y artificial…
  • Garantizando las comunicaciones: recepción de avisos de anomalías e información del funcionamiento de equipos e instalaciones, gestión remota del hogar, etc.
La domótica genera un estado de confort al o a los usuarios ya que puede ahorrar trabajo automatizando tareas que se pueden hacer con un simple control esto puede ser factible para personas con ciertas discapacidades, pero para las personas puede ser contraproducente por que insitaria a la pereza y pues generaría mas problemas de salud. es por eso que hay que tomar la domótica muy enserio.





¿Que es BPM?


Por definición, se dice que el BPM es “un conjunto de herramientas, tecnologías, técnicas, métodos y disciplinas de gestión concebidas para diseñar y ejecutar la automatización de procesos empresariales”.

Es decir, el BPM sirve para automatizar el ciclo de vida de los procesos. Todas las organizaciones realizan sus actividades según flujos de trabajo más o menos establecidos, y ese “más o menos” puede suponer el éxito o el fracaso de la empresa. Mediante las herramientas BPM una organización tendrá la posibilidad de definir en una aplicación informática sus procesos, organizar la información y el trabajo de las personas, controlar su ejecución en tiempo real y mediante una monitorización adecuada (indicadores, alertas, informes, cuadros de mandos) extraer conclusiones para alinearse con el objetivo último de lograr una mayor eficiencia.

Hay multitud de aplicaciones en el mercado que pueden ayudar a las empresas a definir y gestionar, de manera más o menos sencilla, sus procesos y contenidos. Destacan en general por ser herramientas ágiles y flexibles, que facilitan la capacidad de adaptación al cambio, sin que normalmente sea requerido un perfil técnico para implementar dichas modificaciones una vez implantado el sistema. La tendencia hace que se trate generalmente de herramientas web, que permiten comunicarse internamente a los empleados de la organización mediante portales empresariales, y que además ofrecen la posibilidad de abrir las puertas de la propia organización a clientes, proveedores, socios, etc., para que también éstos, si es necesario, intervengan de manera más activa en la ejecución de los procesos.

Es fácil intuir que para llevar a cabo una estrategia BPM se necesita tener cierto nivel de madurez empresarial y organizativa. El hecho de plantearse implantar un BPM, implica la necesidad de analizar qué y cómo se están haciendo las cosas en su empresa y si realmente dispone del control que necesita de sus procesos. Este acto de reflexión previo es realmente necesario, y como comentaremos en próximos post a este Blog, le permitirá abordar un proyecto de implantación de una herramienta BPM con mayor garantía de éxito.






Fuente: http://prodintec.wordpress.com/2010/03/09/%C2%BFque-es-el-bpm/

martes, 18 de septiembre de 2012

Definicion de S.M.A.R.T

S.M.A.R.T es un acrónimo inglés y sirve para marcar principios que nos ayuden a clarificar y estipular adecuadamente nuestros objetivos.

¿Que es S.M.A.R.T ?

Son los principios por los que un objetivo se debe regir:

S – Específicos

M – Mensurables

A – Alcanzables

R – Realistas

T – Plazo ( en un tiempo determinado)

Específicos: Al establecer tus objetivos debes asegurarte de que cada uno de ellos contiene una acción determinada. ¿Por qué? Pues porque un objetivo genérico, Ej.: posicionarse como la primera marca nacional en un determinado producto, debe traducirse en varias acciones específicas que especifiquen como alcanzar ese objetivo. Ej.: mejorar las características x del producto, mejorar comercialización en determinada zona…

Mensurables: ¿Cuanto tiempo tardarías en recorrer la galaxia? Puedes responder…Un objetivo que no puede medirse no sirve ya que no contribuye de una forma cuantificable a alcanzar nuestras metas y, lo que es peor, no podemos confirmar si se ha logrado o no.

Alcanzables: ¿Cuanto tiempo tardarías en recorrer la galaxia? Plantearse objetivos inalcanzables no contribuye a nuestra planificación, más bien contribuye al escepticismo, ya que la función de un objetivo es la de posibilitar una meta, no la de obstruirla.

Realistas: ¿Quiero ser el hombre más rico del mundo en un mes?… Ser irrealista a la hora de plantear un objetivo nos desmotivará e impedirá que continuemos peleando por nuestras metas. Un objetivo debe motivar, debe empujarnos hacia su logro, debe retarnos en los momentos difíciles y debe obligarnos a pelear hasta la extenuación por conseguirlo, plantear un objetivo irreal no lo consigue.

Tiempo: ¿Algún día comenzaré una empresa?…algún día… Trabajar contra plazos es la única forma de romper la inmovilidad de un objetivo eterno. Si un objetivo no tiene plazos marcados entonces es un objetivo abierto y un objetivo abierto es un objetivo eterno.


Corregido 23/09/2012




¿Que es SAP?


En 1972, en Mannheim, Alemania, tres ingenieros tuvieron una idea. Ellos querían producir un software que marcara un tendencia acerca de como debían hacerse las cosas en el mercado para soluciones de negocios integradas y dieron inicio a una pequeña empresa llamada Systemanalyse and Programmentwicklung. Desde entonces, aquella compañía se llama SAP (Sistemas, Aplicaciones y Productos para Procesamiento de Datos).


Desde el comienzo, SAP se dedicó al software para aplicaciones de negocios. Por la colaboración con ejecutivos de negocios e IT y teniendo socios en todo el mundo SAP desarrolló una forma única de comprender los desafíos encontrados en la implementación de soluciones tecnológicas para usuarios de negocios, desarrollando software que puede ayudar las compañías a integrar sus procesos de negocios ayudando a toda la empresa a funcionar más ordenadamente. Los sistemas versátiles y modulares pueden ser rápida y fácilmente adaptados a nuevos procesos de negocios de forma que crezca su capacidad a medida que crece el negocio. 


Esto es una prueba mas de que la tecnología junto con el software son de gran ayuda no solo para los usuarios que están en casa si no también para las empresas para tener una mejor infraestructura 

¿Que es ERP?

Los sistemas ERP están diseñados para incrementar la eficiencia en las operaciones de la compañía que lo utilice, además tiene la capacidad de adaptarse a las necesidades particulares de cada negocio y si se aprovecha al máximo el trabajo de consultoría durante la implantación permite mejorar los procesos actuales de trabajo. Si el cliente desea organizarse mejor estos sistemas son un aliado excelente ya que le permite aumentar la productividad de la compañía en forma considerable.


La Planeación de Recursos Empresariales (Enterprise Resource Planning, ERP) es un sistema compuesto por un conjunto de módulos funcionales estándar y que son susceptibles de ser adaptados a las necesidades de cada empresa.

Es una forma de utilizar la información a través de toda la organización en áreas claves como fabricación, compras, administración de inventario y cadena de suministros, control financiero, administración de recursos humanos, logística y distribución, ventas, marketing y administración de relaciones con clientes.

Con un sistema integrado las barreras de información entre los diferentes sistemas y departamentos desaparecen. Toda la empresa, sus sistemas y procesos, pueden reunirse para beneficiar a toda la organización. Muchas son las empresas que están iniciando su primer contacto con los modernos sistemas de información ante la necesidad de mantenerse competitivas.

Los sistemas ERP están diseñados para incrementar la eficiencia en las operaciones de la compañía que lo utilice, además tiene la capacidad de adaptarse a las necesidades particulares de cada negocio y si se aprovecha al máximo el trabajo de consultoría durante la implantación permite mejorar los procesos actuales de trabajo. Si el cliente desea organizarse mejor estos sistemas son un aliado excelente ya que le permite aumentar la productividad de la compañía en forma considerable.
Al igual que SAP, EPR sirve para llevar un mejor control de una empresa y asi tenga una eficiencia conforme a sus necesidades, todo esto se genera a la gran cantidad de datos que manejan las empresas.











jueves, 13 de septiembre de 2012

Restricciones en interfases

Restricciones
Un Sistema de Tiempo Real suele tener un conjunto de restricciones temporales marcadas por la dinámica del sistema físico externo. Estas restricciones se asocian a las especificaciones funcionales cuyo cumplimiento es esencial para otorgar validez a la ejecución del sistema. Las restricciones temporalespueden ser de tres tipos diferentes:


1. Planificación de los instantes de activación de las actividades del sistema.


Es típico encontrarse con requisitos del tipo de que una actividad debe iniciarse a una hora dada (por ejemplo, el lanzamiento automático de una señal de aviso a las 9:45)o que se ejecute con una determinada periodicidad (por ejemplo, el muestreo de una señal de entrada cada 10segundos). Para ello se requiere que las actividades del sistema sean controladas por un reloj con la precisión adecuada.


2. Plazos de tiempo (máximos o mínimos) en los que debe completarse una actividad


Como ejemplo de este tipo, podemos indicar el tiempo máximo o mínimo de procesamiento de una actividad (por ejemplo, el tiempo de consulta a una base de datos debe ser inferior a por segundos) para que los datos consultados tengan validez. Aunque estos plazos puedan derivarse de un requisito de usuario, durante el desarrollo pueden aparecer otros muchos asociados a las actividades del sistema.


3. Intervalos de tiempo entre eventos del sistema.


Como ejemplo, nos podemos encontrar con restricciones del tipo de que el tiempo máximo o mínimo entre dos eventos determinados por ejemplo, dos disparos consecutivos de un sistema de armas no debe ser superior a ciertos segundos.

Las restricciones son limites puesto por el desarrollador y por el cliente, sin estos limites puede haber fallas en el software o en algún sistema y se obtendrá un software de mala calidad.



Interfaces

Interfaz es un término que procede del vocablo inglés interface (“superficie de contacto”). En informática, esta noción se utiliza para nombrar a la conexión física y funcional entre dos sistemas o dispositivos.

La interfaz, por lo tanto, es una conexión entre dos máquinas de cualquier tipo, a las cuales les brinda un soporte para la comunicación entre distintos niveles. Es posible entender la interfaz como un espacio (el lugar donde se desarrolla la interacción y el intercambio), instrumento (a modo de extensión del cuerpo humano, como el mouse que permite interactuar con una computadora) o superficie (el objeto que aporta información a través de su textura, forma o color).

Se conoce como interfaz de usuario al medio que permite a una persona comunicarse con una máquina. La interfaz, en este caso, está compuesta por los puntos de contacto entre un usuario y el equipo. Además del mencionado ejemplo del mouse, otra interfaz de este tipo es la pantalla delmonitor o el teclado.

En la interacción con la computadora, por lo tanto, puede distinguirse entre la interfaz dehardware (mouse, pantalla, teclado), la interfaz de software (Windows, Linux) y la interfaz de hardware-software (el conjunto que permite que el hombre entienda el código binario y que la máquina pueda leer la instrucción humana).







Definición de Performance

El término performance no forma parte del diccionario de la Real Academia Española (RAE). La palabra, de todas formas, es muy habitual para nombrar a cierta muestra o representación escénica que suele basarse en la provocación.

Una performance, por lo tanto, intenta sorprender al público ya sea por su temática o por su estética. Este tipo de acciones están vinculadas a la improvisación, el arte conceptual y los happenings (manifestaciones artísticas que contemplan laparticipación del público).

Una de las características más importantes de una performance es que se desarrolla en un lugar determinado durante un tiempo concreto. La performance se lleva a cabo en vivo y existe mientras el artista realiza su propuesta, a diferencia de una exposición tradicional.

En ocasiones, lo más importante de la performance no es su contenido, sino el lugar donde tiene lugar. Hay artistas que desarrollan performances en la vía pública o que improvisan manifestaciones artísticas en lugares inéditos para el arte, como un supermercado o un local de video juegos.

Hay quienes consideran que los flashmob son performances, aunque no tienen intención artística. Se trata de grupos que ponen en marcha una acción organizada en un lugar público, realizando algo inusual (como una guerra de almohadas o un reparto de abrazos gratis). En ocasiones, los flashmob tienen un fin político.

La noción de performance también suele vincularse al rendimiento: “El atleta tuvo una gran performance en la última competencia”.

La definición de performance en la ingenieria de software se basa mas al rendimiento que uno se empeñe al realizar el proyecto.

Fuente: http://definicion.de/performance/

UML y RUP


¿Qué es UML?


(Unified Modeling Language - Lenguaje Unificado de Modelado). UML es un popular lenguaje de modelado de sistemas de software. Se trata de un lenguaje gráfico para construir, documentar, visualizar y especificar un sistema de software. Entre otras palabras, UML se utiliza para definir un sistema de software.

Posee la riqueza suficiente como para crear un modelo del sistema, pudiendo modelar los procesos de negocios, funciones, esquemas de bases de datos, expresiones de lenguajes de programación, etc. Para ello utiliza varios tipos diferentes de diagramas, por ejemplo, en UML 2.0 hay 13 tipos de diagramas. Estos diagramas se pueden diferenciar en tres categorías:


  • Diagramas de estructura:

Diagrama de clases
Diagrama de componentes
Diagrama de objetos
Diagrama de estructura compuesta (UML 2.0)
Diagrama de despliegue
Diagrama de paquetes

  • Diagramas de comportamiento:
Diagrama de actividades
Diagrama de casos de uso
Diagrama de estados

  • Diagramas de interacción:
Diagrama de secuencia
Diagrama de comunicación
Diagrama de tiempos (UML 2.0)
Diagrama de vista de interacción (UML 2.0)

Algunos programas gratuitos para modelar en UML son:

ArgoUML, Dia, gModeler, MonoUML, StarUML, TCM, Umbrello Herramienta, UMLet.


UML es una herramienta importante para el desarrollo de modelos de programacion se pueden crear varios diagramas dependiendo el tipo de modelo en el que se haya basado y asi poder tener una guía gráfica. Se podría decir que es como cuando un arquitecto crea sus planos para una construcción, asi para desarrollar un software necesita un un plano para saber la estructura de software que esta desarrollando



METODOLOGÍA RUP

El Proceso Unificado Racional, Rational Unified Process en inglés, y sus siglas RUP, es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino que trata de un conjunto de metodologías adaptables al contexto y necesidades de cada organización, donde el software es organizado como una colección de unidades atómicas llamados objetos, constituidos por datos y funciones, que interactúan entre sí.

RUP es un proceso para el desarrollo de un proyecto de un software que define claramente quien, cómo, cuándo y qué debe hacerse en el proyecto

RUP como proceso de desarrollo

• RUP es explícito en la definición de software y su trazabilidad, es decir, contempla en relación causal de los programas creados desde los requerimientos hasta la implementación y pruebas.

• RUP identifica claramente a los profesionales (actores) involucrados en el desarrollo del software y sus responsabilidades en cada una de las actividades.

Fases de desarrollo del software:
  • Inicio
  • Elaboración
  • Construcción
  • Transición
RUP para el desarrollo de software moderno que junto con UML trata de mejorar el desarrollo de software no solo con una serie de pasos establecidos si no combinando  varios modelos, esto dependiendo de las necesidades de la empresa que lo solicite.



martes, 11 de septiembre de 2012

Software libre para generar UML y desarrollo RUP


Existen una serie de software para el modelado UML que son Open Source y otros Freeware, por ejemplo esta lista contiene todos los que he encontrado por ahy en la Web:
ArgoUML
logo_argo_uml
Url : http://argouml.tigris.org/
SO : Cualquiera que soporte Java
Este software resulta interesante por la gran cantidad de subproyectos que tiene, como por ejemplo:
http://argouml-csharp.tigris.org/
Bouml
logo_boul
Url : http://bouml.free.fr/
SO : Unix/Linux/Solaris, MacOS X(Power PC e Intel) y Windows.
Este software es libre y permite generar código C++, Java, Idl, Php y Python.
Día
logo_dia
Url : http://www.gnome.org/projects/dia/
SO : Multiplataforma
Basado en Visio de Microsoft esta hecho con la librería gtk+.
Fujaba
logo_fujaba
Url : http://www.fujaba.de/
SO : Multi – Plataforma
El objetivo de este proyecto es proporcionar una herramienta extensible desde el punto de vista del lenguaje tanto como por plug ins.
gModeler
logo_gmodeler
Url : http://www.gskinner.com/gmodeler/index.html
SO : Multi-Plataforma
Esta herramienta es Web.
Jude
Url : http://jude.change-vision.com/jude-web/index.html
SO : Windows2000 SP1 o superior, WindowsXP Professional / WindowsXP Home, Windows Vista
Este software es comercial pero tiene una versión gratis para la comunidad que no tiene todas las funcionalidades de la versión comercial.


A los altos costos de los desarrolladores UML se fueron creando versiones gratuitas con  las mismas herramientas y entornos, estos son solo algunos ejemplos pero hay muchas que pueden cumplir con nuestras expectativas. Estas herramientas generan diagramas UML  y estos sirven para crear los modelos de desarrollo de software así poder tener una base a lo que se va a desarrollar,

Fuentes: http://www.webadicto.net/mba/post/2010/06/28/GRATIS-Descarga-software-para-crear-diagramas-UML.aspx
http://www.marcosdonoso.cl/?p=156





METODOLOGÍA RUP

El Proceso Unificado Racional, Rational Unified Process en inglés, y sus siglas RUP, es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino que trata de un conjunto de metodologías adaptables al contexto y necesidades de cada organización, donde el software es organizado como una colección de unidades atómicas llamados objetos, constituidos por datos y funciones, que interactúan entre sí.

RUP es un proceso para el desarrollo de un proyecto de un software que define claramente quien, cómo, cuándo y qué debe hacerse en el proyecto

RUP como proceso de desarrollo


• RUP es explícito en la definición de software y su trazabilidad, es decir, contempla en relación causal de los programas creados desde los requerimientos hasta la implementación y pruebas.

• RUP identifica claramente a los profesionales (actores) involucrados en el desarrollo del software y sus responsabilidades en cada una de las actividades.

Fases de desarrollo del software



· Inicio

· Elaboración

· Construcción

· Transición

Modelo V y Modelo en flor, ventajas y desventajas

MODELO V
VENTAJAS:
  • El modelo en V hace más explicita la tarea parte de la iteración de las actividades del proceso.
  • Las pruebas de cada fase ayudaran a corregir posibles errores sin tener que esperar a que sean rectificados en la etapa final del proceso.
  • Con las pruebas unitarias y de integración se consigue obtener exactitud en los programas.

DESVENTAJAS:
  • Al encontrarse errores luego de realizar las pruebas se pierde tiempo y dinero, ya que cada prueba se realiza luego de haber terminado la implementación.
Este modelo esta relacionado con el modelo de cascada, pero el modelo V es mas efectivo ya que puede con las pruebas que se van haciendo durante cada fase hacen menos los errores por que estos se pueden corregir al momento, lo malo de estas pruebas es que generan muchos costos y tambien se pierde tiempo para la entrega al usuario final.


MODELO EN FLOR

El propósito del desarrollo de software es el de desarrollar un producto de software.

Los equipos no deben de estar preocupados por el proceso de desarrollo mismo. 


Deben de desarrollarse todas las etapas un poco al mismo tiempo hasta que el producto final es alcanzado.


Ventajas:
Útiles cuando los requerimientos son cambiables. 
Cuando el usuario no se quiere comprometer con los requerimientos.   
Cuando no se conoce bien la aplicación. 
Cuando se quiere probar una arquitectura o tecnología.
Cuando se requiera rapidez en el desarrollo.

Desventajas
No se conoce cuando tengamos un producto aceptable. 
No se sabe cuántas iteraciones serán necesarias.
Dan una falsa ilusión al usuario sobre la velocidad del desarrollo. 
Se puede volver al producto aun y cando no esté con los estándares.

Vemos que en este modelo es parecido al del modelo V, se enfoca a los requerimientos basado en un diseño rápido, y cuando este terminado el diseño probar y mejorar las fallas en caso de que las haya 

Fuente: http://www.buenastareas.com/impresion/Modelo-En-Flor/3655797.html


martes, 4 de septiembre de 2012

Reticula




Aquí se ve el avance reticular que llevo en la carrera de ITICS lo que en morado es lo que estoy cursando el cuarto semestre y pues cada vez mas se ven mas materias para la programar y complementos electrónicos. y cada vez vamos viendo mas sobre software y también veremos hardware y no están formando para ser unos buenos ingenieros. 




Hitos es una herramienta que administra en forma integrada y centralizada los Requerimientos que llegan a las áreas de soporte de las empresas y facilita la Gestión de Proyectos Corporativos, ayudando a las organizaciones a obtener productos competitivos y de calidad, según lo planeado.

*Infraestructura de procesos:A través de un potente workflow, Hitos permite crear y administrar los procesos definidos por el usuario, brindando una infraestructura integral en donde las organizaciones logran compartir la información, comunicarse y colaborar entre las distintas áreas.

*Soportes para modelos de calidad:Hitos ayuda a ordenar y sistematizar el flujo de los Requerimientos de Software y de los Requerimientos de Cambio que los usuarios realizan a las áreas de Sistemas, asegurando el cumplimiento de modelos como CMMI, para aquellas empresas que desarrollan software.

*Hitos gestión de proyectos:Es una herramienta flexible que permite a la organización lograr una gestión proactiva de los proyectos independientemente de sus dimensiones, colaborando en el cumplimiento de la planificación en tiempo y forma de todas las etapas del ciclo de vida de un proyecto. Tiene como objetivo principal la planificación, asignación de tareas y seguimiento de los recursos humanos y materiales, que intervienen en el desarrollo de un proyecto, a fin de supervisar su progreso y poder corregir desviaciones. Brinda la oportunidad de conocer, en todo momento, los problemas que se producen y resolverlos o paliarlos de manera inmediata, informando sobre el estado de los proyectos a quienes participan en ellos de una manera ágil y práctica.

*Hitos gestion de requerimiento:Hitos Gestión de Requerimientos fue concebido con el propósito de ordenar y sistematizar el flujo de los requerimientos internos/externos que los usuarios realizan en distintos circuitos (Proyectos de envergadura, Help Desk, Defectos, Errores, Soporte, Tareas Internas, etc.), administrando la forma en que sus necesidades llegan a las áreas de soporte y producción. Permite hacer un seguimiento de los requerimientos y de su evolución a través de los distintos estados que pueden asumir, gestionando requisitos para una amplia gama de proyectos, ofreciendo una verdadera ventaja competitiva a todo tipo de organizaciones.

Información obtenida de:

Cibernetica y Cibernauta

Cibernética

La palabra cibernética en griego se refiere a mecanismos precisos de gobierno y control, con Platón y Ampere es usada siempre en su sentido político - social, pero es utilizada por primera vez en referencia a la ingeniería humana por Norbert Wiener.

La cibernética es una disciplina íntimamente vinculada con la teoría general de sistemas, al grado en que muchos la consideran inseparable de esta, y se ocupa del estudio de: el mando, el control, las regulaciones y el gobierno de los sistemas. El propósito de la cibernética es desarrollar un lenguaje y técnicas que nos permitan atacar los problemas de control y comunicación en general. Lo que estabiliza y coordina el funcionamiento de los sistemas complejos como los seres vivos o las sociedades y les permite hacer frente a las variaciones del ambiente y presentar un comportamiento más o menos complejo es el control, que le permite al sistema seleccionar los ingresos (inputs) para obtener ciertos egresos (outputs) predefinidos. La regulación esta constituida por los mecanismos que permiten al sistema mantener su equilibrio dinámico y alcanzar o mantener un estado.

Un concepto muy importante o casi fundamental en cibernética es el de la retroalimentación. La retroalimentación parte del principio de que todos los elementos de una totalidad de un sistema deben comunicarse entre sí para poder desarrollar interrelaciones coherentes. Sin comunicación no hay orden y sin orden no hay totalidad, lo que rige tanto para los sistemas físicos como para los biológicos y los sociológicos.

La retroalimentación puede ser positiva, negativa o compensada. La retroalimentación es negativa cuando su función consiste en contener o regular el cambio, es positiva si amplifica o multiplica el cambio en una dirección determinada y se dice que es compensada cuando un regulador ejerce alternadamente retroalimentaciones positivas y negativas, según las necesidades del mantenimiento de la estabilidad del sistema regulado. (ejemplo Refrigerador, Temperatura Humana).



La cibernética es el estudio del control y comunicación en los sistemas complejos: organismos vivos, máquinas y organizaciones. Especial atención se presta a la retroalimentación y sus conceptos derivados.

También esto puede ser una desventaja para las personas ya que con el desarrollo de nueva maquinaria, puede generar recorte de personal esto genera el desempleo y la gente que no este capacitada para el mantenimiento de estas maquinas no tendrá empleo.
alguna ventaja en las empresas es que con la maquinaria se pude ser mas preciso el trabajo 
ventaja en el ser humano es en la implementación de implantes como brazos, oídos, o hasta órganos como es el caso de México que ya se implanto un corazón artificial.



La cibernética ha desempeñado un papel decisivo en el surgimiento de la actual revolución tecnológica.


Fuente: http://www.aprendizaje.com.mx/TeoriaSistemas/Cibernetica/cibernetica.html

Cibernauta.

En principio es un término aplicable a cualquier persona que utiliza un navegador web y visita sitios web; pero suele utilizarse especialmente para aquellas personas que son expertos navegantes de la WWW, incluso sin saber demasiado sobre computación.

Hoy en día cualquiera pude ser cibernauta pero la ventaja de esto es que se pude compartir demasiada información para conocimiento general ejemplos de estos son los blogs, Google y cualquier pagina web que genere información.. Tambien se puede estar en contacto con personas de diferentes países con las redes sociales como facebook y twitter, todo esto a la creación de Internet y la herramienta para utilizarla que son los navegadores WEB.







lunes, 3 de septiembre de 2012

"No silver bullets"

Dice que la complejidad del diseño de software es fundamental y que no pueden "existir balas de plata" por que seria facil desarrollar software y no se podrá desarrollar software vanguardista, ya que siempre de puede tener un programa funcional pero nunca cumplirá las expectativas del usuario, ya que como se sabe, el hardware cambia constantemente y cambia requisitos para el uso del software.

También habla de las nuevas técnicas de desarrollo de software que no son eficientes al máximo y que se prefiere programar de una manera fácil, lo que ocasiona, falta de productividad, fallas del producto y retrasos en la entrega al cliente, lo que hace quedar mal y que el desarrollo de software vaya decreciendo poco a poco.

Comenta que para tener desarrollo de software eficiente y vanguardista  es preferible ocupar lenguaje de alto nivel ya que la complejidad de estos hace ver las fallas futuras y resolverlas al momento, se menciona el concepto de multiprogramador para tener una eficiencia mas segura, ya que como dicen, "2 cabezas piensan mejor que una", esto hace que se compartan ideas y se programe mas rápido pero eficiente.

para que puedan leer el articulo completo le dejo el link para que lo descarguen traducido al español y en ingles: