Вы находитесь на странице: 1из 20

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 insumos

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

productividad=

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 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 Insumos Produccin Mayor produccin Mayor produccin y calidad

10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 Menos insumos Ms insumos Produccin

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. TIPOS DE MEDIDA
Medidas relacionadas con el tamao: estas se relacionan con el tamao de la salidas de alguna actividad (proceso en el software). Las ms comunes son: lneas de cdigo fuente entregadas, nmero de instrucciones de cdigo objeto entregado, nmero de pginas de documentacin del sistema. Medidas relacionadas con la funcin: estas se relacionan con la funcionalidad total del software entregado. Las ms conocidas son: Puntos de Funcin, Puntos Caracterstica, Puntos Objeto.

LINEAS DE CDIGO
La medida de las LOC (Lines Of Code) o KLOC (Kilo Lines Of Code) es la ms medida de tamao ms utilizada. Utilizando esta medida podemos determinar:

Productividad =

KLOC persona mes Costo total KLOC

Costo por KLOC =


Sus principales caractersticas son:

La productividad y el costo incluyen todas las actividades de Ingeniera de software y no slo la codificacin. Depende mucho del estilo y del lenguaje de programacin utilizado aunque existen reglas (Halstead) para hacer equivalencias entre diferentes lenguajes.

No se puede aplicar a lenguajes no procedurales. Requieren un nivel de detalle difcil de conseguir cuando an no se ha realizado ni el anlisis ni el diseo.

PUNTOS DE FUNCIN
Es una medida indirecta y se calcula en funcin de ciertos valores: N de entradas independientes de datos necesarios para la aplicacin (no peticiones). N de salidas (elaboradas): informes, pantallas de consulta, mensajes de error. ( no elementos individuales dentro de un informe). N de peticiones de usuario. N de archivos lgicos.

N de interfaces externas utilizados para trasmitir o recuperar informacin de otros sistemas ficheros procedentes de otros sistemas, cintas, discos, gestor de comunicaciones.

Parmetro de medida N de entradas de usuario N de salidas de usuario N de peticiones de usuario N de archivos lgicos N de interfaces externas

Cuenta x x x x x TOTAL

Simple 3 4 3 7 5

Factor de peso Medio Complejo 4 5 4 10 7 6 7 6 15 10

TOTAL

Los valores de estas variables se multiplican por un factor de peso segn sea la complejidad del factor seleccionado (subjetivo).

PF = total( 0.65 + 0.01 ( F i))


Los Fi son 14 valores de ajuste a la complejidad valorados de 0 a 5 en funcin de lo menos a lo ms esencial que se considere ese factor en el proyecto que se pretende desarrollar.

Productividad =

PF personas mes Costo total PF

Costo por PF =

Los 14 valores de ajuste a la complejidad son una serie de preguntas que debemos responder mediante la ponderacin de 0 a 5:

leer todo

1. Requiere el sistema copias de seguridad y de recuperacin fiables? 2. Se requiere comunicacin de datos? 3. Existen funciones de procesamiento distribuido? 4. Es crtico el rendimiento?

5. Se ejecutar el sistema en un entorno operativo existente y fuertemente utilizado? 6. Requiere el sistema entrada de datos interactiva? 7. Requiere la entrada de datos interactiva que las transacciones de entrada se lleven a cabo sobre mltiples pantallas u operaciones? 8. Se actualizan los archivos maestros de forma interactiva? 9. Son complejas las entradas, salidas, archivos o las peticiones? 10. Es complejo el procesamiento interno? 11. Se ha diseado el cdigo para ser reutilizable? 12. Estn incluidas en el diseo la conversin y la instalacin? 13. Se ha diseado el sistema para soportar mltiples instalaciones en diferentes organizaciones? 14. Se ha diseado la aplicacin para facilitar los cambios y para ser fcilmente utilizada por el usuario? Los puntos de funcin (PF) pueden usarse para estimar el nmero de lneas de cdigo (L DC) dependiendo del nmero medio de lneas de cdigo por PF para un lenguaje dado (LDC/PF):

LDC = LDC / PF PF
La LDC/PF es un factor dependiente del lenguaje, que vara desde 200-300 para lenguaje ensamblador, y entre 2-40 para un lenguaje 4GL.

Ventajas de los puntos de funcin: Son independientes del lenguaje de programacin Pueden calcularse a partir de la especificacin Usa informacin del dominio del problema Resulta ms fcil a la hora de reutilizar componentes Se encamina a aproximaciones orientadas a objetos

La principal desventaja de este mtodo es que los puntos de funcin son muy subjetivos y que dependen del estimador.

PUNTOS CARACTERSTICA
La medida de puntos de funcin se diseo originalmente para aplicaciones de gestin. Para aplicaciones con otra problemtica como las de tipo cientfico, de tiempo real y de sistemas, se utiliza una variante: los puntos de caracterstica, que est diseado para sistemas con complejidad algortmica alta. Se considera el nmero de algoritmos que resuelven un problema complejo, determinado como un valor ms y se utiliza como multiplicador un nico peso.

Parmetro de medida N de entradas de usuario N de salidas de usuario N de peticiones de usuario N de archivos lgicos N de interfaces externas N de algoritmos TOTAL

Cuenta

Peso x4 x5 x4 x7 x7 x3

TOTAL

PUNTOS OBJETO
Los Puntos Objeto son una alternativa a los puntos de funcin cuando se utilizan 4GLs o lenguajes similares para el desarrollo. Los Puntos Objeto no son lo mismo que objetos de una clase. Son mas fciles de estimar a partir de una especificacin que los puntos de funcin, ya que solamente consideran pantallas, informes y mdulos 3GL. Por lo tanto pueden estimarse en fases tempranas del proceso de desarrollo. En estas etapas resulta muy difcil estimar el nmero de lneas de cdigo de un sistema El N de Puntos Objeto es una estimacin ponderada de: El nmero de pantallas independientes: Sencillas 1 PO Moderadamente complejas 2 PO Complejas 3 PO. El nmero de informes diferentes generados por el sistema: Sencillos 2 PO Moderadamente complejos 5 PO Complejos 8 PO. El nmero de mdulos 3GL para complementar el cdigo 4GL:

leer todo

10 PO por cada mdulo 3GL

C. FACTORES QUE AFECTAN LA PRODUCTIVIDAD

FACTORES Humanos Del problema Del proceso Del producto De los recursos

DESCRIPCION Experiencia y tamao del equipo de desarrollo. Complejidad del sistema y cambios de requisitos durante el desarrollo. Tcnicas utilizadas. Rendimiento y fiabilidad del sistema. Disponibilidad de recursos HW, SW, etc., para el desarrollo.

El efecto de estos factores sobre la productividad entre las condiciones ms favorables y ms desfavorables puede suponer variaciones de:

FACTORES Humanos Del problema Del proceso Del producto De los recursos

INCIDENCIA 90% 40% 50% 140% 40%

D. 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.

E. 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.

Вам также может понравиться