Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia IUnidad I
Guia IUnidad I
UNIDAD I
ANTECEDENTES Y EVOLUCION DE LAS
HERRAMIENTAS INFORMATICAS
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.
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 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.
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).
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:
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=
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:
Estrategia de largo plazo de gobiernos, empleadores y empleados para aliviar la pobreza y promover los
derechos humanos y la democracia econmica.
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.
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:
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.
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.
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 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.
ms fcil de aplicar. Sin embargo, dado que incluye su definicin incluye procedimientos de planificacin,
especificacin y evaluacin, no ahondaremos en l.