Sie sind auf Seite 1von 17

INICIO

MUSEO DE INFORMTICA

ACERCA DE

Inicio Historia Ingeniera del Software

Ingeniera del Software


Publicado en 28 diciembre, 2010 por patponto

INTRODUCCIN
La ingeniera del software, segn la definicin de la IEEE en 1993, es la aplicacin de un enfoque sistemtico,
disciplinado y cuantificable al desarrollo, operacin y mantenimiento del software. La ingeniera del software ofrece
mtodos o tcnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo, y trata
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

reas muy diversas de la informtica y de las ciencias computacionales.

ORGEN
El concepto de ingeniera del software surgi en 1968, tras una conferencia en Garmisch (Alemania) que tuvo como
objetivo resolver los problemas de la crisis del software. El trmino crisis del software se us desde finales de 1960
hasta mediados de 1980 para describir los frecuentes problemas que aparecan durante el proceso de desarrollo de
nuevo software. Tras la aparicin de nuevo hardware basado en circuitos integrados, comenzaron a desarrollarse
sistemas y aplicaciones mucho ms complejos que hasta entonces no era posible construir puesto que el hardware
disponible no lo permita. Estos nuevos proyectos de desarrollo de software, en la mayora de ocasiones, no se
terminaban a tiempo, lo cual tambin provocaba que el presupuesto final del software excediera de aquel que se
haba pactado. Algunos de estos proyectos eran tan crticos (sistemas de control de aeropuertos, equipos para
medicina, etc) que sus implicaciones iban ms all de las prdidas millonarias que causaban. Adems, en muchos
casos el software no daba respuesta a las verdaderas necesidades del cliente o haba que ser un usuario experto
para poder utilizarlo, todo ello sumado a que el mantenimiento de los productos era complejo y muy costoso.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

El software no se produca como el hardware, que tena un proceso de fabricacin definido y dividido en fases. El
resultado eran productos de psima calidad en los que se haban invertido mucho tiempo y dinero pero que o bien
no llegaban a terminarse o bien a la larga no daban el resultado que se esperaba. Se detect que los mtodos de
desarrollo de software informales que hasta entonces haban bastado para proyectos pequeos no eran suficientes
para los nuevos y grandes proyectos, y que se necesitaban profesionales especializados en esta nueva disciplina
que fueran capaces de lidiar con la creciente complejidad de los nuevos sistemas.
Una de las primeras y ms conocidas referencias a los conceptos crisis el software e ingeniera del software fue
hecha por Edsger Dijkstra, durante la presentacin de 1972 titulada The Humble Programmer en la Association for
Computing Machinery, cuando se le hizo entrega de un Premio Turing.

NO SILVER BULLET
Durante dcadas, resolver la crisis del software desencaden en que compaas e investigadores produjeran ms y
ms herramientas software. Cada nueva tecnologa o prctica que apareci entre 1970 y 1990 fue tratada como una
bala de plata (en ingls, silver bullet) que solucionara la crisis del software.
En 1986, Fred Brooks public el artculo No Silver Bullet, argumentando que ninguna tecnologa o prctica por s
misma podra mejorar en un diez por ciento la productividad en los siguientes diez aos. El debate sobre las balas
de plata continu durante la siguiente dcada, dando lugar a numerosas interpretaciones sobre el artculo de
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Brooks.
Los defensores de lenguajes como Ada, o de los procesos software continuaron apostando por que su tecnologa
sera la que solucionara la crisis. Sin embargo, hubo gente que interpret el hecho de que no se encontrara una
solucin nica y efectiva al cien por cien como un fracaso de la ingeniera del software.
Si bien es cierto que la bsqueda de una nica solucin no funcion, tambin haba que ser consciente de que
tampoco existan balas de plata en ninguna otra profesin. As, con el transcurso de los aos, casi todo el mundo
acept que no se encontrara ninguna bala de plata, pero se tom esto como una prueba de que la ingeniera del
software finalmente haba madurado y que los proyectos deban tener xito gracias al trabajo duro y al esfuerzo. El
campo de la ingeniera del software es demasiado complejo y diverso para que una nica solucin resuelva todos
los problemas, pero el conjunto de todas las prcticas que surgieron y de las que surgen hoy en da son las que,
bien aplicadas, permiten que la ingeniera del software desarrolle productos de calidad.

EVOLUCIN DE LA INGENIERA DEL SOFTWARE


Con el transcurso de los aos se han desarrollado recursos que conforman la ingeniera del software, es decir,
herramientas y tcnicas de especificacin, diseo e implementacin del software: la programacin estructurada, la
programacin orientada a objetos, las herramientas CASE, la documentacin, los estndares, CORBA, los servicios
web, el lenguaje UML, etc.
En combinacin con las herramientas, tambin se han hecho esfuerzos por incorporar los mtodos formales al
desarrollo de software, argumentando que si se probaba formalmente que los productos software hacan lo que se
les requera, la industria del software sera tan predecible como lo son otras ramas de la ingeniera.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

La utilizacin de determinados recursos depende de la magnitud del proyecto, de la empresa a cargo, la experiencia
de los desarrolladores, el presupuesto con el que se cuenta, etc.
La ingeniera del software comprende:
Proceso de desarrollo de software (especificacin, implementacin y diseo, etc).
Metodologas para el desarrollo de software (RUP, patrones, framework).
Herramientas de desarrollo de software.

PROCESO SOFTWARE
El proceso de ingeniera de software se define como un conjunto de etapas parcialmente ordenadas con la
intencin de lograr un objetivo, en este caso, la obtencin de un producto de software de calidad. El proceso de
desarrollo de software es aquel en que las necesidades del usuario son traducidas en requerimientos de software,
estos requerimientos transformados en diseo y el diseo implementado en cdigo, el cdigo es probado,
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

documentado y certificado para su uso operativo. Concretamente define quin est haciendo qu, cundo hacerlo
y cmo alcanzar un cierto objetivo [Jacobson 1998].
El proceso de desarrollo de software requiere por un lado un conjunto de conceptos, una metodologa y un lenguaje
propio. A este proceso tambin se le llama el ciclo de vida del software, que comprende las etapas por las que pasa
un proyecto software desde que es concebido, hasta que est listo para usarse.
Hay cuatro actividades fundamentales comunes a todo proceso software:
Especificacin: usuarios e ingenieros definen el software a producir y las restricciones en su funcionalidad.
Desarrollo: fase en la cual el software se disea y se programa.
Validacin: el software debe ser probado para asegurar que cumple con las necesidades del cliente.
Evolucin: el software debe poder ser modificado para adaptarse a cambios en el mercado y en las
necesidades de los usuarios.
Cada producto software necesita un proceso diferente. Por tanto, estas etapas genricas deben organizarse de
diferente manera y en diferentes niveles segn el tipo de software para el que se aplique el proceso. Un uso
inapropiado del proceso software puede reducir la calidad o la usabilidad del producto a ser desarrollado, e incluso
incrementar los costes de desarrollo.
Los enfoques ms generales son los siguientes:
Modelo en cascada: ordena rigurosamente las etapas del ciclo de vida del software, de tal forma
que el inicio de cada etapa debe esperar a la finalizacin de la inmediatamente anterior. La primera
descripcin formal la realiz en 1970 Winston W. Royce, en uno de sus artculos.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Prototipado: pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en
poco tiempo, usando los programas adecuados y no se deben utilizar muchos recursos, pues a
partir de que ste sea aprobado se puede iniciar el verdadero desarrollo del software.
Incremental e iterativo: Divide la funcionalidad del sistema en partes. En cada incremento, una
parte de la funcionalidad es desarrollada, desde el anlisis hasta las pruebas.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Espiral: Combinacin de procesos en cascada y prototipado. Fue definido por Barry Boehm en 1986
en el artculo A Spiral Model of Software Development and Enhancement.

RAD (Rapid Application Development): emplea tcnicas iterativas y de prototipado. Lo introdujo James
Martin en 1991.
RUP (Rationa Unified Process): El Rational Unified Process en ingls es un proceso de desarrollo de
software iterativo y junto con el Lenguaje Unificado de Modelado (UML), constituye la metodologa estndar
ms utilizada para el anlisis, implementacin y documentacin de sistemas orientados a objetos.
El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologas adaptables
al contexto y necesidades de cada organizacin.
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

En 1987, Ivar Jacobson fund la compaa Objectory AB, que desarroll Objetory, un mtodo de desarrollo
orientado a objetos, extensin de lo que se conoca como aproximacin Ericsson. En 1995, Rational
Software compr Objectory AB, y en los siguientes aos desarrollaron y lanzaron el estndar UML (Unified
Modeling Language), as como el Rational Unified Process (RUP), que aunaba los esfuerzos y la
experiencia de todas las compaas adquiridas por Rational Software. En diciembre de 2002, IBM adquiri
Rational Software.

MTODOS
Un mtodo de ingeniera de software es un enfoque estructurado para desarrollar software cuyo objetivo es facilitar
la produccin de productos software de alta calidad a un coste razonable. Indican cmo construir tcnicamente el
software. Los mtodos abarcan un amplio espectro de tareas que incluyen: planificacin y estimacin de proyectos,
anlisis de los requerimientos del sistema y del software, diseo de procedimientos algortmicos, codificacin,
prueba y mantenimiento.
Los mtodos de la ingeniera de software introducen frecuentemente una notacin especial orientada al lenguaje o
grfica y a un conjunto de criterios para la calidad del software.
A lo largo de los aos se han ido desarrollando una gran cantidad de metodologas para desarrollar software, a
menudo vinculadas a algn tipo de organizacin, que adems desarrolla, apoya el uso y promueve la metodologa.
La metodologa es a menudo documentada en algn tipo de documentacin formal.
Algunas de las metodologas ms conocidas se explican a continuacin.

Programacin estructurada
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Tcnica en la cual la estructura de un programa tan solo emplea tres estructuras lgicas de control: secuencia,
seleccin e iteracin. La programacin estructurada se basa en el teorema del programa estructurado demostrado
por Bhm-Jacopini, el cual establece que cualquier programa con una entrada y una salida exclusivamente es
equivalente a un programa que contiene solamente las estructuras lgicas mencionadas anteriormente.
Esta nueva forma de programar que dio lugar a programas fiables y eficientes, que adems estaban escritos de
manera que facilitaba su comprensin posterior.

Programacin orientada a objetos o POO


Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un lenguaje diseado en 1967
para hacer simulaciones de eventos discretos, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de
Cmputo Noruego en Oslo. Simula introdujo la nocin de clases e instancias como parte de un paradigma de
programacin explcito. Las ideas de Simula 67 influenciaron muchos lenguajes posteriores, incluyendo Smalltalk,
CLOS, Object Pascal, C++
Smalltalk fue desarrollado en Xerox PARC por Alan Kay, entre otros, en la dcada de los 70. Smalltalk introdujo el
trmino POO para representar el uso de objetos y mensajes como la base de la computacin. Smalltalk fue
diseado para ser un sistema completamente dinmico en el cual las clases se podran crear y modificar en tiempo
de ejecucin en lugar de estticamente.
La programacin orientada a objetos fue el estilo de programacin dominante a principio y mediados de los aos
noventa, en gran parte debido a la influencia de lenguajes como C++. Su predominio fue consolidado gracias al
auge de las interfaces grficas de usuario, para las cuales la programacin orientada a objetos est particularmente
bien adaptada. En este caso, se habla tambin de programacin dirigida por eventos.
Las caractersticas de orientacin a objetos han sido agregadas a muchos lenguajes a lo largo de los aos,
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

incluyendo Ada, BASIC, Fortran, Pascal, entre otros. La adicin de estas caractersticas a los lenguajes que no
fueron diseados inicialmente para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de
mantenimiento del cdigo.
As como la programacin procedural introdujo tcnicas de mejora como la programacin estructurada, los mtodos
modernos de diseo de software orientados a objetos incluyen mejoras como el uso de patrones de diseo o
lenguajes de modelado como UML.

Extreme Programming
Enfoque formulado por Kent Beck en 1999, que se diferencia de las metodologas tradicionales principalmente en
que pone ms nfasis en la adaptabilidad que en la previsibilidad. Sus defensores consideran que ser capaz de
adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximacin mejor y ms
realista que definir todos los requisitos al comienzo e invertir esfuerzos despus en controlar los cambios.

HERRAMIENTAS
Suministran un soporte automtico o semiautomtico para los mtodos. Cuando se integran las herramientas de
forma que la informacin creada por una herramienta pueda ser usada por otra, se establece un sistema para el
soporte del desarrollo del software llamado ingeniera de software asistido por computadora (Computer Aided
Software Engineering o CASE).
Ya en los aos 70 un proyecto llamado ISDOS (Information System Design and Optimization System) dise un
lenguaje, y por lo tanto un producto, que analizaba la relacin existente entre los requisitos de un problema y las
necesidades que stos generaban, el lenguaje en cuestin se denominaba PSL (Problem Statement Language) y la
aplicacin que ayudaba a buscar las necesidades de los diseadores PSA (Problem Statement Analyzer). PSL se
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

empleaba para expresar requisitos de un sistema mediante un lenguaje formal. El lenguaje se expresaba
empleando objetos y relaciones entre ellos. Una vez compilado y sin errores, el fichero generado era recibido por la
aplicacin PSA, que generaba una base de datos con la informacin obtenida y permita manipular el contenido y
generar informes, entre otras cosas.
Aunque sos son los inicios de las herramientas informticas que ayudan a crear nuevos proyectos informticos, la
primera herramienta CASE fue Excelerator que sali a la luz en el ao 1984 y trabajaba bajo una plataforma PC.
Las herramientas CASE alcanzaron su techo a principios de los aos 90. En la poca en la que IBM haba
conseguido una alianza con la empresa de software AD/Cycle para trabajar con sus mainframes, estos dos gigantes
trabajaban con herramientas CASE que abarcaban todo el ciclo de vida del software. Pero poco a poco los
mainframes han ido siendo menos utilizados y actualmente el mercado de las Big CASE ha muerto completamente
abriendo el mercado de diversas herramientas ms especficas para cada fase del ciclo de vida del software. Por
ejemplo, algunas herramientas CASE son MagicDraw (diseo), ArchE (arquitectura) o MetaEdit (desarrollo).
Aunque no es fcil y no existe una forma nica de clasificarlas, las herramientas CASE se pueden clasificar teniendo
en cuenta los siguientes parmetros:
1. Las plataformas que soportan.
2. Las fases del ciclo de vida del desarrollo de sistemas que cubren.
3. La arquitectura de las aplicaciones que producen.
4. Su funcionalidad.
La siguiente clasificacin es la ms habitual basada en las fases del ciclo de desarrollo que cubren:
Upper CASE (U-CASE), herramientas que ayudan en las fases de planificacin, anlisis de requisitos y
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

estrategia del desarrollo, usando, entre otros diagramas UML.


Middle CASE (M-CASE), herramientas para automatizar tareas en el anlisis y diseo de la aplicacin.
Lower CASE (L-CASE), herramientas que semi-automatizan la generacin de cdigo, crean programas de
deteccin de errores, soportan la depuracin de programas y pruebas. Adems automatizan la
documentacin completa de la aplicacin.

TENDENCIA ACTUAL
Las direcciones en las que evoluciona la ingeniera del software hoy en da pueden agruparse de la siguiente
manera:
Metodologas giles: mtodos de desarrollo de software basados en procesos iterativos e incrementales,
donde los requisitos y soluciones evolucionan durante la colaboracin.
Metodologas como Scrum (1995), Extreme Programming (1999) o DSDM (1995) fueron evolucionando
hasta que en Febrero del 2001 se public Manifesto for Agile Software Development para definir la
aproximacin ahora conocida como metodologas giles.
Experimentacin: es una rama de la ingeniera del software interesada en realizar experimentos sobre
software, recolectar datos y deducir leyes y teoras de los mismos.
Desarrollo dirigido por modelos: primero se desarrollan modelos textuales grficos del software a
construir, y posteriormente se construye el software.
Lneas de productos software, en lugar de productos individuales.
A lo largo de los aos han surgido numerosas organizaciones y estndares que apoyan la ingeniera del software y
que dan ms fuerza y potencia a este mbito. Por ejemplo, el Software Engineering Institute
(http://www.sei.cmu.edu/index.cfm), la IEEE Computer Society (http://www.computer.org/portal/web/guest/home), o
documentos como el Software Engineering Body of Knowledge (SWEBOK).
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

En 2006, Money Magazine and Salary.com determine que la ingeniera del software era el mejor trabajo en Amrica
en trminos de crecimiento, remuneracin, nivel de estrs, flexibilidad horaria, creatividad, entorno de trabajo y
capacidad de ascenso.
A su vez, la conferencia Future of Software Engineering (FOSE) del 2000 document el estado de la ingeniera del
software y redact una lista con varios problemas para ser solucionados durante la prxima dcada.
Hoy en da, contamos con carreras universitarias, msteres, y una gran oferta formativa para profesionales del
software. A pesar de ser una disciplina joven y que sigue evolucionando, los resultados de todos los esfuerzos y
mtodos desarrollados con el paso de los aos, as como de la experiencia, permiten desarrollar productos de
calidad al nivel de cualquier otra ingeniera.

REFERENCIAS
http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
http://aprendeenlinea.udea.edu.co/lms/moodle/mod/resource/view.php?id=14273
http://www.experiencefestival.com/a/History_of_software_engineering__1985_to_present_No_silver_bullet/id/5134751
http://es.wikipedia.org/wiki/Herramienta_CASE
http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

http://es.wikipedia.org/wiki/Extreme_Programming
http://es.wikipedia.org/wiki/Rational_Unified_Process#Un_poco_de_historia
http://media.wiley.com/product_data/excerpt/94/08186760/0818676094.pdf
http://en.wikipedia.org/wiki/History_of_software_engineering
http://www.dagstuhl.de/Reports/96/9635.pdf
Patricia Pons Toms
Comparte!

Like

Share

Subm it

Cmo imaginaba Apple en 1987 la informtica en 2011

Historia de Microsoft

Publicado en HistoriaEtiquetado con: Crisis, Ingeneria del Software, Software

Categoras
open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Biografa (31)
Consolas y videojuegos (9)
Curiosidades (13)
Empresas (7)
Entretenimiento (11)
Historia (28)
Museo (26)
Noticias (8)
Redes Sociales (3)
Sin categora (4)
SO's y APP's (6)
Tecnologas (13)
Vdeo (18)

Etiquetas

Apple

BabbageByronCommodoreConsolasCrisisEckertENIACEnigma
GoogleHollerithIBMIngeneria del SoftwareInternetiOSLegoLovelaceMacintoshMarkMauchlyMicrosoft
AmstradAndroid

Mquina

AtanasoffAtari

Redes
analticaMquina de Turing Mquina DiferencialNintendoNoticiasPascalSociales

red inalmbrica

SoftwareTuringUnivacVideoconsolasVideojuegosvon NeumannWatson

SegaSinclairSmartPhone
Windows Zuse

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Diseo web:Lidia Contreras


Escola Tcnica Superior d'Enginyeria Informtica
2016Historia de la Informtica

Responsive ThemeCreado con WordPress

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Das könnte Ihnen auch gefallen