sábado, 9 de junio de 2012

Selección de Procesos


A nivel mundial, organizaciones de todos los tamaños han abordado iniciativas de mejora de la calidad del software con énfasis en la mejora de sus procesos de producción de software. La tendencia actual en el mercado de las Tecnologías de Información es la de adquirir un nivel de madurez en los procesos software que asegure la calidad de los productos obtenidos.

Empezando por definir a “un proceso como el conjunto de prácticas que se ejecutan para lograr un propósito que incluye herramientas, métodos, infraestructura y gente; se entiende que un Modelo de Procesos como una colección estructurada de elementos que describen las características de procesos efectivos; los procesos que incluyen son aquellos que en la experiencia han probado ser efectivos”.

En el año 2005 el Standish Group, preparó el reporte del caos en el que plantea que el 51% de los proyectos de desarrollo de Software tienen éxito; esto debido en parte a los procesos de calidad de los productos terminados. Para ello toman como base o referencia los Modelos de Procesos más difundidos de software aunque su estructura no sea fácil de traducir al contexto de una organización que se dedica al desarrollo y mantenimiento de software.



La mejora en los procesos es un esfuerzo estratégico que las organizaciones tienen que encaminar hacia el cumplimiento y que se ven complementados con tiempo, esfuerzo e infraestructura. Esta la base para implementar cualquier modelo de procesos en una organización. Es aquí donde surgen o entran las mejores prácticas que hablamos en clase, como CMMI, MoProsoft, ISO 9000, PSP, TSP y MAAGTIC.

Para explicar cada una de ellas tendría que hacer mucho resumen en el mejor de los casos o tener varios blog para hablar de cada uno de ellos, sin embargo hablaré de manera genérica de cada uno de ellos.

CMMI implica un amplio marco de trabajo donde se describen las prácticas esenciales de un proceso efectivo de desarrollo de software; fue creado en Estados Unidos y se ha convertido en una referencia internacional de la capacidad de los procesos de desarrollo de software. Define 25 áreas de proceso del ámbito de la ingeniería de software y la ingeniería de sistemas.

Por su parte, ISO 9000 es una familia de normas que sirve como guía a las organizaciones (de todo tipo y tamaño) en la implantación y operación de Sistemas de Gestión de la Calidad. ISO 9000 tiene un fuerte enfoque en los procesos y en la satisfacción del cliente; además de que es certificable en México. Sin embargo, por su generalidad, es abstracto y difícil de adecuar al desarrollo de software.


El Personal Software Process, conocido por sus siglas como PSP, es una metodología de reciente creación, proveniente del Instituto de Ingeniería del Software(SEI). PSP es una alternativa dirigida a los ingenieros de sistemas, que les permite mejorar la forma en la que construyen software. Considerando aspectos como la planeación, calidad, estimación de costos y productividad, PSP es una metodología que vale la pena revisar cuando el ingeniero de software está interesado en aumentar la calidad de los productos de software que desarrolla dentro de un contexto de trabajo individual.

Team Software Process (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. Es fundamental contar con ingenieros capacitados en PSP que utilicen de manera efectiva el proceso individual y que puedan contribuir al desempeño colectivo del equipo. La ventaja del método es que posibilita el cambio rápido mediante el autoaprendizaje obtenido de los propios resultados, al aplicar las técnicas que integran los procesos.

El Manual Administrativo de Administración General en Materia de Tecnologías de la Información (MAAGTIC), es un marco normativo que en meses pasados publicó la Secretaría de la Función Pública para simplificar, agilizar y hacer más efectivos los procesos bajo los cuales operan las dependencias públicas federales hacia el interior y para con los ciudadanos.

Dicho manual contiene un marco rector de la forma en la que se deben llevar a cabo los procesos de las Unidades Tecnológicas (UTIC's) que existen en cada dependencia. En el se contemplaron las mejores prácticas y estándares internacionales tales como: Balanced Score Card, TOGAF, ISO 9001, VAL IT, PMBOOK, CMMI, MOPROSOFT, ITIL, RISK IT e ISO 27001.


Si bien estos modelos internacionales y nacional permiten determinar la capacidad de procesos de una organización que desarrolla software, no es fácil adaptarlos al contexto de las empresas mexicanas, que en su mayoría son PyMEs. De acuerdo con un estudio hecho, el 92% de las empresas que desarrollan software en México son PyMEs, con menos de 100 empleados .

Es así como surge MoProSoft, por iniciativa de la Secretaría de Economía y gracias al trabajo de académicos y empresarios mexicanos, encabezados por la Dra. Hanna Oktaba, profesora de la Facultad de Ciencias de la UNAM. MoProSoft es un modelo de procesos para la industria de software nacional, que fomenta la estandarización de su operación a través de la incorporación de las mejores prácticas en gestión e ingeniería de software. La adopción del modelo permite elevar la capacidad de las organizaciones que desarrollan o mantienen software para ofrecer servicios con calidad y alcanzar niveles internacionales de competitividad. Es también aplicable en áreas internas de desarrollo de software de las empresas de diversos giros.

Los beneficios de MoProSoft, en palabras de la directora del equipo que lo elaboró, la Dra. Hanna Oktaba, son:
•  Al tener prácticas integradas, que abarcan desde la gestión de negocio hasta el desarrollo y mantenimiento de software, las empresas logran un mayor control sobre su desempeño en el mercado.
• El costo de incorporación del nuevo personal podría disminuir si se enfocan a la educación y a la capacitación sobre un modelo único.
• Las empresas pequeñas, al seguir procesos similares, podrían asociarse con mayor facilidad para afrontar proyectos de mayor envergadura.
• La exportación de servicios de software de las empresas mexicanas será más factible, incluso se podría disminuir la necesidad de la intermediación de las empresas trasnacionales, gracias a que MoProSoft considera las prácticas reconocidas en el ámbito internacional.

En general, MoProSoft es un modelo de calidad que permitirá a la pequeña y mediana empresa de desarrollo de software,  el acceso a las prácticas de Ingeniería de Software de clase mundial.

En mi experiencia laboral y como estudiante, he utilizado y aplicado CMMI y MoProsoft, ambas tienen similitud, sin embargo debemos de darle valor a MoProsoft por ser mexicana y tener el éxito que ha tenido hasta el día de hoy, tuve la oportunidad de que la la Dra. Hanna Oktaba me diera una plática y posteriormente clase del modelo de procesos que ella creo, es muy interesante y emocionante a la vez poder tener el conocimiento que tengo gracias a la creadora de este proceso, sin embargo, algo de lo que no hablamos mucho pero en este momento está de moda es SCRUM.



Scrum es un enfoque ágil para el desarrollo de software. En lugar de un proceso completo o metodología, es un marco. Así que en lugar de proporcionar una descripción completa y detallada de cómo todo lo que hay que hacer en el proyecto, mucho se deja en manos del equipo de desarrollo de software. Esto se hace debido a que el equipo sabrá la mejor manera de resolver el problema que se presentan. Esta es la razón, por ejemplo, una reunión de planificación de Sprint se describe en términos de el resultado deseado (un compromiso con un conjunto de características que se desarrollarán en el siguiente sprint) en lugar de un conjunto de criterios de ingreso, las definiciones de tareas, los criterios de validación, y criterios de salida que se proporcionan en la mayoría de las metodologías.

En fin hablar de SCRUM también nos llevaría tiempo, la elección la tiene cada empresa y mientras tengan resultado con una de ellas será difícil que cambien, por lo cual podría decir que todas tienen una finalidad y si la aplican como se debe obtendrán el resultado que se espera.



Por último, me gustaría compartir la información que todos escucharon en nuestra clase de acuerdo al ejercicio que dejo el profesor en grupo, el cual contiene el mapa conceptual y el proceso de la Guía Turística para que lo puedan visualizar a los que les interese 8).


Proceso
Nombre
Desarrollo de APP
Descripción
Guía a seguir para el desarrollo de Software (aplicaciones Móviles)
Propósito
Determinar el ciclo de desarrollo de software
Objetivos
·         O1. Utilizar mejores practicas
·         O2. Estandarización del desarrollo de Software
·         O3. Determinar el nivel de calidad del software
Indicadores
·         I1. Auditorias de ISO
·         I2. Contar con documentación de los sistemas
·         I3. Pruebas IRM
Metas Cuantitativas
·         M1. Aprobada o No Aprobada
·         M2. Num de documentos aprobados /num de documentos requeridos
·         M1. Satisfactoria o No Satisfactoria
Responsabilidad
Director TI
Subprocesos
·         S1. Concepción del Proyecto
·         S2. Planificación
·         S3. Análisis
·         S4. Diseño
·         S5. Construcción
·         S6. Pruebas
·         S7. Implantación
Procesos Relacionados
·         Procesos Finanzas
·         Proceso de RH
·         Proceso de Publicidad / estudios de mercado
Entrada
Solicitud de aplicación Móvil para Guía turística Nacional e Internacional
Productos Internos
·         S1. Concepción del Proyecto. Obtención de proyecto de acuerdo a la demanda del cliente y realización de carta del proyecto
·         S2. Planificación. Planeación de actividades y fecha de liberación de la aplicación.
·         S3. Análisis. Obtención de requerimientos detallados.
·         S4. Diseño. Diseño de aplicación mediante aprobación de prototipo
·         S5. Construcción. Codificación de aplicación
·         S6. Pruebas. Pruebas unitarias e integrales para validación de aplicación.
·         S7. Implantación. Liberación de la aplicación
Salida
Aplicación de Guía Turística con iOS


domingo, 20 de mayo de 2012

Arquitectura Orientada a Servicios (SOA) Administración de Software y su licenciamiento empresarial.



La capacidad para responder rápidamente ante los cambios y optimizar los procesos de negocio es un factor clave para la competitividad y el crecimiento de las organizaciones. La agilidad de éstas puede verse cuestionada si se apoya en entornos de IT que no pueden responder de forma flexible a los cambios que afectan a la actividad de negocio. 

“LA SOA es una filosofía de diseño que permite un mejor alineamiento de las Tecnologías de Información (IT) con las necesidades de negocio, permitiendo a empleados, clientes y socios comerciales responder de forma más rápida y adaptarse adecuadamente a las presiones del mercado.”



SOA es simplemente una arquitectura que nos dice o ayuda sobre cómo organizar las empresas de hoy en día en términos de aplicaciones, servicios y procesos de negocio que existen en ellas, donde el Gobierno SOA pretende otorgar de los mecanismos de control, procesos, procedimientos y métodos probados en la práctica para garantizar el orden en las decisiones que se tomen en una iniciativa SOA, evitando el caos en cualquier proyecto SOA que se plantee, logrando la efectividad y agilidad esperada en la transición hacia SOA.

Cada vez más las organizaciones dependen de su infraestructura de IT para alcanzar sus objetivos. Pero en un entorno competitivo como el actual, aprovechar las oportunidades de negocio exige moverse con rapidez.  Es por eso que la Arquitectura SOA es tan importante, porque el hoy, en el ahora, los servicios Web es lo que se está implantando en toda organización y SOA nos ayuda a establecer un marco de diseño para la integración de aplicaciones independientes de manera que desde la red pueda accederse a sus funcionalidades, las cuales se ofrecen como servicios, siendo la manera más fácil de implantar por medio de Servicios Web, he aquí donde recordamos nuestro blog anterior, el cual hablaba del Cloud Computing, el cual a su vez nos ayuda a tener en un futuro no muy lejano en todas las empresas los servicios Web en esta tecnología que se está implantando rápidamente en toda organización

En general por lo que puedo entender SOA trae los beneficios para una organización tanto para el usuario, como para IT y contribuye también a documentar el modelo de negocio de la empresa y a utilizar el modelo de negocio documentado para integrar en él y dar respuesta a las dinámicas de cambio que se produzcan y optimizarlo de acuerdo con ellas.

Ahora bien, si SOA nos ayuda a cómo organizar la empresa, hay un punto demasiado importante y que me llamo la atención dentro de todas las lecturas que nos otorgaron y es el término de SAM (Software Asset Management ), el cual nos ayuda a optimizar nuestras inversiones existentes dentro de la empresa, para que así pueda hacerse más con lo que ya se tiene, a controlar los costos y riesgos del negocio para una sólida posición financiera, es decir, ayuda a líderes de las TIC a hacer una contribución estratégica y positiva a su funcionamiento corporativo total, ayudando a reducir costos, evitando riesgos potenciales y aumentando la eficacia.

En general SAM permite a la organización, entre otras muchas ventajas, saber realmente el software que tiene, las licencias compradas e instaladas y comparar ambos datos, saber qué licencias realmente utiliza, conocer lo que necesita comprar evitando así duplicidades, mejorar el uso de recursos, etcétera, que permite una gestión óptima de todos sus activos de software, ya que el software supone actualmente cerca del 20% de los costos de TI.



Es por eso que siempre dentro de las organizaciones surge el tema de software con licencia libre o licencia pagada. “La Licencia de software es una especie de contrato, en donde se especifican todas las normas y cláusulas que rigen el uso de un determinado Programa, principalmente se estipulan los alcances de uso, instalación, reproducción y copia de estos productos.”

Este tema es demasiado importante para cada una de las estructuras de las organizaciones, los costos que conllevan las decisiones que tomen los empresarios, directores, o gente que elige tal opción para la solución de la implementación de una tecnología puede ser demasiado costosa, entendiendo que la “solución” es la característica de producto-software de poder solucionar diversa problemática, en lo que a información se refiere, y permitir mejores formas de hacer las cosas.

Pero para poder realizar esto cada uno de los empresarios, directores, ejecutivos, etcétera, que van a realizar la elección de software deben de hacerse estas preguntas:

  • ¿De qué sirve implementar un proyecto de sistemas, con el uso de software libre, cuando la “solución” no soluciona nada?
  • ¿Cuánto perderíamos implementando un proyecto de sistemas, con el uso de software con licencia pagada, si la “solución” no soluciona nada?


Es difícil contestar esas preguntas pero creo que habrá campo y mercado para software libre y software licenciado que nos ayuden a tener la solución que deseamos. Pero lo que si hay que tomar en cuenta es que nuestra filosofía educativa debe ampliar  sus horizontes y no limitarse al uso de sistemas operativos ya conocidos, sino que también invitar a descubrir a los alumnos en nuestro México las alternativas libres.
Estoy de acuerdo que todo software tenga un precio (lo que puede incluir el costo de soporte o training) pero no estoy de acuerdo en monopolios. Estoy de acuerdo en que existan alternativas libres pero no estoy de acuerdo en que esto sea absoluto. Es importante mencionar que el software libre lo podemos ajustar a nuestras necesidades y el software comprado no, pero en la mayoría de los proyecto no podemos permitirnos el lujo de adaptarlo a nuestras necesidades, por lo cual compramos el que más se adapte a nosotros.



En general, a mi parecer, la mayoría de las empresas utilizan software con licencia pagada, tal vez sea porque se tiene soporte, actualizaciones continuas, porque es popular, porque es el que usa mi empresa, porque lo usa mi jefe, porque siempre lo he usado, etcétera, pero al menos en lo que yo llevo de experiencia laboral, he visto que el ganador es la licencia pagada y quiero dar ejemplos de mi empresa y una experiencia personal.

En mi empresa laboran alrededor de 10 mil personas al día, en la cual cada una de ellas tienen su propia computadora y el 90% de ellos tienen licencias pagadas y el otro 10% tienen software libre pero a través de maquinas virtuales que ejecutan para poder obtenerlo o son los servidores donde se alojan las aplicaciones, ejemplo: sobre Windows ejecutan una maquina virtual para entrar a Ubuntu, es decir, al final siguen utilizando licencia pagada.

Como lo mencione estoy a favor de que software tenga un precio, la verdad mucho de este software es mucho mejor que el software libre, para mí no hay ningún programa que se le acerque a Microsoft Office por ejemplo, si existe competencia como puede ser el OpenOffice, pero prefiero mil veces a la versión de Microsoft, aquí me gustaría hacer un paréntesis de una experiencia que me toco, en la cual desarrollamos un sistema y utilizábamos el paquete de OpenOffice para realizar la conversión de archivos a PDF, ya todo estaba implementado y funcionando correctamente, pero nos llevamos una sorpresa cuando lo queríamos subir a producción teníamos que ir con la gente de Infraestructura para que nos instalara el paquete de OpenOffice en el servidor, nos dijeron que ellos nunca habían instalado eso en ningún equipo y que por ordenes directivas no podían instalarlo porque perdían la garantía del proveedor en caso de instalar paquetes como ese, es decir, a mi me pareció una tontería su argumento, además de que le íbamos ahorrar dinero a la empresa no quisieron nuestra solución y al final se opto por comprar una licencia “Aspose” para realizar esta tarea y se pudiera instalar en el servidor.

Esa experiencia que me toco en vez de hacerme enojar me dio risa, me parece sorprendente ya sea por miedo a que el proveedor no diera garantía o por miedo a instalar cosas que antes no habían instalado nos dijeran que no se podía y al final terminaran pagando, es por eso que digo que la solución depende de cada empresa, lo que es un hecho es que en la mía radica en su totalidad la licencia pagada y en mi parecer está bien, la mayoría de la gente trabaja con ella desde hace años, y otra cosa importante es que Windows cada día quiere ganar más, por ejemplo, lo que paso con Windows XP donde si comprabas una licencia podrías instalar el software en las maquinas que quisieras y como vieron que perdían dinero mejor ahora es una licencia para una PC, lo mismo pasa con varios software que tienen y por eso mismo mi empresa trabaja con software de ese tipo, en vez de nuevo.

En conclusión, este blog me gusto hacerlo porque aprendí cosas nuevas, me hubiera gustado abarcar más cosas de otras lecturas, SOA aunque es importante porque nos ayuda a saber cómo organizar las empresas, no me agrado mucho, me hubiera gustado otro tema, pero este era obligatorio y no e quejo del todo porque aprendí algo bueno. De SAM me gusto por lo importante que es en las organizaciones, ya que nos ayuda a tener un control económico, ahorrar en licencias de software y sobre todo a procesos legales en caso de tener alguna auditoria al tener el número de licencia de software y por último, el licenciamiento de las empresas, el cual explique cómo es en mi empresa, pero se me olvido decir un punto muy importante, el cual estoy seguro que sucede en la mayoría de las organizaciones, y es la piratería, en la mía al menos si existe, en teoría se supone que nadie tiene permisos de administrador para entrar e instalar algo, pero con la piratería todo es posible y al menos un 60% de la gente que conozco en mi trabajo, utiliza software pirata.


Me gustaría finalizar con una pregunta: ¿Utilizas software pirata?




domingo, 29 de abril de 2012

Del Bisonte a la Realidad Virtual

Si queremos hablar de la imagen y su historia este libro es el ideal, hablándonos cómo es que la imagen ha evolucionado de la silueta del rostro, como una ilusión de su presencia, como apariencia, modelo o proyecto; se pintaba lo ausente mediante su imagen virtual que aspiraba a la imitación de la naturaleza como fin esencial del arte.

En general nos habla de la evolución histórica de las imágenes icónicas, como fue que las imágenes comenzaron en las rocas y paredes de cuevas, eran pinturas públicas por así decirlo, se basaba en lo esencial, sin fondos ni paisajes etc; hablando de factores para la percepción visual, el doble sentido que puede tener una imagen (ocultando o representando algo, es decir, engañando la mirada), etc. En fin podría poner un resumen del libro pero no se trata de eso, de acuerdo a lo que entendí es la opinión que daré.

Actualmente gracias a las nuevas tecnologías han divulgado toda una serie de mundos paralelos, donde las historias y los personajes pueden llegar a adquirir tal realismo que aparentemente reproduzcan o incluso induzcan a aquellas personas que interactúan con ellos a experimentar sensaciones y emociones tan auténticas como las de la vida real.



Los seres humanos soñamos con imágenes antes que hablar con palabras, cuando vemos una imagen en el cine, queremos imitarla o viene la imaginación a nuestra mente, un ejemplo claro podría ser la película rápido y furioso, donde queremos carros para poder correr por las calles a toda velocidad, es una realidad que nos induce a través de películas o series de televisión. Las imágenes pueden llegar a convertir en autenticas manifestaciones de poder, tal como a diario vemos sobre todo en espacios informativos de televisión.

En nuestros días hay falta de educación visual, ya que nunca se enseña la cultura de la imagen, es decir, se debería de enseñar a leer críticamente las imágenes pero en realidad uno lo tiene que aprender solo y donde más se aprende es mirando el televisor, cómics, cine , etc, pero casi nunca de libros que valgan la pena y eso es un grave error en nuestra sociedad. Algo que es importante mencionar en las tecnologías actuales son los conocimientos e información que nos aportan, donde los ricos por obvias razones y por los medios que tienen alcance se hacen más ricos en conocimiento de la información y a los pobres es totalmente lo contrario, es decir, no existe igualdad en nuestros días ni en este sentido.



Creo que la realidad virtual alcanzará un desarrollo tecnológico magnifico, en estos momentos creo es imperfecta pero a través de los ordenadores, pantalla de plasma, la enseñanza, el diseño, la medicina, la industria, la cirugía, aplicación militar, las mismas salas de moda en cines como 4DX ayudaran a progresar en el desarrollo tecnológico de la realidad virtual.

Dejo un vídeo (enlace) que espero sea de su interés y confirma lo que digo en el último párrafo, donde creo que el desarrollo tecnológico de la realidad virtual alcanzará objetivos jamás pensados.

domingo, 22 de abril de 2012

Entropía



La Entropía de la organización se interpreta como el deterioro que exhibe la organización después de un cierto período de actividad, lo que le resta capacidad de ejercer las funciones que se fijaron en su formación.  Lo que entiendo con este concepto que la entropía es una medida de desorden que se presenta en las organizaciones por lo tanto dejan de cumplir con sus objetivos y metas planeados, esto puede ocasionar una pérdida de competitividad, de calidad, de ventas, etc. Afortunadamente, es posible detener o por lo menos disminuir este deterioro, y de esta manera mantener la permanencia de la organización con éxito.



Desde el punto de vista Macroeconomico, el concepto de  Entropia se aplica a la perfección a un invento de la sociedad que reduce el desorden del dinero circulante: el Banco (lugar donde laboro).

"Las instituciones Financieras son reductoras de la Entropía del dinero circulante en el sistema monetario"

Algo que hay que tener en cuenta es que tener sistemas de información en una organización no se traduce necesariamente como una disminución de la Entropía o una mejora en la eficiencia de la actuación de la organización.

Ahora bien, el modelo de mensaje Emisor-Receptor (E-R) dentro de mi organización es de gran utilidad ya que sirve para envío y recepción de archivos, divulgación de información por medio de correos o simplemente boletines internos (Intranet), ocasionando una disminución de Entropía y por ende una mejora eficiencia dentro de la organización. Ya que esto ocasiona tener un orden empresarial y controlado para saber que cada emisor sabe que receptor es el que necesita la información proporcionada, un ejemplo en mi día a día podría ser el envío de archivos ZIP, el cual envío por medio de correo electrónico, donde el receptor recibe el archivo y lo descomprime para obtener la información contenida en formato original y poderla utilizar.

Por otra parte me gustaría hablar de la disminución de la Entropía dentro de mi organización gracias al orden y control de los sucesos que se dan día a día durante las 24 horas, entre pago de servicios, compra de tiempo aire, envío de correos entre personal, transferencias interbancarias, etc. Este último me gustaría poner como ejemplo SPEI, quien tiene un Banco emisor que envía información (transferencia) a un Banco receptor que ya sabe que tiene que hacer con la información que recibe.



Por último podríamos considerar las crisis económicas como un reflejo de la entropía de los sistemas tendentes al desorden, tal y como se expresa en la segunda ley de la termodinámica. Según Minsky "Una característica fundamental de nuestra economía es que el sistema financiero oscila entre la robustez y la fragilidad, y esa oscilación es parte integrante del proceso que genera los ciclos económicos.".