You are on page 1of 14

Calidad de Software

Calidad de Software
Es la concordancia con los requerimientos funcionales y de rendimiento
explcitamente establecidos, con los estndares de desarrollo
explcitamente documentados y con las caractersticas implcitas que se
esperan de todo software desarrollado profesionalmente.
Existen 3 puntos importantes de la definicin de calidad de software:
1- los requerimientos del software son los fundamentos desde los que
se mide la calidad
2- los estndares especficos definen un conjunto de criterios de
desarrollo que guan la forma de aplicacin de la ingeniera de software
3- existen requerimientos implcitos que no se mencionan
Un producto de alta calidad requiere menos mantenimiento y facilita
tanto el desarrollo como el mantenimiento de la productividad. Con la
medicin de la calidad se pueden lograr estos objetivos. En lo que se
refiere al mantenimiento, la medicin de la calidad del software ayuda a
identificar problemas de confiabilidad y a mejorar las tcnicas para
identificar las necesidades de mantenimiento.

La Ingeniera de Software
Segn la definicin del IEEE, citada por [Lewis 1994] "software es la suma
total de los programas de computadora, procedimientos, reglas, la
documentacin asociada y los datos que pertenecen a un sistema de
cmputo". Segn el mismo autor, "un producto de software es un
producto diseado para un usuario". En este contexto, la Ingeniera de
Software (SE del ingls Software Engineering) es un enfoque sistemtico
del desarrollo, operacin, mantenimiento y retiro del software", que en
palabras ms llanas, se considera que "la Ingeniera de Software es la
rama de la ingeniera que aplica los principios de la ciencia de la
computacin y las matemticas para lograr soluciones costo-efectivas
(eficaces en costo o econmicas) a los problemas de desarrollo de

software", es decir, "permite elaborar consistentemente productos


correctos, utilizables y costo-efectivos" [Cota 1994].
El proceso de ingeniera de software se define como "un conjunto de
etapas parcialmente ordenadas con la intencin de logra un objetivo, en
este caso, la obtencin de un producto de software de calidad" [Jacobson
1998].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, 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 cuatro
grandes fases: concepcin, elaboracin, construccin y transicin. La
concepcin define le alcance del proyecto y desarrolla un caso de
negocio. La elaboracin define un plan del proyecto, especifica las
caractersticas y fundamenta la arquitectura. La construccin crea el
producto y la transicin transfiere el producto a los usuarios.
Actualmente se encuentra en una etapa de madurez el enfoque
Orientado a Objetos (OO) como paradigma del desarrollo de sistemas de
informacin. El Object Management Group (OMG) es un consorcio a nivel
internacional que integra a los principales representantes de la industria
de la tecnologa de informacin OO. El OMG tiene como objetivo central
la promocin, fortalecimiento e impulso de la industria OO. El OMG
propone y adopta por consenso especificaciones entorno a la tecnologa
OO. Una de las especificaciones ms importantes es la adopcin en
1998 del Lenguaje de Modelado Unificado o UML (del ingls Unified
Modeling Language) como un estndar, que junto con el Proceso
Unificado estn consolidando la tecnologa OO.

Introduccin

La Ingeniera del Software va a introducirse en la cuarta dcada de su


existencia y sufre de los muchos puntos fuertes y dbiles. La Ingeniera del
Software se va aproximando a su edad media con muchos logros a sus
espaldas, pero con un trabajo significativo todava por hacer. Hoy en da, est
reconocida como una disciplina legtima, digna de tener una investigacin
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, mtodos de ingeniera 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 ms disciplinado del software.

La bsqueda de tcnicas que mejorasen la calidad y permitiesen reducir los


costos de las soluciones basadas en computadoras ha sido uno de los objetivos
ms perseguidos desde los inicios de la informtica. A mediados de los 60, la
creacin de un producto software se converta en una tarea angustiosa, se hizo
por tanto necesario introducir una serie de herramientas y procedimientos que
facilitaran por un lado, la labor de creacin de nuevo software y por otro, la
comprensin y el manejo del mismo. Estos fueron los inicios de la Ingeniera del
Software. Con el paso del tiempo, la evolucin de estos mtodos nos han
llevado a reconocer la Ingeniera del Software como una verdadera disciplina,
derivada de una investigacin seria y de un estudio minucioso.

La evolucin del Software

Durante los primeros aos de la era de la computadora, el software se


contemplaba como un aadido. La programacin de computadoras era un "arte
de andar por casa" para el que existan pocos mtodos sistemticos. El
desarrollo del software se realizaba virtualmente sin ninguna planificacin,
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 salan con xito. El software se diseaba a medida para cada
aplicacin y tenia una distribucin relativamente pequea.

La mayora del software se desarrollaba y era utilizado por la misma persona u


organizacin. La misma persona lo escriba, lo ejecutaba y, si fallaba, lo
depuraba. Debido a este entorno personalizado del software, el diseo era un
proceso implcito, realizado en la mente de alguien y, la documentacin
normalmente no exista.

La segunda era en la evolucin de los sistemas de computadora se extienden


desde la mitad de la dcada de los sesenta hasta finales de los setenta. La
multiprogramacin y los sistemas multiusuario introdujeron nuevos conceptos
de interaccin hombre - maquina. Las tcnicas interactivas abrieron un nuevo
mundo de aplicaciones y nuevos niveles de sofisticacin del hardware y del
software. Los sistemas de tiempo real podan recoger, analizar y transformar
datos de mltiples fuentes, controlando as los procesos y produciendo salidas
en milisegundos en lugar de minutos. Los avances en los dispositivos de
almacenamiento en lnea condujeron a la primera generacin de sistemas de
gestin de bases de datos.

La segunda era se caracterizo tambin 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.

Conforme creca el numero de sistemas informticos, comenzaron a extenderse


las bibliotecas de software de computadora. Las casas desarrollaban proyectos
en los que se producan programas de decenas de miles de sentencia fuente.
Todos esos programas, todas esas sentencias fuente tenan que ser corregidos
cuando se detectaban fallos, modificados cuando cambiaban los requisitos de
los usuarios o adaptados a nuevos dispositivos hardware que se hubieran
adquirido. Estas actividades se llamaron colectivamente mantenimiento del
software.

La tercera era en la evolucin de los sistemas de computadora comenz a


mediados de los aos setenta y continuo mas all de una dcada. El sistema
distribuido, mltiples computadoras, cada una ejecutando funciones
concurrente y comunicndose con alguna otra, increment notablemente la
complejidad de los sistemas informticos. Las redes de rea local y de rea
global, las comunicaciones digitales de alto ancho de banda y la creciente
demanda de acceso "instantneo" a los datos, supusieron una fuerte presin
sobre los desarrolladores del software.

La conclusin 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 automviles hasta hornos microondas, desde
robots industriales a equipos de diagnsticos de suero sanguneo.

La cuarta era de la evolucin de los sistemas informticos se aleja de las


computadoras individuales y de los programas de computadoras, dirigindose

al impacto colectivo de las computadoras y del software. Potentes maquinas


personales controladas por sistemas operativos sofisticados, en redes globales
y locales, acompaadas por aplicaciones de software avanzadas se han
convertido en la norma.

La industria del software ya es la cuna de la economa del mundo. Las tcnicas


de la cuarta generacin para el desarrollo del software estn cambiando en la
forma en que la comunidad del software construye programas informticos. Las
tecnologas orientadas a objetos estn desplazando rpidamente los enfoques
de desarrollo de software ms convencionales en muchas reas de
aplicaciones.

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


persistido a travs de la evolucin de los sistemas basados en computadora, y
estos problemas continan aumentando.

los avances del software continan dejando atrs nuestra habilidad de


construir software para alcanzar el potencial del hardware.

Nuestra habilidad de construir nuevos programas no pueden ir al mismo ritmo


de la demanda de nuevos programas, ni podemos construir programas lo
suficientemente rpido como para cumplir las necesidades del mercado y de
los negocios.

El uso extenso de computadoras ha hecho de la sociedad cada vez ms


dependiente de la operacin fiable del software. Cuando el software falla,
pueden ocurrir daos econmicos enormes y ocasionar sufrimiento humano.

Luchamos por construir software informtico que tengan fiabilidad y alta


calidad.

Nuestra habilidad de soportar y mejorar los programas existentes se ve


amenazada por diseos pobres y recursos inadecuados.

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


estn adoptando en toda la industria.

Que es la Ingeniera del Software ?

La Ingeniera del software es una disciplina o rea de la Informtica o Ciencias


de la Computacin, que ofrece mtodos y tcnicas para desarrollar y mantener
software de calidad que resuelven problemas de todo tipo. Hoy da es cada vez
mas frecuente la consideracin de la Ingeniera del Software como una nueva
rea de la Ingeniera, y el Ingeniero del Software comienza a ser una profesin
implantada en el mundo laboral internacional, con derechos, deberes y
responsabilidades que cumplir, junto a una, ya, reconocida consideracin social
en el mundo empresarial y, por suerte, para esas personas con brillante futuro.

La ingeniera del software trata con reas muy diversas de la Informtica y de


las Ciencias de la Computacin, tales como construccin 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
informacin y aplicables a una infinidad de reas tales como: negocios,
investigacin cientfica, medicina, produccin, logstica, banca, control de
trafico, meteorologa, el mundo del derecho, la red de redes Internet, redes
Intranet y Extranet, etc.

Definicin del termino Ingeniera del Software

El termino Ingeniera se define en el Diccionario de la Real Academia Espaola


de la Lengua como: "1. Conjunto de conocimientos y tcnicas que permiten
aplicar el saber cientfico a la utilizacin de la materia y de las fuentes de
energa. 2. Profesin y ejercicio del Ingeniero" y el termino Ingeniero se define
como: persona que profesa o ejerce la Ingeniera. De igual modo la Real
Academia de Ciencias Exactas, Fsicas y Naturales de Espaa define el termino
Ingeniera como: " Un conjunto de conocimientos y tcnicas cuya aplicacin
permite la utilizacin racional de los materiales y de los recursos naturales,
mediante invenciones, construcciones u otras realizaciones provechosas para
el hombre".

Evidentemente, si la Ingeniera del Software es una nueva Ingeniera, parece


lgico que rena las propiedades citadas en las definiciones anteriores. Sin
embargo ni el DRAE(Diccionario de la Real Academia Espaola de la Lengua), ni
la Real Academia Espaola de Ciencias han incluido todava el termino en sus
ultimas ediciones; en consecuencia vamos a recurrir para su definicin 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 Ingeniera del Software.

Definicin 1:

Ingeniera del Software es el estudio de los principios y metodologas para


desarrollo y mantenimiento de sistemas de software [Zelkovits, 1978].

Definicin 2:

Ingeniera del Software es la aplicacin practica del conocimiento cientfico en


el diseo y construccin de programas de computadora y la documentacin
necesaria requerida para desarrollar, operar(funcionar) y mantenerlos [Bohem,
1976].

Definicin 3:

Ingeniera del Software trata del establecimiento de los principios y mtodos de


la Ingeniera a fin de obtener software de modo rentable que sea fiable y
trabaje en mquinas reales [Bauer, 1972].

Definicin 4:

La aplicacin de un enfoque sistemtico, disciplinado y cuantificable al


desarrollo, operacin(funcionamiento) y mantenimiento del software; es decir,
la aplicacin de Ingeniera al software [IEEE, 1993].

Una perspectiva industrial

En los primeros das de la informtica, los sistemas basados en computadora


se desarrollaban usando tcnicas de gestin 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 estndares
tcnicos. Exigan un anlisis y diseo completo antes de que algo se

construyera. Median el proceso para determinar donde podan hacerse


mejoras. Dicho sencillamente, aplicaban los controles, los mtodos y las
herramientas que reconocemos como Ingeniera del Hardware.
Desgraciadamente, el software no era normalmente mas que un aadido.

En los primeros das, la programacin se vea como un arte. Existan pocos


mtodos formales y pocas personas los usaban.

Hoy, la distribucin de costes en el desarrollo de sistemas informticos ha


cambiado drsticamente. El software, en lugar del hardware, es normalmente
el elemento principal del coste.

En las dcadas pasadas los ejecutivos y muchos aprendices tcnicos se haban


hechos las siguientes preguntas:

Por qu lleva tanto tiempo terminar los programas?

Por qu es tan elevado el coste?

Por qu no podemos encontrar todos los errores antes de entregar el software


a nuestros clientes?

Por qu nos resulta difcil constatar el progreso conforme se desarrolla el


software?

Estas y otras muchas cuestiones son una manifestacin del carcter del
software y de la forma en que se desarrolla, un problema que ha llevado a la
adopcin de la Ingeniera del Software como practica.

Competitividad del Software

Durante muchos aos, los desarrolladores de software empleados por grandes


y pequeas compaas eran los nicos en este campo. Como todos los
programas se construan de forma personalizada, los desarrolladores de este

software domestico dictaban los costes, planificacin y calidad. Hoy, todo esto
ha cambiado.

El software ahora es una empresa extremadamente competitiva. El software


que se construa 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 descripcin de software en un libro de texto podra tomar la forma siguiente:


el software es (1) instrucciones que cuando se ejecutan proporcionan la funcin
y el rendimiento deseados, (2) estructuras de datos que permiten a los
programas manipular adecuadamente la informacin, y (3) documentos que
describen la operacin y el uso de programas.

Caractersticas del Software

Para poder comprender lo que es el software (y consecuentemente la


Ingeniera del Software), es importante examinar las caractersticas del
software que lo diferencian de otras cosas que los hombres pueden construir.

El software es un elemento del sistema que es lgico, en lugar de fsico. Por lo


tanto el software tiene unas caractersticas considerablemente distintas a las
del hardware:

El software se desarrolla, no se fabrica en un sentido clsico. Aunque existen


similitudes entre el desarrollo del software y la construccin del hardware,
ambas actividades son fundamentalmente diferentes. En ambas actividades la
buena calidad se adquiere mediante un buen diseo, pero la fase de
construccin del hardware puede introducir problemas de calidad que no
existen (o son fcilmente corregibles) en el software. Ambas actividades
dependen de las personas, pero la relacin entre las personas dedicadas y el
trabajo realizado es completamente diferente para el software. Ambas
actividades requieren de la construccin de un producto, pero los mtodos son
diferentes.

Los costes del software se encuentran en la ingeniera. Esto significa que los
proyectos de software no se pueden gestionar como si fueran proyectos de
fabricacin.

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 diseo o en el
proceso mediante el que se tradujo el diseo a cdigo maquina ejecutable. Por
tanto, el mantenimiento del software tiene una complejidad considerablemente
mayor que la del mantenimiento del hardware.

La mayora del software se construye a medida, en vez de ensamblar


componentes existentes. No existen catlogos 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.

importante para un componente de software de alta calidad. El componente


debera disearse

Componentes del Software

La reutilizacin es una caracterstica e implementarse para que pueda volver a


ser reutilizado en muchos programas diferentes.

Los componentes de software se construyen mediante un lenguaje de


programacin que tiene un vocabulario limitado, una gramtica definida
explcitamente y reglas bien formadas de sintaxis y semntica.

Aplicaciones del Software

El software puede aplicarse en cualquier situacin en la que se haya definido


previamente un conjunto especifico de pasos procedimentales (es decir, un
algoritmo). (Excepciones notables a esta regla son el software de los sistemas
expertos y de redes neuronales).

Las siguientes reas del software indican la amplitud de las aplicaciones


potenciales:

Software de Sistemas: El software de sistemas es un conjunto de programas


que han sido escritos para servir a otros programas. El rea del Software de
Sistemas se caracteriza por una fuerte interaccin con el hardware de la
computadora; una gran utilizacin por mltiples usuarios; una operacin
concurrente que requiere una planificacin, una comparticin de recursos y una
sofisticada gestin de procesos; unas estructuras de datos complejas y
mltiples interfaces externas. (p. Ej.: compiladores, editores, utilidades, ciertos
componentes del sistema operativo, utilidades de manejo de perifricos,
procesadores de telecomunicaciones).

Software de Tiempo Real: El software que mide/analiza/controla sucesos del


mundo real conforme ocurren, se denomina de tiempo real. Entre los
elementos del software de tiempo real se incluyen: un componente de
adquisicin de datos que recolecta y da formato a la informacin recibida del
entorno externo, un componente de anlisis que transforma la informacin
recibida del entorno externo, un componente de anlisis que transforma la
informacin segn lo requiera la aplicacin, un componente de control/salida
que responda al entorno externo y un componente de monitorizacin que
coordina todos los dems componentes, de forma tal que pueda mantenerse la
respuesta en tiempo real.

Software de Gestin: El procesamiento de informacin comercial constituye la


mayor de las reas de aplicacin del software. Los sistemas discretos (p. Ej.:
nominas, cuentas de haberes/dbitos, inventarios, etc.), han evolucionado
hacia el software de sistemas de informacin de gestin (SIG), que accede a
una o ms bases de datos grandes que contienen informacin comercial. Las
aplicaciones en esta rea reestructuran los datos existentes para facilitar las
operaciones comerciales o gestionar la toma de decisiones. Adems de las
tareas convencionales de procesamiento de datos, las aplicaciones de software
de gestin tambin realizan calculo interactivo (p. Ej. : el procesamiento de
transacciones en puntos de ventas).

Software de Ingeniera y Cientfico: El software de Ingeniera y Cientfico est


caracterizado por los algoritmos de manejo de nmeros. Las aplicaciones van
desde la astronoma a la vulcanologa, desde el anlisis de la presin de los
automotores a la dinmica orbital de los lanzadores espaciales y desde la
biologa molecular a la fabricacin automtica.

Software Empotrado: El software Empotrado reside en memoria de solo 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 (p. Ej.: el control de las teclas de un horno de microondas) o
suministrar una funcin significativa y con capacidad de control (p. Ej.:
funciones digitales en un automvil, tales como control de la gasolina,
indicaciones en el salpicadero, sistemas de frenado, etc.).

Software de Computadoras Personales: El mercado del software de


computadoras personales ha germinado en la pasada dcada. El
procesamiento de textos, las hojas de calculo, los grficos por computadora,
multimedia, entretenimientos, gestin 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.

Software de Inteligencia Artificial: El software de inteligencia artificial (IA) hace


uso de algoritmos no numricos para resolver problemas complejos para los
que no son adecuados el calculo o el anlisis directo. El rea ms activa de la
IA es la de los sistemas expertos, tambin llamados sistemas basados en el
conocimiento.

Hoy en da el software tiene un doble papel. Es un producto y, al mismo


tiempo, el vehculo para hacer entrega de un producto. Como producto, hace
entrega de la potencia informtica del hardware informtico. Si reside dentro
de un telfono celular u opera dentro de una computadora central, el software
es un transformador de informacin, produciendo, gestionando, adquiriendo,
modificando, mostrando o transmitiendo informacin que puede ser tan simple
como un solo bit, o tan compleja como una simulacin en multimedia. Como
vehculo utilizado para hacer entrega del producto, el software acta como la
base de control de la computadora (sistemas operativos), la comunicacin de
informacin (redes), y la creacin y control de otros programas (herramientas
de software y entornos).

El software de computadora, se ha convertido en el alma mater. Es la maquina


que conduce a la toma de decisiones comerciales. Sirve como la base de
investigacin cientfica moderna y de resolucin de problemas de ingeniera. Es
el factor clave que diferencia los productos y servicios modernos. Est inmerso
en sistemas de todo tipo: de transportes, mdicos, de telecomunicaciones,
militares, procesos industriales, entretenimientos, productos de oficina, etc. El
software ser el que nos lleve de la mano en los avances en todo desde la
educacin elemental a la Ingeniera Gentica.

Evolucin de la Ingeniera del Software

Inicialmente la programacin de las computadoras era un arte que no dispona


de mtodos sistemticos en los que poder basarse para la realizacin de
productos software. Se realizaban sin ninguna planificacin. Evolucin y
Perspectivas de la Ingeniera del Software Posteriormente, desde mediados de
los 60 hasta finales de los 70 se caracteriz por el establecimiento del software
como un producto que se desarrollaba para una distribucin general. En esta
poca naci lo que se conoce como el mantenimiento del software que se da
cuando cambian los requisitos de los usuarios y se hace necesaria la
modificacin del software. El esfuerzo requerido para este mantenimiento era
en la mayora de los casos tan elevado que se haca imposible su
mantenimiento. A continuacin, surge una etapa que se caracteriza por la
aparicin de una serie de tcnicas como la Programacin Estructurada y las
Metodologas de Diseo que solucionan los problemas anteriores. A finales de
esta etapa aparecen las herramientas CASE, aunque como podemos imaginar
eran muy rudimentarias.

Conclusin

El software se ha convertido en el elemento clave de la evolucin de los


sistemas y productos informticos. En las pasadas cuatro dcadas, el software
ha pasado de ser una resolucin de problemas especializadas y una
herramienta de anlisis de informacin, a ser una industria por si misma. Pero
la temprana cultura e historia de la programacin ha creado un conjunto de
problemas que persisten todava. El software se ha convertido en un factor que
limita la evolucin de los sistemas informticos. El software se compone de
programas, datos y documentos. Cada uno de estos elementos componen una
configuracin que se crea como parte del proceso de la Ingeniera del Software.
El intento de la Ingeniera del Software es proporcionar un marco de trabajo
para construir software con mayor calidad.

INGENIERIA DEL SOFTWARE I

Introduccin

Concepto

Evolucin