Sie sind auf Seite 1von 29

UNIVERSIDAD PARA EL DESARROLLO ANDINO

Anti hatun yachay wasi iskay simi yachachiypi umalliq

FACULTAD DE CIENCIAS E INGENIERIA


ESCUELA PROFESIONAL DE INGENIERIA INFORMÁTICA

MONOGRAFIA

INGENIERIA DE SOFTWARE

EXAMEN DE SUFICIENCIA PROFESIONAL


PARA OPTAR EL TÍTULO PROFESIONAL DE

INGENÍERO INFORMÁTICO
PRESENTADO POR

PUENTE SULLCARAY, Jorge Luis

ASESOR:
ING. CURI VILLANUEVA, Hasem Enrique

LIRCAY – ANGARAES- HUANCAVELICA – PERÚ


2016
DEDICATORIA (OPCIONAL)
CHINTICHIY

La ingeniería de software es una aplicación práctica del conocimiento

científico para proveer metodologías y técnicas que ayuden a desarrollar

sistemas de software a tiempo, y a su vez que aseguren que el

desarrollador cumpla con las expectativas de calidad y permanezca

dentro del presupuesto.


SUMMARY

La ingeniería de software es una aplicación práctica del conocimiento científico

para proveer metodologías y técnicas que ayuden a desarrollar sistemas de

software a tiempo, y a su vez que aseguren que el desarrollador cumpla con las

expectativas de calidad y permanezca dentro del presupuesto.


INTRODUCCIÓN

La Ingeniería del Software va a introducirse en la cuarta década de su

existencia y sufre de los muchos puntos fuertes y débiles. La Ingeniería del

Software se va aproximando a su edad media con muchos logros a sus

espaldas, pero con un trabajo significativo todavía por hacer. Hoy en día,

está reconocida como una disciplina legítima, digna de tener una

investigación seria, un estudio concienzudo y un grande y tumultuoso

debate. En la industria el Ingeniero del software ha sustituido al

programador como titulo de trabajo preferente. Los modelos de procesos

de software, métodos de ingeniería de software y herramientas se han

adoptado con éxito en el amplio espectro de las aplicaciones industriales.

Los gestores y usuarios reconocen la necesidad de un enfoque más

disciplinado del software.

La búsqueda de técnicas que mejorasen la calidad y permitiesen reducir

los costos de las soluciones basadas en computadoras ha sido uno de los

objetivos más perseguidos desde los inicios de la informática. A mediados

de los 60, la creación de un producto software se convertía en una tarea

angustiosa, se hizo por tanto necesario introducir una serie de

herramientas y procedimientos que facilitaran por un lado, la labor de

creación de nuevo software y por otro, la comprensión y el manejo del

mismo. Estos fueron los inicios de la Ingeniería del Software. Con el paso

del tiempo, la evolución de estos métodos nos han llevado a reconocer la

Ingeniería del Software como una verdadera disciplina, derivada de una

Ingenieria de software Pág. 5


investigación seria y de un estudio minucioso.

El autor.

Ingenieria de software Pág. 6


CAPITU

LO I

1. SOFTWARE

En primer lugar se va a tratar un concepto tan importante como

es el software. Es importante entender este concepto para poder

pasar a definir a continuación lo que es la ingeniería del software.

Algunas definiciones de software:

 IEEE Std. 610 define el software como “programas,

procedimientos y documentación y datos asociados,

relacionados con la operación de un sistema informático”

Ingenieria de software Pág. 7


 Según el Webster’s New Collegiate Dictionary (1975),

“software es un conjunto de programas, procedimientos y

documentación relacionada asociados con un sistema,

especialmente un sistema informático”.

El software se puede definir como el conjunto de tres componentes:

 Programas (instrucciones): este componente proporciona la

funcionalidad deseada y el rendimiento cuando se ejecute.

 Datos: este componente incluye los datos necesarios para

manejar y probar los programas y las estructuras requeridas

para mantener y manipular estos datos.

 Documentos: este componente describe la operación y uso del

programa.

igura 1. Componentes del software

1.1. COMPONENTES DEL SOFTWARE

Es importante contar con una definición exhaustiva del software

ya que de otra manera se podrían olvidar algunos

componentes. Una percepción común es que el software

sólo consiste en programas. Sin embargo, los programas no son

los únicos componentes del software.

Programas:

Los programas son conjuntos de instrucciones que proporcionan

Ingenieria de software Pág. 8


la funcionalidad deseada cuando son ejecutadas por el

ordenador. Están escritos usando lenguajes específicos que los

ordenadores pueden leer y ejecutar, tales como lenguaje

ensamblador, Basic, FORTRAN, COBOL, C… Los

programas también pueden ser generados usando

generadores de programas.

Datos:

Los programas proporcionan la funcionalidad requerida

manipulando datos. Usan datos para ejercer el control

apropiado en lo que hacen. El mantenimiento y las pruebas

de los programas también necesitan datos. El diseño del

programa asume la disponibilidad de las estructuras de datos

tales como bases de datos y archivos que contienen datos.

Documentos:

Además de los programas y los datos, los usuarios necesitan

también una explicación de cómo usar el programa.

Documentos como manuales de usuario y de operación son

necesarios para permitir a los usuarios operar con el sistema.

Los documentos también son requeridos por las personas

encargadas de mantener el software para entender el interior

del software y modificarlo, en el caso en que sea

necesario.

1.2. CARACTERÍSTICAS DEL SOFTWARE

Para poder comprender lo que es el software (y

consecuentemente la ingeniería del software), es importante

Ingenieria de software Pág. 9


examinar las características del software que lo diferencian de

otras cosas que los hombres pueden construir. Cuando se

construye hardware, el proceso creativo humano (análisis, diseño,

construcción, prueba) se traduce finalmente en una forma física.

Si construimos una nueva computadora, nuestro boceto inicial,

diagramas formales de diseño y prototipo de prueba, evolucionan

hacia un producto físico (chips, tarjetas de circuitos impresos,

fuentes de potencia, etc.).

El software es un elemento del sistema que es lógico, en lugar de

físico. Por tanto el software tiene unas características

considerablemente distintas a las del hardware:

a) el software se desarrolla, no se fabrica en un sentido

clásico.

Aunque existen similitudes entre el desarrollo del software y la

construcción del hardware, ambas actividades son

fundamentalmente diferentes.

b) El software no se «estropea».

El software no es susceptible a los males del entorno que

hacen que el hardware se estropee.

c) Aunque la industria tiende a ensamblar componentes, la

mayoría del software se construye a medida.

En el mundo del hardware, la reutilización de componentes es

una parte natural del proceso de ingeniería. En el mundo del

software es el inicio.

1.3. TIPOS DE SOFTWARE

Ingenieria de software Pág. 10


El software puede dividirse en dos grandes categorías:

1.3.1 SOFTWARE DE APLICACIONES:

Se usan para proveer servicios a clientes y ejecutar

negocios de forma más eficiente. El software de

aplicaciones puede ser un sistema pequeño o uno grande

integrado. Como ejemplos de este tipo de software están:

un sistema de cuentas, un sistema de planificación de

recursos.

1.3.2 SOFTWARE DE SISTEMAS:

El software de sistemas se usa para operar y mantener

un sistema informático. Permite a los usuarios usar los

recursos del ordenador directamente y a través de otro

software. Algunos ejemplos de este tipo de software son:

sistemas operativos, compiladores y otras utilidades del

sistema.

1.4. APLICACIONES DEL SOFTWARE

El software puede aplicarse en cualquier situación en la que

se haya definido previamente un conjunto específico de pasos

procedimentales (es decir, un algoritmo) (excepciones notables

a esta regla son el software de los sistemas expertos y de

redes neuronales). El contenido y determinismo de la

información son factores importantes a considerar para

determinar la naturaleza de una aplicación software. El

contenido se refiere al significado y a la forma de la información

de entrada y salida. Por ejemplo, muchas aplicaciones

Ingenieria de software Pág. 11


bancarias usan unos datos de entrada muy estructurados

(una base de datos) y producen informes con determinados

formatos. El software que controla una máquina automática

(por ejemplo:

Un control numérico) acepta elementos discretos con una

estructura limitada y produce órdenes concretas para la

máquina en rápida sucesión.

El determinismo de la información se refiere a la predictibilidad

del orden y del tiempo de llegada de los datos. Un programa de

análisis de ingeniería acepta datos que están en un orden

predefinido, ejecuta algoritmos de análisis sin interrupción y

produce los datos resultantes en un informe o formato

gráfico. Un sistema operativo multiusuario, por otra parte,

acepta entradas que tienen un contenido variado y que se

producen en instantes arbitrarios, ejecuta algoritmos que

pueden ser interrumpidos en condiciones externas y produce

una salida que depende de una función del entorno y del

tiempo. Las aplicaciones con estas características se dice que

son indeterminadas.

Algunas veces es difícil establecer categorías genéricas para

las aplicaciones del software que sean significativas.

Conforme aumenta la complejidad del software, es más

difícil establecer compartimentos nítidamente separados. Las

siguientes áreas del software indican la amplitud de las

aplicaciones potenciales:

Ingenieria de software Pág. 12


a) Software de sistemas: el software de sistemas es un

conjunto de programas que han sido escritos para servir a

otros programas. Algunos programas de sistemas (por

ejemplo: compiladores, editores y utilidades de gestión de

archivos) procesan estructuras de información complejas

pero determinadas. Otras aplicaciones de sistemas (por

ejemplo: ciertos componentes del sistema operativo,

utilidades de manejo de periféricos, procesadores de

telecomunicaciones) procesan datos en gran medida

indeterminados. En cualquier caso, el área del software de

sistemas se caracteriza por una fuerte interacción con el

hardware de la computadora; una gran utilización por

múltiples usuarios; una operación concurrente que requiere

una planificación, una compartición de recursos y una

sofisticada gestión de procesos; unas estructuras de datos

complejas y múltiples interfaces externas.

b) Software de tiempo real: el software que

coordina/analiza/controla sucesos del mundo real

conforme ocurren. Entre los elementos del software de

tiempo real se incluyen: un componente de adquisición de

datos que recolecta y da formato a la información recibida

del entorno externo, un componente de análisis que

transforma la información según lo requiera la aplicación,

un componente de control/salida que responda al entorno

externo y un componente de monitorización que coordina

Ingenieria de software Pág. 13


todos los demás componentes, de forma que pueda

mantenerse el respuesta en tiempo real.

c) Software de gestión: el proceso de la información

comercial constituye la mayor de las áreas de aplicación

del software. Los sistemas discretos (por ejemplo: nóminas,

cuentas de haberes-débitos, inventarios, etc.) han

evolucionado hacia el software de sistemas de información

de gestión (SIG) que accede a una o más bases de datos

que contienen información comercial. Las aplicaciones en

esta área reestructuran los datos existentes para facilitar las

operaciones comerciales o gestionar la toma de decisiones.

Además de las tareas convencionales de procesamiento de

datos, las aplicaciones de software de gestión también

realizan cálculo interactivo (por ejemplo: el procesamiento

de transacciones en puntos de venta).

d) Software de ingeniería y científico: este tipo de software

está caracterizado por los algoritmos de manejo de

números. Las aplicaciones van desde la astronomía a la

vulcanología, desde el análisis de la presión de los

automotores a la dinámica orbital de las lanzaderas

espaciales y desde la biología molecular a la fabricación

automática. Sin embargo las nuevas aplicaciones del área

de ingeniería/ciencia se han alejado de los algoritmos

convencionales numéricos. El diseño asistido por

computadora (CAD), la simulación de sistemas y otras

Ingenieria de software Pág. 14


aplicaciones interactivas, han comenzado a coger

características del software de tiempo real e incluso de

software de sistemas.

e) Software empotrado: los productos inteligentes se han

convertido en algo común en casi todos los mercados de

consumo e industriales. El software empotrado reside en

memoria de sólo lectura y se utiliza para controlar

productos y sistemas de los mercados industriales y de

consumo. El software empotrado puede ejecutar

funciones muy limitadas y curiosas (por ejemplo: el control

de las teclas de un horno microondas) o suministrar una

función significativa y con capacidad de control (por

ejemplo: funciones digitales en un automóvil, tales como

control de la gasolina, indicadores en el salpicadero,

sistemas de frenado, etc.)

f) Software de computadoras personales: el mercado del

software de computadoras personales ha germinado en las

pasadas décadas. El procesamiento de textos, las hojas de

cálculo, los gráficos por computadora, multimedia,

entretenimiento, gestión de bases de datos, aplicaciones

financieras, de negocios y personales y redes o acceso a

bases de datos externas son algunas de los cientos de

aplicaciones.

g) Software basado en web: las páginas web buscadas

por un explorador son software que incorpora

Ingenieria de software Pág. 15


instrucciones ejecutables y datos.

h) Software de inteligencia artificial: el software de

inteligencia artificial hace uso de algoritmos no numéricos

para resolver problemas complejos para los que no son

adecuados el cálculo o el análisis directo. Los sistemas

expertos, también llamados sistemas basados en el

conocimiento, reconocimiento de patrones (imágenes y

voz), redes neuronales artificiales, prueba de teoremas y los

juegos son representativos de las aplicaciones de esta

categoría.

Ingenieria de software Pág. 16


CAPITULO II

1. INGENIERÍA DEL SOFTWARE

El término ingeniería de software se define en el DRAE (Diccionario de

la Real Academia Española) como:

 Conjunto de conocimientos y técnicas que permiten aplicar el

saber científico a la utilización de la materia y de las fuentes

de energía.

 Profesión y ejercicio del ingeniero

Ingenieria de software Pág. 17


Y el término ingeniero se define como:

 Persona que profesa o ejerce la ingeniería.

De igual modo, la Real Academia de Ciencias Exactas, Físicas y

Naturales de España define el término Ingeniería como: conjunto de

conocimientos y técnicas cuya aplicación permite la utilización

racional de los materiales y de los recursos naturales, mediante

invenciones, construcciones u otras realizaciones provechosas para el

hombre.

Otras definiciones:

 Ingeniería del Software es el estudio de los principios y

metodologías para el desarrollo y mantenimiento de

sistemas de software (Zelkovitz, 1978).

 Ingeniería del Software es la aplicación práctica del

conocimiento científico al diseño y construcción de programas

de computadora y a la documentación asociada requerida

para desarrollar, operar (funcionar) y mantenerlos. Se conoce

también como desarrollo de software o producción de

software (Bohem, 1976)

 Ingeniería del Software trata del establecimiento de los

principios y métodos de la ingeniería a fin de obtener

software de modo rentable que sea fiable y trabaje en

máquinas reales (Bauer, 1972)

 La aplicación de un enfoque sistemático, disciplinado y

cuantificable al desarrollo, operación (funcionamiento) y

mantenimiento del software; es decir, la aplicación de

Ingenieria de software Pág. 18


ingeniería al software. (IEEE, 1993)

La definición de IEEE describe la ingeniería del software como un

enfoque sistemático cubriendo los aspectos del desarrollo, operación y

mantenimiento. Este enfoque es disciplinado y cuantificable.

2. HISTORIA DE LA INGENIERÍA DE SOFTWARE

La ingeniería de software surgió de una serie de investigaciones en la

década de los sesenta. Las primeras investigaciones al respecto

buscaban hallar mejores mecanismos para escribir programas.

Trabajos posteriores, como el análisis y diseño estructurado,

comenzaron a presentar un visión más amplia del proceso. La

disciplina se ha enriquecido con muchas investigaciones y avances

tecnológicos desde esa época.

La ingeniería de software, durante toda su vida, ha estado

“marcada” por tres enfoques o paradigmas principales :

 Los métodos orientados a procesos

 Los métodos orientados a la información

 Los métodos orientados a objetos

2.1. Los métodos orientados a procesos

Los comienzos de la ingeniería de software se hallan en la

década de los sesenta cuando varios matemáticos propusieron

nuevos mecanismos para la construcción de programas. En

varios artículos de 1965 y 1968 Dijkstra planteó la necesidad

de construir aplicaciones basadas en estructuras y no en

instrucciones de salto (instrucciones GOTO). Dijkstra culpó a

estas instrucciones de los diversos problemas de claridad, errores

Ingenieria de software Pág. 19


involuntarios y fallas en el desarrollo de software.

El mayor apoyo a tales teorías y, tal vez, el nacimiento de la

Ingeniería de software como disciplina ocurrió en una conferencia

organizada por la NATO en 1969, allí se congregaron varios de

los principales científicos de computación y se planteó la

necesidad de mejores métodos para el desarrollo de

aplicaciones, cada vez más grandes y complejas.

A partir de allí varias técnicas surgieron para el mejoramiento

del proceso de desarrollo. Una de las más interesantes fue el

seudo-código, presentado por David Parnas en 1972. El seudo-

código es considerado como el primer modelo de software

abstracto, formal y revisable. A pesar de no ofrecer un alto nivel

de abstracción fue el comienzo de varios métodos utilizados para

la construcción de programas.

En mayo de 1974, Larry Constantine y dos alumnos suyos,

Stevens y Myers, presentaron en una edición del IBM Systems

Journal el artículo “Structured Design”. En este artículo,

Constantine presentó, por primera vez en la historia, una notación

gráfica que permitía describir el comportamiento de los

diferentes módulos de la aplicación.

A diferencia de las técnicas anteriores, Constantine estableció un

mecanismo que no sólo permitía describir procedimientos o

programas, sino que permitía describir varios módulos y las

interrelaciones entre ellos.

Aunque no puede considerarse un método completo,

Ingenieria de software Pág. 20


Constantine estableció los primeros pasos en los métodos

estructurados (orientados a los procesos). El artículo definió

cuatro pasos para el desarrollo de cualquier programa:

a) Establecer un bosquejo del sistema definiendo la función

básica que debe cumplir.

b) Identificar los “usuarios externos” del sistema,

estableciendo claramente cuáles son los datos de entrada y

de salida del mismo.

c) Establecer las transformaciones conceptuales, que se

efectúan sobre los datos, que sean más importantes para la

solución del problema.

d) Definir las estructuras de código que realicen estas

transformaciones.

Algunas investigaciones similares sobre mejores mecanismos

para la construcción de aplicaciones se generaron por esa

misma época: Myers profundizando sobre los diagramas de

estructura (1974) y Jackson con su método de diseño (1975).

Sin embargo, el modelo planteado por Constantine tuvo una

mayor acogida y fue ampliado y mejorado paralelamente por dos

grupos de personas: D.T. Ross y K.E. Schoman con su método

SADT (Análisis estructurado y Técnica de desarrollo) y Tom De

Marco con SASS (Análisis estructurado y especificación de

Sistemas).

Las adiciones al método de Constantine, especialmente las

propuestas por DeMarco permitieron aplicar el método de análisis

Ingenieria de software Pág. 21


y diseño estructurado en sistemas y organizaciones cada vez más

grandes y complejas. DeMarco introdujo el proceso de análisis de

requerimientos, el uso del diccionario de datos y de las mini-

especificaciones en seudo-código dentro del método de

Constantine.

DeMarco y Constantine fueron contratados rápidamente por el

investigador Edward Yourdon, quien construyó toda una industria

basada en la definición y aplicación de métodos de desarrollo

de software. Ed Yourdon es uno de los principales

responsables de la evolución de los métodos de desarrollo

durante los primeros años y de su difusión por todo el mundo.

Muchos de los desarrollos posteriores de los métodos

fueron definidos por consultores de Yourdon Inc.: Ken Orr, Chris

Gane, Trish Sarson, Paul Ward, Stephen Mellor. Ellos

desarrollaban adiciones a los métodos y los adaptaban de

acuerdo a las necesidades de las compañías que los contrataban.

El énfasis de los métodos en el análisis y diseño de los

procedimientos de las aplicaciones fue, con el tiempo,

perdiendo fuerza y campo de acción entre las empresas del

mundo. El advenimiento de las bases de datos y los lenguajes de

cuarta generación afectaron el proceso de evolución de los

métodos de desarrollo. Algunos métodos estructurados, como el

Gane/Sarson comenzaron a incorporar adaptaciones para el

diseño de bases de datos. El uso de métodos orientados a

los datos comenzarían a ser mucho más populares a medida que

Ingenieria de software Pág. 22


avanzaba la década de los ochenta.

Los métodos orientados a los procesos se basan en

procesos de descomposición funcional de los sistemas. Estos

métodos basan el estudio de la realidad y el modelamiento de los

sistemas en los flujos de datos que ocurren en un sistema y en

las transformaciones que padecen durante su camino.

2.2. Métodos Orientados a los

datos

Casi de forma simultánea a como se fueron gestando los métodos

estructurados orientados a los procesos, se fueron estableciendo

otros métodos para la construcción de aplicaciones basados en

las estructuras de los datos que deben manejar.

En 1974 se publicaron algunos estudios del matemático francés

J.D. Warnier, quien planteó el diseño de las aplicaciones como

una relación directa de las salidas que se esperan de ellas. Estos

métodos fueron ampliados por Ken Orr en 1977 y 1981 para ser

aplicados en gran variedad de situaciones. El método, en

general, es conocido como método de Warnier/Orr.

De forma similar, en 1975, M. Jackson presentó las bases

su metodología de desarrollo. Jackson planteó dentro de sus

principios, la combinación de modelar el mundo real con modelar

las funciones del sistema. Jackson, en lugar de modelar la

realidad en función de procesos, como era tradicional, propuso

modelar el mundo real en función de entidades, acciones y

estructuras.

Ingenieria de software Pág. 23


Las entidades, entendidas como elementos del mundo real que

participan en la vida del sistema son la base de todos los análisis

de Jackson. Tal información, brinda información importante sobre

los datos que constituyen el problema del sistema. Los datos,

según esta consideración, son los únicos elementos de las

especificaciones que tienen una estructura objetiva y que

pueden ser usados como una base lógica y racional para la

estructura del programa, evitando utilizar una descomposición

funcional que tiene un alto grado de juicios subjetivos.

El alto contenido formal de los métodos de Jackson y Warnier/Orr

desestimularon su uso en la construcción de sistemas grandes o

donde se requerían grandes esfuerzos de análisis. El estudio de

las estructuras de los datos, en lugar de su flujo dentro del

sistema, no fue muy utilizado por algún tiempo.

En publicaciones de 1976 Sam Chen presentó uno de los

modelos de mayor influencia en el desarrollo de sistemas.

Chen presentó un modelo que permitía organizar de forma

adecuada los diferentes elementos de los datos y las relaciones

existentes entre ellos, presentó por primera vez el modelo

entidad-relación.

El modelo, expandido ampliamente por Chen y Flavin (1981),

comenzó a ser utilizados para el diseño de bases de datos

relacionales. Razón por la cual, el modelo comenzó a ser parte

de gran variedad de métodos de desarrollo, incluyendo métodos

de desarrollo orientados a procesos como los métodos de

Ingenieria de software Pág. 24


Yourdon.

A medida que se popularizaba el uso de los sistemas de bases de

datos, las empresas comenzaron a descubrir que los métodos

tradicionales no brindaban un soporte adecuado para la

construcción de los sistemas. La duplicidad de información y de

procesos de actualización comenzó a hacerse evidente y

planteó la necesidad de métodos que definieran como uno de

sus objetivos fundamentales la construcción de una base de datos

a nivel corporativo.

Para 1981 James Martin y Clive Finkelstein presentaron el método

de la Ingeniería de Software. El método basa el desarrollo de los

sistemas en un proceso de planeación estratégica previo al

proceso. Uno de los resultados de este proceso es un modelo de

datos a nivel organizacional que debe ser refinado durante la

construcción de cada sistema de la empresa.

El método es bastante orientado a los datos y se basa en

la estructura de la información de la empresa para realizar la

organización de las aplicaciones y la programación de los

módulos. El método también manifiesta la necesidad de

herramientas automatizadas para la construcción de las

aplicaciones. (James Martin es considerado el padre de los

lenguajes de cuarta generación y las herramientas CASE).

La ingeniería de la información, durante el análisis y el diseño se

concentra en las necesidades de información y las estructuras de

datos que soportan las operaciones de la compañía. La

Ingenieria de software Pág. 25


construcción de las aplicaciones se realiza, por lo general,

utilizando sistemas de generación de código o lenguajes de cuarta

generación.

Los métodos orientados a los datos se basan en la estructura de

los datos que deben ser procesados en el sistema. Estos

métodos establecen una estrecha relación entre la estructura de

los datos y los mecanismos que actúan sobre ellos, por lo cual,

basan su estudio en la comprensión de tales estructuras.

2.3. Métodos orientados al

objeto

El enfoque de analizar sólo una parte del problema (procesos o

datos), empezó a revaluarse a medida que los sistemas se

tornaban más complejos, especialmente con sistemas distribuidos

o con alta interacción con otros sistemas autónomos.

La tecnología orientada al objeto basa sus construcciones en

objetos, una especie de paquetes que encapsulan datos y

procedimientos como una unidad. Los objetos son unos

mecanismos muy intuitivos para el modelamiento de la realidad, y

fueron utilizados como tales en sistemas de simulación desde

1967. (Simula es un lenguaje de simulación basado en objetos).

En 1972 los objetos comenzaron a ser utilizados para la

construcción de sistemas de software más complejos. En esa

época el Laboratorio PARC de Xerox diseño y construyo el

primer sistema de computador con ratón, interfaces gráficas y un

entorno adecuado de desarrollo orientado a objetos: el SmallTalk.

Ingenieria de software Pág. 26


Los primeros métodos de desarrollo orientado a objetos fueron

apareciendo basados en experiencias de programación de

varios autores, especialmente sobre lenguajes como SmallTalk y

Ada. Entre los gestores de los primeros métodos se halla Edwards

(1985) y Grady Booch (1986).

Grady Booch presentó inicialmente un método para el diseño de

las clases de un programa basado en los conceptos de

encapsulamiento y herencia existente en los objetos. Con el

tiempo, presentó adiciones al método para brindar cabida a

actividades adicionales de análisis y construcción de aplicaciones.

En la actualidad existen una gran variedad de métodos

orientados a objetos, muchos de ellos generados por los

mismos autores que presentaron métodos orientados a

procesos o métodos orientados a datos. Entre la cantidad de

métodos orientados a objetos podemos mencionar: Jacobson

(Objectory), Rumbaugh (OMT), Coad/Yourdon, Martin/Odell,

Shlaer/Mellor, Booch, HP Fusion y MOOSES entre otros.

Los métodos orientados a objetos basan su modelamiento en la

identificación de los objetos del problema. Los objetos,

entidades del mundo real, son estudiados y descritos en

función de sus atributos (datos) y su comportamiento (procesos).

Los objetos que son encontrados, se analizan y refinan para ser

programados, de forma natural, en lenguajes orientados a objetos.

Debido a que los objetos son la unidad durante todo el ciclo de

vida del proyecto, estos métodos son bastante uniformes y

Ingenieria de software Pág. 27


consistentes.

3. PROBLEMÁTICA PRINCIPAL DE LA INGENIERÍA DE

SOFTWARE

“Nosotros construimos software como los hermanos Wright volaban

aeroplanos. Construimos la cosa por completo, la empujamos por una

colina, la dejamos que se estrelle, y comenzamos de nuevo.” 8

La ingeniería de software busca encontrar mejores medios para

construir software. Los medios tradicionales de construcción son, por lo

general, costosos, y generan productos ineficientes y equivocados. Los

nuevos medios de construcción deben ser más confiables,

predecibles y capaces de entregar productos económicos y

funcionales.

3.1. Fracaso de la Ingeniería

Clásica

A pesar de los esfuerzos realizados por infinidad de

investigadores y teóricos, la ingeniería de software no parece

producir los resultados esperados. La ingeniería de software se ha

centrado en la construcción de métodos que faciliten y mejoren el

proceso de desarrollo de software. Sin embargo, muchos de las

organizaciones que aplican tales métodos siguen teniendo

problemas con el software que elaboran.

Algunos ejemplos exitosos de aplicación de la ingeniería poseen

características casi ideales, muy diferentes a la mayoría de los

proyectos de desarrollo de software. Algunos nuevos trabajos

en la materia buscan evaluar cuál es el mejor método

Ingenieria de software Pág. 28


(metodología) que se puede aplicar en un proyecto

específico y cuales son los factores de éxito y fracaso que se

presentan en los proyectos reales.

Las herramientas automatizadas de apoyo a métodos de

ingeniería de software, o herramientas CASE (Computer Aided

Software Engineering), surgieron con fuerza a mediados de los

ochenta como una posible solución a todos los problemas de las

organizaciones con

8
Cita de GRAHAM, R.M. tomada de NAUR, P y RANDELL, B (editores). Software Engineering: A

report on a Conference sponsored by the NATO Science Comittee/ NATO. 1969 citada en

MARTIN, James y McCLURE, Carma. Structured Techniques for Computing. Prentice-Hall.

Englewood Cliffs, NJ, EE.UU. 1985

el manejo de los métodos de desarrollo. La verdad, sin embargo,

es que muchas de tales herramientas no han funcionado, en

muchos casos por un mal uso de los métodos en sí mismos o por

limitaciones de las herramientas.

Algunos han definido como una “crisis” y una “aflicción crónica” los

diversos problemas que se presentan en el desarrollo de

software. De hecho, a pesar de todas las olas tecnológicas y

técnicas que han aparecido en todos los tiempos de la informática,

la “crisis” patológica que sufre el software no parece haber

mermado.

Para muchos, la concepción clásica de ingeniería de software ha

fallado y se hace necesario crear nuevos estilos de atacar los

problemas para poder solucionarlos.

Ingenieria de software Pág. 29

Das könnte Ihnen auch gefallen