Está en la página 1de 11

La evolución del Software

Durante los primeros años de la era de la computadora, el software se


contemplaba como un añadido. La programación de computadoras era un "arte de
andar por casa" para el que existían pocos métodos sistemáticos. El desarrollo del
software se realizaba virtualmente sin ninguna planificación, hasta que los planes
comenzaron a descalabrarse y los costes a correr. Los programadores trataban de
hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. El
software se diseñaba a medida para cada aplicación y tenia una distribución
relativamente pequeña.

La mayoría del software se desarrollaba y era utilizado por la misma persona


u organización. La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba.
Debido a este entorno personalizado del software, el diseño era un proceso
implícito, realizado en la mente de alguien y, la documentación normalmente no
existía.

La segunda era en la evolución de los sistemas de computadora se extienden


desde la mitad de la década de los sesenta hasta finales de los setenta. La
multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de
interacción hombre - maquina. Las técnicas interactivas abrieron un nuevo mundo
de aplicaciones y nuevos niveles de sofisticación del hardware y del software. Los
sistemas de tiempo real podían recoger, analizar y transformar datos de múltiples
fuentes, controlando así los procesos y produciendo salidas en milisegundos en
lugar de minutos. Los avances en los dispositivos de almacenamiento en línea
condujeron a la primera generación de sistemas de gestión de bases de datos.

La segunda era se caracterizo también por el establecimiento del software


como producto y la llegada de las "casas del software". Los patronos de la industria,
del gobierno y de la universidad se aprestaban a "desarrollar el mejor paquete de
software" y ganar así mucho dinero.

La tercera era en la evolución de los sistemas de computadora comenzó a


mediados de los años setenta y continúo más allá de una década. El sistema
distribuido, múltiples computadoras, cada una ejecutando funciones concurrentes
y comunicándose con alguna otra, incrementó notablemente la complejidad de los
sistemas informáticos. Las redes de área local y de área global, las comunicaciones
digitales de alto ancho de banda y la creciente demanda de acceso "instantáneo" a
los datos, supusieron una fuerte presión sobre los desarrolladores del software.
La conclusión de la tercera era se caracterizo por la llegada y amplio uso de
los microprocesadores. El microprocesador ha producido un extenso grupo de
productos inteligentes, desde automóviles hasta hornos microondas, desde robots
industriales a equipos de diagnósticos de suero sanguíneo.

La cuarta era de la evolución de los sistemas informáticos se aleja de las


computadoras individuales y de los programas de computadoras, dirigiéndose al
impacto colectivo de las computadoras y del software. Potentes maquinas
personales controladas por sistemas operativos sofisticados, en redes globales y
locales, acompañadas por aplicaciones de software avanzadas se han convertido en
la norma.

La industria del software ya es la cuna de la economía del mundo. Las


técnicas de la cuarta generación para el desarrollo del software están cambiando en
la forma en que la comunidad del software construye programas informáticos. Las
tecnologías orientadas a objetos están desplazando rápidamente los enfoques de
desarrollo de software más convencionales en muchas áreas de aplicaciones.

Sin embargo, un conjunto de problemas relacionados con el software ha


persistido a través de la evolución de los sistemas basados en computadora, y estos
problemas continúan aumentando.

1. los avances del software continúan dejando atrás nuestra habilidad de


construir software para alcanzar el potencial del hardware.
2. Nuestra habilidad de construir nuevos programas no pueden ir al mismo
ritmo de la demanda de nuevos programas, ni podemos construir
programas lo suficientemente rápido como para cumplir las necesidades
del mercado y de los negocios.
3. El uso extenso de computadoras ha hecho de la sociedad cada vez más
dependiente de la operación fiable del software. Cuando el software falla,
pueden ocurrir daños económicos enormes y ocasionar sufrimiento
humano.
4. Luchamos por construir software informático que tengan fiabilidad y alta
calidad.
5. Nuestra habilidad de soportar y mejorar los programas existentes se ve
amenazada por diseños pobres y recursos inadecuados.

En respuesta a estos problemas, las practicas de la Ingeniería del Software se


están adoptando en toda la industria.

Que es la Ingeniería del Software ?


La Ingeniería del software es una disciplina o área de la Informática o
Ciencias de la Computación, que ofrece métodos y técnicas para desarrollar y
mantener software de calidad que resuelven problemas de todo tipo. Hoy día es
cada vez mas frecuente la consideración de la Ingeniería del Software como una
nueva área de la Ingeniería, y el Ingeniero del Software comienza a ser una
profesión implantada en el mundo laboral internacional, con derechos, deberes y
responsabilidades que cumplir, junto a una, ya, reconocida consideración social en
el mundo empresarial y, por suerte, para esas personas con brillante futuro.

La ingeniería del software trata con áreas muy diversas de la Informática y de


las Ciencias de la Computación, tales como construcción de compiladores, sistemas
operativos o desarrollos de Intranet/Internet, abordando todas las fases del ciclo de
vida del desarrollo de cualquier tipo de sistemas de información y aplicables a una
infinidad de áreas tales como: negocios, investigación científica, medicina,
producción, logística, banca, control de trafico, meteorología, el mundo del
derecho, la red de redes Internet, redes Intranet y Extranet, etc.

Definición del termino Ingeniería del Software

El termino Ingeniería se define en el Diccionario de la Real Academia


Española de la Lengua como: "1. 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. 2. Profesión y ejercicio del Ingeniero" y el termino 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 termino Ingeniería
como: " Un 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".

Evidentemente, si la Ingeniería del Software es una nueva Ingeniería, parece


lógico que reúna las propiedades citadas en las definiciones anteriores. Sin
embargo ni el DRAE(Diccionario de la Real Academia Española de la Lengua), ni la
Real Academia Española de Ciencias han incluido todavía el termino en sus ultimas
ediciones; en consecuencia vamos a recurrir para su definición mas precisa a
algunos de los autores mas acreditados que comenzaron en su momento a utilizar
el termino o bien en las definiciones dadas por organismos internacionales
profesionales de prestigio tales como IEEE o ACM, de los cuales se han seleccionado
las siguientes definiciones de Ingeniería del Software.
Definición 1:
Ingeniería del Software es el estudio de los principios y metodologías
para desarrollo y mantenimiento de sistemas de software [Zelkovits, 1978].

Definición 2:
Ingeniería del Software es la aplicación practica del conocimiento
científico en el diseño y construcción de programas de computadora y la
documentación necesaria requerida para desarrollar, operar(funcionar) y
mantenerlos [Bohem, 1976].

Definición 3:
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].

Definición 4:
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 Ingeniería al software [IEEE, 1993].

Una perspectiva industrial

En los primeros días de la informática, los sistemas basados en computadora


se desarrollaban usando técnicas de gestión orientadas a hardware. Los gestores
del proyecto se centraban en el hardware, debido a que era el factor principal del
presupuesto en el desarrollo del sistema. Para controlar los costes del hardware, los
gestores instituyeron controles formales y estándares técnicos. Exigían un análisis y
diseño completo antes de que algo se construyera. Median el proceso para
determinar donde podían hacerse mejoras. Dicho sencillamente, aplicaban los
controles, los métodos y las herramientas que reconocemos como Ingeniería del
Hardware. Desgraciadamente, el software no era normalmente mas que un
añadido.

En los primeros días, la programación se veía como un arte. Existían pocos


métodos formales y pocas personas los usaban.

Hoy, la distribución de costes en el desarrollo de sistemas informáticos ha


cambiado drásticamente. El software, en lugar del hardware, es normalmente el
elemento principal del coste.
En las décadas pasadas los ejecutivos y muchos aprendices técnicos se
habían hechos las siguientes preguntas:

1. Por qué lleva tanto tiempo terminar los programas?


2. Por qué es tan elevado el coste?
3. Por qué no podemos encontrar todos los errores antes de entregar el
software a nuestros clientes?
4. Por qué nos resulta difícil constatar el progreso conforme se desarrolla el
software?

Estas y otras muchas cuestiones son una manifestación del carácter del
software y de la forma en que se desarrolla, un problema que ha llevado a la
adopción de la Ingeniería del Software como practica.

Competitividad del Software

Durante muchos años, los desarrolladores de software empleados por


grandes y pequeñas compañías eran los únicos en este campo. Como todos los
programas se construían de forma personalizada, los desarrolladores de este
software domestico dictaban los costes, planificación y calidad. Hoy, todo esto ha
cambiado.

El software ahora es una empresa extremadamente competitiva. El software


que se construía internamente ahora se puede adquirir en tiendas. Muchas
empresas que en su momento pagaban legiones de programadores para crear
aplicaciones especializadas ahora ofrecen a un tercero mucho del trabajo del
software.

El Software

La descripción de software en un libro de texto podría tomar la forma


siguiente: el software es (1) instrucciones que cuando se ejecutan proporcionan la
función y el rendimiento deseados, (2) estructuras de datos que permiten a los
programas manipular adecuadamente la información, y (3) documentos que
describen la operación y el uso de programas.

Características del Software


Para poder comprender lo que es el software (y consecuentemente la
Ingeniería del Software), es importante examinar las características del software
que lo diferencian de otras cosas que los hombres pueden construir.

El software es un elemento del sistema que es lógico, en lugar de físico. Por


lo tanto el software tiene unas características considerablemente distintas a las del
hardware:

1. 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. En
ambas actividades la buena calidad se adquiere mediante un buen
diseño, pero la fase de construcción del hardware puede introducir
problemas de calidad que no existen (o son fácilmente corregibles) en el
software. Ambas actividades dependen de las personas, pero la relación
entre las personas dedicadas y el trabajo realizado es completamente
diferente para el software. Ambas actividades requieren de la
construcción de un producto, pero los métodos son diferentes.

Los costes del software se encuentran en la ingeniería. Esto significa que


los proyectos de software no se pueden gestionar como si fueran
proyectos de fabricación.

2. El software no se estropea. El software no es susceptible a los males del


entorno que hacen que el hardware se estropee. Otro aspecto de ese
deterioro ilustra la diferencia entre el hardware y el software. Cuando un
componente se estropea, se sustituye por una pieza de repuesto. No hay
pieza de repuesto para el software. Cada fallo en el software indica un
error en el diseño o en el proceso mediante el que se tradujo el diseño a
código maquina ejecutable. Por tanto, el mantenimiento del software
tiene una complejidad considerablemente mayor que la del
mantenimiento del hardware.

3. La mayoría del software se construye a medida, en vez de ensamblar


componentes existentes. No existen catálogos de componentes de
software. Se puede comprar software ya desarrollado, pero solo como
una unidad completa, no como componentes que pueden reensamblarse
en nuevos programas.

Capas de la Ingeniería del Software


La Ingeniería del software es un tecnología multicapa. Cualquier enfoque de
ingeniería (incluida ingeniería del software) debe apoyarse sobre un compromiso
de organización de calidad.

PROCESO: El fundamento de la ingeniería del software es la capa de proceso.


El proceso de la ingeniería del software es la unión que mantiene juntas las capas
de tecnología y que permite un desarrollo racional y oportuno de la ingeniería del
software. El proceso define un marco de trabajo para un conjunto de Áreas clave de
proceso (ACPs) que se deben establecer para la entrega efectiva de la tecnología de
la ingeniería del software. Las áreas claves del proceso forman la base del control
de gestión de proyectos del software y establecen el contexto en el que se aplican
los métodos técnicos, se obtienen productos del trabajo (modelos, documentos,
datos, informes, formularios, etc.), se establecen hitos, se asegura la calidad y el
cambio se gestiona adecuadamente.

MÉTODOS: Los métodos de la ingeniería del software indican «cómo»


construir técnicamente el software. Los métodos abarcan una gran gama de tareas
que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y
mantenimiento. Los métodos de la ingeniería del software dependen de un
conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen
actividades de modelado y otras técnicas descriptivas.

HERRAMIENTAS: Las herramientas de la Ingeniería del software


proporcionan un enfoque automático o semi-automático para el proceso y para los
métodos. Cuando se integran herramientas para que la información creada por una
herramienta la pueda utilizar otra, se establece un sistema de soporte para el
desarrollo del software llamado ingeniería del software asistida por computadora
(CASE).

Calidad en el Software
Dentro del contexto de Ingeniería de Software, se tomará la definición de
calidad en el software propuesta por la organización internacional de estándares
(ISO/IEC DEC 9126): La totalidad de características de un producto de software que
tienen como habilidad, satisfacer necesidades explícitas o implícitas. Otra definición
bastante completa de calidad en el software es la que se presenta más adelante
[35]: Se puede decir que el software tiene calidad si cumple o excede las
expectativas del usuario en cuanto a:
1. Funcionalidad (que sirva un propósito),

2. Ejecución (que sea práctico),

3. Confiabilidad (que haga lo que debe),

4. Disponibilidad (que funcione bajo cualquier circunstancia) y

5. Apoyo, a un costo menor o igual al que el usuario está dispuesto a pagar.

Resumiendo podemos decir, que la calidad de software se refiere a: “Los


factores de un producto de software que contribuyen a la satisfacción completa y
total de las necesidades de un usuario u organización”.

Factores de calidad y productividad

Se definen cinco factores importantes que inciden en la productividad del software:

· Factores humanos: El tamaño y la experiencia de la organización de desarrollo.


· Factores del problema: La complejidad del problema que se debe resolver y el
número de cambios en las restricciones o los requisitos del diseño.
· Factores del proceso: Técnicas del análisis y diseño qué se utilizan, lenguajes y
herramientas CASE y técnicas de revisión.
· Factores del producto: Fiabilidad y rendimiento del sistema basado en
computadora.
· Factores del recurso: Disponibilidad de herramientas CASE, y recursos (hardware y
software).

Factores que influyen sobre la calidad y productividad

El objetivo primordial de la ingeniería del software es producir un sistema,


aplicación o producto de alta calidad. Para lograr este objetivo, los ingenieros de
software deben aplicar métodos efectivos junto con herramientas modernas dentro
del contexto de un proceso maduro de desarrollo del software. Además, un buen
ingeniero del software (y buenos gestores de la ingeniería del software) deben
medir si la alta calidad se va a llevar a cabo.

La calidad de un sistema, aplicación o producto es tan bueno como los requisitos


que describen el problema, el diseño que modela la solución, el código que
conduce a un programa ejecutable y las pruebas que ejercitan el software para
detectar errores. Un buen ingeniero del software utiliza mediciones que evalúan la
calidad del análisis y los modelos de diseño, el código fuente y los casos de prueba
que se han creado al aplicar la ingeniería del software.

En las dos décadas pasadas, se definieron un juego de factores de calidad como los
primeros pasos hacia el desarrollo de la calidad del software.
Estos factores evalúan el software desde tres puntos de vista distintos:

· Operación del producto (utilizándolo).


· Revisión del producto (cambiándolo).
· Transición del producto (modificándolo para que funcione en un entorno
diferente)

Los atributos que proporcionan una indicación de la calidad del software siguen
siendo los mismos.

Medida de la calidad: Aunque hay muchas medidas de la calidad de software, la


corrección, facilidad de mantenimiento integral y facilidad de uso proporcionan
indicadores útiles para el equipo del proyecto.

Corrección: Un programa debe operar correctamente o proporcionará poco valor a


sus usuarios. La corrección es el grado en el que el software lleva a cabo su función
requerida.

Facilidad de mantenimiento: El mantenimiento del software cuenta con más


esfuerzo que cualquier otra actividad de ingeniería del software. La facilidad de
mantenimiento es la facilidad con la que se puede corregir un programa si se
encuentra un error, se puede adaptar si su entorno cambia, o mejorar si el cliente
desea un cambio de requisitos.
No hay forma de medir directamente la facilidad de mantenimiento

Integridad: En esta época de intrusos informáticos y de virus, la integridad del


software ha llegado a tener mucha importancia. Este atributo mide la habilidad de
un sistema para resistir ataques (tanto accidentales como intencionados) contra su
seguridad. El ataque se puede realizar en cualquiera de los tres componentes del
software: programas, datos y documentos.
Para medir la integridad, se tienen que definir dos atributos adicionales: amenaza y
seguridad.
Amenaza es la probabilidad de que ocurra un ataque de cualquier tipo.
La seguridad es la probabilidad de que se pueda repeler el ataque.
· Facilidad de uso: Si un programa no es «amigable con el usuario», frecuentemente
está abocado al fracaso, incluso aunque las funciones que realice sean valiosas. La
facilidad de uso es un intento de cuantificar «lo amigable que puede ser con el
usuario» y se puede medir en función de cuatro características:
· Habilidad intelectual y/o física requerida para aprender el sistema.
· El tiempo requerido para llegar a ser moderadamente eficiente en el uso del
sistema.
· Aumento neto en productividad.
· Valoración subjetiva (a veces obtenida mediante un cuestionario) de la disposición
de los usuarios hacia el sistema

Tendencias actuales en la ingeniería de software


La ingeniería de software es una disciplina joven y aún está en desarrollo. Las
direcciones en que la ingeniería de software se está desarrollando incluyen:

Aspectos
Los aspectos ayudan a los ingenieros de software a lidiar con los atributos de
calidad al proporcionar herramientas para añadir o quitar código repetitivo de
muchas áreas en el código fuente. Los aspectos describen cómo todos los objetos o
funciones deben comportarse en circunstancias particulares. Por ejemplo, los
aspectos puede agregar control de depuración, registro o bloqueo en todos los
objetos de un tipo particular. Los investigadores actualmente están trabajando para
comprender cómo utilizar aspectos para diseñar el código de propósito general.
Conceptos relacionados incluyen programación generativa y plantillas.
Ágil
El desarrollo ágil de software guía a los proyectos de desarrollo de software que
evolucionan rápidamente con cambiantes expectativas y mercados competitivos.
Los proponentes de este método creen que procesos pesados, dirigidos por
documentos (como TickIT, CMM e ISO 9000) están desapareciendo en importancia.
[cita requerida] Algunas personas creen que las empresas y agencias exportan
muchos de los puestos de trabajo que pueden ser guiados por procesos pesados.
[cita requerida] Conceptos relacionados incluyen la programación extrema, scrum y
lean software development.
Experimental
La ingeniería de software experimental es una rama de la ingeniería de software
interesada en la elaboración de experimentos sobre el software, en la recolección
de datos de los experimentos y en la elaboración de leyes y teorías desde estos
datos. Los proponentes de este método defienden que la naturaleza del software es
tal que podemos hacer avanzar el conocimiento en software a través de sólo
experimentos.[cita requerida]
Model-driven
El diseño manejado por modelos desarrolla modelos textuales y gráficos como
artefactos primarios de diseño. Hay disponibles herramientas de desarrollo que
usan transformación de modelo y generación de código para generar fragmentos
de código bien organizado que sirven como base para producir aplicaciones
completas.
Líneas de productos de software
Las líneas de producción de software es una forma sistemática para producir
familias de sistemas de software, en lugar de crear una sucesión de productos
completamente individuales. Este método destaca una extensiva, sistemática,
reutilización de código formal, para intentar industrializar el proceso de desarrollo
de software.
El futuro de la Conferencia de ingeniería de Software (FOSE),5 celebrada en ICSE
2000, documenta el estado del arte de SE en 2000 y lista muchos problemas a
resolver en la próxima década. El FOSE sigue la pista de las conferencias ICSE 20006
y el ICSE 20077 y también ayudar a identificar el estado del arte en ingeniería de
software.

También podría gustarte