lunes, 22 de octubre de 2012

Code Snippets en Visual Studio

Hola,

Hace un rato me dispuse a implementar unos Code Snippets ( porciones de código preestablecidos, que insertas directamente en tu programa ) en Visual Studio. Curiosamente nunca lo había hecho, aunque los utilizo con regularidad, nunca me había dado por hacer los míos.

Bueno, resulta que el procedimiento es la mar de sencillo. Primeramente lo que necesitas es el código a insertar. El primero que hice fue para establecer tres regiones que comunmente utilizo en las clases: Constructors, Properties y Methods. El snippet se ve como esto:


#region Constructors


#endregion


#region Properties


#endregion


#region Methods


#endregion

Una vez que tenemos nuestro snippet, debemos crear un archivo xml que sirve para su configuración y para que Visual Studio lo pueda leer como Code Snippet.

La estructura básica es la siguiente:

<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>
                - El Titulo o nombre del snippet -
            </Title>
        </Header>
        <Snippet>
            <Code Language="CSharp">
                <![CDATA[ - Aqui va el snippet -]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>


Dentro de  Title ingresamos el nombre del snippet y dentro de CDATA[] el contenido de nuesto código. El lenguaje que utilzo normalmente es "CSharp", pero puedes hacer snippets para cualquier lenguaje que maneje el IDE, como VB .Net ó Javascript.

Ahora solo hay que guardar el documento con la extensión *.snippet en la carpeta de los snippets de Visual Studio, normalmente es:

C:\Users\{Usuario de Windows}\Documents\Visual Studio {Año de la versión de VS}\Code Snippets\{Lenguaje del Snippet}\My Code Snippets\

Por ejemplo, la ruta completa del snippet quedó así:

C:\Users\Luis\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets\My_Regions.snippet

Ahora, automáticamente aparecerá al insertar un Code Snippet ( Clic derecho, "Insert Snippet" ó Ctrl + K, Ctrl + X), dentro de la categoría "My Code Snippets".

También es posible configurar el snippet para que acepte sustitución de caracteres, como los snippets predeterminados de Visual Studio. Cómo mencione antes, es la mar de sencillo y sobre todo bastante útil.

Link: Nuevo sitio

jueves, 13 de septiembre de 2012

PHP 5.2 y operaciones de fecha

Recientemente me encontraba desarrollando una aplicación web para PHP y configuré mi ambiente de desarrollo con un WAMP, que contenía una versión de PHP superior a la 5.3.  Encantado comencé a utilizar operaciones y funciones de su orientación a objetos, pero al pasar a ambiente de producción, me doy cuenta de que utilizaba una versión anterior de PHP ¡que no soporta funciones de objeto DateTime!

Especificamente, sumar y restar fechas, DateTime::add y DateTime:sub, ni sus equivalentes en procedural date_add() y date_sub.

Esto implicó una recodificación (aunque no tan larga) y la creación de funciones que permitiran hacer las operaciones con una facilidad parecida a la de las funciones no soportadas.

Para resolver el problema, en una librería general codifiqué funciones para agregar las fechas, sean positivas o negativas, eliminando la necesidad de tener un date_add y un date_sub. Una función por cada intervalo que necesitaba, como lo maneja C#.

A continuación expongo un ejemplo de la función para agregar días.


    /**
    *
    * Agrega dias a una fecha
    * @param datetime $date
    * @param int $days
    * @return DateTime
    */
    function add_days($date, $days)
    {
      // Inicializamos el símbolo, como "más" ( + )
      $symbol = '+';
     
      //    Si días es menor a 0, es decir, negativo
      if ( $days < 0 )
      {
            //    Configuramos el símbolo como "menos" ( - )
            $symbol = '-';
      }
     
      //    Hacemos la operación y la guardamos en result
      //    Convirtiendo a UNIXTIME mediante strtotime
      //    el intervalo y la fecha
      $result = strtotime (
            '+' . $days . ' day' ,
            strtotime (
                  date_format($date, 'Y-m-d')
            )
      );
     
      //    Regresamos una fecha, a partir del resultado
      //    transformado a formato Y-m-d
      return date_create( date( 'Y-m-d', $result ) );

    } // end function add_days
 
Siguiendo este ejemplo, podemos codificar las funciones para semanas, meses, años, etc.

martes, 4 de septiembre de 2012

Como reestablecer los archivos recuperados por ChkDsk

Cuando utilizas el ChkDsk (o cuando al iniciar Windows este lo corre automáticamente) y este arroja errores, los archivos que este "recupera" normalmente los almacena dentro de un archivo found.000, en el directorio raíz del disco que contenia los errores.

Este archivo actua como una carpeta en realidad, y dentro de la misma ChkDsk guarda archivos *.chk, con la siguiente nomenclatura dirXXXX.chk, donde XXXX comienza en 0000 y se va elevando según el número de archivos, es decir, puede contener el archivo dir0000.chk, dir0001.chk, dir0002.chk, y así sucesivamente.

Pues bien, estos archivos tambien actuan como carpetas y dentro contienen los archivos recuperados por ChkDsk.

Normalmente estos archivos son invisibles y no pueden ser navegados desde el explorador de Windows Para recuperarlos totalmente al sistema de archivos, utiliza el command.exe (ó simbolo de sistema, como lo llama Windows) y mediante comandos DOS podrás realizar las operaciones para la recuperación.

Primero que nada, asegurate de usar command.exe con privilegios de administrador.

Ahora, busca dentro del directorio raiz del disco que tuvo los errores el archivo found.000. Puedes realizar la busqueda con el comando:
dir *.000

Si no lo encuentras, puedes usar la excelente aplicación freeware Space Sniffer, en la que podrás visualizar el contenido de todo el disco.

Una vez localizado el archivo, tratalo como un directorio, navegando hacia el con el comando cd:
cd found.000

Una vez que hayas navegado al archivo, realiza el comando dir. Este te mostrará los archivos *.chk que contiene el archivo found.000.

Ahora, cada archivo *.chk se comporta como una carpeta, por lo que puedes copiar su contenido a otro directorio. Crea una nueva carpeta llamada Recovery en el disco duro (preferentemente en uno diferente al que tuvo errores). Dentro de esa carpeta, crea tantos directorios como archivos *.chk tengas dentro de found.000.

Es decir, para el archivo found.000/dir0000.chk, crea la carpeta Recovery/dir0000, para el archivo found.000/dir0001.chk, crea la carpeta Recovery/dir0001 y así sucesivamente.

Posteriormente, navega a cada archivo *.chk con el comando cd, dentro de found.000 usa el comando:
cd dir0000.chk

Posteriormente utilza el comando cp con la siguiente sintaxis: cp -apv . [directorio destino]
Ejemplo:
cp -apv . Recovery/dir0000

Esto copiará el contenido del archivo dir0000.chk a la carpeta dir0000.

Realiza la misma operación con todos los archivos *.chk que existan dentro de found.000.

Una vez que hayas recueperado todos tus archivos, debemos eliminar el archivo found.000, ya que no lo necesitaremos más. Esto no puede efectuarse desde Windows, así que debemos utilizar un live CD como los que distribuye Ubutu, para bootear desde el CD y usar el sistema operativo desde el mismo.

Para ello, inserta el Live CD dentro del drive de Disco, reinicia la computadora y entra a BIOS para cambiar el dispositivo de booteo al drive del CD. Luego graba los cambios y sal del BIOS. La computadora arrancará ahora desde el CD que contiene Ubuntu.

Una vez que hayas ingresado a Ubuntu, este te preguntará si deseas intentar el Live CD o instalar Ubuntu. Como solo queremos borrar un archivo. ingresaremos al Live CD.

Una vez dentro, en "Places" selecciona el disco duro que contiene found.000. Ubuntu lo tratará como una carpeta, así que la puedes eliminar sin problemas. Cerciorate tambien de eliminarla de la Bandeja de Basura (Trash). Con esto podemos salir de Ubuntu, regresar a Windows y verificar que realmente el archivo found.000 ya no existe.

lunes, 18 de junio de 2012

Técnica sencilla para passwords seguros

Hola,

Hoy les traigo una técnica sencilla pero efectiva para asegurar nuestros passwords. Contendrá la mayoría de los requisitos para los "strongspasswords", será fácil de memorizar y además única para cada sitio o aplicación a la que tengamos que configurar usuario y contraseña ¿Genial no?

Pues bien, comúnmente, por flojera, costumbre, "mala memoria" o lo que sea, "se nos hace fácil" ponerle el mismo password a todas nuestras cuentas, a la de Google, a la Twitter, Facebook, a la computadora personal, y peor aún: PayPal y cuentas bancarias. ¡Esto es un error gravísimo! Si alguién "adivinara" o nos "hackeara" el password estaríamos perdidos, podría entrar a todas nuestras cuentas ¡y acceder a toda nuestra información!

La mayoría de los sitios cuentan con un verificador de "fortaleza" de la contraseña, pero aunque nuestro password sea fuerte, si lo usamos en todas nuestras cuentas corremos un gran riesgo.

No obstante, con tantos y tantos servicios de hoy en día, tener una contraseña para cada uno se vuelve una pesadilla, y es mucho más sencillo tener una "clave maestra", sin embargo, el riesgo es grande.

Pues bien, como una alternativa tenemos este algoritmo.

1. Toma tu "clave maestra", supongámos que es pachoncito.

2. Ahora la transformamos a lenguaje "l33t" básico, sustituyendo vocales por números, quedaría p4ch0nc1t0.

3. Ahora la "entrecomillamos" con un caracter especial de tu elección, como *, % ó $ (ó más de uno, si lo deseas). Nos quedaría así: *p4ch0nc1t0*. Esta será nuestra clave maestra básica.

4. Ahora, para hacerla única para cada sitio, repetimos la misma operación, con el nombre de cada sitio y se la agregaremos a la "clave maestra cifrada".Por ejemplo, para nuestro correo de Gmail, tomamos la palabra gmail y la pasamos a "l33t": gm41l.

5. Luego la entrecomillamos con un caracter especial (otro, por supuesto) de nuestra elección. Yo prefiero los paréntesis o corchetes como [], {} o (). Eligiendo los cuadrados nos queda [gm41l]

6. Ahora se la agregamos a la "clave maestra cifrada" como prefijo o sufijo, como quieran. Como sufijo nos queda: *p4ch0nc1t0*[gm41l]

7. Y listo, tenemos una clave bastante fuerte (letras, números, caracteres especiales y algo larga), fácil de recordar (siempre es la misma base), maestra y personalizada para cada sitio o aplicación.

Este password obtuvo 100% en el passwordmeter.
Podemos hacer lo mismo con cada sitio o aplicación que tengamos usuario y contraseña, y con esto asegurar aún más nuestros datos, tan importantes hoy en día.

Aunque alguien adivien nuestra contraseña maestra mediante social engineering y conociera que utilizas este pequeño algorito (algo ya difícil de saber) tendría que pasarla a "l33t" (bueno, no es tan difícil), adivinar también el caracter especial para entrecomillarla, pasar a l33t la segunda palabra (según el sitio que quiera acceder a tu información) y adivinar el segundo caracter especial. Algo no tan sencillo de hacer, además de que tendría que adivinar si es sufijo o prefijo.

Asimismo, los robots utilizados para creackear los passwords basados en palabras de diccionario y en generador de claves aleatorias no podrían crackear la contraseña fácilmente, por la longitud y diversificación de caracteres posibles.

Puede ser algo difícil acostumbrarse al principio, pero una vez que se tiene dominada la técnica uno lo hace naturalmente.

Espero que le sirva, y si no, al menos consideren fortalecer la seguridad de sus contraseñas.

sábado, 16 de junio de 2012

Objetivos, Estrategias, Indicadores y Metas Cuantitativas


a) Los Objetivos

Una vez que conocemos la situación actual, nos será más sencillo elaborar este importante artefacto. Deberemos plasmar de forma clara, todos y cada uno de los objetivos que tenga la organización, incluyendo los objetivos de calidad.

Los objetivos son la expresión de los resultados que necesitamos para el cumplimiento de la Misión y la Visión. Para encontrarlos, debemos responder a la pregunta: ¿Qué quiera lograr la organización? El resultado deberá ser la finalidad a la cual debe dirigir sus esfuerzos para cumplir sus propósitos.

Los objetivos tienen las siguientes características:

  • Son asequibles: Puesto que debemos poder conseguirlos, ¿No nos vamos a poner objetivos imposibles, verdad?.
  • Son significativos: Por que importan, nos son provechosos, ¿No nos vamos a poner objetivos inútiles, verdad?
  • Son generales: Por que les falta detalle, no se preocupen por ahora, ya llegaremos a eso.
  • Establecen directivas claras: Nos dicen que hacer, simple y llanamente.
  • Buscan cumplir con la misión y/o visión de la organización: ¿Ven por que es importante establecerlas primero? Los objetivos deben estar orientados a cumplir el propósito de la organización y a posicionarla en el mercado.
  • Son observables: Son notorios, podemos monitorear su avance, caso contrario, resultaría inútil el tenerlos.
  • Conllevan actividades implícitamente: Nos dicen que hacer y podemos inferir que tendrémos que hacer para lograrlo.
  • Son organizacionales: Estos comunmente se relacionan con Incrementar los Ingresos y Reducir los Costos, para Maximizar la Utilidad. Todos los objetivos de derivan de esto.

Ejemplos de objetivos son:
  1. Incrementar las ventas con relación al año anterior.
  2. Aumentar la eficiencia del proceso de desarrollo para reducir los tiempos de entrega.
  3. Abrir una nueva área de mercado, integrando más productos y servicios a nuestro catálogo.


¿Que no son objetivos?
Sentencias como: “Ser una empresa líder en el ramo” ó “Brindar a nuestros clientes el mayor grado de satisfacción”. Enunciados como los anteriores pertenecen a la misión y/o a la visión, no a los objetivos, ya que son demasiado generales y aunque establecen un propósito organizacional no cumplen con todas las caracterísitcas arriba citadas.

Es altamente recomendable enumerar e identificar por clave cada objetivo específico, y priorizarlos por orden de importancia para al organización.


b) Las Estrategias

Si los objetivos son el que, las estrategias son el cómo. Debemos tener bien definidos los objetivos para poder determinar las estrategias, es lógico, debemos saber que tenemos que hacer para después ponernos a pensar cómo vamos a hacer para lograr cumplir con los objetivos.

Para obtenerla, debemos realizarnos la pregunta ¿Cómo puedo conseguir mis objetivos?, y responderla para cada uno de los objetivos en particular.

Es altamente recomendable enumerar e identificar a las estrategias por clave, tal y como con los objetivos y establecer una tabla de referencias cruzadas entre las estrategias y los objetivos.


c) Los indicadores

Un indicador es una magnitud que se utiliza para medir en concreto un resultado obtenido cuantitativamente y nos permite calificar un concepto abstracto. En español plano, es la unidad de medida del éxito de nuestros objetivos.

En el ejemplo de incremento de las ventas, el indicador principal será el total de facturación, independientemente de la cantidad de ventas realizadas, por ejemplo.

Para obtenerlos, simplemente nos haremos la pregunta ¿Qué usaremos para medir nuestro éxito? Debemos establecer al menos un indicador para cada objetivo que hayamos establecido.

Asimismo, es conveniente enumerar e identificar por clave a nuestros indicadores, y establecer una referencia cruzada con nuestros objetivos. Esta manera de “mapear” la información nos será muy útil.


d) Las metas


Las metas son la cuantificación de nuestros objetivos. Nos permiten medir la eficacia de nuestras estrategias.

Una vez que tenemos determinados nuestros indicadores, establacemos la meta de manera cuantitativa con los mismos.

En nuestro ejemplo, el indicador para incremento de ventas es el total de facturación. Entonces, le ponemos número a este factor, ya sea directamente o en porcentaje, ejemplo:

Nuestra meta para el total de facturación de este año deberá ser de $ 500,000.00.

ó

El total de facturación deberá ser 20% mayor que el año anterior.

Es vital establecer cuantitativamente las metas y establecerlas lo mas claro posible. Es altamente recomendable enumerarlas e identificarlas por clave, así como establecer una tabla de referencias cruzadas con nuestros objetivos.

Entender la Situación Actual


La situación actual abarca factores tanto externos como internos. Para ello echamos mano del análisis FODA. ¿Qué es el FODA? Es un documento en donde plasmamos nuestras:
  • Fortalezas
  • Oportunidades
  • Debilidades
  • Amenazas

Podemos representarla fácilmente mediante esta matriz

Situación actual
Factores Externos
Factores Internos
Oportunidades
Amenazas
Fortalezas
Debilidades
1
2
3
1
2
3
1
2
3
1
2
3
...

Para determinar las oportunidades debemos tomar en cuenta:
El mercado: Detectar oportunidades es más sencillo si ya se tienen clientes, mediante estudios de semáforo, para determinar sus necesidades. Si no se cuenta con una cartera establecida de clientes, la cosa se complica, pero no es imposible, mediante el estudio de las tendencias y la demanda en servicios de tecnologías de información.

Para determinar las amenazas debemos tomar en cuenta:
A la competencia: Un buen estudio de benchmarking nos arrojará información valiosa para compararnos con nuestros competidores en precio, servicio, calidad y oferta.
A nuestros clientes: Una buena encuesta de grado de satisfacción nos podrá alertar si algún cliente desea prescindir de nuestros servicios.

Para detectar nuestras fortalezas debemos tomar en cuenta:
  1. Nuestros objetivos.- De nada nos sirve una ventaja que no esté orientada a cumplir con nuestros objetivos
  2. Métricas.- Debemos determinar de manera cuantitativa nuestra ventaja.

Debemos plasmar claramente cuáles son nuestros puntos fuertes.

Para detectar nuestras debilidades debemos tomar en cuenta:
Métricas.- Determinar objetivamente en que estamos fallando
Clientes.- De nuevo, hechando mano de un estudio de semáforo, podemos averiguar nuestros puntos débiles desde el mejor punto de vista: El de nuestros clientes.
Evaluaciones externas.- Las evaluaciones de un tercero son buena referencia también, ya que podemos encontrar en ellas nuestras áreas de oportunidad de mejora.

Misión, Visión y Valores


Teníamos que comenzar con esto, ¿cierto? Es un clásico en las implementaciones de los procesos de calidad, por supuesto, pero hay una razón para ello: Si comenzamos por el principio, es este: ¿Por qué existe la organización? ¿Cuál es su propósito? ¿A dónde se quiere llegar?

Estas preguntas deben ser respondidas en la misión y en la visión. La misión es la razón de ser de la organización.

La misión debe ser congruente con la organización, válida y funcional. Debe dejar plasmados que hace la organización, cómo lo hace y debe llevar el nombre de la organización. Por ejemplo:

La misión de “Empresa X” es desarrollar software de calidad para las empresas del sector financiero, proporcionando servicios de desarrollo de clase mundial, confiables robustos y versátiles, que permitan a nuestros clientes potenciar sus negocios mediante el uso de tecnología de punta.

La visión es la posición en el mercado que desea obtener la organización. La visión determina las pretenciones de la organización, está claramente ligada a los requerimientos y necesidades de los clientes y a las características que tiene la organización para satisfacer dichas necesidades.

Por ejemplo:

La visión de “Empresa X” es ser una compañía líder en el campo de desarrollo de software para el sector financiero, reconocida a nivel internacional por el cumplimiento eficiente, efectivo y eficaz de nuestros proyectos, así como nuestra orientación a la satisfacción de nuestros clientes.

Los valores determinan las actitudes y políticas que deben respetar todos los miembros de la organización, expresados en forma de cualidades y virtudes. Por ejemplo:

Los valores de la “Empresa X” son Honestidad, Responsabilidad, Entrega, Liderazgo y Proactividad.

No se debe tomar a la ligera este primer paso, es decir, no se deben redactar misión, visión y valores de forma bonita solo para cumplir la norma, por el contrario, se debe ser honesto y plasmar la realidad en ellos, poner por escrito nuestro propósito, nuestros deseos y nuestros ideales, y asegurarnos que todas nuestras acciones posteriores sean congruentes con estos.

La Gestión de Negocios


Siempre es bueno comenzar por aquí, por varias razones. La primera es que realmente todo se inicia por la gestión de negocios, la organización fue comenzada por alguien quien puso su dinero y esfuerzo en dedicarse a producir y vender software, así tuvo que empezar todo, así que es bueno que comience por aquí.

Otra razón importante es que los administradores suelen delegar las actividades operativas, aburridas y monótonas, a los subordinados, y la implementación de un modelo de calidad suena irremediablemente aburrido.

Por ello, comenzado por la gestión de negocios, nos aseguramos de que se involucre directamente a la administración, lo cual es mandatorio para la implementación del modelo.

Implementación del Modelo


Los procesos son efectuados por miembros de la organización, los cuales tienen roles específicos. Los roles son responsabilidades de los miembros para llevar a cabo actividades especificas.

Cada proceso debe tener un responsable, que adquirirá el rol de responsable de proceso. Existen muchos otros roles, según las actividades que tengan que realizarse en cada proceso, por ejemplo: clientes, analistas, testers, etc. Los roles implican función.

Durante una implementación, cada miembro de la organización deberá llevar a cabo uno o más roles. Los roles que serán evaluados serán los responsables de proceso (el responsable de la gestión de negocios, el responsable de la gestión de procesos, etc).

Aunque se dan casos en empresas muy pequeñas de que una sola persona sea responsable por dos o más procesos, esto no es recomendable.

Pues bien, ¿por dónde empezar? Es recomendable comenzar desde arriba, por la Gestión de Negocios, seguida de la de procesos, proyectos, recursos y finalmente las áreas operativas como Administración de Proyectos específicos y Desarrollo y Mantenimiento de Software. No obstante, nuestro primer paso debe ser preparar el terreno.


La base de conocimientos

¿Qué necesitaremos? Si vamos a implementar un proceso de calidad, necesitaremos un lugar para archivar y administrar correctamente la información, un repositorio. Llamaremos a este lugar, físico o lógico, Base de Conocimientos.

Aunque existe un proceso completo sobre este tema, recomendamos preparar este repositorio antes de comenzar a documentar. Asimismo, aunque existe software especializado para llevar a cabo esta labor, disponible a la venta en la entidad dictaminadora (NYCE), recomendamos utilizar un repositorio propio para la primera vez que se implementa la norma.

Recomendaciones:
  • Tener un servidor de archivos, ya sea mediante carpetas compartidas o por protocolo FTP.
  • Establecer un directorio como principal, con el nombre de “BaseDeConocimientos[Empresa]”.
  • Dentro del directorio principal, tener un subdirectorio para cada uno de los procesos.
  • Dentro de cada subdirectorio, guardar los documentos pertenecientes a cada proceso.
  • Llevar una bitácora de implementación y minutas de cada reunión.

TIP
Esto nos servirá para mantener ordenada nuestra documentación. Uno de los principales puntos a evaluar en la dictaminación es precisamente tener ordenada y a la mano la documentación necesaria. A medida que avancemos, y sobre todo al llegar al proceso de Conocimiento de la organización, nos extenderemos en este tema.

Por el momento, damos por hecho que se tiene acceso a un servidor de archivos, y que él se encuentran los subdirectorios correspondientes a cada proceso. Ahora sí, podemos comenzar con la implementación y la documentación. Comenzaremos por el principio, todo comienza con la Gestión de Negocios

Comenzando con Moprosoft

Piensa en Moprosoft como un “check list” de todo lo que debes cumplir para producir software de calidad, pero desde un punto de vista organizacional.

Ello implica que se aplica el principio administrativo, es decir, que gira en torno al ciclo de la administración: Planeación, Organización, Ejecución y Control.

Moprosoft primero se organiza, se estructura en categorías, procesos y roles. Luego, a cada proceso aplica el principio administrativo: Planeación, Preparación para la implementación (la Ejecución) y Evaluación y Control (el Control) para sus actividades.

También implica que toda la organización será evaluada, desde el gerente general hasta el programador, e implica que el o los responsables de la implementación dentro de cada empresa deben ser administradores (gestores, supervisores, encargados, etc) no desarrolladores.

Un error común - y regularmente garrafal - que puede cometer la administración es encargar la implementación del modelo al departamento de desarrollo. Esto no debe ocurrir, la implementación del modelo debe ser responsabilidad de toda la organización. Claro, debe existir un líder de proyecto, pero su área de expertitud debe ser la gestión y los procesos de calidad, no el desarrollo de software.

Cómo está estructurado Moprosoft


La base del modelo de procesos es, lógicamente el proceso.

Entendemos por proceso el conjunto de actividades a efectuar para generar un producto.

Un producto puede ser cualquier elemento generado, desde un documento hasta todo un sistema informático.

Moprosoft organiza a los procesos en categorías. Estas son:
  1. Categoría de Alta Dirección (DIR)
  2. Categoría de Gerencia (GER)
  3. Categoría de Operación (OPE)

La Categoría de Alta Dirección (DIR) involucra los procesos de negocio, de alta dirección, es decir, a los dueños o socios y a los gerentes generales o administrativos. Es la categoría de jerarquía más alta.

La Categoría de Gerencia (GER) involucra, como su nombre lo indica, a los procesos de gerentes o jefes de departamento. Tiene una jerarquía media.

La Categoría de Operación (OPE) involucra a los procesos de operación, es decir a los trabajadores, los que realizan el software e incluye a los analistas, programadores, testers, etc.

La Categoría de Alta Dirección (DIR) manda y establece lineamientos, reglas a seguir por la Categoría de Gerencia (GER), ésta a su vez se encarga de que la Categoría de Operación (OPE) realice el trabajo y de comunicarle resultados a la Categoría de Alta Dirección (DIR).

Es como en cualquier empresa, y hasta podrían estar pensando “eso ya lo sé, lo hago todos los días” y tienen razón, no obstante, un punto muy importante en la implementación es que se deben llamar a las categorías, procesos y actividades por el nombre que la norma indica. Esto es vital para pasar las evaluaciones. Además, se trata establecer, documentar y seguir un modelo, no solamente de ejecutar la operación.

Muy bien, prosigamos con la estructura de Moprosoft y la organización de los procesos. Moprosoft evalúa que en la organización se lleven nueve procesos y estos son, clasificados por categorías:

  • Categoría de Alta Dirección (DIR)
    • 1. Gestión de Negocio
  • Categoría de Gerencia (GER)
    • 2. Gestión de Procesos
    • 3. Gestión de Proyectos
    • 4. Gestión de Recursos
      • 5. Recursos Humanos y Ambiente de Trabajo
      • 6. Bienes, Servicios e Infraestructura
      • 7. Conocimiento de la Organización
  • Categoría de Operación (OPE)
    • 8. Administración de Proyectos Específicos
    • 9. Desarrollo y Mantenimiento de Software


A continuación describiremos brevemente cada uno de los procesos. No son las definiciones de la norma, nos referiremos a las siguientes descripciones como funcionales.

Gestión de Negocios
Es el proceso administrativo, en el que se organiza a los demás procesos, se trazan objetivos, se establecen estrategias, se evalúan los resultados.

Gestión de Procesos
Este proceso se encarga de establecer y documentar los procesos. Se podría decir que es un “meta-proceso”.

Gestión de Proyectos
Como su nombre lo indica, gestiona los proyectos, se asegura de que se cumplan los objetivos, de que los proyectos se realicen.

Gestión de Recursos
Este proceso es el encargado de proveer los recursos necesarios a la organización y llevar un control sobre los mismos.

Recursos Humanos y Ambiente de Trabajo
Otro proceso con nombre bastante descriptivo, administra los recursos humanos y evalúa el ambiente de trabajo.

Bienes, servicios e infraestructura
Establece las actividades de adquisición de, como su nombre lo indica: Bienes, servicios e infraestructura.

Conocimiento de la organización
Establece los lineamientos para administrar la base de conocimientos de la organización (un repositorio de procesos y documentos, esencial para el cumplimiento del modelo).

Administración de proyectos específicos
Proceso que determina las actividades para ejecutar un proyecto en tiempo y forma.

Desarrollo y mantenimiento de software
Establece las actividades para la producción de software.

Pues bien, ya sabemos de qué se trata Moprosoft y cómo está estructurado, por tanto, en próximas entradas paseremos inmediatamente a la implementación.


lunes, 20 de febrero de 2012

¿Comercial u Open Source?

Yo siempre me inclino más por el Open Source, de manera general, no obstante, existen programas comerciales que no tienen una alternativa comparable en Open Source, como es el caso de AutoCAD (si, ya se que hay mil a la N programas de CAD Open Source, los he buscado hasta el cansancio, más ninguno se le compara, según mi opinión).

Otro ejemplo clásico es el de Linux v Windows, Photoshop v Gimp, Illustrator v Inkscape, MS Office v Libre Office, etc. En estos casos la respuesta es sencilla:  Si te gustan y tienes el dinero, ve por la propuesta comercial, pero si no, por favor, no acudas a la piratería. Las propuestas Open Source son suficientemente buenas (excelentes diría yo) como para tener que piratear un programa comercial.

¿Cuanto de cuesta un CD pirata? ¿$10 ó $15 USD? Bien puedes usar los programas Open Source y donarles ese dinero, es sin duda una mejor apuesta.