lunes, 8 de septiembre de 2014

INTRODUCCIÓN UNIDAD 1

FUNDAMENTOS DE INGENIERÍA DE SOFTWARE

Este Blogger es realizado con la finalidad de dar a conocer información verídica sobre los temas abordados en la unidad 1 en la materia de ingeniería de software .

Fundamentos de Ingeniería de Software: la ingeniería de software se define como la disciplina tecnológica relacionada con la producción sistemática y el mantenimiento de productos de software que son desarrollados y modificados en el tiempo previsto y dentro de los costos estimados.



1.1 CONCEPTOS BÁSICOS


·         Ingeniería: profesión que posee conocimientos científicos, actividades y criterios (ingenio) para crear dispositivos, métodos y sistemas para transformar recursos y satisfacer mejor las necesidades de una sociedad.

·         Software: conjunto de programas que se pueden ejecutar en una computadora, así como toda información, utilerías y recursos necesarios para su diseño, instalación, operación, mantenimiento y refinamiento.

·         Ingeniería de software: disciplina que establece el uso de principios de ingeniería robustos, orientados a obtener software económico, que sea confiable y funcione de manera eficiente.

·         Perfil del ingeniero: debe ser capaz de encabezar o ser miembro de grupos multidisciplinarios de desarrollo de todo tipo de software y que en equipo logre producir software de alta calidad.


·         Diferencia entre programador e ingeniero de software: La ingeniería de software difiere de la programación tradicional en que se utilizan técnicas de ingeniero para especificar, diseñar,  codificar, validar, y mantener los productos dentro del tiempo y presupuesto establecidos para el proyecto, además esta ingeniería se preocupa por aspectos administrativos que quedan fuera del dominio normal de la programación.  El término “programador” se emplea para denominar a la persona y abocada a las tareas y detalles de la codificación. 

1.2 EL PAPEL EVOLUTIVO DEL SOFTWARE

Hoy en día, el software tiene un papel dual. Es producto y canal de distribución de este. Como producto, ofrece la potencia de computo presentada como hardware  de una computadora o. de manera global para una red de computadoras accesibles mediante hardware local y acceso físico. Sin importar el lugar en que resida el software, ya sea en un celular o dentro de una computadora central, este es un transformador de información, realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que se puede ser  tan simple como un solo bit o tan compleja como una presentación multimedia. En su papel de vehículo para la entrega de un producto,  el software actúa como base para el control de la computadora (sistemas operativos), la comunicación de información (redes) y la relación y el control  de otros programas.

PRIMERA ERA (1950-1965):
  • ·         Se trabajaba con la idea de codificar y corregir
  • ·         No existía un planteamiento previo.


SEGUNDA ERA (1965- 1972):
  • ·         Se buscaba simplificar el código.
  • ·         Aparición de multiprogramación y sistemas multiusuario.


TERCERA ERA (972-1985):
  • ·         Complejidad en los sistemas de información,
  • ·         Amplio uso de microprocesadores.


CUARTA ERA (1985-1995):
  • ·         Impacto colectivo de software.
  • ·         La información como valor preponderante dentro de las organizaciones.


QUINTA ERA (2000 HASTA HOY EN DÍA)
  • ·         Utilizamos algunos requisitos de las eras anteriores solo que aumenta la omnipresencia de la web, la reutilización de información y componentes de software.




1.3 ETAPAS DEL DESARROLLO DEL SOFTWARE

Cualquier sistema de información va pasando por una serie de fases a lo largo de su vida.
Su ciclo de vida comprende una serie de etapas entre las que se encuentran las siguientes.
  • ·         Análisis
  • ·         Diseño
  • ·         Desarrollo
  • ·         Pruebas
  • ·         Implementación
  • ·         Mantenimiento
  • ·         Etapa final EOL


Etapa de análisis: es el proceso de investigar un problema que se desea resolver o el sistema que se desea crear. Identificar los componentes principales que integraran el producto.

Etapa de diseño: la principal tarea de la etapa de diseño es desarrollar un modelo o las especificaciones para el producto o componentes del sistema.

Etapa de desarrollo: consiste en utilizar los modelos creados durante la etapa de diseño para crear los componentes del sistema.

Etapa de pruebas o verificación prueba: consiste en asegurar que los componentes individuales que integran al sistema o producto, cumplen con los requerimientos de la especificación creada durante la etapa del diseño.

Etapa de implementación o entrega implantación: Consiste en poner a disposición del cliente el producto.

Etapa de mantenimiento: consiste en corregir problemas del producto y liberar el producto como una nueva versión o revisión (producto mejorado).


Etapa final EOL (END –OF-LIFE): el fin del ciclo del producto consiste en realizar todas las tareas necesarias para asegurar que los clientes y los empleados están conscientes de que el producto ya no será vendido ni soportado.

1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL DESARROLLO DEL SOFTWARE (TECNOLOGÍA, ESTRUCTURA Y ORIENTADA A OBJETOS).

Tecnología de desarrollo estructurada son las más convencionales de las empleadas hoy en día. Han surgido de la evolución de las ideas de programación estructurada (hace más de 25 años) hacia las fases iniciales del ciclo de vida. En su formulación actual, las notaciones empleadas en las primeras fases del ciclo de vida (especificación de requisitos de usuario y sistema) suelen estar constituidas por lenguajes gráficos   que permiten: identificar el sistema y el entorno; representar el flujo de información entre los elementos; y describir los datos y las actividades del sistema.
La idea base de esta tecnología que es posible estructurar el modelo de un sistema de software en base a su función que procesa información que recibe de otras funciones (o del exterior) y dirigen la información procesada a otros módulos funcionales (o a el exterior). El enfoque seguido, por tanto, es el de pensar en las funciones del sistema necesarias (extraídas de los requisitos del sistema) y luego en los datos que requieren.
Orientada a objetos
Los métodos de descomposición orientada a objetos constituyen la tendencia más influyente observada en la ingeniería de sistema de software en los últimos años. Con ello nos referimos a un conjunto de métodos (aún en fase de desarrollo o evolución) que permite analizar y diseñar, concebir su sistema identificando clases de objetos, operaciones permitidas y relaciones entre ellos como base para la estructura del sistema a diseñar.
En ellas un objeto puede constituirse jerárquicamente, empleando a su vez, a otros objetos más simples.
Una clase implica una generalización del concepto de objeto (identificando similitudes entre objetos similares) y constituye la base a partir de las cuales se construye el sistema.
Existen varias tecnologías orientadas a objetos que, aunque similares en su potencia expresiva, ofrecen algunas diferencias que las hacen más adecuadas para algún tipo concreto de sistemas.
Podemos mencionar como una de las más representativas a OMT.
OMT está soportada por muchas herramientas case comerciales.
Corresponde a una notación gráfica que permite representar las clases de objeto, sus relaciones y la creación de ejemplares de los mismos.


1.5 DEFINICIÓN E HISTORIA DE LAS HERRAMIENTAS CASE.

¿QUÉ SON LAS HERRAMIENTAS CASE?

Conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores durante todos los pasos del ciclo de vida de desarrollo de un software. Como es sabido, los estados en el ciclo de vida de desarrollo de un software son: investigación preliminar, análisis, diseño, implementación e instalación.
Case se define también como: 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 algunas de sus fases.
La sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayudan a automatizar el ciclo de vida de desarrollo de los sistemas.
Una innovación en la organización, un concepto avanzado en la evolución de la tecnología con un potencial efecto profundo en la organización. Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.


HISTORIA DE LAS HERRAMIENTAS CASE.
Estas tienen su inicio como el simple procesador de palabras que fue usado para crear y manipular documentación.
En los sistemas vieron la introducción de técnicas gráficas y diagramas de flujo de estructura de datos sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.
La introducción de las herramientas case para ayudar en este proceso ha permitido que los diagramas puedan ser  fácilmente creados y modificados, manejando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada tipo de dato y los procesadores dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las herramientas case.
Pronto se remplazaron los paquetes gráficos por paquetes especializados que habilitan la edición, actualización e impresión en múltiples versiones de diseño. Eventualmente, las herramientas graficas integradas con diccionarios de base de datos para producir diseños y desarrollar, herramientas, podrían sostener ciclos complementos de diseño de documentos. Como paso final, la verificación de errores y generadores de casos de pruebas fueron incluidos  para validar el diseño del software. Todos estos procesos pueden saberse integradores en una simple herramienta case que soporta todo el ciclo de desarrollo.





1.6 CLASIFICACIÓN DE LAS HERRAMIENTAS CASE

No existe una única clasificación de herramientas case y en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:

  • ·         Plataformas que soportan.
  • ·         Las fases del ciclo de vida del desarrollo de sistemas que cubren.
  • ·         La arquitectura de las aplicaciones que producen.
  • ·         Su funcionalidad.


Las herramientas case, en función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente.

Las herramientas integradas I-CASE (case integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas: son llamados también CASE WORKBENCH.

Herramientas de alto nivel U-CASE (case superior): orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.

Herramientas de bajo nivel  L-CASE (case inferior): dirigidas  a las últimas fases del desarrollo: construcción e implantación.

Juegos de herramientas o Tools- CASE: son el tipo más simple de herramienta case. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.