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.