lunes, 9 de mayo de 2011

RUP - Proceso Racional Unificado

Buen día, para todos nuestros seguidores y visitantes, esta semana queremos hablar un poco acerca del proceso de desarrollo RUP (Proceso Racional Unificado).

RUP es un marco de trabajo que conduce el desarrollo de las aplicaciones en las organizaciones, proporcionando una gran cantidad de recursos para los analistas, desarrolladores, arquitectos, evaluadores y gerentes de proyecto. Aunque en algunas empresas ven al RUP como metodología grande y burocrática, otros la ven ligera y con un enfoque flexible para el desarrollo del software. Ambas perspectivas pueden ser correctas dependiendo del nivel de madurez en que se encuentre la organización, además de que el RUP permite es objeto de personalizar, extender y utilizar en una variedad de formas por cada cliente, lo que hace que está metología sea una de las mejores opciones a la hora de desarrollar aplicativos, y mejorar cada vez con la calidad del software que se ofrece.

Dentro de sus grandes capacidades, esta metodología permite asignar tareas y responsabilidades en una empresa de desarrollo (quién hace, cuándo y cómo), permitiendo así una buena gestión a lo largo del desarrollo de las aplicaciones, entonces, vemos como existen mas metodologías que nos serán de ayuda para mejorar la calidad del software si no lo proponemos.

Nuevamente viene la reflexión, y es para todos los que desarrollan, llamesen empresas o personas, ¿Cual es el temor a no utilizar buenas practicas?, si vemos que son adaptables a nuestras necesidades, acá lo realmente interesante es poderlo adaptar a nuestras necesidades y sin duda alguna, con buenas practicas se desarrollará software de mejor calidad, que implica clientes mas satisfechos y una mejor industria.

Hasta Pronto!

martes, 26 de abril de 2011

Metricas del Software

En cuanto a proyectos se refiere, establecer métricas para ver el estado del proyecto es supremamente importante. Es de gran importancia cuantificar criterios en un proyecto de tal manera que nos permita establecer tamaño, precios, estado, esfuerzo requerido entre otros.  Los proyectos de software no son completamente indiferentes a las métricas debido al grado de complejidad que estos representan. Es importante conocer varios criterios en el software y cuantificarlos como el costo, el esfuerzo, el tiempo requerido, la calidad entre otros.
 

Una métrica ampliamente aceptada y estandarizada es la de punto función. Esta métrica surge en IBM en los años 70 y tienen como principal criterio medir el tamaño de un proyecto, del cual también puede deducirse  su costo y esfuerzo requerido.  Actualmente existen diferentes versiones y se encuentra normalizada por la ISO, sin embargo el concepto base es asignar cierta cantidad de puntos a cada aplicación y esta depende de la complejidad que maneja dicha aplicación y los procesos que soporta. Establecer métricas avanzadas en los proyectos software es un tema controversial ya que como todas las prácticas de control, agregan complejidad al proyecto e incrementan los costos. Sin embargo para obtener un buen control y establecer acciones sobre los proyectos, es altamente importante establecer métricas.

Referencias

http://www.ifpug.org/ 
http://en.wikipedia.org/wiki/Software_metric
http://www.codeproject.com/KB/architecture/Calculate_Function_Point.aspx

lunes, 11 de abril de 2011

Calidad del Software con un Experto

Hoy queremos compartir con Uds. una serie de videos de una persona experta en el tema, que nos permitirá produnfizar en temas que hemos venido tratando durante el desarrollo de los posts.:

Enlace







Es importante aclarar que no apoyamos a ningún proveedor específico, solo prentendemos que por medio de expertos podamos profundizar el conocimiento acerca de la Calidad del Software que hoy en día se convierte en un tema crítico que requiere de prontas acciones, para desarrollar una mejor industria.

Esperamos les guste... hasta la próxima semana!!!

domingo, 3 de abril de 2011

SOA y SEI

El software es áltamente dinámico por lo que cada día se realizan investigaciones y se publican artículos técnicos en donde surgen nuevas tendencias en cuanto modelos arquitectónicos de sofware que prometen revolucionar la construcción y diseño de software.  Una de esas tendencias son las arquitecturas orientadas por servicios (SOA), la cual permite a las organizaciones incrementar la interoperabilidad y agilidad de sus sistemas sin perder la inversión que han hecho en sistemas antiguos o heredados (legacy) y muchas otras ventajas. 


Sin embargo el cambio constante en los modos de construir aplicaciones tambien genera riesgo, debido a que factores como la experiencia y la complejidad influyen en los costos, y las malas decisiones pueden conllevar a grandes costos y la perdida de ventajas competitivas. Es por tal razón que SEI tambien tiene en cuenta los cambios o tendencias relacionadas al software y sobre todo en su calidad. Para el caso de SOA, SEI ofrece un programa profesional de certificación para arquitectos en software o ingenieros de software, en el cual aporta sus buenas prácticas con el objetivo de proporcionar las herramientas necesarias para que las empresas utilizen SOA de manera efectiva y eficiente. 

La corta periocidad con que aparecen las tendencias pueden jugar a favor o en contra, sin embargo es bueno documentarse, vivir de las experiencias y bueno en cuanto a Software nos referimos SEI siempre esta a la vanguardía proporcionando toda su experiencia y capacidades.

Si quieren más información pueden encontrarla en el siguiente link


Hasta la próxima Semana.


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!.



lunes, 28 de febrero de 2011

Iniciando con el proceso de calificación CMMi

Esta semana considero importante hablar acerca de como iniciar con el proceso de calificación del CMMi, a partir del método que ofrece el SEI - Software Engineering Institute denominada SCAMPI -Standard CMMI Appraisal Method for Process Improvement) o simplemente en español, Método Estándar de Evaluación CMMI para mejora de procesos, y así, empezar a concientizar a los empresarios de la industria del SW para crear de esta un sector importante en el país.
SCAMPI es un método de evaluación y NO de certificación que determina el nivel de madurez o capacidad, que ha alcanzado una organización que aplica CMMi en sus proceso, permitiéndole identificar fortalezas y oportunidades de mejora, así como las prioridades para las acciones de mejora.
Con el SCAMPI se pueden obtener 3 tipos/clases de evaluaciones:(http://www.sei.cmu.edu/cmmi/tools/appraisals/classes.cfm):
SCAMPI Clase A: El método más amplio, con mayor despliegue y es el único que puede proporcionar un nivel de madurez o perfil de la capacidad. Adicional a ello debe ser liderado por un SCAMPI Leader Appraiser autorizado por el SEI.
Para obtener información de los Leader Appraiser lo pueden hacer mediante el siguiente link: http://www.sei.cmu.edu/partners/directory/organization/
SCAMPI Clase B: Es menos riguroso que el anterior, y ocasionalmente mas económico. Se utiliza como evaluación inicial o parcial, enfocado en las áreas que requieren atención. Para este caso no se requiere de un Lead Appraiser.
SCAMPI Clase C: Es el más sencillo, económico y requiere una capacitación menor, ya que se enfoca en áreas de interés o de mayor riesgo en la organización
Entonces, respetadísimos profesionales del software (empresas y/o personas), dediquen tiempo e inviertan dinero para hacer cada día más de la industria del SW una industria de calidad, una industria que no maltrata más a sus clientes, si no por el contrario se conviertan en socios tecnológicos confiables y empecemos a cambiar la imagen que tanto se ha maltratado en nuestro país...
Espero hoy haberles dejado un llamado a crear cosas innovadoras y funcionales basadas en la calidad de nuestros procesos y gente...
Cualquier duda o comentario no duden en formularlo, estaré pendiente de colaborarles...
Buena Semana... y no olviden la calidad de nuestros productos, hacen cada día de la industria una industria de talla mundial...

domingo, 20 de febrero de 2011

Panorama del Software en Colombia

En la publicación de esta semana quiero contextualizar el panorama del software colombiano. Aunque en mi experiencia no puedo dar una descripción amplia (Aun estoy en pregrado), quisiera compartir la opinión sobre la industria del software de manos corporación Colombia Digital (Vea aquí el artículo).

Lo que encontré no es desalentador, bueno considerando la imagen que yo tenía y la que expuse en el video por medio de la frase "Es que esta caído el sistema". Sin embargo aún nos hace falta para que la industria del software sea representativa en el mercado y aporte de manera contundente el PIB.

Según Colombia Digital en un artículo quizás no tan reciente pero significativo, la industria del software tiene el potencial de convertirse en un sector importante en el país, pero nos vemos frenados en enfrentar la dura competencia por aspectos que ya no depende de las empresas sino del país y es la posición que este tenga sobre las TICs. Pero en mi opinión creo que es más responsabilidad de las empresas.

Para que la industria del software sea significativa y competitiva en nuestro país, nuestro software debe reflejar una buena calidad e imagen. Si esto se logra esto será foco de inversión y apoyo tanto del gobierno como inversionistas independientes. 

Ya en cuanto al estado de nuestros productos no puedo dar mucha opinión con mi  experiencia pero observando las empresas que se certifican o se evalúan en la calidad del software sólo 16 empresas han sido evaluadas en CCMI  y sólo 2 tienen el nivel de madurez más alto (Vea aqui cuales). Creo que aún nos falta más y que la preocupación sobre la calidad debería ser una prioridad al igual que buscar las tendencias del mercado.

Y ustedes qué opinan?, los invito a que hagan parte de este tema ya sea por referencia o experiencia.

Hasta la próxima semana.



lunes, 7 de febrero de 2011

¿Qué tan madura es nuestra forma de desarrollar software ?

Esta semana enfatizaremos en una de las formas de medir la calidad en los procesos de desarrollo de software y es la que considera el CMMi con los niveles de madurez.


Como podemos apreciar en la imagen, el modelo CMMi en su versión 1.3 puede medir la madurez en forma tangible clasificandola en 5 niveles. A medida de que se cuente con prácticas mas elaboradas se escala su nivel. Este modelo en sí permite evaluar la forma en que se desarrolla el software y determinar formas en la que los procesos de desarrollo pueden ser mejorados hasta un nivel óptimo y todo esto claro basado en la experiencia.

Por el momento nos enfocaremos en el primer nivel de madurez el cual es conocido como inicial o de caja negra. Al conocer los niveles de madurez establecidos en el modelo de CMMi, no pude evitar sentirme identificado en el primer nivel (claro refiriendome a la forma en la que desarrollo software). Y es precisamente en este nivel en el que se carece de control y enfoque, dirigiendo todo el esfuerzo a que el programa trabaje (si se cuenta con suerte).



Su nombre de caja negra se debe a que el producto o sistema software es resultado de un proceso amorfo, el cual suele ser inestable.  Aunque los objetivos especificos son cumplidos (El producto cumple su función), conceptos como la planeación , monitoreo o control del proceso suelen ser desapercibidos.

"Pero bueno el programa funciona"...

Puede que el programa funcione pero su proceso es ineficiente y esto puede desencadenar los costos de desarrollo. La planeacion puede resultar demorada ya que se basa en la experiencia personal, el control esta limitado a pruebas o depuración y la administración es un total enigma.

Asi que si estas características son como un deja vú de su trabajo, es posible que su software no sea confiable y no refleje cierta calidad. Por tal razón es conveniente observar los otros niveles de madurez los cuales tendremos en cuenta en próximas publicaciones, y a la vez evaluar el proceso de desarrollo que utilizamos identificando conscientemente el nivel de madurez y enfocar la mejora de este.

lunes, 31 de enero de 2011

Conociendo CMMi

Esta semana daremos inicio al tema mencionando uno de los modelo de madurez creado por el SEI – Software Engineering Institute-, instituto administrado por la Universidad de Carnegie Mellon, en especial hablaremos del CMMi – Capability Maturity Model Integration -, hasta el día de hoy se conoce tres versiones de este modelo, para este blog en especial nos enfocaremos en la versión 1.3.
Pero entonces, ¿qué es CMMi?

CMMi es un modelo para la mejora de procesos que proporciona a las organizaciones los elementos esenciales para construir procesos eficaces, ayudando así a las organizaciones en aspecto como:
- Establecer objetivos de mejora de procesos y prioridades.
- Proporcionar orientación para los procesos de calidad
- Proporcionar un marco de trabajo para evaluar las prácticas actuales.

Igualmente es importante resaltar que podemos 
encontrar de dos formas la representación de CMMi:


Escalonada: Madurez de la Organización: Proporciona mapa pre-definidos de trabajo para la mejora de procesos basado en un grupo probado y ordenado de las capacidades de proceso, de igual manera, se utiliza para evaluaciones y mejora de procesos.






Continua: Capacidad de procesos, es utilizada para elegir en qué procesos hacer hincapié para mejorar un área de proceso determinado (ejm, Administración de Riesgos), y por ultimo, se utiliza para la mejora del proceso y evaluaciones.
Antes de iniciar con la descripción{on de cada una de estas fases debemos dejar claros algunas definiciones, que mas adelante será del interés de todos uds:



Capacidad de Proceso: La medida en que un proceso está explícitamente documentado, gestionado, medido, controlado, y continuamente mejorado.
Capacidad de proceso asociado con los metodos estadisticos y de los niveles 4 y 5 de CMM y CMMi – la medida en que un proceso es estadisticamente capaz de responder a sus especificaciones.
Madurez en la organización : La madurez de la organizaion es representada por la capacidad combinada de un conjunto de procesos.
Dearrollo: Implica no solo las actividades de desarrollo, tambien las actividades de mantenimiento.
Es así, entonces como iniciaremos nuestro tema de discusión, en proximos posts propuestos por los creadores de este blog, haremos referencia a cada una de las fases del modelo CMM.

domingo, 23 de enero de 2011

Sobre la Calidad del Software



Hoy en día no existe duda que el uso de software es parte de nuestro diario vivir y que sus aportes y beneficios a nuestra sociedad no son cuestionables. Pero a su vez también no hay duda que el software no es perfecto y que muchos de nosotros hemos presenciado (por no decir sufrido) muchos de sus errores que en la mayoría de los casos puede ser desesperantes.

Dado lo anterior y la creciente necesidad de software en nuestra sociedad, ha surgido la preocupación acerca de la calidad de este. La mala calidad en el software como hemos mencionado anteriormente ha causado más que molestias, y dado la abundancia con el que el software está presente en la vida diaria es casi que intolerable la presencia de fallas.

Por tal razón diversas empresas y organizaciones han dedicado esfuerzos para generar software de calidad, y como resultado de ese esfuerzo han resultado buenas prácticas, normativas o certificaciones que apoyan y fomentan la calidad del software en muchos aspectos desde sus requisitos funcionales hasta la evaluación de su desarrollo, confiabilidad y conformidad.

En las siguientes publicaciones hablaremos sobre las diferentes normativas, certificaciones, metodologías y noticias acerca de los esfuerzos relacionados sobre la calidad del software.