Ing. de software

9 de octubre de 2008

El software es un elemento lógico de un sistema y tiene caracteristicas que lo diferencian de otros componentes como el hardware. Una de las diferencias más importantes es que el software no se desgasta por los efectos ambientales (clima, suciedad, etc.) que hacen que el hardware tenga una vida útil ya estipulada. Aunque se puede decir que el software, si bien no se desgasta, si se deteriora. Durante su vida, el software experimenta cambios. Conforme estos ocurren se presenta la posibilidad de producir errores, lo que ocasiona que la curva de fallas tenga picos. Se considera obsoleto cuando no comple la función para la cual se creo o cuando deja de funcionar en las maquinas reales. Hoy en dia el software es el factor distintivo por naturaleza. Entrega el producto mas importante de nuestro tiempo: la información. 

La construcción de software no es fácil. Estamos acostumbrados a ver programadores que llevan a codigo cosas que ni siquiera el usuario necesita y especialmente, un software de baja calidad.
El proceso de software se define como un marco de trabajo para las tareas que se requieren en la construcción del software de alta calidad, la ingenieria de software abarca tambien las tecnologias que requiere este proceso. Se trata de la aplicacion de un enfoque sistematico al software pudiendose descomponer en 4 estratos principales:
  • Un enfoque de calidad: Fomenta la cultura de mejora continua en el proceso.
  • Proceso: Permite seguir un proceso que mantenga unida la tecnologia y permita el desarrollo racional y en tiempo.
  • Metodos: Son los "como" tecnicos para construir software.
  • Herramientas: Proporcionan el soporte necesario por el proceso y los metodos.
Un marco de trabajo establece la base para un proceso de software completo, englobando dentro de actividades del marco de trabajo diversas acciones necesarias para llevar a cabo la actividad y estrucuturando estas actividades con las actividades sombrilla.
El marco de trabajo generico es el siguiente:
  1. COMUNICACIÓN: Esta actividad engloba acciones que buscan recolectar datos e información relevante para el desarrollo del proyecto. La base es interpretar los requisitos del cliente adecuadamente.
  2. PLANEACIÓN: Plan de trabajo. Riesgos, tareas, recursos, productos y un programa de trabajo. Es un mapa del proyecto.
  3. MODELADO: Abarca la creacion de modelos que permiten al desarrollador y al cliente entender mejor los requisitos (análisis) y el diseño que logrará satisfacerlos.
  4. CONSTRUCCIÓN: Combina la generación del codigo y la realizacion de las pruebas para evitar errores en el mismo.
  5. DESPLIEGUE: Actividad que engloba desde que el software está listo hasta que se implementa en el cliente.
Algunas actividades sombrilla son:
  • Seguimiento y control
  • Gestion del riesgo
  • Aseguramiento de la calidad
  • Medicion
  • Preparación y produccion del producto de trabajo.. etc.
Modelos prescriptivos:
  • MODELO EN CASCADA: Se usa solo cuando los requerimientos están bien definidos y son estables. El modelo en cascada sugiere un enfoque sistematico, secuencial hacia el desarrollo de software, que se inicia con la especificacion de los requerimiento del cliente y continua con la planeación, modelado, construcción y despliegue.
Incrementales:
En muchas ocasiones los requisitos iniciales del software no están bien definidos en forma razonable. Quizá haya la necesidad de proporcionar de manera rapida un conjunto limitado de funcionalidad.
  • MODELO INCREMENTAL: El modelo incremental combina elementos del modelo en cascada aplicado en forma iterativa. Aplica secuencias lineales de manera escalonada conforme avanza el tiempo en el calendario. Cada secuencia lineal produce incrementos de software. Se enfoca en la entrega de un producto operacional con cada incremento. Los primeros incrementos son verisones incompletas del producto final, pero proporcionan al usuario la funcionalidad que necesita y la plataforma para evaluarlo.
  • MODELO DRA: Es un modelo de desarrollo rapido de aplicaciones. Resalta un ciclo de desarrollo corto del modelo en cascada. Se enfoca en componentes, cada funcion se puede abordar mediante un equipo de DRA por separado, para despues integrarlas y formar un todo (en grandes proyectos no sirve porque haria falta mucho recurso humano). La construccion se realiza con una herramienta que permite hacer soft rápido.
Evolutivos:
El software evoluciona con el tiempo. Los requisitos de los negocios y productos pueden cambiar conforme se va realizando el desarrollo y por lo tanto la ruta lineal a veces no es una opción. El proposito de los modelos evolutivos es desarrollar software de alta calidad de una manera iterativa o incremental.
  • CONSTRUCCIÓN DE PROTOTIPOS: En algunas oportunidades el cliente define un conjunto de objetivos generales para el software, pero no identifica los requisitos detallados de entrada, procesamiento o salida. En estos casos el prototipo deberia servir como un mecanismo para identificar los requisitos del software. El prototipo SE DEBERIA descartar y comenzar un nuevo proyecto para llevar adelante el software definitivo, este deberia servir para concluir los requisitos y soluciones planteadas.
  • MODELO EN ESPIRAL: El modelo en espiral es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de la construccion de prototipos con los aspectos controlados y sistematicos del modelo en cascada. El software se desarrolla en una serie de entregas evolutivas. Durante las primeras iteraciones, la entrega tal vez sea un documento del modelo o un prototipo. Es ideal para proyectos con riesgo.
  • DESARROLLO CONCURRENTE: Todas las actividades existen de forma concurrente, pero se encuentran en diferentes estados. Es asi que el modelo define una serie de eventos que dispararán transiciones de estado de las actividades, acciones o tareas de la ingenieria.
  • PROCESO UNIFICADO: Es un intento encaminado de reuinir los mejores rasgos y caracteristicas de modelos de proceso de software, pero los caracteriza de manera que implementa mucho de los mejores principios del desarrollo agil del software. El UML se convirtió en un estandar de la industria para el desarrollo de software orientado a objetos. Este proporciona la tecnologia necesaria pero no provee un marco de trabajo del proceso. Asi se creo el PU unificando UML con un proceso para el marco de trabajo.
Vamos que todavia falta la Alianza Ágil y la ing. de requisitos y diseño...

0 comentarios: