Friday, May 26, 2006

Desarrollo de Software y Metodología Van-Mollen.Gándara

DESARROLLO DE SOFTWARE

El desarrollo de Software es la realización de un producto del mismo a la medida del cliente, aprovechando las capacidades del proveedor para generar una solución específica; entendiendo que el producto no es sólo una serie de código realizado en un lenguaje de programación, sino que también involucra: manuales (de usuario, técnicos y del sistema), ayudas en línea, software de apoyo, la documentación de diseño, el código, los planes de prueba, los programas ejecutables, la documentación de estándares seguidos, la propiedad sobre derechos de autor, la demás información extra que lo componga (bien sea en medio magnético o en forma impresa, tales como los datos).

Se considera desarrollo de Software en alguno de los siguientes dos casos:
* Construcción de una herramienta totalmente nueva cubriendo unas necesidades del cliente.
* Modificación o adaptación de una herramienta existente, de modo que se acomode a las necesidades del cliente.

Es común confundir el “Desarrollo” con el “Licenciamiento del Software”, en este último caso lo que el cliente compra es el derecho a utilizar un paquete ya implementado y que se ajusta a sus necesidades (por ejemplo comprar un producto de los existentes en el mercado como office, nomipaq, etc.). El primer caso, el de "Desarrollo", es un proceso mucho más complejo, debido a una serie de características y etapas propias que involucra este tipo de servicio informático.

Un sistema informático está compuesto por hardware y software. En cuanto al hardware, su producción se realiza sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad está claramente definida. La fiabilidad del hardware es, en principio, equiparable a la de cualquier otra máquina construida por el hombre. Sin embargo, respecto del software, su construcción y resultados han sido históricamente cuestionados debido a los problemas asociados, entre ellos podemos destacar los siguientes:
* Los sistemas no responden a las expectativas de los usuarios.
* Los programas “fallan” con cierta frecuencia.
* Los costos del software son difíciles de prever y normalmente superan las estimaciones.
* La modificación del software es una tarea difícil y costosa.
* El software se suele presentar fuera del plazo establecido y con menos prestaciones de las consideradas inicialmente.
* Normalmente, es difícil cambiar de entorno hardware usando el mismo software.
* El aprovechamiento óptimo de los recursos (personas, tiempo, dinero, herramientas, etc.) no suele cumplirse.

Según el Centro Experimental de Ingeniería de Software (CEIS), el estudio de mercado The Chaos Report realizado por Standish Group Internactional en 1996, concluyó que sólo un 16% de los proyectos de software son exitosos (terminan dentro de plazos y costos y cumplen los requerimientos acordados). Otro 53% sobrepasa costos y plazos y cumple parcialmente los requerimientos. El resto ni siquiera llega al término.

Algunas deficiencias comunes en el desarrollo de software son:
* Escasa o tardía validación con el cliente.
* Inadecuada gestión de los requisitos.
* No existe medición del proceso ni registro de datos históricos.
* Estimaciones imprevistas de plazos y costos.
* Excesiva e irracional presión en los plazos.
* Escaso o deficiente control en el progreso del proceso de desarrollo.
* No se hace gestión de riesgos formalmente.
* No se realiza un proceso formal de pruebas.
* No se realizan revisiones técnicas formales e inspecciones de código.

Cualquier disciplina de ingeniería (incluida la ingeniería del software) debe descansar sobre un esfuerzo de organización de calidad. La gestión total de la calidad y las filosofías similares fomentan una cultura continua de mejoras de procesos que conduce al desarrollo de enfoques cada vez más robustos para la ingeniería del software.
El fundamento de la ingeniería de software es el proceso. Este define un marco de trabajo para un conjunto de áreas clave, las cuales forman la base del control de gestión de proyectos de software y establecen el contexto en el cual: se aplican los métodos técnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente.
Un proceso de desarrollo de software tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido.
¿De los elementos intervinientes en el proceso de desarrollo de software cuál es más importante y por qué? Justifique su respuesta.
El proceso de ingeniería de software se define como "un conjunto de etapas parcialmente ordenadas con la intención de logra un objetivo, en este caso, la obtención de un producto de software de calidad". El proceso de desarrollo de software "es aquel en que las necesidades del usuario son traducidas en requerimientos de software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo". Concretamente "define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo".

El proceso de software se define cuando señalamos el orden de pasos y actividades que hay que realizar para desarrollar sistemas de software. Las definiciones más recientes tratan de incluir otros aspectos, especificando ¿qué hacer?, ¿cuáles pasos seguir?, ¿y quién debe hacerlos? Con esto introduce el concepto de diferentes roles, para el proceso de software, quienes se responsabilizan de la realización de las actividades. El proceso de software define el orden especificando el qué se va a hacer, el quién lo va a hacer y el cuándo se va a hacer. Otro aspecto importante dentro de la definición del proceso de software, es que establece criterios para poder decir cuándo hemos terminado una actividad y podemos empezar otra, así como criterios de terminación de actividades basados en el estado del producto que se ha desarrollado.

El proceso de desarrollo de software requiere por un lado un conjunto de conceptos, una metodología y un lenguaje propio. A este proceso también se le llama el ciclo de vida del software que comprende cuatro grandes fases: concepción, elaboración, construcción y transición. La concepción define el alcance del proyecto y desarrolla un caso de negocio. La elaboración define un plan del proyecto, especifica las características y fundamenta la arquitectura. La construcción crea el producto y la transición transfiere el producto a los usuarios.

Desde mi particular punto de vista, considero que los elementos o etapas que intervienen en el proceso de desarrollo de software, todos son importantes ya que uno es consecuencia del otro por lo que no se puede elegir uno sin tomar en cuenta los otros para su fin, puesto que todas tienen un objetivo bien definido, obtener un software de y con calidad; es decir, cada una de las etapas lleva asociada una serie de tareas que deben realizarse, y una serie de documentos (en sentido amplio: software) que serán la salida de cada una de las etapas y servirán de entrada en la etapa siguiente o en paralelo. Por ello debe hacerse una gestión adecuada para seguirles el rastro a lo largo de todo el ciclo de vida de desarrollo del software.

Buscando bases que me ayudaran a sustentar mi punto de vista en la Internet, así como diferentes autores de libros sobre el desarrollo de software como: Roger Pressman, Ian Sommerville, Eric Braude coinciden en que todas las etapas tienen un alto grado de importancia, es decir, si una etapa falla o esta mal planeada y ejecutada todo el proyecto se viene a bajo o se tienen consecuencias graves.

En conclusión el paso más importante aunque no esta ligado a los elementos que intervienen en el proceso de desarrollo es el de determinar si se justifica un nuevo desarrollo, por que si nuestro desarrollo no añade nada nuevo a lo ya existente, o si tampoco aprovecha las oportunidades especificas que tiene la computadora, como medio instrucional entonces será un caso más.


¿Cuáles son los elementos críticos a considerar en la metodología Van-Mollen-Gándara?
Primeramente mencionar que la técnica Van-Mollen-Gándara, es un proceso de planeación consistente en el empleo de mapas mentales que para planear, organizar y desarrollar un proyecto se basa en lluvias de ideas (mindmap) en la que se vierten características que tendrá el software y determinar los contenidos necesarios, presupuestos y calendarización de actividades. El tema principal se describe en el centro, los temas secundarios alrededor como ramas que parten del centro y en cada uno de esos temas, se anotan las ramificaciones necesarias y sucesivas para continuar de manera que las ideas queden agrupadas siguiendo un esquema definido.

Otro punto de esta metodología es lo relativo al equipo multidisciplinario que se requiere para el desarrollo, es importante mencionar que ello conlleva a un trabajo colaborativo, en donde cada uno de los que intervienen aportan sus conocimientos y experiencias para el logro de un fin particular, que habrá de enriquecer tanto a los que lo diseñaron como a los usuarios.

Elementos críticos del desarrollo de software:
* Identificación del problema y solución eficaz mediante computadora; leyes 1 y 2 de Gándara
* Elección de plataforma y herramientas
* Conformación de equipo de trabajo
* Prototipo y especificación
* Lineamientos de trabajo y resguardo
* Control de acervo (y derechos)
* Continuidad y aplicabilidad.


¿A quién debemos privilegiar, a la interacción o a la usabilidad? ¿Por qué?
En el ramo educativo estas dos palabras están estrechamente ligadas, esto es, para que un software sea usado por los alumnos -en las aulas de clases o laboratorio de computo- se requiere que sea interactivo, si no lo es, el alumno pierde con el tiempo el interés por utilizar el software, es decir, la interacción esta centrado en el aprendizaje, por lo tanto se privilegia a la interacción y a la usabilidad. Sin embargo, en el ramo industrial o comercial se privilegia más a la usabilidad, ya que esta se centra en las tareas que realiza el usuario para obtener un resultado o resolver una problemática, es decir, incrementar su propia productividad.

Podemos definir la usabilidad como la medida en la cual un producto puede ser usado por usuarios específicos para conseguir objetivos específicos con efectividad, eficiencia y satisfacción en un contexto de uso especificado.
La usabilidad, hace referencia, a la rapidez y facilidad con que las personas llevan cabo sus tareas propias a través del uso del producto objeto de interés, idea que descansa en cuatro puntos:
* Una aproximación al usuario;
* Un amplio conocimiento del contexto de uso;
* El producto ha de satisfacer la necesidades del usuario;
* Son los usuarios, y no los diseñadores y los desarrolladores, los que determinan cuando un producto es fácil de usar.


¿Se podría mejorar esta metodología? ¿Cómo?
Hasta este momento de aprendizaje que hemos obtenido, es muy prematuro afirmar que la metodología que estamos analizando se pueda o no mejorar, ya que no la conocemos al 100%, pero si se puede afirmar que no existe una sola y única metodología que garantice el éxito. Además las metodologías son perfectibles porque cada uno de los diversos factores que inciden en ellas, van sufriendo cambios, se van adaptando a nuevas formas de interacción, sin embargo lo más importante es el factor humano con su capacidad de análisis, visión, paciencia, disciplina, control, orden, flexibilidad y trabajo en grupo lo que le redituará el éxito en la tarea de creación y desarrollo de nuevos software.


http://www.acm.org/serving/se/code_s.html Página donde se encuentra el Código de Ética y Práctica Profesional de la ingeniería de software



Bibliografía
Braude, Eric (2003). Ingeniería de software. Una perspectiva orientada a objetos. Alfaomega. México.

Presuman, Roger (2002). Ingeniería de Software. Un enfoque práctico. McGraw Hill. México.

Sommerville, Ian (2002). Ingeniería de software. Pearson Educatión/Addison Wesley. México.

CUEVAS MARIN, Orlando. Guía de contratación de servicios informáticos. Asociación Colombiana de Ingenieros de Sistemas (ACIS). Santafé de Bogotá, 1996.

Páginas web consultadas
http://www.ceis.cl/Gestacion/Gestacion.htm

0 Comments:

Post a Comment

<< Home