Sei sulla pagina 1di 7

Pgina 1 de 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 2 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 asistido
1
.
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,

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


Pgina 3 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
proyecto
2
.

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 4 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 5 de 7
o 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.


Pgina 6 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 7 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.

Potrebbero piacerti anche