Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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).
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=
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.
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 ?
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=
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
TOTAL
Los valores de estas variables se multiplican por un factor de peso segn sea la complejidad del factor seleccionado (subjetivo).
Productividad=
Los 14 valores de ajuste a la complejidad son una serie de preguntas que debemos responder mediante la ponderacin de 0 a 5: 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 / PFPF
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:
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
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.