sábado, 5 de mayo de 2012

Mitos sobre la Ingeniería de Software

La ingeniería de Software, así como otras disciplinas, está rodeada de mitos y pensamientos falsos sobre ella, los cuales se van creando no solo por personas ajenas a este campo sino también por algunos conocedores que ignoran ciertos aspectos, todo esto lo que hace es propagar información errónea sobre este campo; aquí algunos ejemplos:

- Entre más programadores, más rápido se terminará de construir el software. 

- La documentación es una pérdida de tiempo, mejor se empieza a programar de una. 

- Con solo un objetivo general basta para empezar a escribir el programa. 

- Es fácil y rápido hacer cambios y depurar el software. 

- El trabajo termina cuando el programa funciona y se termina de escribir el código. 

- Entre más grande sea la documentación del software, mejor será. 

- Entre más grande y complejo sea el software, más tendencia tendrá a fallar. La función del desarrollador es solo escribir el código.

viernes, 4 de mayo de 2012

ASP Vs. SAAS

La tecnología siempre ha causado impacto, tanto en el mercado como en nuestras vidas; y actualmente gracias al acelerado crecimiento de esta, las empresas y organizaciones se han visto afectadas positivamente, ya que les ha ayudado en la optimización de sus procesos, la prestación de un mejor servicio a sus clientes, la generación de mayores ingresos y en la reducción de costos.

Últimamente las empresas han decidido abrir su mercado a través del Internet, y colocan a disposición productos y servicios online para dar mayor flexibilidad y que además sus clientes accedan a de forma fácil, el único requisito es tener algún dispositivo con conexión a Internet. En este ensayo hablaremos sobre dos modelos de distribución de software que son útiles en lo mencionado anteriormente: ASP y SAAS.

En general, trabajan bajo un concepto llamado “Computación centralizada”, en el cual en vez de tener un servicio instalado en cada máquina cliente, se crea uno solo en un equipo central y los clientes acceden a este a través de la red (ya sea local o Internet). Con esto no hay la necesidad de instalar nada en nuestros equipos, sino que alquilamos un software a manera de servicio de manera remota a través de un navegador web.

Esta implementación trae muchas ventajas, como la actualización y mejoras del software, ya que al estar en la red, cuando se hace un cambio en el servidor, al momento de acceder los clientes tendrán las mejoras listas sin necesidad de hacerlo independientemente y de pagar por ello; además se ahorra dinero en soporte. Otra ventaja es que los usuarios no pagan licencias porque no se necesita instalar ningún software o complemento, en algunos casos los clientes pagan, pero solo una cuota mensual por el uso. Los servicios se vuelven muy flexibles, al estar en la red cuentan con una disponibilidad de 24 horas al día, los 7 días de la semana y la prestación de este desde cualquier lugar. Se evita el pirateo del producto.

Aunque parece perfecto, también tiene sus desventajas para tener en cuenta, la conexión de red juega un papel importante porque el rendimiento del servicio se verá afectado por esta. Algunos servicios funcionan bajo un navegador específico, lo que provoca malestar entre los usuarios y puede provocar el rechazo al uso. Un aspecto que genera mucha preocupación es la seguridad de los datos, ya que por lo general las empresas no gastan demasiado en esto o a veces encargan a terceros para esta labor. Tampoco podemos integrar estos servicios con los que tenemos en nuestro equipo.

ASP y SAAS son modelos similares, pero no hay que confundirlos como comúnmente se hace porque tienen aspectos que los hacen diferir. Uno de estos es el desarrollo de la aplicación; mientras en SAAS la empresa propietaria del servicio es la misma que la desarrolla y la provee, en ASP se busca a otra empresa solo para que aloje el servicio, lo que provoca que en SAAS el tiempo de implementación sea más rápido, las actualizaciones sean más rápidas y no tengan que pagar por soporte.

Otra diferencia notoria es que la mayor parte de las ASPs tienen una configuración única y personalizada por el usuario. En cambio en SAAS al estar dirigido a un mayor número de clientes es preferible que todos tengan un único modelo de datos, compartiendo algunos recursos como la base de datos y servidores.

Como podemos notar SAAS tiene una ligera ventaja, pero ambos modelos son usados en la actualidad para satisfacer las necesidades, y no sería raro que todas las empresas empezarán de ahora en adelante a funcionar así.

Aclarando conceptos: Arquitectura Cliente-Servidor y SOA

1. ¿Es lo mismo la arquitectura Cliente-Servidor que SOA? 
No es lo mismo ya que la arquitectura Cliente-Servidor básicamente es un modelo de distribución de información, en cuanto SOA es una arquitectura que básicamente toma el objetivo de una empresa para así empezar a interactuar con los clientes. 

2. ¿Es la arquitectura Cliente-Servidor la base de SOA? 
No es la base fundamental pero si tendrían algún tipo de relación como para poder montar un servicio para clientes estableciendo comunicación a través de la arquitectura Cliente-Servidor pero también tendríamos otra alternativa que sería montar un servicio para clientes. 

3. Cómo se acopla SOA y Cliente-Servidor con SAAS y ASP? 
Con SOA podríamos crear el servidor o el software dependiendo de su utilización y utilidad como servicio a un cliente y en Cliente-Servidor seria la plataforma para este servicio. 

En esta instancia entraría “SAAS” y “ASP”, ya dado este servicio lo podría dar a distribuir mediante SOA o SAAS, ya que este podría ser un servicio estándar para una organización. 

4. Estándares de SOA 
- Demandar la rentabilidad de la inversión en cada servicio: Incorpore cada servicio en un proceso de negocio activo que genere rentabilidad de la inversión (ROI). 

- Definir un Comité de Gestión de Servicios: El comité de gestión de SOA será el responsable de identificar los escenarios de uso de los servicios potenciales y evaluarlos para saber si se justifica la transformación de una función en un servicio. 

- Organizar adecuadamente los comités de gestión: Para organizaciones de desarrollo centralizado debe designar un único grupo que realice la evaluación, especificación y control de todos los servicios. Y para empresas con un modelo de desarrollo distribuido se debe en crear comités de gestión en torno a aplicaciones principales. 

- Crear y especificar tareas y responsabilidades: Normalmente, los procesos de negocio unidos por servicios abarcan varias aplicaciones y, muy frecuentemente, varias plataformas y organizaciones. Por eso resulta de vital importancia definir a los participantes clave y aclarar sus funciones. 

- Ir más allá de la solicitud-respuesta: No se pueden crear procesos de negocios reales únicamente con los servicios de solicitud-respuesta por esta razón se tiene que tener presente la necesidad de servicios dirigidos por eventos cuando establezca la capa de transporte de servicio de su infraestructura. 

- Tener en cuenta los estándares emergentes: Muchos de los estándares relacionados con SOA todavía están evolucionando. Si tiene que tomar una decisión sobre un estándar que se encuentra en proceso de formación, debe solucionar el problema inmediato con la tecnología disponible pero considerar el estado y planificar la futura incorporación de estándares emergentes. 

- Desarrollar para expandir y soportar todas las tecnologías y plataformas: Evite crear su infraestructura con enfoques SOA o soluciones que limiten sus opciones a plataformas, servidores de aplicación o lenguajes de programación específicos. 

5. ¿SOA es lo mismo que Web-service? 
No es lo mismo ya que SOA es la utilización de servicios para dar un soporte a los requisitos del negocio. Todos estos son servicios que implican análisis y por lo general da como resultado del negoció un Web-service, en este caso SOA es mucho más que eso ya que es la unión de muchos servicios débilmente acoplados. 

6. Ejemplos de implementación de SOA en Colombia. 
Banco Santander 
Coomeva 
Protección A.F.P. 
Davivienda

jueves, 22 de marzo de 2012

REPASO PRIMER CORTE

ARQUITECTURA DEL SOFTWARE
La arquitectura del software se puede definir como la estructura fundamental donde se encuentran el diseño, los componentes y sus relaciones dentro de un sistema.

Por eso es considerada como la base de un sistema de software y debe ser construida pensando no sólo en satisfacer las necesidades requeridas, sino también en aquellas que van surgiendo por parte del negocio y del cliente, a medida que evoluciona el sistema.

La importancia de ella radica en que facilita la comunicación entre los equipos que participan en el desarrollo, y además aporta elementos que ayudan a la toma de decisiones.

PATRONES DE DISEÑO
Los patrones de diseño son modelos a seguir para una solución rápida y eficaz a problemas comunes en el desarrollo de software.

Existen 3 categorías:
- Patrones creacionales: Se encarga de la inicialización y configuración de objetos.
- Patrones estructurales: Trata de conseguir que los cambios en los requisitos no ocasionen cambios en las relaciones. Están ocupados en cómo las clases y objetos se combinan para dar lugar a estructuras más complejas.
- Patrones de comportamiento: Describen la comunicación entre clases y objetos.

Algunos de ellos son:




Tomado de http://msdn.microsoft.com/es-es/library/bb972240.aspx

Antipatrones: Son lo inverso a los patrones de diseño, y nos muestran los caminos que no debemos seguir durante el proceso de desarrollo de software. Éste se encarga de mostrar cuáles son los errores típicos cometidos, y además ofrecen soluciones.

MODELO VISTA CONTROLADOR (MVC)
Es un patrón de arquitectura de software que desacopla los datos de una aplicación, la interfaz de usuario y la lógica del negocio en 3 componentes distintos, con el fin de mejorar la reusabilidad y tratar de mitigar el impacto entre estos a la hora de modificar alguno.

- Modelo: Es la lógica del negocio, es el responsable de acceder a la capa de almacenamiento, lleva un registro de vistas y controladores del sistema.
- Controlador: Su función es recibir los datos o eventos introducidos por el usuario y definir que hacer con ellos.
- Vista: Recibe datos del modelo y los muestra al usuario.

Diagrama de secuencia de MVC



jueves, 2 de febrero de 2012

INGENIERÍA DE SOFTWARE II

CMMI (Capability Maturity Model Integration): Es un modelo de calidad que sirve para mejorar y evaluar los procesos en fábricas de software. CMMI posee 5 niveles, los cuales permiten conocer el nivel de madurez de los procesos que se realizan en dichas instituciones para la producción de software.

Estos modelos son:
- Inicial
- Repetible
- Definido
- Gestionado
- Optimizado

OPENUP: Es un proceso de desarrollo de software mínimamente suficiente, lo que significa que sólo el contenido fundamental se incluye. Por lo tanto, no proporciona orientación sobre muchos temas que los proyectos pueden tratar, tales como tamaño de los equipos grandes, el cumplimiento, las situaciones contractuales, la seguridad o aplicaciones de misión crítica, la tecnología de orientación específica, etc.

Sin embargo, OpenUP es completa en el sentido de que puede manifestarse comoun proceso para construir un sistema. Para atender las necesidades que no están cubiertas en su contenido, OpenUP es extensible para ser utilizado como base, en el cual el contenido del proceso se puede añadir o adaptar, según sea necesario.

XP (Extreme Programming): La programación extrema es una metodología de desarrollo ligera (o ágil) basada en una serie de valores y de prácticas de buenas maneras que persigue el objetivo de aumentar la productividad a la hora de desarrollar programas, además de satisfacer las demandas del cliente.

Este modelo de programación se basa en una serie de metodologías de desarrollo de software en la que se da prioridad a los trabajos que dan un resultado directo y que reducen la burocracia que hay alrededor de la programación.

SCRUM: Más que una metodología de desarrollo software, es una forma de auto-gestión de los equipos de programadores. Un grupo de programadores deciden cómo hacer sus tareas y cuánto van a tardar en ello. Scrum ayuda a que trabajen todos juntos, en la misma dirección, con un objetivo claro.

Scrum permite además seguir de forma clara el avance de las tareas a realizar, de forma que los "jefes" puedan ver día a día cómo progresa el trabajo.
Sin embargo, Scrum no es una metodología de desarrollo, puesto que no indica qué se debe hacer para hacer el código. Debería, por tanto, complementarse con alguna otra metodología de desarrollo. Se lleva bien con las metodologías ágiles y en concreto, con la programación extrema.

ITIL (Information Technology Infrastructure Library): ITIL es el enfoque más ampliamente adoptado para la Gestión de Servicios de TICs en el mundo. Proporciona un marco práctico, para identificar, planificar, entregar y mantener los servicios de TICs con el negocio.

ITIL aboga por que los servicios de las TICs deben estar alineada a las necesidades del negocio y apoyar los procesos de negocio. Proporciona orientación a las organizaciones sobre la manera de utilizarlo como una herramienta para facilitar los negocios, la transformación y el crecimiento.

COBIT (Control Objectives for Information and related Technology): La estructura del modelo COBIT propone un marco de acción donde se evalúan los criterios de información, como por ejemplo la seguridad y calidad, se auditan los recursos que comprenden la tecnología de información, como por ejemplo el recurso humano, instalaciones, sistemas, entre otros, y finalmente se realiza una evaluación sobre los procesos involucrados en la organización.

El COBIT es un modelo de evaluación y monitoreo que enfatiza en el control de negocios y la seguridad de las TICs y que abarca controles específicos de TICs desde una perspectiva de negocios.

LEAN: Es una filosofía que emplea técnicas y herramientas para eliminar o reducir desperdicios; ya sea tiempo, materiales, defectos, eficiencia, etc. El objetivo final de ésta es tratar de aumentar la productividad, reducir costos y volverse competitivo.

MSF (Microsoft Solutions Framework): Según [M&R 1998], "más que una metodología, Microsoft Solutions Framework (MSF) es una serie de modelos flexibles interrelacionados que guían a una organización sobre como ensamblar los recursos, el personal y las técnicas necesaria para asegurar que su infraestructura tecnológica y sus soluciones cumplan los objetivos de negocio. MSF mantiene una relación clara entre los objetivos de negocio y las implementaciones tecnológicas".

[M&R 1998],  Microsoft y Rational 1998. A White Paper on the Benefits of Integrating Microsoft Solutions Framework and The Rational Process. Rational Software Corporation y Microsoft Corporation. Documento msfratprocs.doc Disponible en http://www.rational.com/uml/papers.

PMI – PMBOK: PMBOK (Project Management Body of Knowledge) es el estándar más conocido en el manejo y administración de proyectos. Fue desarrollado por PMI (Project Management Institute). Uno de los párrafos introductorios de PMBOK dice: «“Buenas prácticas” no quiere decir que los conocimientos descritos deban aplicarse siempre de manera uniforme en todos los proyectos: el equipo de dirección del proyecto es el responsable de determinar lo que es apropiado para cada proyecto determinado.»

PRINCE2 (PRojects IN Controlled Enviroments): Es un método basado en procesos para la gestión eficaz de los proyectos. Las principales características son:

- Su enfoque es dirigido a la justificación de los negocios.
- Se enfatiza en dividir el proyecto en fases manejables y controlables.
- Es flexible para ser aplicado a un nivel apropiado para el proyecto

DRA (Desarrollo Rápido de Aplicaciones): Consiste en un desarrollo acelerado del modelo lineal basándose en componente ya diseñados. Este modelo permite que el equipo de desarrollo cree un sistema funcional dentro de un período corto de tiempo.

KANBAN: Se define como "Un sistema de producción altamente efectivo y eficiente". KANBAN significa en japonés: ‘etiqueta de instrucción’. Su principal función es ser una orden de trabajo, es decir, un dispositivo de dirección automático que nos da información acerca de que se va a producir, en qué cantidad, mediante qué medios y cómo transportarlo.

KANBAN cuenta con dos funciones principales: control de la producción y mejora de procesos. Tomado de http://www.gestiopolis.com/recursos/documentos/fulldocs/ger/kanbanuch.htm

TSP (Team Software Process): Es uno de los métodos desarrollados por el SEI, para en conjunto con PSP, mejorar el desempeño de los equipos de desarrollo y la calidad de los productos que se construyen. Permite instanciar las prácticas de CMMI con elementos ya definidos y listos para utilizarse.

TSP establece un conjunto de procesos a nivel de equipos de proyecto orientados a la ejecución de las tareas, así como mecanismos de gestión e indicadores de control que permiten gestionar, de manera continua y efectiva, el desempeño del equipo.

PSP (Personal Software Process): Brinda a los ingenieros la posibilidad de mejorar su desarrollo de software estableciendo un marco de disciplina personal. El proceso PSP consiste en un conjunto de métodos, formas que muestran como planificar, medir y administrar su propio trabajo. Tomado de http://dspace.espol.edu.ec/bitstream/123456789/15865/1/Aplicaci%C3%B3n%20de%20PSP%20(Personal%20Software%20Process).pdf

RUP (Rational Unified Process): es una infraestructura flexible de desarrollo de software que proporciona prácticas recomendadas probadas y una arquitectura configurable.

Las mejores prácticas del Rational Unified Process, (RUP), son un conjunto de procesos web-enabled de ingeniería de software que dan guía para conducir las actividades de desarrollo del equipo. Como una plataforma de procesos que abarca todas las prácticas de la industria, el RUP permite seleccionar fácilmente el conjunto de componentes de proceso que se ajustan a las necesidades específicas del proyecto. Se podrán alcanzar resultados predecibles unificando el equipo con procesos comunes que optimicen la comunicación y creen un entendimiento común para todas las tareas, responsabilidades y artefactos. Desde un único sitio web centralizado de intercambio, el Software Rational, las plataformas, herramientas y expertos de dominios proveen los componentes de proceso necesarios para el éxito.

sábado, 17 de enero de 2009

AVANCES TECNOLÓGICOS

Hoy en día, es muy frecuente observar en nuestros hogares, en empresas, planteles educativos y entes gubernamentales recientes invenciones en el campo tecnológico. Estas creaciones, además de sorprender al público por su originalidad, le han dado un giro a la existencia del hombre; ya que, nos han facilitado realizar operaciones que nos eran muy difíciles de hacer y nos han dado la posibilidad de hacer otras que no podíamos.
En este ensayo, les hablaré sobre nuevas creaciones que, tal vez, revolucionarán el mundo y cambiarán el modelo de vida del ser humano.

Para empezar, les hablaré sobre una técnica novedosa, “El chip antisecuestro”, ésta técnica permitirá aumentar la protección personal frente a un secuestro. El chip antisecuestro, no es más que un dispositivo intra epidérmico que localiza al portador por vía satélite. El chip es introducido dentro de una cápsula cristalina del tamaño de un grano de arroz, algunos compradores optan por insertarlo en el brazo.
Es muy fácil de usar, cuando el cliente se encuentre en peligro solo oprime un botón, el cual enviará la señal por vía satelital a la empresa Xega (Empresa creadora del chip), y ésta a su vez avisará a la policía.
Otro caso de estos nuevos avances tecnológicos es el Little se trata de un disco duro de pequeño tamaño pero de gran capacidad; puede llegar a guardar un Terabyte (TB) de información y acceder a ella a una velocidad extraordinaria.

Su peso es de 650 gramos, es casi del tamaño de un teléfono inalámbrico y su sistema de alimentación es a través de bus Firewire. Además tiene la posibilidad de conectarse con ordenadores de sobremesa y portátiles. Cuenta con un puerto Hi-Speed USB 2.0, dos conexiones Firewire 800 y un puerto eSATA de 3Gbits. Alcanza una velocidad de 5400 Rpm. y cuenta con una carcasa de aluminio con disipador de calor. Puede llegar a costar €549.

Para terminar hablaré de la tecnología OLED, ésta tecnología se basa en la emisión de luz a partir de un diodo orgánico que reacciona a una corriente eléctrica. Las pantallas LCD aún no han terminado de reemplazar los antiguos TRC y ya está apareciendo ésta nueva tecnología.

Desde hace años las pantallas, ya sea de televisores o computadores, han sobrellevado un proceso de adelgazamiento, las pantallas OLED no se quedan atrás y sacaron al mercado monitores con menos de 3 milímetros de grosor.
¿Será que estos nuevos avances algún día reemplazarán la mano de obra del hombre y harán de éste un ser inservible?


martes, 23 de septiembre de 2008

GREENPEACE, una lucha por el medio ambiente

Greenpeace es una organización ecologista y pacifista internacional. Formada para proteger el medio ambiente, servir de activistas contra políticas mundiales con el ambiente y pregonar por la paz en el mundo.

El objetivo de la ONG ecologista es proteger y defender el medio ambiente, interviniendo en diferentes puntos del planeta donde se cometen atentados contra la Naturaleza. Greenpeace lleva a cabo campañas para detener el cambio climático, proteger la biodiversidad, rechazar los transgénicos, disminuir la contaminación, acabar con el uso de la energía nuclear y de las armas.
Según cifras de Greenpeace, el número de sus socios en todo el mundo en 2005 era de tres millones, y en España en el mismo año, son 85.000 los socios españoles de esta organización.
El movimiento ecologista nació en 1971, de una forma muy espontánea. Un grupo de activistas antinucleares canadienses, algunos cuáqueros y objetores de conciencia estadounidenses que se habían refugiado en Canadá para no participar en la guerra de Vietnam, formaron una pequeña organización llamada "Don't make a wave Committee" (Comité "No provoqueis un maremoto") que protestaba contra las pruebas nucleares que los Estados Unidos llevaban a cabo en el archipiélago de Amchitka (Alaska), al norte de Canadá. El nombre del grupo hacía referencia la posibilidad de que, al ser una zona sísmicamente inestable, las pruebas atómicas que allí se realizaban pudiesen provocar un maremoto. La prueba nuclear no pudo ser impedida pero la acción de denuncia provocó que durante días se produjeran manifestaciones de decenas de personas en la frontera entre Canadá y Estados Unidos. Este último país se vio forzado a anunciar que aquella era la última prueba nuclear que se realizaba en las islas Aleutianas. Amchitka es desde entonces una reserva ornitológica.
Las campañas de Greenpeace se centran en aquellos problemas que, según la organización, amenazan más gravemente el futuro del planeta. Las campañas en las que se trabaja en la actualidad están agrupadas básicamente en cuatro áreas: ecología marina, atmósfera y energía, nuclear y tóxicos.
Greenpeace busca con éstas campañas la notoriedad en prensa, y con frecuencia éstas actuaciones son llamativas y espectaculares, aunque también polémicas, tanto que han sido tildados a veces de ecoterroristas, o de manipuladores en sus informes, con tal de obtener notoriedad y cuotas.
Es de reseñar que Greenpeace vio en su país de origen, Canadá, revocado su estatus de organización benéfica. Algunos gobiernos, y multinacionales persiguen a la organización, a sus afiliados y a sus simpatizantes. Dándoles el nombre de greapeaces ("gripis"), derivado de hippies. Es de reseñar Francia en el caso del Rainbow Warrior: El barco fue hundido por los servicios secretos franceses en 1985.
En numerosos países, la organización no intenta abrir sedes debido a la falta de garantías de seguridad para sus simpatizantes. Las críticas suelen partir de la gran industria, principal perjudicada por las posturas ecologistas. Greenpeace está hoy presente en 25 países.
Greenpeace se financia exclusivamente de las cuotas de sus socios y de las aportaciones de iniciativas de artistas e intelectuales que han colaborado para obtener fondos para financiar las acciones de esta organización.
Para que no quede la más mínima duda sobre la gestión económica de la organización, cada oficina nacional se somete voluntariamente a una auditoría anual, llevada a cabo por una firma internacional de auditores independientes. Estas auditorías están a disposición de los medios de comunicación, del Gobierno o de la opinión pública.