Está en la página 1de 21

UNIVERSIDAD DE EL SALVADOR

ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS


HERRAMIENTAS DE PRODUCTIVIDAD

UNIDAD I
ANTECEDENTES Y EVOLUCION DE LAS
HERRAMIENTAS INFORMATICAS

1.1. EVOLUCION DE LAS HERRAMIENTAS INFORMATICAS


En este apartado realizaremos un recorrido por las diferentes etapas que han atravesado cada uno de los
siguientes elementos:
A. Los Lenguajes de programacin.
B. Las Herramientas de programacin.
C. Las herramientas para el desarrollo de sistemas.

A. LENGUAJES DE PROGRAMACION
Mediante los programas se indica a la computadora que tarea debe realizar y cmo efectuarla, pero para ello es
preciso introducir estas rdenes en un lenguaje que el sistema pueda entender. En principio, el ordenador slo
entiende las instrucciones en cdigo de mquina, es decir, el especfico de la computadora. Sin embargo, a partir
de estos se elaboran los llamados lenguajes de alto y bajo nivel.
Desde el nacimiento de las computadoras se han inventado varios lenguajes informticos, algunos orientados
hacia funciones especficas y otros centrados en la facilidad de uso.
A continuacin veremos una breve resea de las etapas por las cuales han pasado los lenguajes de programacin.

PRIMERA GENERACIN: LENGUAJE MQUINA


El lenguaje propio del ordenador, basado en el sistema binario, o cdigo mquina, por lo que resulta difcil de
utilizar para las personas. El programador debe introducir todos y cada uno de los comandos y datos en forma
binaria, y una operacin sencilla como comparar el contenido de un registro con los datos situados en una
ubicacin del chip de memoria puede tener el siguiente formato: 11001010 00010111 11110101 00101011.
La programacin en lenguaje mquina es una tarea tan tediosa y consume tanto tiempo que muy raras veces lo
que se ahorra en la ejecucin del programa justifica los das o semanas que se han necesitado para escribir el
mismo.

SEGUNDA GENERACIN: LENGUAJE DE BAJO NIVEL


Utilizan cdigos muy cercanos a los de la mquina, lo que hace posible la elaboracin de programas muy
potentes y rpidos, pero son de difcil aprendizaje
Un ejemplo de esto es el Lenguaje Ensamblador: Es un lenguaje de programacin de bajo nivel, en que las
instrucciones y las direcciones de memoria estn representados por smbolos. Permite la utilizacin de nombres
simblicos en lugar de ceros y unos.

TERCERA GENERACIN: LENGUAJE DE ALTO NIVEL


Por el contrario, son de uso mucho ms fcil, ya que en ellos un solo comando o instruccin puede equivaler a
millares en cdigo mquina.
El programador escribe su programa en alguno de estos lenguajes mediante secuencias de instrucciones. Antes
de ejecutar el programa la computadora lo traduce a cdigo mquina directamente (lenguajes compiladores) o
interpretando instruccin por instruccin (lenguajes intrpretes).

CUARTA GENERACIN: LENGUAJES 4GL


Es el lenguaje de muy alto nivel cuya caracterstica principal es permitir a los usuarios con poco conocimiento
sobre computacin y lenguajes de programacin, desarrollar sus propios programas de aplicacin sin la
participacin operativa del personal del departamento de informtica.
Un 4GL se caracteriza por ser no procedimental, lo que permite al usuario preocuparse de "QU" sin necesidad
de especificar "CMO" hacerlo. En definitiva se trata de especificar el resultado deseado ms que las acciones
necesarias para obtener el resultado.
Algunos ejemplos de lenguajes de cuarta generacin son: SQL, FoxPro y PowerBuilder

B. HERRAMIENTAS DE PROGRAMACION
Los lenguajes de programacin surgen para permitir la comunicacin entre las personas y la computadora. Para
ello, no solamente se debe contar con un editor sobre el que ser escrito el programa, tambin se debe contar con
una herramienta que se encargue de traducir el cdigo escrito a lenguaje de mquina.
Las herramientas utilizadas para traducir los lenguajes de programacin se pueden clasificar en:

ENSAMBLADORES

INTERPRETES

COMPILADORES

PREPROCESADORES

ENSAMBLADORES
Se refieren al lenguaje ensamblador, que viene a ser una representacin simblica de las instrucciones
correspondientes al lenguaje ensamblador de alguna arquitectura especfica, con lo que casi siempre, la
correspondencia entre las instrucciones de este lenguaje y las del lenguaje mquina son de 1 a 1. Existen tambin
algunas excepciones que dan lugar a lo que se conoce como lenguajes macro-ensambladores

INTERPRETES
Estas herramientas, tienen la particularidad, de que no producen cdigo objeto, sino que cada instruccin es
analizada y ejecutada a la vez, lo que ofrece mucha interaccin con los usuarios, pero a la vez resultan
ineficientes, cuando se desea ejecutar repetitivamente un programa.

COMPILADORES
Son aquellos, que traducen de un lenguaje de alto nivel (como Fortran o Pascal) a lenguaje mquina o bien a
lenguaje ensamblador, produciendo un programa objeto permanente.

PREPROCESADORES
Son lenguajes que son traducidos primeramente a un lenguaje intermedio de ms bajo nivel, para posteriormente
volverlos a traducir y producir el programa objeto.

C. HERRAMIENTAS PARA DESARROLLO DE SISTEMAS


Una herramienta es cualquier dispositivo que permite mejorar el desempeo de alguna tarea.
Existen herramientas diseadas especialmente para el desarrollo de sistemas y se dividen en tres categoras:

Herramientas para el anlisis

Herramientas para el diseo

Herramientas para el desarrollo

HERRAMIENTAS PARA EL ANLISIS


Ayudan a documentar un sistema existente y a determinar los requerimientos de una aplicacin nueva.
Estas herramientas incluyen:
a) Herramientas para recoleccin de datos: capturan detalles que describen sistemas y procedimientos en
uso, documentan procesos y actividades de decisin.
b) Herramientas para diagramacin: crean representaciones grficas o modelos de sistemas, apoyan el
dibujo y revisin de diagramas.

c) Herramientas para el diccionario: registran y mantienen descripciones de los elementos del sistema tales
como grupos de datos, procesos y almacenamiento de datos. Con frecuencia proporcionan la capacidad
de examinar las descripciones del sistema para deducir si son incompletas o inconsistentes, as como
reportar donde se utilizan los elementos del sistema.

HERRAMIENTAS PARA EL DISEO


Apoyan el proceso de formular las caractersticas que el sistema debe tener para satisfacer los requerimientos
detectados durante la actividad de anlisis. Aqu se incluyen:
a) Herramientas para especificacin: apoyan el proceso de formular las caractersticas que debe tener una
aplicacin tales como entradas, salidas, procesamiento y especificaciones de control. Muchas incluyen
herramientas para crear especificaciones de datos.
b) Herramientas para presentacin: se utilizan para describir la posicin de datos, mensajes y encabezados
sobre las pantallas de las terminales, reportes y otros medios de entrada y salida.

HERRAMIENTAS PARA EL DESARROLLO


Ayudan a trasladar los diseos en aplicaciones funcionales, incluyen:
a) Herramientas para ingeniera de software: apoyan el proceso de formular diseos de software,
incluyendo procedimientos y controles, as como la documentacin correspondiente.
b) Generadores de cdigo: producen el cdigo fuente y las aplicaciones a partir de especificaciones
funcionales bien articuladas.
c) Herramientas para pruebas: apoyan la fase de evaluacin de un sistema o sus partes contra las
especificaciones. Incluyen facilidades para examinar la correcta operacin del sistema.

1.2. EVOLUCION DEL PROCESO DE DESARROLLO DE SOFTWARE


A la par de la evolucin de las computadoras, lenguajes de programacin y herramientas de desarrollo tambin
ha evolucionado la forma en que se construye el software.
Cuando se va a construir un software es necesario conocer un lenguaje de programacin, pero esto no es
suficiente, si se quiere un sistema de calidad y mantenible es necesario que el problema sea analizado y la
solucin sea cuidadosamente diseada.
En esta seccin trataremos una resea de las etapas por las cuales ha pasado el proceso de desarrollo de software
desde el comienzo de las computadoras hasta nuestros das.

A. PROGRAMACION SECUENCIAL
Se da antes de la dcada de los 60. Los primeros usuarios de la computadora fueron los mismos cientficos e
ingenieros que la haban diseado y construido.
Esta etapa se caracteriza porque el desarrollo de software llevaba poco o ningn anlisis y el programa resultante
era una sola secuencia de instrucciones desde el inicio hasta el fin del programa.
Los lenguajes empleados en esta etapa son el lenguaje mquina, lenguaje ensamblador y algunos lenguajes de
alto nivel.

B. PROGRAMACION MODULAR
Ocurre a inicio de los aos 60. Esta etapa se caracteriza por la implementacin en los lenguajes y herramientas
de programacin de los conceptos de modularidad y programacin descendente.
Los lenguajes de esta etapa son los de alto nivel como Pascal, C y Basic

C. PROGRAMACION ESTRUCTURADA
En mayo de 1966, Bhm y Jacopini demostraron que un programa propio puede ser escrito utilizando solamente
tres tipos de estructuras: secuenciales, selectivas y repetitivas.
Esta etapa se caracteriza por la simplificacin de la sintaxis de los lenguajes de programacin para la utilizacin
nicamente de las 3 estructuras de control fundamentales.

D. DISEO ESTRUCTURADO
Las primeras tcnicas estructuradas se centraron bsicamente en los programas. Se le daba mucha importancia a
la forma del programa. Pero esto no era suficiente para producir software de calidad y mantenible.

A mediados de los aos 70, la filosofa estructurada abarc tambin a la fase de diseo. El concepto de
estandarizacin fue aplicado al proceso de resolucin de problemas como una forma de introducir organizacin y
disciplina al diseo de programas. El concepto de modularizacin fue refinndose a travs de la estandarizacin
de la estructura de los mdulos de los programas, restringiendo los interfaces entre los mdulos y definiendo
patrones de medida para la calidad de los programas.

E. ANALISIS ESTRUCTURADO
Cuando se not que mucho de los problemas de software se deban a una definicin pobre de los requerimientos,
la atencin se gir en torno a la fase de anlisis. Las tcnicas estructuradas para el anlisis de sistemas y la
especificacin de requerimientos fueron desarrolladas a finales de los 70.

F. PROGRAMACION O. O.
Ocurre a inicios de los aos 80. En la orientacin a objetos el bloque de construccin ya no es el mdulo,
procedimiento o funcin, sino que es el objeto, donde un objeto es algo extrado del vocabulario del problema
o del vocabulario de la solucin. Todo objeto tiene identidad (puede distinguirse de otros objetos), estado
(generalmente hay datos asociados a l) y comportamiento (se le puede hacer cosas' y el puede hacer cosas'
a otros objetos).
Los lenguajes utilizados en esta etapa son: C++, Java, Pascal, etc.

G. DISEO Y ANALISIS O. O.
Al igual como sucedi con la programacin estructurada en su momento, la programacin O.O. facilita el
desarrollo pero no es suficiente para desarrollar software de calidad y mantenible es necesario la creacin de
mtodos de diseo y anlisis orientado a objetos.
A inicios de los aos 90 se comienzan a construir nuevas tcnicas, mtodos y herramientas para resolver este
problema. En esta etapa aparecen una serie de mtodos y herramientas tan diversas que se hace necesaria una
estandarizacin la cual culmina con la definicin y publicacin del Lenguaje Unificado de Modelado (UML).

H. DESARROLLO ASISTIDO POR COMPUTADORA


En los ltimos aos se ha trabajado en el rea de desarrollo de sistemas para encontrar tcnicas que permitan
incrementar la productividad y el control de calidad en cualquier proceso de elaboracin de software, y hoy en
da la tecnologa CASE (Computer Aided Software Engineering) reemplaza al papel y al lpiz por la
computadora para transformar la actividad de desarrollar software en un proceso automatizado.
La tecnologa CASE supone la -informatizacin de la informtica, es decir, la automatizacin del desarrollo del
software- contribuyendo as a elevar la productividad y la calidad en el desarrollo de los sistemas de informacin
de forma anloga a lo que suponen las tcnicas CAD/CAM 1 en el rea de la fabricacin.

CAD: Computer Aided Design


CAM: Computer Aided Manufacturing

1.3. LA PRODUCTIVIDAD
A. QUE ES LA PRODUCTIVIDAD?
Es la relacin entre la produccin obtenida por un sistema de produccin o servicios y los recursos utilizados
para obtenerla.
As pues, la productividad se define como el uso eficiente de recursos -trabajo, capital, tierra, materiales, energa,
informacin- en la produccin de diversos bienes y servicios.
La definicin de productividad es independiente del sistema de produccin, econmico y poltico, sigue siendo
la misma (aunque la productividad puede significar cosas diferentes para diferentes personas).
Por tanto, el concepto bsico sigue siendo la relacin entre la cantidad y calidad de bienes o servicios producidos
y la cantidad de recursos utilizados para producirlos.
En el campo de la informtica, la productividad de un proceso de desarrollo es una medida de la velocidad a la
que los ingenieros implicados en el desarrollo del software producen dicho software y su documentacin
asociada. Es el promedio de trabajo que lleva a cabo el personal de desarrollo de un proyecto de forma
individual durante un determinado espacio de tiempo.
En proyectos de software el trabajo va referido a las tareas del desarrollo y a la preparacin de la
documentacin asociada.
Es necesario medir la productividad para:

Realizar las estimaciones necesarias en el proyecto.

Evaluar si un proceso o mejoras en la tecnologa son efectivas.

B. REPRESENTACION DE LA PRODUCTIVIDAD
La productividad se suele representar con la frmula:

productividad=

producto
insum os

Es la relacin (cociente) entre la cantidad de bienes producidos y la cantidad de insumos empleados para
producirlos.

productiv idad=

atributos del software


esfuerzo total de desarrollo

Una productividad mayor significa la obtencin de ms con la misma cantidad de recursos o el logro de una
mayor produccin en volumen y calidad con el mismo insumo.

10
9
8
7
6
Insumos
Produccin
Mayor produccin
Mayor produccin y calidad

5
4
3
2
1
0
1

10

11

10
9
8
7
6
Menos insumos
Ms insumos
Produccin

5
4
3
2
1
0
1

10

11

La productividad tambin puede definirse como la relacin entre los resultados y el tiempo que lleva
conseguirlos.
El tiempo es a menudo un buen denominador, puesto que es una medida universal y est fuera del control
humano.
Cuanto menor tiempo lleve lograr el resultado deseado, ms productivo es el sistema.

C. IMPORTANCIA DE LA PRODUCTIVIDAD
Durante largo tiempo la productividad ha sido, por su impacto en desarrollo econmico y social:

Un tema clave para las estrategias de desarrollo nacional.

Importante fuente de ingresos y, en tanto, objetivo integrador de la cooperacin trabajo/gerencia y de


participacin de los trabajadores.

Criterio de competitividad empresarial.

Estrategia de largo plazo de gobiernos, empleadores y empleados para aliviar la pobreza y promover los
derechos humanos y la democracia econmica.

1.4. MEDICION DE LA PRODUCTIVIDAD


A. GENERALIDADES
ESTIMACIN DE COSTO Y ESFUERZO EN EL PROCESO DE DESARROLLO SOFTWARE.
Qu es la estimacin de costos?
Consiste en predecir los recursos (monetarios, temporales, humanos, materiales, etc.) necesarios para llevar a
cabo el proceso de desarrollo del software.
Debemos resolver una serie de cuestiones fundamentales durante la estimacin:

Cunto esfuerzo se requiere para completar una actividad?

Cunto tiempo es necesario para llevar a cabo una actividad ?

Cul es el costo total de una actividad ?

COSTOS A CONSIDERAR EN UN PROYECTO

Costo del hardware y software utilizados.

Costo de dietas, viajes y aprendizaje.

Costo del esfuerzo (factor dominante casi siempre), este incluye:


Salarios del personal involucrado en el proyecto
Costos de seguros y seguridad social.

Costos indirectos aplicados al personal del proyecto:


Costos de mantenimiento, alquiler, luz, acondicionamiento del ambiente, etc.
Costos administrativos, redes y de comunicaciones.
Costos sociales colectivos.
Costos de recursos compartidos (p. ej:. librera, personal del restaurante, etc.)

B. TECNICAS DE ESTIMACION
No existe una forma simple de obtener estimaciones exactas del esfuerzo requerido para desarrollar un sistema
software:

Las estimaciones iniciales parten de la definicin imprecisa de requisitos por parte del usuario.

El software a desarrollar a menudo se ejecutar sobre entornos desconocidos por el equipo de desarrollo
o bien utilizar tecnologa de punta.

Las personas (y sus habilidades) que van a formar parte del proyecto pueden ser desconocidas.

En muchas ocasiones las estimaciones se tienen que ajustar al presupuesto.


a) La estimacin se realiza muchas veces valindose de la experiencia y de la opinin de expertos como
nica gua.
b) Descomposicin a partir de una base histrica de proyectos que debe tener estas caractersticas:
-

Los datos deben ser precisos (huir de suposiciones).

Los datos deben obtenerse de tantos proyectos como sea posible.

Debe existir consistencia entre las medidas utilizadas (p. ej. LOC referidas a un mismo lenguaje).

Las aplicaciones que se contemplan deben ser similares a la que se pretende estimar.

c) Un proyecto similar en tamao, complejidad y tipo de funciones a otro: probablemente dure y cueste
aproximadamente lo mismo.
d) Modelos empricos de estimacin, aplicables cuando no existe una base histrica apropiada para hacer la
estimacin.
Ejemplos de estas tcnicas son:

Modelado algortmico de costos: se basa en el tamao del software.

Juicio de Expertos: usan su experiencia para predecir costos de software.

Estimacin por analoga: comparacin con proyectos similares.

Ley de Parkinson: en funcin de los recursos disponibles.

Pricing to win: en funcin de lo que el cliente est dispuesto a pagar.

C. PUNTOS CLAVES A CONSIDERAR

Es necesario estimar costos: (esfuerzo, tiempo de desarrollo y nmero de recursos).

La productividad es un factor a tener en cuenta a la hora de realizar estimaciones.

Existen varias tcnicas de estimacin de costos. Sin embargo, ninguna asegura la obtencin de
estimaciones exactas para el desarrollo de un sistema. Para preparar una estimacin se deben utilizar
varias de estas tcnicas.

El tiempo necesario para completar un proyecto no es proporcional al nmero de personas que trabajan
en el mismo.

D. LA CALIDAD DEL SOFTWARE Y PRODUCTIVIDAD


Normalmente asociamos el concepto de calidad a la fabricacin de un producto o a la adquisicin de un servicio.
En los procesos de fabricacin, solemos asociar la calidad con la similitud entre el producto terminado y su
diseo.
Sin embargo, la calidad del software es un concepto complejo, en la medida en que se encuentran algunas
caractersticas particulares, tales como:
1. Se desarrolla, no se fabrica en el sentido clsico del trmino. Todo el costo de su produccin se centra en
el diseo de la primera copia. De ser necesario, realizar ms copias resulta una tarea trivial.
2. Se trata de un producto lgico, sin existencia fsica. El verdadero producto del software es el diseo de
una serie de instrucciones para el computador.
3. No se degrada con el uso. La naturaleza lgica del software permite que permanezca inalterable por muy
intensa que sea su utilizacin.
4. La complejidad del software, la ausencia de controles adecuados y el comportamiento del mercado
actual provoca productos que muchas veces se entregan conscientemente con defectos, incluso
pblicamente declarados.
5. Un porcentaje muy grande de la produccin se hace an a la medida.
6. Es muy flexible. Se puede cambiar con relativa facilidad.

La definicin ms aceptada de calidad del software es la declarada en el estndar IEEE STD.610-1991


La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos
especificados y las necesidades o expectativas del cliente o usuario.
Esta definicin centra la calidad en el producto del proceso de desarrollo: el software. Sin embargo, al igual que
para otros productos, la calidad puede medirse desde la perspectiva del proceso. En la medida en que el proceso
de desarrollo cuente con medidas de aseguramiento de la calidad, tendremos un grado de certeza de su calidad.
Desde esta perspectiva, la calidad del software puede medirse desde dos enfoques:
1. La calidad del proceso.
2. La calidad del producto. La calidad del producto tambin puede dividirse en:
1. Calidad interna
2. Calidad externa
3. Calidad d uso

Existen muchos modelos para la evaluacin y aseguramiento de la calidad del proceso de desarrollo: CMM,
ISO-15504, SPICE., TSP, PSP, PMI, etc. De igual manera hay algunos estndares para la medicin de la calidad
del producto, siendo el ms aceptado es el ISO-9126.

Es evidente la relacin entre la calidad del producto y la calidad del proceso. Sin embargo, medir los atributos de
la calidad del software (el producto) resulta una tarea compleja, en la medida que resulta difcil explicar cmo
influyen las caractersticas del proceso en estos atributos. Por ejemplo, un diseo que podemos considerar poco
robusto, o la creatividad del equipo para dar respuesta a los requerimientos, volvern difcil anticipar el impacto
de un cambio en el proceso de desarrollo.
Aunque en esta asignatura nos centraremos en los parmetros de calidad del producto (el software), es
importante sealar que la calidad del proceso tiene una influencia significativa en la calidad del software. La
gestin y mejora de la calidad del proceso debera propiciar una reduccin de los defectos en el software
entregado.
El proceso de control de calidad implica comprobar que el proceso del software y el software resultante
concuerdan con los estndares adoptados.

CALIDAD DEL PRODUCTO


EL ESTNDAR ISO/IEC 9126
La familia de normas ISO/IEC 9126 especifica una serie de modelos y mtricras para el aseguramiento de la
calidad del software desde el punto de vista del producto.
ISO/IEC 9126 Tecnologas de la Informacin Calidad de los productos de software

ISO/IEC 9126-1: Modelo de calidad

ISO/IEC 9126-2: Mtricas externas

ISO/IEC 9126-3: Mtricas internas

ISO/IEC 9126-4: Mtricas de Calidad de uso

1. Funcionalidad: Un conjunto de atributos que se relacionan con la existencia de un conjunto de funciones


y sus propiedades especficas. Las funciones son aquellas que satisfacen las necesidades implcitas o
explcitas.
1. Adecuacin: Atributos del software relacionados con la presencia y aptitud de un conjunto de
funciones para tareas especificadas.

2. Exactitud: Atributos del software relacionados con la disposicin de resultados o efectos correctos o
acordados.
3. Interoperabilidad: Atributos del software que se relacionan con su habilidad para la interaccin con
sistemas especificados.
4. Seguridad: Atributos del software relacionados con su habilidad para prevenir acceso no autorizado
ya sea accidental o deliberado, a programas y datos.
5. Cumplimiento funcional.
2. Fiabilidad: Un conjunto de atributos relacionados con la capacidad del software de mantener su nivel de
prestacin bajo condiciones establecidas durante un perodo establecido.
1. Madurez: Atributos del software que se relacionan con la frecuencia de falla por fallas en el
software.
2. Recuperabilidad: Atributos del software que se relacionan con la capacidad para restablecer su nivel
de desempeo y recuperar los datos directamente afectos en caso de falla y en el tiempo y esfuerzo
relacionado para ello.
3. Tolerancia a fallos: Atributos del software que se relacionan con su habilidad para mantener un nivel
especificado de desempeo en casos de fallas de software o de una infraccin a su interfaz
especificada.
4. Cumplimiento de Fiabilidad: La capacidad del producto software para adherirse a normas,
convenciones o legislacin relacionadas con la fiabilidad.
3. Usabilidad: Un conjunto de atributos relacionados con el esfuerzo necesario para su uso, y en la
valoracin individual de tal uso, por un establecido o implicado conjunto de usuarios.
1. Aprendizaje: Atributos del software que se relacionan al esfuerzo de los usuarios para reconocer el
concepto lgico y sus aplicaciones.
2. Comprensin: Atributos del software que se relacionan al esfuerzo de los usuarios para reconocer el
concepto lgico y sus aplicaciones.
3. Operatividad: Atributos del software que se relacionan con el esfuerzo de los usuario para la
operacin y control del software.
4. Atractividad
4. Eficiencia: Conjunto de atributos relacionados con la relacin entre el nivel de desempeo del software y
la cantidad de recursos necesitados bajo condiciones establecidas.
1. Comportamiento en el tiempo: Atributos del software que se relacionan con los tiempos de respuesta
y procesamiento y en las tasas de rendimientos en desempear su funcin.

2. Comportamiento de recursos: Usar las cantidades y tipos de recursos adecuados cuando el software
lleva a cabo su funcin bajo condiciones determinadas.
5. Mantenibilidad: Conjunto de atributos relacionados con la facilidad de extender, modificar o corregir
errores en un sistema software.
1. Estabilidad: Atributos del software relacionados con el riesgo de efectos inesperados por
modificaciones.
2. Facilidad de anlisis: Atributos del software relacionados con el esfuerzo necesario para el
diagnstico de deficiencias o causas de fallos, o identificaciones de partes a modificar.
3. Facilidad de cambio: Atributos del software relacionados con el esfuerzo necesario para la
modificacin, correccin de falla, o cambio de ambiente.
4. Facilidad de pruebas: Atributos del software relacionados con el esfuerzo necesario para validar el
software modificado.
6. Portabilidad: Conjunto de atributos relacionados con la capacidad de un sistema software para ser
transferido desde una plataforma a otra.
1. Capacidad de instalacin: Atributos del software relacionados con el esfuerzo necesario para instalar
el software en un ambiente especificado.
2. Capacidad de reemplazamiento: Atributos del software relacionados con la oportunidad y esfuerzo
de usar el software en lugar de otro software especificado en el ambiente de dicho software
especificado.
3. Adaptabilidad: Atributos del software relacionados con la oportunidad para su adaptacin a
diferentes ambientes especificados sin aplicar otras acciones o medios que los proporcionados para
este propsito por el software considerado.
4. Co-Existencia: Coexistir con otro software independiente, en un entorno comn, compartiendo
recursos comunes.
El desarrollo de software es un proceso ms creativo que mecnico. La calidad del producto tambin se ve
afectada por factores externos, como la novedad de una aplicacin o la presin comercial para sacar un producto
rpidamente.
La calidad interna es el elemento de calidad ms cualitativo, por ende permite establecer procesos de control de
calidad (aseguramiento de la calidad) ms expeditos. De hecho, los procesos de control de calidad interna
permiten identificar fallos en fases tempranas de desarrollo, y por ende; reduccin de tiempo y esfuerzo del
equipo de desarrollo, que representa mayor productividad y menos costos.
Normalmente asociamos los controles de calidad y las normas de calidad como especificaciones abstractas,
especificadas con el nico objetivo de vender la idea de sofisticacin en nuestra concepcin de ingeniera de
software, pero que en la prctica no tendr ningn impacto en el producto, ni mucho menos en el proceso de
desarrollo. No obstante, en el proceso de desarrollo de software, estos controles tendrn un impacto directo en
varios atributos de calidad del producto.

Uno de los componentes ms importantes de los controles de calidad interna son los estndares de desarrollo. En
todo proyecto de desarrollo es posible especificar patrones, normas, estndares y convenciones. Estos elementos
estn determinados por el diseo arquitectnico del software, la tecnologa requerida para su desarrollo,
convenciones generalmente aceptadas, buenas prcticas y estndares especficos para el proyecto o la
organizacin.
En esta unidad estudiaremos algunos de los estndares ms comnmente aceptados que son utilizados para la
garanta de la calidad, tanto del proceso como del producto.

ESTNDARES
Un estndar es un modelo o patrn que tienen forma de reglas que se deben seguir para realizar un proceso.
Podemos definir un estndar de desarrollo como un conjunto de reglas a aplicar en el proceso de desarrollo.

ESTANDARES DE DISEO
Como se ha mencionado anteriormente, los estndares de diseo normalmente estn determinados por los
requerimientos tecnolgicos y arquitectnicos del sistema. Por ejemplo, no sera posible adoptar un estndar de
diseo de base de datos en particular, si la aplicacin que se desea desarrollar no almacenar datos en una base
de datos.
El atributo que se ve impactado por este tipo de estndar es la mantenibilidad.

ESTANDARES DE DISEO DE INTERFACES DE USUARIO


Normalmente este tipo de estndar se define en conjunto con el usuario. Se acuerdan algunas normas bsicas
para el diseo y programacin de las interfaces de usuario como: disposicin (layout), tipo de controles a utilizar,
comportamiento general, etc.
Los atributos de software que se incluyen en este tipo de estndares son la funcionalidad, la usabilidad y la
mantenibilidad.

ESTANDARES DE DISEO DE BASE DE DATOS


El diseo de la base de datos es una de las actividades ms crticas del proceso de desarrollo. Al igual que casi
todos los tipos de estndar, se ve impactado por la tecnologa que se requiera para la construccin del software y
la adopcin de algunas tcnicas de diseo e implementacin de base de datos.
Por ejemplo, en algunos gestores de base de datos como Oracle, el nombre de los objetos de la base de datos no
puede sobrepasar de 30 caracteres. Otro ejemplo es la adopcin de un patrn de diseo o una tcnica de
persistencia, podemos definir como estndar que todas las entidades debern tener como llave primaria una llave
ficticia y no se deben modelar entidades con llaves compuestas.
Los atributos que ms se ven impactados por este tipo de estndares son la mantenibilidad y la fiabilidad.

ESTANDARES DE PROGRAMACION
Los estndares de programacin o de codificacin, se refieren a los estndares que se utilizarn para la escritura
del cdigo fuente de nuestro software.
Al igual que la mayora de los estndares, se ve impactado por la tecnologa requerida. Por ejemplo, si nuestro
sistema ser construido en lenguaje Java, existen una serie de convenciones de codificacin para ese lenguaje,
emitidas y validadas por la Java Community Proccess.
En cambio, si el lenguaje de programacin es PHP, un lenguaje mucho ms permisivo. Los estndares o
convenciones no pasan de ser recomendaciones de buenas prcticas, por lo que en un proyecto de desarrollo,
se deberan definir nuestros propios estndares.
Generalmente, los estndares de programacin incluye:
1. Nombrado de objetos (variables globales, variables locales, constantes, funciones, procedimientos,
mdulos, rutinas, paquetes, clases, etc.)
2. Indentacin
3. Documentacin interna (de archivo, de clases, de funcin, de mtodo, de procedimiento, de mdulo)
4. Estilo de programacin (estructurada, no estructurada)
En este estndar normalmente se incluye tambin los estndares de codificacin de procedimientos almacenados,
triggers y funciones de la base de datos.
Los atributos que ms se ven impactados por este tipo de estndar son la mantenibilidad y la eficiencia.

ESTANDARES DE DOCUMENTACION EXTERNA


Los estndares de documentacin externa se refiere principalmente a los manuales y a cualquier otro documento
que acompae el software. Los manuales de usuario y tcnico son los ejemplos ms evidentes. Sin embargo, esto
puede incluir manual de implementacin, documentacin del proceso de desarrollo, entre otros.
El atributo que ms se ven impactados por este tipo de estndar es la usabilidad.
En la actualidad, el estndar ISO/IEC 9126 ha sido reemplazado por estndar ISO/IEC 25000, llamado SQuaRE
(Software Product Quality Requeriments and Evaluation).
En trminos generales, el estndar SQuaRE es una integracin de los estndares ISO/IEC 9126 (Calidad del
software como producto) e ISO/IEC 14158 (Evaluacin del software como producto), extendiendo las
definiciones de estos estndares e incorporando nuevos elementos como guas de evaluacin, tanto del producto,
como del proceso.
El estndar SQuaRE, agrega nuevos atributos, descompone algunos existentes en el estndar 9126 y los
reorganiza en un total de 8 atributos. En general, el estndar SQuaRE es un estndar ms detallado y por ende

ms fcil de aplicar. Sin embargo, dado que incluye su definicin incluye procedimientos de planificacin,
especificacin y evaluacin, no ahondaremos en l.

También podría gustarte