lunes, 28 de marzo de 2011

ISO/IEC 9126

Buen día para todos, ya en post anteriores hemos expuesto a todos ustedes algunos estándares internacionales como lo son los del SEI desde sus diferentes puntos de vista (Empresa, Equipo de Trabajo y Personal), en esta ocasión queremos darles a conocer lo que ha propuesta una de las organizaciones mas prestigiosa en cuanto a estándares en el mundo como lo es la ISO (International Organization for Standardization), mas específicamente hablaremos del estándar ISO/IEC 9126.

La ISO, en su norma ISO/IEC 9126, ha dictado un estándar internacional para la evaluación de la calidad de productos de software publicado en 1991, que establece las características de calidad para productos de software, y partiendo del hecho que cualquier componente de la calidad del software puede ser descrito en términos de una o más características básicas, las cuales son: funcionalidad, confiabilidad, usabilidad, eficiencia, mantenibilidad y portabilidad; cada una de estas detalladas por un subconjunto de subcaracterísticas que permiten profundizar en la evaluación de la calidad de los productos del software.

Como lo hemos visto durante todo el desarrollo de este blog, existen un sin numero de estándares para empezar a hacer la revisión de los procesos del desarrollo del software, pero acá lo realmente importante es ver cual se adapta mejor a nuestra empresa ya sea por el tamaño o por el tiempo que pueda requerir uno o el otro en ser maduro, y empezar con este proceso, creando así valor y confianza en una industria que ha sido maltratada en varios lugares del mundo, debido a entregas de productos poco estables a los clientes.

Esperamos sea de su agrado y despierte en Uds. El interés de crear software de calidad y tener cada día clientes mas satisfechos y una industria en la que solo de hable de sus bondades…

Hasta pronto…

lunes, 21 de marzo de 2011

Personal Software Process

Como mencionamos en nuestro post pasado, el trabajo en equipo es fundamental en el desarrollo de software y no es fácil de lograrlo. Las diferencias individuales son un problema en el trabajo en equipo, y el tratar de solucionarlas conllevan por lo general a perder tiempo valioso de trabajo.  En cuanto a lo que nos concierne en este blog (La Calidad del software), algo que entorpezca el proceso de desarrollo, influye directamente en la calidad del software producido y como el objetivo es garantizar la calidad en el software, el trabajo en equipo es un tema a considerar. CMMi considera estos aspectos con los procesos de desarrollo tanto personal como en equipo. Nos enfocaremos por ahora en el proceso de desarrollo personal (PSP), ya que para lograr un trabajo en equipo de manera unificada, se debe considerar en primer lugar las prácticas de cada uno de los integrantes del equipo con el fin de evitar diferencias individuales y optimizar el proceso de desarrollo. Pero entonces, ¿Qué es PSP?.



PSP (Personal Software Process), es un conjunto de prácticas orientadas a la mejora contínua de las habilidades de los desarrolladores a nivel individual. Fue planteado a principios de los años 90 por Watts Humphrey con el objetivo de mejorar las habilidades de los estudiantes y alinearlas al modelo CMMi. En él, se busca mediante una serie de pasos y niveles de madurez, hacer énfasis en cuanto a la planeación, medición, seguimiento y por supuesto la calidad del desarrollo personal.  Ya en cuanto a ventajas, PSP permite que el desarrollo se realice mediante un enfoque estructurado y disciplinado. Si de manera personal logramos buenos resultados, a manera de equipo el resultado sera mejor. 

Si nuestra manera de desarrollar o nuestras prácticas en cuanto a la programación de tareas individuales como módulos o segmentos de aplicación no son las óptimas, PSP nos puede dar las guías para lograr  mejores resultados. Cabe resaltar que este enfoque disciplinado, no tiene en cuenta los factores creativos los cuales pueden representar ventajas competitivas. Sin embargo, PSP tiene la fama de ser algo tedioso debido a la cantidad de datos que se deben tomar que al nivel  personal pueden ser algo excesivo. Es ahí donde muchos discuten si demasiado control también puede dificultar las tareas. ¿Creen ustedes que la estricta disciplina y control es siempre necesaria? o que esta dificulta el desarrollo en cuanto al nivel personal.

Hasta la próxima semana.





lunes, 14 de marzo de 2011

De la Unidad al Equipo

Aunque cuando aprendemos a programar en cierta manera nos toca trabajar solos, en la práctica el desarrollo software requiere de más de una persona para lograr un producto de calidad aceptable. Y es precisamente el trabajo en equipo una de las tareas más complicadas en lograr,  no solo en el desarrollo de software sino en todas las actividades en las que nuestras tareas requieren de trabajo conjunto. Es posible tener un equipo de desarrolladores talentosos e innovadores, pero si existen contundentes diferencias entre ellos y el trabajo en equipo no es armonioso, el equipo es todo un fracaso.  



Como en el proceso de desarrollo, la principal maquinaria por decirlo así es el equipo de desarrollo; el trabajo en equipo influye directamente en la calidad del producto. Para ello el modelo de madurez CMMi también tiene en cuenta el equipo y el desarrollador. Ya sea de manera individual mediante los procesos tanto personales (PSP) y en equipo (TSP), CMMi nos aporta un conjunto de prácticas que nos ayudan a superar el gran problema de lograr un buen trabajo en equipo. Aunque en la práctica no podamos escoger con quién trabajemos, sin duda este conjunto de prácticas de las que enfatizaremos más adelante nos colaboran a lograr  un buen trabajo y por tanto un buen producto. ¿Creen que un conjunto de buenas prácticas logren solucionar el trabajo en equipo?. Sin duda esto no aplica para todos los casos de trabajo colaborativo, pero sin duda en el desarrollo de software es vital lograr coordinar un gran número de personas y evitar que las diferencias individuales sea un obstáculo en  el proceso.

Hasta la próxima semana.

viernes, 4 de marzo de 2011

Testing as a Service

En gran parte de las metodologías por no decir que todas, las pruebas es un concepto fundamental en el cual se puede determinar la funcionalidad y calidad del software producido. Esta labor requiere de la evaluación de múltiples escenarios y casos de uso, de tal manera que se pueda probar que el software producido actúe de manera adecuada ante cualquier circunstancia y también que el software no ignore escenarios que se pudieron pasar por alto durante el desarrollo. 

Este proceso es complejo y costoso, elaborar pruebas requiere diseño de múltiples escenarios y gran esfuerzo en planeación y ejecución. En el desarrollo de software, la elaboración de pruebas es una de las tareas que requiere más esfuerzo y por tanto presupuesto. También el diseño de muy buenas pruebas radica mucho en la experiencia en la consideración de escenarios. Aunque existen frameworks y automatización de pruebas, esta tarea sigue siendo de gran dificultad y esfuerzo, por eso aprovechando la gran acogida de los servicios por demanda surgió Testing as a Service.

Este nuevo servicio , permite tercerizar el proceso de pruebas a compañías que tenga especialidad, aportando mediante su experiencia y laboratorios especializados, pruebas contundentes y robustas simplificando el proceso de desarrollo, disminuyendo costos y tiempo. 

Ya en cuanto al rol del desarrollador o de las compañías de desarrollo, ¿Creen que un proceso determinante en la calidad como las pruebas deba ser tercerizado?

Ya por último quiero compartirles este video jocoso. Aunque no es relacionado con la calidad del software, si es sobre nuestro rubro. Espero que les guste y aclaro que la intención es de entretener y no de apoyar a una plataforma. Hasta la próxima semana!.