Archive for the ‘Capacitacion’ Category

Requerimientos no funcionales

sábado, septiembre 29th, 2012

Los rquerimientos no funcionales son por lo general exigencias de los clientes o usuarios que no tienen que ver con la información o procesos que va a contener el sistema. Si afectan al sistema, pero más bien a la percepcion de calidad de este. En algunos si afectan el funcionamiento del software cuando estos no se cumplen.
Ejemplos serían:

  • rendimiento
  • disponibilidad
  • seguridad
  • accesibilidad
  • usabilidad
  • estabilidad
  • portabilidad
  • costo
  • operatividad
  • interoperabilidad
  • escalabilidad
  • concurrencia
  • mantenibilidad

Que un requerimiento funcional no se cumpla, implica que no se cumplen los requisitos del sistema, y afecta al sistema en distinto grado, pero sigue siendo un requerimiento no funcional.

Hay que tener cuidado eso si en definir bien si es un requerimeinto funcional o no funcional. Cuando tiene que ver con una salida de datos y presentacion de información eso es un requerimiento funcional.

Ejemplo:
Concurrencia: El sistema debe proveer la capacidad de 2000 usuarios concurrentes el mismo minuto.
Disponibilidad: 24×7 es para sistemas online que debiese estar el 100% del tiempo disponible para el usuario, 9×5 serían por ejemplo sistemas transaccionales ocupados en horarios laborales de lunes a viernes.
Rendimiento: El software debe consumir sòlo hasta un 60% de CPU

Workflow de desarrollo de una funcionalidad

jueves, agosto 23rd, 2012

En el proceso de desarrollo normal se deben seguir ciertas pautas cuando estas estan estructuradas es mejor, debido a que todos saben a que atenerse.

En muchos casos, en las empresas de desarrollo se usan herramientas de versionamiento, por ejemplo subversion. En estas herramientas existen problematicas no asociadas con la heramienta, sino que asociada a la forma en que se desarrolla. El ejemplo clásico que doy de escritura de código es

if(x){
    y = y + 1;
}

y el codigo

if(x)
{
    y = y + 1;
}

son equivalentes, pero uno tiene una linea más de codigo que la otra, esto implica que estadisticas relacionadas con ello, pueden producir conclusiones erroneas, en el sentido de, por ejemplo, la productividad de un programador medido en lineas de código.

Para ello en Java, .NET y otros existen herramientas para la verificación de codigo, para Java: Checkstyle, PMD y Findbugs; para .NET: Stlecop, FxCop y Gendarme. Cada una de las cuales explicaré en otros post. Lo que me preocupó hoy es presentar un workflow, o serie de actividades, para proceder al desarrollo de una funcionalidad. Este implica revision de estilo, revision de errores potenciales y revision de programación. Todo ello también va de la mano con la arquitecturas de las aplicaciones aplicadas.

El workflow en cuestion:

Transacciones ACID

miércoles, julio 25th, 2012

En el contexto de transacciones de bases de datos, ACID es un acrónimo de Atomico (Atomic), Consistente (Consistent), Aislado (Isolation) y Durabilidad(Durable). Las transacciones proporcionan un modelo sencillo de éxito o fracaso una o un conjunto de operaciones en la base de datos. Una transacción se compromete (es decir, todas sus acciones se ejecutaron de forma correcta), o se anula (es decir, si una accion fallo, entonces todas sus acciones hechas hasta ese momento se deshacen). Los atributos de una transacción ACID son las siguientes:

Atomicidad

Una transacción permite la agrupación de uno o más cambios en las tablas y filas en la base de datos para formar una operación atómica e indivisible. Es decir, o bien se producen todos los cambios o ninguno de ellos. Si por alguna razón la transacción no puede completarse, la operación debe restablecer el estado de la base de datos al momento en que estaba antes del inicio de la transacción a través de una operación de reversa (rollback).

Consistencia

Las transacciones siempre operan en una visión coherente de los datos y cuando terminan deben también dejar los datos en un estado coherente. Mientras que una transacción se ejecuta se generan inconsistencias momentaneas dentro de la base de datos, pero la transaccion no puede dejar ver estas inconsistencias; al finalizar, debido a que en la finalización todas las inconsistencias deben son eliminadas, la transaccion libera los datos para que puedan ser leídos/escritos nuevamente.

Aislamiento

Para una operación determinada, debería ser como si ésta se estuviese ejecutando sola en la base de datos. Los efectos de la ejecución simultánea de las transacciones son invisibles para esta transacción, y los efectos de esta transacción son invisibles para los demás hasta que la transacción ha comprometido su trabajo.

Durabilidad

Una vez que se confirma una transacción y sus efectos, se garantiza que persista incluso en el caso de fallos posteriores del sistema. Hasta antes de que se confirme la transacción, los cambios realizados por esa transacción no son durables, y no persisten en la cara de un fallo del sistema, al recuperarse de un fallo se deshacen las inconsistencias provocas por la ejecución no terminada de la transaccion.

La simplicidad de las transacciones ACID es especialmente importante en un entorno de base de datos distribuida, donde las transacciones se realizan de forma simultánea.

Instalación de Java 5 (paso a paso)

miércoles, junio 8th, 2011

Primero, Java esta en al menos dos versiones: JRE (Java Runtime Enviroment) y el JDK (Java Development Kit). La versión JDK es la que se utiliza para desarrollar, esta contiene todo Java, más los programas de línea de mando utilizados para compilar los archivos *.java. El JRE en cambio, es para cuando se tiene el programa terminado y se desea distribuir, sólo es necesario, en el computador del usuario, instalar el JRE, que tiene lo suficiente para la ejecución (sólo ejecución).

Segundo, aquí se va a mostrar la instalación de Java 5, que hoy no esta disponible para descarga, para poder descargarlo debes ir a «previous release» en la página de descarga de Java.

Estando en esta pagina, puedes descargar cualquiera de las versiones antiguas de java, entre ellas Java 5.

Luego de la descarga ejecutas el instalador, en primera instancia se preparará para la ejecución

Te pide aceptar la licencia…

Y luego te pide seleccionar los productos y la carpeta de instalación…

IMPORTANTE: Según el método de trabajo que tengo, la carpeta de instalación de programas como java 5 sería C:\opt\java5, esto lo configuro en este momento…

Luego el instalador instala los archivos…

Cuando todo esta terminado, solo finalizas…

Previo a un curso o capacitación

jueves, agosto 26th, 2010

Antes de comenzar un curso de capacitación o universitario me gusta hacer un par de advertencias necesarias y utiles para el buen transcurso de las clases venideras, mencionar al menos dos cosas: hablar del primer beso y saber porque ciertos buses interurbanos salen exactamente a la hora.

El primer beso

Antes de que dieras tu primer beso, todo es teoría: «te duele el estómago», «sientes mariposas», «es un asco!» y quizas cuantas cosas más te contaron los mas experimentados. Pero realmente ¿cuando sentiste que significaba el primer beso?… exactamente en el momento que lo diste, antes de eso eran solo palabras… teorías que a lo mejor ni siquiera se acercaron a lo que tu sentiste en ese momento.

Por lo mismo lamento decir que yo no enseño nada, por que el aprendizaje no existe detrás de las palabras, existe detrás de la experiencia, y eso es algo que trato de forzar pero no la entrego, y por mucho que yo pueda hablar horas y horas nada de ello existira hasta que lo hagas. Por lo mismo la asistencia a mis clases tiene sentido unicamente y exclusivamente hasta que lo hagas, hasta ese punto no existe, nada se puede discutir, mi verdad será la única verdad, y una persona que no pueda discutir no existe, una persona que no pueda revatir no existe.

Si alguien preguntara, filosoficamente hablando, cuantas ideas tiene un libro… puedo responder: ninguna. El libro solo son palabras, buenas o malas, no lo sé… sólo depende quien lo lea: un dictador puede pensar que un libro va en contra de su ideología, pero otra puede sólo pensar en la belleza de lo que describe, ¿porque? porque las ideas las creas tu, las palabras solo estan escritas las ideas surgen de ti.

Buses interurbanos puntuales

Es raro que los buses salgan a la hora, sobre todo en mi país, pero tengo la suerte de viajar en uno que siempre sale a la hora, por lo mismo dije: «esta línea (de buses) es buena»… pero en ese afán de analizar todo me di cuenta de una cosa: todos los pasajeros llegabamos antes de que el bus saliera, ¿entonces? la linea es buena o yo en conjunto con un grupo de personas creamos las condiciones para que el bus salga a la hora.

Mi reflexión va en esa dirección, los cursos que catalogué de buenos o malos ¿lo eran? o yo cree las condiciones junto a un conjunto de personas para que lo fueran. Lo siento, pero otra vez tengo que decirlo: yo no hago buenos cursos, los cursos son un conjunto de personas que crean las condiciones para que el curso sea bueno, eres participe desde el comienzo.

Conclusiones

Es frustrante decirlo a priori pero mi conclusión es: no enseño nada y no hago buenos cursos.

Y pese a que esto esta en mi contra debo defenderme con algo: tengo conocimiento, tengo experiencia y tengo la capacidad de crear las condiciones necesarias para que salgan a la hora a dar su primer beso.