jueves, 12 de julio de 2012

Proceso de desarrollo de software

Un proceso, se define como una serie de operaciones usadas en la creación de un producto. Un proceso de software se puede definir de las siguientes formas:
Un proceso de software define el conjunto de tareas, que tienen que ser realizadas para producir un producto de software de alta calidad. En otras palabras, este es el enfoque que se toma para el desarrollo del software.
Es el proceso que se sigue para construir el producto de software desde la concepción de una idea, hasta la entrega y el retiro final del sistema.

Las características de un proceso de software se resumen a continuación:
  • Comprensión: Este requiere claridad y declaración de la naturaleza explicita de la definición del proceso.
  • Visibilidad: Se refiere a la capacidad de observar la salida de arias actividades del proceso, de manera que se mida el proceso del progreso.
  • Confiabilidad: Se refiere a la capacidad del proceso para evadir errores o detectar errores y manejarlos antes de que estos avancen en el producto.
  • Robustez: Se refiere a la capacidad del proceso de no detenerse a pesar de problemas inesperados.
  • Facilidad de mantenimiento: Se refiere a la cantidad de modificaciones que pueden hacerse al sistema de software sin introducir errores.
  • Facilidad de verificación: Un proceso es verificable si sus propiedades pueden ser fácilmente verificadas.
  • Rapidez: Se refiere a la agilidad y rapidez del proceso para ser capaz de entregar un producto final a partir de las especificaciones.
  • Facilidad de soporte: Se refiere a la posibilidad de que las actividades del proceso sean soportadas por un conjunto de herramientas automatizadas.
  • Facilidad de aceptación: Se refiere a la capacidad del proceso a ser aceptado y usado por el equipo de ingenieros.
  • Facilidad de adaptación: Se refiere a la capacidad del proceso a ser modificado para satisfacer las necesidades de cambio en el ambiente de desarrollo.

Después de haber discutido las características del proceso de desarrollo de software, se presenta a continuación las diferentes fases del proceso de desarrollo de software.
  • Fase de definición esta fase se concentra principalmente en que tiene que ser completado por el proceso de software.
  • Fase de desarrollo esta fase enfoca en el cómo los requerimientos de un sistema y el software serán completados.
  • Fase de mantenimiento esta fase se enfoca en cambio, el mantenimiento incluye la corrección de errores y la adaptación, conforme evoluciona el entorno del software.


     

Fundamentos del enfoque orientado a objetos y caraterísticas

La orientación a objetos ofrece una solución que ayuda a los desarrolladores a hacer corresponder el mundo real tan cerca como sea posible al dominio de la solución. Cabe mencionar que existen muchas metodologías que permiten soluciones para problemas complejos. En la orientada a objetos se basa en modelar el mundo real y ha ganado importancia significativa en los últimos tiempos. En la orientación a objetos se trabaja con objetos en el sistema que interactúan unos con otros a través de mensajes. La orientación a objetos proporciona los recursos para ocuparse de los objetos de un sistema complejo. El análisis y diseño de un sistema desde una perspectiva orientada a objetos forma el núcleo de un sistema.




Características

  • Modelado del mundo real
  • Datos Abstractos
  • Abstracción de datos
  • Encapsulamiento
  • Ocultamiento de la información
  • Clase
  • Objeto
  • Interfaz e Implementación
  • Métodos
  • Mensajes
  • Herencia
  • Agregación
  • Polimorfismo
  • Tipo
  • Rol
  • Paquete

Desarrollo de componentes

Es una unidad autocontenida que encapsula el estado y el comportamiento de varios clasificadores. También se podría decir que es un tipo clasificador con la diferencia de que no tiene características propias, pero contiene las clases que definen las características. Un componente proporciona una vista encapsulada de la funcionalidad definida por las clases contenidas. Un componente es una parte física del sistema. Cada componente tiene un nombre, el cual puede ser un nombre simple o un nombre de ruta.



Tipos de componentes y caraterísticas


  • Componentes de despliegue o distribución (Deployment)
Estos componentes se usan para formar un sistema ejecutable. Un ejemplo de tal componente es la librería de enlace dinámico y los archivos ejecutables. Otros ejemplos son los componentes COM+, Enterprise Java Beans, componentes CORBA y objetos de base de datos.

  • Componentes de Producto de Trabajo
Estos componentes son parte del proceso de desarrollo que es esencial para el sistema. Algunos ejemplos de componentes de producto de trabajo son los archivos fuente, archivos de datos y tablas. Ellos son los archivos fuente y archivos de datos que se usan para crear los componentes de distribución como AgenteAnalizado.Java y AnalizadorDatos.txt.

  • Componentes de Ejecución
Estos componentes son el resultado de un sistema que se está ejecutando. Cuando un DLL es instanciado como un componente COM+, es un ejemplo de un componente de ejecución.


Características

  • La característica fundamental de un componente es la habilidad de definir interfaces.
  • Es una unidad ejecutable que puede ser implantada independientemente.
  • Puede ser sujeto de composición por terceras partes, es decir, una compañía o un desarrollador puede llegar y tomar el componente y agregarlo a lo que esté haciendo, o sea haría una composición de componentes.
  • Un componente no tiene estado.
  • Se puede tomar a los componentes de software como una analogía a los componentes electrónicos.

Estándares en el proceso de desarrollo de software


ISO Es el organismo encargado de promover el desarrollo de normas internacionales de fabricación, comercio y comunicación para todas las ramas industriales a excepción de la eléctrica y la electrónica. Su función principal es la de buscar la estandarización de normas de productos y seguridad para las empresas u organizaciones a nivel internacional. Estándares ISO existentes: ISO 9001, 9000–3, 9004–2, ISO/IEC 12207, ISO/IEC 15504 (SPICE) Algunos estándares existentes:


Estándares para datos
Estándares de codificación
Estándares estructurales
Estándares de documentación
Estándares de proceso software
Estándares para otras actividades

Ejemplos de estándares en ingeniería del software

IEEE Standards Collection Software Engineering – 1998 Edition
IEEE Std. 610.12-1990, Glossary of Software Engineering Terminology
IEEE Std. 829-1983, Standard for Software Test Documentation
IEEE Std. 830-1993, Recommended Practice for Software Requirements Specifications.
IEEE Std. 990-1987, Recommended Practice for Ada as a Program Design Language.
IEEE Std. 1045-1992, Standard for Software Productivity Metrics
IEEE Std. 1062-1987, Recommended Practice for Software Acquisition
IEEE Std. 1063- 1987, Standard for Software User Documentation
IEEE Std. 1219-1992, Standard for Software Maintenance


    Documentación y Artefactos



    La documentación no es más que la debilidad más frecuente en productos e instalaciones informáticos. Cabe mencionar que los actores que intervienen en el ciclo de vida del software desempeñan diversos roles. Arquitectos, diseñadores, analistas, programadores, implementadores, administradores o auditores son quienes explicitan distintos aspectos de los productos y procesos.

    Un artefacto es una pieza de información que es producida o utilizada por procesos. Los artefactos son los elementos son los elementos tangibles de un proyecto, elementos que el proyecto produce o usa mientras se trabaja en busca del producto final. Éstos, pueden tomar varias formas y formatos, como por ejemplo:

    Un documento, tal como la visión o la lista de riesgos.
    Un modelo, por ejemplo un diagrama de casos de uso o el modelo de diseño.
    Un elemento dentro de un modelo, tal como una clase, un caso de uso o un subsistema.
    Ejecutables, por ejemplo el ejecutable del prototipo.
    Código fuente.

    Las actividades tienen artefactos como entrada y salida. Los roles usan artefactos para ejecutar actividades y producen artefactos durante la ejecución de sus actividades. Los artefactos son la responsabilidad sencilla del rol, creando responsabilidades fáciles de identificar y entender, promoviendo la idea de que cada pieza de información producida en un proceso de desarrollo requiere un conjunto apropiado de habilidades. Aunque un rol puede ser el propietario de un artefacto, otros roles pueden hacer uso de éste, incluso podrían actualizar el artefacto si el rol que va a hacerlo, tiene permiso para hacerlo.
    En RUP se encuentran conjuntos de artefactos que agrupan artefactos relacionados con el modelo de negocio, los requerimientos, el análisis y diseño, la implementación, las pruebas, la configuración y administración de cambios, el ambiente de desarrollo, entre otros.