jueves, 21 de mayo de 2009
Gerencia a Distancia
jueves, 12 de marzo de 2009
Ing del Software (Introduccion)
1. Introduccion: Este término fue introducido a finales de los 60 a raíz de la crisis del software.
Esta crisis fue el resultado de la introducción de la tercera generación del hardware.
El hardware dejo de ser un impedimento para el desarrollo de la informática; redujo los costos y mejoro la calidad y eficiencia en el software producido
La crisis se caracterizo por los siguientes problemas:
- Imprecisión en la planificación del proyecto y estimación de los costos.
- Baja calidad del software.
- Dificultad de mantenimiento de programas con un diseño poco estructurado, etc.
Por otra parte se exige que el software sea eficaz y barato tanto en el desarrollo como en la compra.
Tambien se requiere una serie de características como fiabilidad, facilidad de mantenimiento y de uso, eficiencia, etc.
2. Objetivos de la ingeniería de software
En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software.
- mejorar la calidad de los productos de software
- aumentar la productividad y trabajo de los ingenieros del software.
- Facilitar el control del proceso de desarrollo de software.
- Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.
- Definir una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.
Objetivos de los proyectos de sistemas
Para que los objetivos se cumplan las empresas emprenden proyectos por las siguientes razones: “Las cinco C ”
Capacidad
Las actividades de la organización están influenciadas por la capacidad de ésta para procesar transacciones con rapidez y eficiencia.
Los sistemas de información mejoran esta capacidad en tres formas.
* Aumentan la velocidad de procesamiento:
Los sistemas basados en computadora pueden ser de ayuda para eliminar la necesidad de cálculos tediosos y comparaciones repetitivas.
Un sistema automatizado puede ser de gran utilidad si lo que se necesita es un procesamiento acelerado.
*Aumento en el volumen:
La incapacidad para mantener el ritmo de procesamiento no significa el abandono de los procedimientos existentes. Quizá éstos resulten inadecuados para satisfacer las demandas actuales. En estas situaciones el analista de sistemas considera el impacto que tiene la introducción de procesamiento computarizado, si el sistema existente es manual. Es poco probable que únicamente el aumento de la velocidad sea la respuesta. El tiempo de procesamiento por transacción aumenta si se considera la cantidad de actividades comerciales de la empresa junto con su patrón de crecimiento.
* Recuperación más rápida de la información:
Las organizaciones almacenan grandes cantidades de datos, por eso, debe tenerse en cuenta donde almacenarlos y como recuperarlos cuando se los necesita.
Cuando un sistema se desarrolla en forma apropiada, se puede recuperar en forma rápida la información.
Costo
* Vigilancia de los costos:
Para determinar si la compañía evoluciona en la forma esperada, de acuerdo con lo presupuestado, se debe llevar a cabo el seguimiento de los costos de mano de obra, bienes y gastos generales.
La creciente competitividad del mercado crea la necesidad de mejores métodos para seguir los costos y relacionarlos con la productividad individual y organizacional.
* Reducción de costos:
Los diseños de sistemas ayudan a disminuir los costos, ya que toman ventaja de las capacidades de cálculo automático y de recuperación de datos que están incluidos en procedimientos de programas en computadora. Muchas tareas son realizadas por programas de cómputo, lo cual deja un número muy reducido de éstas para su ejecución manual, disminuyendo al personal.
Control
*Mayor seguridad de información:
Algunas veces el hecho de que los datos puedan ser guardados en una forma adecuada para su lectura por medio de una máquina, es una seguridad difícil de alcanzar en un medio ambiente donde no existen computadoras.
Para aumentar la seguridad, generalmente se desarrollan sistemas de información automatizados. El acceso a la información puede estar controlado por un complejo sistemas de contraseñas, limitado a ciertas áreas o personal, si está bien protegido, es difícil de acceder.
*Menor margen de error: (mejora de la exactitud y la consistencia)
Esto se puede lograr por medio del uso de procedimientos de control por lotes, tratando de que siempre se siga el mismo procedimiento. Cada paso se lleva a cabo de la misma manera, consistencia y con exactitud: por otra parte se efectúan todos los pasos para cada lote de transacciones. A diferencia del ser humano, el sistema no se distrae con llamadas telefónicas, ni olvidos e interrupciones que sufre el ser humano. Si no se omiten etapas, es probable que no se produzcan errores.
Comunicación
La falta de comunicación es una fuente común de dificultades que afectan tanto a cliente como a empleados. Sin embargo, los sistemas de información bien desarrollados amplían la comunicación y facilitan la integración de funciones individuales.
* Interconexión: ( aumento en la comunicación)
Muchas empresas aumentan sus vías de comunicación por medio del desarrollo de redes para este fin, dichas vías abarcan todo el país y les permiten acelerar el flujo de información dentro de sus oficinas y otras instalaciones que no se encuentran en la misma localidad.
Una de las características más importantes de los sistemas de información para oficinas es la transmisión electrónica de información, como por ejemplo, los mensajes y los documentos.
* Integración de áreas en las empresas:
Con frecuencia las actividades de las empresas abarcan varias áreas de la organización, la información que surge en un área se necesita en otra área, por ejemplo.
Los sistemas de información ayudan a comunicar los detalles del diseño a los diferentes grupos, mantienen las especificaciones esenciales en un sitio de fácil acceso y calculan factores tales como el estrés y el nivel de costos a partir de detalles proporcionados por otros grupos.
3. Estrategias para su desarrollo
Los sistemas de información basados en computadoras sirven para diversas finalidades que van desde el procesamiento de las transacciones de una empresa hasta proveer de la información necesaria para decidir sobre asuntos que se presentan con frecuencia.
En algunos casos los factores que deben considerarse en un proyecto de sistema de información, como el aspecto más apropiado de la computadora o la tecnología de comunicaciones que se va a utilizar, el impacto del nuevo sistema sobre los empleados de la empresa y las características específicas que el sistema debe tener se pueden determinar de manera secuencial.
4. Mediciones y estimaciones
El software al ser intangible, no tener peso, ni volumen, ni superficie, etc. se mide a través de diversos aspectos clave en el desarrollo. La medición determina cuales son los aspectos y proporcionan métodos para medirlos.
La medición y estimación atacan los tres problemas claves de la ingeniería del software:
1- Estimar costos y recursos en un proyecto software
2- Garantizar la calidad del producto final
3- Mejorar la productividad del ingeniero de software durante el desarrollo.
Teniendo en cuenta estos objetivos, las métricas se centran en cuatro aspectos:
Para estimar los recursos es necesario tener en cuenta una serie de factores de riesgo que influyen sustancialmente en la precisión de las estimaciones de los recursos humanos necesarios para la realización del proyecto. Los mas importantes son:
*Complejidad de la tarea.
*Modificaciones permitidas a lo largo del desarrollo
*Experiencia previa de los desarrolladores
*Duración fijada del proyecto.
*Estructuración del problema y de las tareas.
*Disponibilidad de datos e información suministrada por el usuario.
*Disponibilidad y facilidad de comunicación con el usuario.
Además de las fases estándar del desarrollo, hay que tener en cuenta la coordinación y seguimiento del proyecto que suponen una importante carga de trabajo y que son olvidadas durante la planificación o no se le dedica mucho.
El costo global se compone de las partidas de viajes, hardware (nuevo o actualización), software (en caso de comprar algún paquete para el desarrollo), gastos comunes, y personal que es el mas influyente, ya que el costo de un proyecto es directamente proporcional a los recursos humanos.
El proceso engloba todas las actividades y fases que se llevan a cabo durante la realización del proyecto. Se persigue determinar si en cada fase los resultados producidos se corresponden con los esperados y en establecer un control sobre los recursos estimados para cada una de las fases.
El producto incluye cualquier documento o software desarrollado que se genere durante el proceso completo. En las medidas de productos software existen medidas directas (costo del proyecto, esfuerzo empleado, líneas de código implementadas, etc.) y medidas indirectas
( funcionalidad, fiabilidad, eficiencia, facilidad de mantenimiento, etc.).
Herramientas para el desarrollo de sistemas
Las herramientas son cualquier dispositivo que, empleándose adecuadamente, mejora el desempeño del desarrollo de sistemas de información.
Se agrupan en las tres siguientes herramientas automatizadas:
Herramientas de tipo Front-end
Automatizan las primeras actividades del proceso de desarrollo de sistemas.
Esta herramienta proporciona soporte para el desarrollo de modelos gráficos de sistemas y procesos
Los diagramas de flujo son representativos de este tipo de herramientas.
Herramientas para análisis
Éstas herramientas ayudan a los especialistas en sistemas a documentar un sistema existente, ya sea manual o automatizado. También sirve para determinar los requerimientos de una nueva aplicación. Incluye:
- Herramientas para recolección de datos: capturan detalles que describen sistemas y procedimientos en uso. Documentan procesos y actividades de decisión, se utilizan para apoyar la tarea de identificar requerimientos.
- Herramientas para diagramación: crean representaciones gráficas de sistemas y actividades. Apoyan el dibujo y revisión de diagramas de flujos de datos e iconos asociados con el análisis estructurado. Incluyen programas para representación en diagramas de flujo.
- Herramientas para el diccionario: registran y mantienen descripciones de los elementos del sistema, como grupo de datos, procesos, alimentos de datos, etc. Frecuentemente proporcionan la capacidad de examinar las descripciones del sistema, para decidir si son incompletas o inconsistentes.
Herramientas para diseño
Apoyan el proceso de formular las características que el sistema debe tener para satisfacer los requerimientos deseados durante las actividades de análisis. Incluye:
- Herramienta de especificación: apoyan el proceso de formular las características, como por ejemplo deben tener una aplicación como entradas, salidas, procesamientos específicos de control.
- Herramienta para presentación: se utilizan para describir la posición de datos, mensajes, y encabezados sobre las pantallas de las terminales, informes y otros medios de entradas y salidas.
Los analistas utilizan las herramientas para el diseño de sistemas desde el inicio de la era de las computadoras. Ahora a las herramientas se le están dando un nuevo significado en el diseño de software.
Herramientas de tipo back-end
Su finalidad es ayudar al analista a formular la lógica del programa, los algoritmos de procesamiento y la descripción física de datos.
Tambien ayudan a la intersección con los dispositivos (para entrada y salida). Estas actividades convierten los diseños lógicos del software en un código de programación; este es que da existencia a la aplicación.
Herramientas para el desarrollo
Ayudan al analista a trasladar los diseños en aplicaciones funcionales. Incluye:
- Herramientas para ingeniería Software: apoyan el proceso de formular diseños de software, incluyendo procesamientos y controles.
- Generadores de códigos: producen el código fuente y las aplicaciones a partir de especificaciones funcionales bien articuladas
- Herramientas para pruebas: apoyan la fase evaluación de un sistema. Incluyen facilidades para examinar la correcta operación del sistema.
Herramientas integrales
Proporcionan un ambiente que automatiza tareas claves a lo largo del proceso de desarrollo. Estas herramientas facilitan el diseño, administración y mantenimiento del código. Brinda un ambiente eficiente para crear, almacenar, manipular y documentar sistemas.
5. Reingeniería e ingeniería inversa
Los conceptos de reingeniería e ingeniería inversa están ligados al desarrollo de software a gran escala, donde una mejora en proceso de este desarrollo supone un aumento en la competitividad de la empresa.
Aunque hay que tener en cuenta que esta mejora es, en general a largo plazo (normalmente de uno a dos años) ambas actividades, están orientadas a automatizar el mantenimiento de aplicaciones. Esta es una tarea que consume gran cantidad de recursos, por lo que cualquier reducción en el tiempo y recursos empleados en ella supone una importante mejora en la productividad del proceso. Este es el principal objetivo de la reingeniería. Se trata, de analizar el código o el diseño actual y modificarlo con la ayuda de herramientas automáticas para traducirlos a códigos mas estructurados, y más eficientes.
Dentro de la reingeniería, el proceso de pasar del código a una descripción de mas alto nivel es lo que se denomina:
Ingeniería inversa.
La reingeniería e ingeniería inversa prolongan la vida del software.
Dado que es una labor estratégica, es conveniente conocer cuando conviene realizar la tarea de reingeniería para una aplicación y cuándo es más rentable sustituirla e implementar una nueva. Las aplicaciones para el primer paso, son aquellas en la que se produce las siguientes situaciones:
· Fallos frecuentes, que son difíciles de localizar
· Son poco eficientes, pero realizan la función esperada
· Dificultades en la integración con otros sistemas
· Calidad pobre del software final
· Resistencia a introducir cambios
· Pocas personas capacitadas para realizar modificaciones
· Dificultades para realizar pruebas
· El mantenimiento consume muchos recursos
· Es necesario incluir nuevos requisitos, pero los básicos se mantienen.
Desarrollo de software con y para reuso
El desarrollo de software con reúso consiste en desarrollar una aplicación usando software ya existente. Cualquier profesional lo utiliza
El desarrollo de software para reuso consiste en la construcción de un sistema con la intención de reutilizar partes de él en futuros desarrollos. Con software a gran escala, un buen profesional con experiencia puede desarrollarlo.
Estudios realizados determinan que la práctica de reutilización del software en un proyecto aumenta la productividad durante el desarrollo de dicho proyecto.
Sin embargo, la reutilización del software no cubre solo el reuso de códigos, abarca todo un amplio de posibilidades en los diferentes niveles, metodología, ciclos de vida, planes del proyecto, especificaciones de requisitos, diseños, arquitectura software, planes de validación, juegos de prueba y documentación.
miércoles, 4 de febrero de 2009
Redes Sociales como Mashup
Hoy en día gracias a la capacidad de interconexión que tenemos no necesariamente tenemos que hablar presencialmente con otra persona, vasta que se encuentren en un sitio web online y Wuala, comunicación a distancia. Pese a que el usuario de hoy en día es bastante ambicioso sobre lo que quiere y exigente sobre como lo quiere, han nacido las redes sociales como una alternativa a los medios de comunicación estándares ya implantados como lo son el correo electrónico, comunicación instantánea (msn) y foros.
Siendo las redes sociales una evolución directa de sus antecesores y tomando de ellos lo mejor se han creado con un solo propósito. Concentrar a un grupo de personas en un mismo sitio sin necesidad presencial, contando con ello de varias herramientas disponibles para satisfacer la demanda de sus usuarios.
Entrando en temas mas profundo hablemos de; conocen Facebook, MySpace, FotoBlog y todos sus derivados, pero partiendo del hecho de que son redes sociales pertenecientes a otras personas, si se les viene en gana quitarle cierta funcionalidad o añadirle otra mas,sí se les resulta completamente desastroso porque simplemente no podrán. Sabiendo esto y atendiendo la demanda para todos que le parece la idea de crear su propia red social? Su propio Facebook, MySpqce y/o Fotoblog etc... Un grupo de personas se ha tomado la idea en serio y han decidido crear sus propias plataformas donde los usuarios se registren y creen sus propias redes sociales con casi todas las funcionalidades de los originales. Añade tus fotos, videos, comparte Feeds, envía correo, chatea con los online, crea grupos, prácticamente todo...
Para conocer mas acerca de esto pueden visitar el siguiente enlace donde se nombran varias de las plataformas para crear su propia red social.
Y obviamente no podía dejar de indagar en la web y encontrar mas redes sociales que se pueden construir hablando del mismo tema que nos concierne a todos...
También se podrá observar al finalizar el articulo enlaces donde se hace referencia a la conectividad 2.0 y uno de los portadores de ello, Meebo.
Finalizando; estas herramientas forman parte del ambiente Web 2.0 ya que, haciendo referencia a los "Súper Sitios" o Mashup que alojan muchas herramientas bajo un mismo ambiente estaríamos hablando de realizar comunidades completas ya sean de aprendizaje o de propósitos lucrativos explotando el potencial de la web, enlazando con las mencionadas redes sociales todos las posibles herramientas, cms, els, foros, chats, blogs, wikis, videos, imágenes, wordpress, en resumen toda la infinidad de formas posibles de información.
Saludos para ustedes un placer compartir esta información.
Atentamente, Ujap 2.0
sábado, 31 de enero de 2009
Esquema de la Web 2.0
Pese a su diseño simplista se puede observar el gran avance que se ha logrado en los ultimos tiempos de interconectividad entre los usuarios. A pesar de que la web 2.0 se representa facil basta pensar en cualquier modelo de comunicacion online para que este modelo lo acepte y se adapte a si mismo dando la respuesta de conexion.Para los simples usuarios presentes esta informacion solo sera un diagrama mas de lo que tantos hablan pero solo pocos de ellos se daran cuenta de lo que en realidad esto oculta dentro de si. Comunicacion, Aprendizaje, Negocio, Relacion, Trabajo, Desempeño y porque no Amor tambien.
Fue un placer para ustedes escribir esto atentamente,
UJAP 2.0
Bienvenida Comunidad UJAP 2.0
Un adelanto de lo bueno que se avecina en UJAP 2.0.
¿Sabe usted porque todas las grandes compañías del mercado internacional electrónico se están inclinando a regalar parte de su tecnología? "Úsenla y es gratis". Un claro ejemplo es que todo el mundo hoy en día tienes Blogs, Wikis, Paginas Web y muchas cosas mas. ¿Porque se inclinan por el interés del conocimiento colectivo? Porque compañías como Google liberan su código para su uso sin limitaciones. Microsoft la aclamada empresa acusada de monopolio regala instalaciones gratis sus Services pack, Internet Explorer entre otras cosas mas. Oracle la afamada empresa líder en soporte de Manejadores de Base de Datos llega a convenios de aprendizaje con las universidades regalándole gratis por años servicio técnico, instalación, actualización y soporte técnico de sus productos.
Dada la creciente demanda de hoy en día y el aflore de las comunidades Web online en los últimos tiempos personas se han dado cuenta del grandísimo potencial de comercio y aprendizaje que están ofrecen sin saber de la magnitud en la que se encuentra. La razón de que simples personas en sus computadores les pongan a temblar los pensamientos a los grandes de la industria tiene nombre. “WEB 2.0”. Porque se esta cambiando de modelo de pensar e interactuar. Porque los modelos monolíticos están pasando de moda, porque después de todo su tiempo se han dado cuenta que ellos no son el verdadero centro de su infraestructura. Partiendo del hecho de que la biblioteca de la Real Academia Española tardo cerca de 300 años en construirse y que una simple comunidad nueva y emergente en la Web llamada Wiki la supero en apenas 2 años hace poner a pensar a cualquiera. Porque desde el primer sistema operativo propietario de Microsoft hasta hoy en día han pasado décadas y comunidades online conocidas como desarrolladores GNU/Linux y sus distros hicieron derivados de un sistema operativo inicial superando con crece tanto en tiempo de desarrollo como en calidad a los que estuvieron ahí desde el principio en ese mundo. ¿Que tenemos? ¿Qué somos? ¿Hacia donde va esto?
Todo esto y más formaran parte del conocimiento y la experiencia a formar parte dentro de la comunidad UJAP 2.0. Esperamos que sea de su agrado y le invitamos a unirse una vez más.
Atentamente UJAP 2.0