lunes, 1 de diciembre de 2014

Técnicas y Herramientas en el Proceso de Desarrollo de Software

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.

Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de confiabilidad de un programa por pequeño que sea. Existe una inmensa combinación de factores que impiden una verificación exhaustiva de las todas posibles situaciones de ejecución que se puedan presentar (entradas, valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el cual se ejecuta, entre otros.).

El proceso de desarrollo de software no es único. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de desarrollo de software. A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos: 

  • Especificación de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software.
  • Diseño e Implementación: Se diseña y construye el software de acuerdo a la especificación.
  • Validación: El software debe validarse, para asegurar que cumpla con lo que quiere el cliente.
  • Evolución: El software debe evolucionar, para adaptarse a las necesidades del cliente.

Técnicas en el Proceso para el Desarrollo de un Software:

1. Técnica para la Recopilación de Datos.

La recolección de datos se refiere al uso de una gran diversidad de técnicas y herramientas que pueden ser utilizadas por el analista para desarrollar los sistemas de información, los cuales pueden ser la entrevistas, la encuesta, el cuestionario, la observación, el diagrama de flujo y el diccionario de datos.

Son todas las formas posibles de que se vale el investigador para obtener la información necesaria en el proceso investigativo. Todos estos instrumentos se aplicarán en un momento en particular, con la finalidad de buscar información que será útil a una investigación en común.

  • Entrevista.
  • Encuesta.
  • Cuestionario.
  • Observación.
  • Revisión documental.

2. Técnica de Costo-Beneficios.

El análisis de costo-beneficio es una técnica analítica que enumera y compara el costo neto de una intervención con los beneficios que surgen como consecuencia de aplicar dicha intervención. Para esta técnica, los costos y los beneficios de la intervención se expresan en unidades monetarias.

Sirve como guía para lograr una respuesta de viabilidad, que si bien nos es para nada definitiva, aterriza las expectativas que pueden ser profundizadas de ser necesario.

Lo relevante es que podemos estar en condiciones de tomar decisiones oportunas con un nivel de certeza muy razonable, sin invertirle tiempo valioso en analizar muchas ideas cuando pocas son acogidas e implementadas.


3. Técnica de Planificación y Control de Proyectos

La Planificación y Control de Proyectos de Software comprende una serie de procedimientos, sin embargo, se mencionaran solo los más complejos y/o significativos, los cuales son:

  • Objeto: En este procedimiento se describe la sistemática a seguir para una correcta planificación del desarrollo de una aplicación de software y de las medidas de control a establecer por el gabinete de programación.
  • Alcance: Todas las actividades encamina das a la planeación, programación y control de cada una de las fases requeridas para el desarrollo de una aplicación de software específica.
  • Entradas: El proceso da comienzo con la necesidad de desarrollar un nuevo software o modificar uno existente (sub-proyecto) y, por tanto, de realizar una planificación de las actividades necesarias para realizar dicha aplicación.
  • Salidas: Este proceso finaliza con la planeación, programación y control de cada una de las actividades en las que consistirá el proyecto de desarrollo de una aplicación de software específica.
  • Desarrollo: Para ejecutar un proyecto basado en el desarrollo de software es preciso definir la estructura en que se desglosan cada una de las actividades o tareas a realizar para, finalmente, asignar a cada miembro del equipo su correspondiente cuota de gestión. No solamente se requiere la lista, sino también una descripción de las actividades. Para ello, se asume una estructura concreta con los detalles de la gestión y que se desglosará en tres partes específicas:
  • Planificación: Se inicia descomponiendo el proyecto en actividades distintas, después se determinan las estimaciones de tiempo para cada actividad, se construye un diagrama de red (flechas) para estas actividades.



Herramientas en el Proceso de Desarrollo de un Software:

Las Herramientas de Ayuda al Desarrollo de Sistemas de Información, surgieron para intentar dar solución a los problemas inherentes a los proyectos de generación de aplicaciones informáticas: plazos y presupuestos incumplidos, insatisfacción del usuario, escasa productividad y baja calidad de los desarrollos. Algunas de estas herramientas se dirigen principalmente a mejorar la calidad, como es el caso de las herramientas CASE (Computer Aided Software Engineering-Ingeniería de Software Asistida por Ordenador). Otras van dirigidas a mejorar la productividad durante la fase de construcción, como es el caso de los lenguajes de cuarta generación (4GL-Fourth Generation Language).

1. Herramientas para diseñar software.
  • Existe al menos 20 herramientas libres para diseñar software totalmente libres.
  • Todas utilizan la notación UML
  • El nivel de avance entre una y otra es notable, casi todas ofrecen como funcionalidad: Diagramas de caso de uso, Diagramas de clasesDiagramas de secuencia.
  • Generación de código en java, c++, python y php.
  • Algunas entidad-relación (pero ninguna lo suficientemente avanzada)
  • Pocas herramientas permiten ingeniería reversa, y si lo hacen solo es de lenguajes tipo java o c++.
2. Herramientas para modelar bases de datos.
  • Algunas de las herramientas case libres permiten modelar bajo Entidad-Relación, sin embargo su funcionalidad es bastante limitada.
  • Básicamente existen herramientas orientadas a una db en especifico y estas son MySql y PostgreSQL, el de MySql (MySql WorkBench no es libre).
  • Permiten hacer ingeniería reversa de la db para las que fueron diseñadas, algunas otras soportan UnixODBC/Odbc según sea el caso.
  • Existen algunos modeladores en línea.
  • La documentación que generan es bien básica.

3. Herramientas para Ingeniería de Software Asistida por Computadora (CASE).

Son un conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
  • El empleo de herramientas Case permiten integrar el proceso de ciclo de vida:
  • Análisis de datos y procesos integrados mediante un repositorio. 
  • Generación de interfaces entre el análisis y el diseño. 
  • Generación del código a partir del diseño. 
  • Control de mantenimiento. 

Actualmente, la tendencia en el desarrollo de software está enfocada hacia las microcomputadoras como plataformas de ingeniería de software, que se interconectan mediante redes para que puedan comunicarse de forma efectiva. La base de datos del proyecto (también denominada biblioteca del proyecto o depósito de software), está disponible a través de un servidor de archivos en red que es accesible desde todas las estaciones de trabajo. Un sistema operativo que gestiona el hardware, la red y las herramientas, mantiene todo el entorno unido.

La arquitectura de entorno, compuesta por la plataforma hardware y el soporte del sistema operativo (incluida la red y la gestión de la base de datos), constituye la base del CASE. Pero el entorno CASE, en sí mismo, necesita otros componentes. Un conjunto de servicios de potabilidad constituyen un puente entre las herramientas CASE y su marco de integración y la arquitectura de entorno. El marco de integración es un conjunto de programas especializados que permite a cada herramienta CASE comunicarse con las demás, para crear una base de datos de proyectos y mostrar una apariencia homogénea al usuario final (el ingeniero de software). Los servicios de potabilidad permiten que las herramientas CASE y su marco de integración puedan migrar a través de diferentes plataformas hardware y sistemas operativos, sin grandes esfuerzos de adaptación.







No hay comentarios.:

Publicar un comentario