martes, 11 de diciembre de 2012

ING.SOFTWARE



INGENIERIA DEL SOFTWARE

 La ingeniería del software es la  disciplina formada por métodos y  técnicas que se llevan a cabo a la hora de programar, diseñar, de llevar a cabo  todos los requerimientos que el usuario necesita,  Cabe destacar que el proceso de desarrollo de software implica lo que se conoce como ciclo de vida del software, que está formado por cuatro etapas: concepción, elaboración, construcción y transición.
La concepción fija el alcance del proyecto y desarrolla el modelo de negocio; la elaboración define el plan del proyecto, detalla las características y fundamenta la arquitectura; la construcción es el desarrollo del producto; y la transición es la transferencia del producto terminado a los usuarios.
Una vez que se completa este ciclo, entra en juego el mantenimiento del software. Se trata de una fase de esta ingeniería donde se solucionan los errores descubiertos (muchas veces advertidos por los propios usuarios) y se incorporan actualizaciones para hacer frente a los nuevos requisitos. El proceso de mantenimiento incorpora además nuevos desarrollos, para permitir que el software pueda cumplir con una mayor cantidad de tareas.

 La ingenieria del software satisface lo siguiente:

Tecnologias Multicapas 
 Herramientas
Métodos
Procesos
Enfoque de calidad
 La calidad es la actividad que proporciona evidencia de que se puede confiar en que la función calidad se ha llevado a cabo con efectividad. Se entiende por función de la calidad: al conjunto de actividades a través de las cuales se alcanza la aptitud para el uso.
Todo trabajo o actividad forma parte de un proceso que es posible definirlo, controlarlo y mejorarlo, así es como se hace posible aplicar métodos y herramientas para el mejoramiento continúo.
  Cada actividad que se realiza en la empresa, está inserta dentro de un conjunto de actividades, las cuales tienen un objetivo dado. Para cumplir con dicho objetivo se requiere que cada una de las actividades se lleve a cabo en forma ordenada y coordinada

Proceso de ing.Sotfware
Un proceso de desarrollo de software es un método a organizar las actividades relacionadas con la creación de la actividad, presentación y mantenimiento del sistema.
Los  pasos en el proceso son:
  • Planificación y elaboración 
  • Creación del sistema
  • Transición de la implementación del sistema
   
Método de Ing., Software
Requiere del análisis de requerimientos, etapas, especificación, diseño y arquitectura, programación, prueba y manteamiento del sistema.
Ingeniería del software basada en componentes Reutilización de software. Código similar los buscan, los modifican según lo creen necesario y los incorporan en el sistema. Tiene la ventaja obvia de reducir la cantidad de software a desarrollarse y así reduce los costos y los riesgos.
Modelo de ciclos de Vida del Software
Es una vista de las actividades que ocurren durante el desarrollo de software, intenta determinar el orden de las etapas involucradas y los criterios de transición asociadas entre estas etapas.
Un modelo de ciclo de vida del software:
  • Describe las fases principales de desarrollo de software.
  • Define las fases primarias esperadas de ser ejecutadas durante esas fases.
  • Ayuda a administrar el progreso del desarrollo, y
  • Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de software.

Define el estado de las fases a través de las cuales se mueve un proyecto de desarrollo de software:
Modelo secuencial
consiste en la sistematización del proceso de construcción, a fin de alcanzar un nivel de producción, sugiere un enfoque sistemático o más bien secuencial del desarrollo de software que comienza en un nivel de sistemas y progresa con el análisis, diseño, codificación, pruebas y mantenimiento.
Comienza  estableciendo  requisitos  de   todos   los   elementos  de sistema  asignando   al  software a algún subgrupo de estos requisitos. Análisis de los requisitos del software. Se debe comprender el dominio de información de software, así como la función requerida, el comportamiento, rendimiento e interconexión. Diseño. Proceso de muchos pasos, que se centra en cuatro atributos distintos de programa: estructura de datos, arquitectura de software, representaciones de interfaz y detalle procedimental (algoritmo).  


 Modelo de prototipo
Es la creación de una implementación parcial de un sistema, para el propósito explícito de aprender sobre los requerimientos del sistema. Un prototipo es construido de una manera rápida tal como sea posible.
Modelo De Desarrollo Incremental


Existen riesgos en el desarrollo de sistemas largos y complejos. La forma de reducir los riesgos es construir una parte del sistema.
Un sistema pequeño es siempre menos riesgoso que construir un sistema grande.es más fácil determinar si los requerimientos para los niveles subsiguientes son correctos.
Reduciendo el tiempo de desarrollo de un sistema decrecen las probabilidades que esos requerimientos de usuarios puedan cambiar durante el desarrollo. Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del comienzo del próximo incremento.
Modelo De Desarrollo Evolutivo
El modelo de desarrollo evolutivo construye versiones sucesivas de un producto, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto.
Basada en esta retroalimentación, la especificación de requerimientos es actualizada. El desarrollo de software en forma evolutiva requiere un especial cuidado en la manipulación de documentos, programas, datos de test, etc. desarrollados para distintas versiones del software.



Modelo Espiral

Basada en la necesidad continúa de refinar los requerimientos y estimaciones del proyecto.
Efectivo para proyectos pequeños donde con la retroalimentación dada por el cliente, se aprueba las diferentes etapas, puede ocurrir el riesgo que no se defina bien los objetivos por el cual el desarrollo puede ser caótico.
Modelo Concurrente
El modelo concurrente provee una meta-descripción del proceso software, tiene la capacidad de describir las múltiples actividades del software ocurriendo simultáneamente.