UNIDAD 1: FUNDAMENTOS
DE INGENIERÍA DE SOFTWARE.
1.1 Conceptos Básicos
La ingeniería de software es una disciplina
formada por un conjunto de métodos, herramientas y técnicas que se utilizan en
el desarrollo de los programas informáticos (software).
Esta disciplina trasciende la actividad de programación, que
es la actividad principal a la hora de crear un software. El ingeniero de
software se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un
plazo determinado y con el presupuesto previsto.
La ingeniería de software, por lo tanto,
incluye el análisis previo de la situación, el diseño del proyecto, el
desarrollo del software, las pruebas necesarias para confirmar su correcto
funcionamiento y la implementación del sistema.
Los
Ingenieros de Software deben:
·
Adoptar un enfoque sistemático para llevar a
cabo su trabajo.
·
Utilizar las herramientas y técnicas
apropiadas para resolver el problema planteado, de acuerdo a las restricciones
de desarrollo y a los recursos disponibles.
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
cómputo presentada como hardware de una computadora o, de manera más global por
una red de computadoras accesible mediante hardware local y de acceso físico.
Sin importar el lugar en que resida el software, ya sea en un celular o dentro
de una computadora central, éste 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 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 la 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 (utilerías de software y ambientes).
PRIMERA ERA
(1950 – 1965)
·
Se trabajaba con la idea de “Codificar y Corregir”.
·
No existía un
planteamiento previo.
·
No existía
documentación de ningún tipo.
·
Existencia de pocos métodos formales y pocos creyentes
en ellos.
·
Desarrollo a base de prueba y error.
SEGUNDO ERA
(1965 – 1972)
·
Se busca simplificar código.
·
Aparición de Multiprogramación y Sistemas
Multiusuarios.
·
Sistemas de Tiempo Real apoyan la toma de decisiones.
·
Aparición de Software como producto. (Casas de
Software).
·
Se buscan procedimientos para el desarrollo del
Software.
TERCERA ERA
(1972 – 1985)
·
Nuevo Concepto: Sistemas Distribuidos.
·
Complejidad en los Sistemas de Información.
·
Aparecen: Redes de área local y global, y
Comunicadores Digitales.
·
Amplio Uso de Microprocesadores.
CUARTA ERA
(1985 - 1995 )
·
Impacto Colectivo de Software.
·
Aparecen: Redes de Información, Tecnologías Orientadas
a Objetos.
·
Aparecen: Redes Neuronales, Sistemas Expertos y SW de
Inteligencia Artificial.
·
La información como valor preponderante dentro de las
Organizaciones.
QUINTA ERA
(2000 hasta hoy en día)
·
Codificar:
Transformar mediante las reglas de un código la formulación de un mensaje.
·
Hardware: Componente físico de la computadora. Por
ejemplo: el monitor, la impresora o el disco rígido. El hardware por sí mismo
no hace que una máquina funcione.
·
Multiprogramación: Se denomina
multiprogramación a la técnica que permite que dos o más procesos ocupen la misma
unidad de memoria principal y que sean ejecutados al "mismo tiempo“.
1.3 ETAPAS DE DESARROLLO
DEL SOFTWARE
Etapa
de análisis: Es el proceso de investigar un problema que se quiere resolver. Definir
claramente el Problema que se desea resolver o el sistema que se desea crear.
Identificar los componentes principales que integrarán el producto.
Etapa de Diseño: Es el proceso de utilizar la información
recolectada en la etapa de análisis al diseño del producto. 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 de diseño. Se recomienda aplicar las
etapas: • Análisis • Diseño • Desarrollo • Prueba A cada uno de los ejercicios
de este curso.
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 re- 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 DE SOFTWARE
(TECNOLOGÍA ESTRUCTURADA Y
ORIENTADO A OBJETOS).
Tecnologías de
desarrollo estructurado
Las
tecnologías de desarrollo estructurado son las más convencionales de las empleadas
hoy día. Han surgido de la evolución de las ideas de programación estructurada
(hace más de veinticinco 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 es que es posible estructurar el modelo de un
sistema de software en base a funciones que procesan información que reciben de
otras funciones (o del exterior) y dirigen la información procesada
a otros módulos funcionales (o al 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.
Orientado a Objetos
Los
métodos de descomposición orientada a objetos constituyenla tendencia más
influyente observada en la ingeniería de sistemas de software en los últimos
años. Con ellos nos referimos a un conjunto de métodos (aún en fase de
desarrollo o evolución) que permiten al analista y diseñador 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 es un conjunto de datos y funciones de manipulación de
los mismos encapsulados en una unidad que es posible tratar como un todo
(crear, copiar, destruir, etc.). Un objeto posee unas operaciones visibles a
otros objetos aunque éstos no conocen cómo están implementadas. El diseñador
reconoce inicialmente clases de objetos de las que se derivan los
objetos concretos que utilizará en el diseño.
Un
objeto puede construirse 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 objetos, sus
relaciones y la creación de ejemplares de los mismos. Aunque básicamente empleada
para la fase de análisis de requisitos del sistema puede también emplearse para
las primeras fases del diseño.
1.5 DEFINICIÓN DE LA HISTORIA DE LAS
HERRAMIENTAS CASE.
Se puede definir a las Herramientas CASE como un 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: 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 alguna de sus fases.
La realización de un nuevo software requiere que las tareas sean
organizadas y completadas en forma correcta y eficiente. Las Herramientas CASE
fueron desarrolladas para automatizar esos procesos y facilitar las tareas de
coordinación de los eventos que necesitan ser mejorados en el ciclo de
desarrollo de software.
La mejor razón para la creación de estas herramientas fue el incremento
en la velocidad de desarrollo de los sistemas. Por esto, las compañías pudieron
desarrollar sistemas sin encarar el problema de tener cambios en las necesidades
del negocio, antes de finalizar el proceso de desarrollo.
También permite a las compañías competir más efectivamente usando estos
sistemas desarrollados nuevamente para compararlos con sus necesidades de negocio
actuales. En un mercado altamente competitivo, esto puede hacer la diferencia
entre el éxito y el fracaso. Las herramientas CASE también permiten a los
analistas tener más tiempo para el análisis y diseño y minimizar el tiempo para
codificar y probar.
La introducción de CASE integradas está comenzando a tener un impacto significativo
en los negocios y sistemas de información de las organizaciones.
Con un CASE integrado, las organizaciones pueden desarrollar
rápidamente sistemas de mejor calidad para soportar procesos críticos del
negocio y asistir en el desarrollo y promoción intensiva de la información de productos
y servicios. Estas herramientas pueden proveer muchos beneficios en todas las
etapas del proceso de desarrollo de software, algunas de ellas son:
·
Verificar el uso
de todos los elementos en el sistema diseñado.
·
Automatizar el
dibujo de diagramas.
·
Ayudar en la
documentación del sistema.
·
Ayudar en la creación
de relaciones en la Base de Datos.
·
Generar
estructuras de código.
La principal ventaja de la utilización de una herramienta CASE, es la
mejora de la calidad de los desarrollos realizados y, en segundo término, el
aumento de la productividad. Para conseguir estos dos objetivos es conveniente
contar con una organización y una metodología de trabajo, además de la propia
herramienta.
1.6 CLASIFICACION 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:
·
Las 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:
1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado):
abarcan todas las fases del ciclo de vida del desarrollo de sistemas.
Son
llamadas también CASE workbench.
2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) ofront-end, orientadas a la automatización
y soporte de las actividades desarrolladas durante las primeras fases del
desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) oback-end, dirigidas a las últimas fases
del desarrollo: construcción e implantación.
4. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas 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.
JUANA HERNANDEZ HERNANDEZ SEM:IV GRUPO:B ING.SITEMAS COMPUTACIONALES.
JUANA HERNANDEZ HERNANDEZ SEM:IV GRUPO:B ING.SITEMAS COMPUTACIONALES.
Citas Bibliograficas:
http://alvaroblogdetrabajo.blogspot.mx/2011/03/el-papel-evolutivo-del-software.html
http://www.inei.gob.pe/biblioineipub/bancopub/Inf/Lib5103/Libro.pdf
http://www.slideshare.net/itlac/etapas-de-desarrollo-software
http://es.scribd.com/doc/102179675/conceptos-basicos-de-ingenieria-de-software
http://alvaroblogdetrabajo.blogspot.mx/2011/03/el-papel-evolutivo-del-software.html