Está en la página 1de 7

BUENAS PRACTICAS EN DESARROLLO DE SOFTWARE

APUNTES DE UNA EXPERIENCIA

Contenido
Una metodologa para el desarrollo de software debe ser un instrumento que permita gestionar un proceso dado, existen hoy en da diferentes metodologas las cuales no son en forma absoluta comparable, es decir, no existe en forma absoluta una metodologa mejor a otra sino que la metodologa debe estar alineadas a la cultura de la organizacin, tamao y complejidad del proyecto, as como al ciclo de vida del producto que pretende desarrollar. En el presente documento se explica muy brevemente los aspectos que involucra el proceso de desarrollo de software y la metodologa adoptada, a partir de un proyecto particular, ante determinadas condiciones y cultura de la organizacin. Contenido ........................................................................................ 1 Introduccin al desarrollo de Software ............................................ 2 Metodologa para Proyectos de Desarrollo de Software ................... 3 Necesidades planteadas ............................................................... 3 Metodologa adoptada .................................................................. 4 Ciclo de vida ................................................................................. 6 Caractersticas que posee la metodologa ..................................... 7

Pgina 1 de 7

Introduccin al desarrollo de Software


Existen distintos tipos de software, desde software embebido en hardware, sistemas operativos, compiladores, etc. Sin querer generar una clasificacin, el presente documento se enfoca en el desarrollo de software de aplicacin. Consideremos como software de aplicacin aquel que permite a los usuarios llevar a cabo una o varias tareas especficas, en cualquier campo de actividad susceptible de ser automatizado o asistido1. Igualmente muchos principios y lineamientos aqu expuestos son aplicables a otros tipos de software. La construccin del software puede involucrar elementos de una gran complejidad, lo que en muchos casos no es tan evidente. Las potencialidades existentes en lo que respecta a las tecnologas de informacin y comunicacin han potenciado que se puedan construir soluciones para atacar problemas cada vez ms complejos. La complejidad inherente a cualquier desarrollo de software generalmente esta asociada a los siguientes aspectos: Complejidad del dominio del problema: cuando se va a desarrollar un software para un dominio especfico se debe lograr entender el problema, conceptualizando el mismo y realizando las abstracciones necesarias. Dentro de esta actividad se debe poder obtener los requisitos para la construccin del software. La elicitacin de estos requisitos genera un gran desafo; en general los mismos estn en permanente competencia entre ellos y en muchos casos son opuestos. A su vez existe una dificultad en poder lograr que los usuarios de la futura aplicacin puedan exponer en forma clara sus necesidades. Dinmica de las personas: Por otro lado existe una situacin que es constante en cualquier proceso, el cambio. Ya sea por la dinmica de la problemtica o la mejor comprensin por parte de las parte de la solucin necesaria, el cambio es un elemento presente en cualquier proceso de desarrollo. Este genera nuevas necesidades que deben ser atendidas en una forma adecuada. Gestin de los equipos: al tratarse de problemticas complejas es requerido poder coordinar el trabajo de los miembros del equipo del proyecto. Al aumentar la complejidad del proyecto se requiere en muchos casos de disponer de mayores recursos por lo que su gestin y coordinacin es una problemtica a atender. La complejidad tecnolgica: la tecnologa posee una dinmica no igualable en otras reas de trabajo. El hecho de generar cdigo, aplicar los mejores patrones de diseo, herramientas para la generacin de cdigo, utilizar tecnologa actual pero testeada, son aspectos que deben ser considerados durante el proceso de desarrollo. A su vez hay un aspectos muy importante a considerar,

http://es.wikipedia.org/wiki/Software

Pgina 2 de 7

estas tecnologas aplicadas deben estar alineadas a satisfacer las necesidades (requisitos) especficos del dominio. La dificultad propia del desarrollo de software, y su impacto en el negocio, han puesto de manifiesto las ventajas y en muchos casos la necesidad de aplicar una metodologa formal para llevar a cabo los proyectos de este tipo. El objetivo es convertir el desarrollo de software en un proceso formal, con resultados predecibles, que permitan obtener un producto final de alta calidad, que satisfaga las necesidades y expectativas del cliente. Atrs dejamos el modo de trabajar artesanal, que a menudo requiere de esfuerzos heroicos para llegar a buen puerto, con los consecuentes desfases de fechas y coste, y el ms que probable desgaste personal del equipo de proyecto2. El proceso formal para la construccin de un producto de software requiere llevar adelante las siguientes actividades: Anlisis y especificacin de los requisitos: Extraer los requisitos de un producto de software es la primera etapa para crearlo. Diseo y arquitectura de la solucin: Se refiere a determinar como funcionar de forma general. Consiste en incorporar consideraciones de la implementacin tecnolgica. Programacin: en base al diseo propuesto realizar la codificacin para satisfacer los requisitos de la solucin. Prueba: Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificacin del problema. En la actualidad existen numerosos estndares y metodologas en los cuales nos podemos basar y que explicitan las consideraciones a tener en su implementacin. Independientemente del marco, modelo o estndar elegido como referencia, la implantacin de una metodologa de desarrollo de software en una organizacin plantea diversos retos.

Metodologa para Proyectos de Desarrollo de Software


Necesidades planteadas
Dada las caractersticas de los proyectos que se desarrollan donde los mismos son de innovacin tecnolgica en reas donde el uso de las tecnologas de la informacin y las comunicaciones no son ampliamente utilizadas. Se requiri disponer de una metodologa que permita: Adaptar el proceso: El proceso de construccin de la solucin deba adaptarse a las caractersticas propias del proyecto y de la organizacin. El tamao de cada proyecto, su tipo y las regulaciones que lo condicionen, influyen.
2

http://www.tecsisa.com/index.igw?item=1619

Pgina 3 de 7

Equilibrar prioridades: Los requerimientos de los diversos participantes pueden ser diferentes, contradictorios o disputarse recursos limitados. La metodologa debe permitir realizar una adecuada gestin de los requerimientos que permita encontrar un equilibrio que satisfaga los deseos de todos. Gracias a este equilibrio se podrn gestionar los desacuerdos que surjan en el futuro. Elevar el nivel de abstraccin: Este principio motiva el uso de conceptos reutilizables. Esto evita que los ingenieros de software vayan directamente de los requisitos a la codificacin de software a la medida del cliente, sin saber con certeza qu codificar para satisfacer de la mejor manera los requerimientos. Un alto nivel de abstraccin tambin permite discusiones sobre diversos niveles y soluciones arquitectnicas. Generar entregas tempranas: la metodologa debe contemplar la gestin de iteraciones. Las cuales una vez finalizada deben permitir evaluar la opinin de los interesados, la estabilidad y calidad del producto, y realizar los ajustes que se consideren necesarios en la direccin del proyecto as como tambin de los riesgos involucrados. Enfocarse en la calidad: El control de calidad debe estar presente en todos los aspectos de la produccin del producto. El aseguramiento de la calidad debe ser parte del proceso de desarrollo y no de encontrase en forma independiente.

Metodologa adoptada
En base a estas necesidades se evaluaron distintas alternativas optando por la utilizacin y adaptacin del Proceso Unificado de Rational (Rational Unified Process RUP). Este es un proceso de desarrollo de software y que junto con el Lenguaje Unificado de Modelado UML, constituye una metodologa estndar para el anlisis, implementacin y documentacin de sistemas orientados a objetos. Esta metodologa fue adaptada a las caractersticas de la organizacin y se realizan ajustes en base a las caractersticas especficas de cada proyecto. El conjunto de disciplinas bsico utilizado contempla: Gestin de requerimientos: se defini un plan de gestin de requerimientos que contempla: o realizacin de reuniones y entrevistas (preliminares y especficas) que son documentadas, o confeccin de un documento de visin a partir del proyecto base, ajustando y precisando las necesidades de alto nivel en base a lo relevado en las reuniones preliminares. Se focaliza en las necesidades de los stakeholders y los usuarios finales y en porque esas necesidades existen. o Realizar el anlisis detallado, profundizando en cada una de las caractersticas obteniendo los requerimientos funcionales y no funcionales que deben ser atendidos.

Pgina 4 de 7

Confeccionar un glosario: dada la necesidad de trabajar en forma interdisciplinaria en prcticamente todo los proyectos es de vital importancia confeccionar un glosario o diccionario que permita unificar el lenguaje a utilizar en la ejecucin del proyecto. Este glosario se realiza con la tcnica de Lxico extendido del Lenguaje. o Confeccin del diagrama de casos de uso y determinacin de los casos de uso: a travs del conocimiento de los requerimientos funcionales comenzar la construccin del diagrama de casos de uso, determinacin de actores del sistema y definir los atributos necesario que permitan ser utilizados para estimar el esfuerzo para la construccin de la solucin. Anlisis: a partir del diagrama de caso de usos confeccionado se comienza el refinamiento y especificacin de cada uno. Se ajustan y revisan los atributos para cada uno de los casos de uso. Se confeccionan el modelo de datos preliminar definiendo las entidades y sus atributos. Diseo Preliminar: se construyen bocetos de interfaces de usuarios por grupos de interfaz y se define la arquitectura del sistema. Diseo Detallado: Esta actividad se basa en el diseo detallado de las clases y componentes como as tambin sus relaciones y dependencias. En esta actividad se contempla la construccin del Modelo de Clases, Modelo de iteracin, interfaces del sistema, transiciones de Estados, diagramas de actividad. Los modelos y artefactos a construir como as tambin el nivel de detalle dependen de cada uno de los proyectos. Diseo de casos de prueba: se confeccionan los casos de prueba en base a la estrategia de testeo definida para el proyecto. Implementacin: construir la solucin requerida para el proyecto. Ejecucin de las pruebas: se ejecutan cada uno de los casos de prueba diseados con el objetivo de lograr una ejecucin ordenada y coherente a los objetivos del proyecto logrando un producto de acuerdo a las necesidades planteadas. Gestin de los cambios: esta disciplina esta muy relacionada con la gestin de requerimientos y el objetivo es permitir evaluar los cambios y defectos de manera que permita conocer cual es el impacto que tienen los mismos sobre el proyecto y derivar en una evaluacin del costo del mismo, la cual permita planificarlo o descartarlo segn sea el caso. o

Pgina 5 de 7

Ciclo de vida
La metodologa adaptada contempla las siguientes disciplinas y fases:

Por cada una de las 4 fases se definen la cantidad de iteraciones en base a la particularidad del proyecto. Se suele utilizar una iteracin en la fase de Inicio y de Elaboracin, varias iteraciones de construccin y transicin. En la Figura se muestra cmo vara el esfuerzo asociado a las disciplinas segn la fase en la que se encuentre el proyecto. Durante la fase de inicio las iteraciones hacen mayor nfasis en actividades relacionadas a los requerimientos. En la fase de elaboracin, las iteraciones se orientan al desarrollo de la lnea base de la arquitectura, abarcan ms los flujos de trabajo de refinamiento de los requerimientos, anlisis, diseo y una parte de implementacin orientado a la lnea base de la arquitectura. En la fase de construccin, se lleva a cabo la construccin del producto por medio de una serie de iteraciones. Para cada iteracin se selecciona algunos Casos de Uso, se refina su anlisis y diseo y se procede a su implementacin y pruebas. Se realiza una pequea cascada para cada ciclo. Se realizan tantas iteraciones hasta que se termine la implementacin de la nueva versin del producto. En la fase de transicin se pretende garantizar que se tiene un producto preparado para su entrega a la comunidad de usuarios.

Pgina 6 de 7

Como se puede observar en cada fase participan todas las disciplinas, pero que dependiendo de la fase el esfuerzo dedicado a una disciplina vara.

Caractersticas que posee la metodologa


Forma disciplinada de asignar tareas y responsabilidades (quin hace qu, cundo y cmo) Pretende implementar las mejores prcticas en Ingeniera de Software Desarrollo iterativo Administracin de requisitos Uso de arquitectura basada en componentes Control de cambios Modelado visual del software Verificacin de la calidad del software

A su vez la misma se caracteriza por ser iterativo e incremental, estar centrado en la arquitectura y guiado por los casos de uso.

Pgina 7 de 7

También podría gustarte