domingo, 11 de noviembre de 2012

CICLO DE VIDA DE UN SOFTWARE


El ciclo de vida básico de un software consta de los siguientes procedimientos:

  • Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
  • Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
  • Diseño general: requisitos generales de la arquitectura de la aplicación.
  • Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
  • Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
  • Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
  • Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
  • Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
  • Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.
  • Implementación
  • Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

Metodologías para el desarrollo del software



  • Programación estructurada sol desde 1969
  • Programación estructurada Jackson desde 1975
  • Structured Systems Analysis and Design Methodology (SSADM) desde 1980
  • Structured Analysis and Design Technique (SADT) desde 1980
  • Ingeniería de la información (IE/IEM) desde 1981
  • Rapid application development (RAD) desde 1991.
  • Programación orientada a objetos (OOP) a lo largo de la década de los 90's
  • Virtual finite state machine (VFSM) desde 1990s
  • Dynamic Systems Development Method desarrollado en UK desde 1995.
  • Scrum (desarrollo), en la última parte de los 90's
  • Rational Unified Process (RUP) desde 1999.
  • Extreme Programming(XP) desde 1999
  • Enterprise Unified Process (EUP) extensiones RUP desde 2002
  • Constructionist design methodology (CDM) desde 2004 por Kristinn R. Thórisson
  • Agile Unified Process (AUP) desde 2005 por Scott Ambler

Visión general del Proceso de desarrollo de software

Es proceso es afectado por la creatividad y juicio de las personas  involucradas. En el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido. 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. 

Es actividades requeridas para desarrollar un sistema de software de alta calidad y proporciona el marco de trabajo desde el cual se puede establecer un plan detallado para el desarrollo del software. Actividades: Diseño, validación, evolución, especificación.

ING. DEL SOFWARE

Es toda la información relacionada al desarrollo de software, el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software, la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora.

FACTORES DE CALIDAD DEL SOFTWARE



  • Fiabilidad: es la capacidad que tiene un software de funcionar incluso en situaciones excepcionales.
  • Modularidad: es la capacidad que tienen los elementos del software para formar parte de otras aplicaciones.
  • Compatibilidad: es la facilidad de combinar un software con otros.
  • Eficiencia: es su capacidad para hacer un buen uso de los recursos del ordenador.
  • Portabilidad: es la facilidad de transferir un software a un entorno tanto hardware como software distintos.
  • Facilidad de uso: cuando el usuario puede comunicarse con el programa de manera cómoda e intuitiva, también cuenta la facilidad de instalación/desinstalación del software.
  • Funcionalidad: el conjunto de posibilidades que proporciona el software.
  • Puntualidad: es la capacidad de entregar un software en los plazos acordados con el contratante.
  • Verificabilidad: es la facilidad de verificación de un software, es decir, probar que el software funcione correctamente y localizar errores durante las fases de validación y operación del mismo.
  • Integridad: es la capacidad del software de proteger sus diversos componentes (programas, datos, etc.) contra modificaciones y accesos no autorizados.
  • Reparabilidad: es la capacidad para facilitar la reparación de los defectos de programación o que aparezcan debido a la interacción con otro software.
  • Economía: es la capacidad que un sistema tiene de completarse con el presupuesto asignado o por debajo del mismo.

Paradigma de Programacion

Es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable  cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados.

CUALIDADES DEL SOFTWARE

Las cualidades del software son:Robustez, corrección, eficiencia, amabilidad, extensibilidad, claridad, flexibilidad, mantenibilidad, consistencia, simplicidadcompletud, escalabilidad, encapsulamiento, abstracción, generisidad, reusabilidad,  seguridad, utilidad.

  • Un software es robusto cuando funciona en forma razonable aún en situaciones no anticipadas. 
  • Un software es correcto si se comporta de acuerdo a su especificación El software se comporta de acuerdo con lo esperado por el usuario. 
  • Un software es eficiente si usa sus recursos en forma económica. 
  • Un software es amigable si sus usuarios lo encuentran fácil de utilizar.
  • Un software es extensible cuando pueden incorporarse nuevas características al mismo sin mayor impacto sobre las características actuales.

  • Un software es flexible cuando tiene la capacidad para reflejar cambios percibidos en el dominio de una manera simple y sencilla.
  • Un software es más mantenible cuanto menor esfuerzo requiere para que el sistema siga funcionando en condiciones distintas a las originales e incluso en las originales.
  • Un software es consistente cuando sistema se comportar siempre de la misma manera ante un mismo evento y las tareas similares deben poder realizarse siguiendo pasos similares.
  • Un software es simple cuando tanto como en la interfaz como en la implementación es simple. Es mas importante la simplicidad en la interfaz que en la implementación.
  • Un software es completo cuando cuando contempla todas las posibles situaciones a darse en la práctica.
  • Un software practica el encapsulamiento para poder agrupar unidades funcionales me permite que el sistema sea cohesivo, reduciendo la complejidad del sistema y aumentando en cierta forma su flexibilidad.
  • Un software es con escalabilidad da facilidad de un sistema pensando originalmente  en una carga determinada. Puede ser adaptado para soportar una carga mayor.