Vous êtes sur la page 1sur 3

Lectura 1: No silver bullets

Para los administradores no-tcnicos, los proyectos de software son algo que parece familiar e inocente, pero se pueden convertir en un hombre lobo perdiendo la agenda, aumentado el presupuesto y daando productos. No existen tcnicas, tecnologas o avances que prometan aumento de la productividad, confiabilidad y simplicidad del proyecto de software. Dificultades esenciales 1. No es que el software avance muy lento, es que el hardware avanza demasiado rpido. Ninguna otra industria cambi tanto la relacin precio/calidad de productos tan rpido como el PC. 2. La tasa de progreso de la tecnologa del software depende de la esencia del software, la cual tiene dificultades inherentes y accidentes.

Dificultades inherentes
Software como entidad construida de conceptos: sets de datos, relaciones entre datos, alegorismos, invocaciones y funciones. Esencia abstracta, altamente precisa y ricamente detallada. El autor, XXX, considera que los errores ms importantes son los conceptuales, por lo que la parte dura de la construccin de un software es la especificacin, el diseo y el testeo. De ser as, no hay balas de plata que puedan solucionar los problemas. Propiedades inherentes del sistema moderno de software: 1. Complejidad: No hay dos partes iguales (subrutinas), tienen una gran cantidad de estados (crearlos, describirlos y testearlos es muy complicado), agrandarlos no es una repeticin de lo mismo en talla ms grande (complejidad aumenta a tasa mucho ms que lineal). Las ciencias son sobre simplificar la realidad al plano abstracto, pero el software es esencialmente complejo, por lo que no aplica. Complejidad deriva en problemas de: a. Comunicacin entre compaeros de equipo fallas de producto, aumento de costos, retrasos agenda. b. Enumeracin y entendimiento todas las posibles etapas del programa no fiable c. Invocacin de funciones difcil de usar d. Extensin del programa sin efectos colaterales e. Estados no visualizados trampas de seguridad 2. Conformidad: Se necesita conformar a una gran cantidad de personas, porque los humanos son arbitrarios y caprichosos. Muchas veces, mucha complejidad proviene de la conformidad con otras interfaces, la cual no puede ser modificada por un rediseo de solo el software.

3. Cambiante: Entidad constantemente sujeta a la presin por el cambio. En parte porque el software puede ser cambiado ms fcil que bienes de consumo tangibles. Primero las personas lo adoptan y lo considera til, pero luego prueban nuevos usos ms all del dominio original. Por otro lado, los buenos softwares sobreviven ms all que la mquina en que habitan. El mundo cambia, el software se ve forzado a seguirle el ritmo. 4. Invisibilidad: El software es invisible e invisualizable, las grficas que se han inventado para tratar de representarlo no cumplen porque la realidad del software no est limitada al espacio. No permite que el cerebro use algunas de sus herramientas ms valiosas conceptuales para el proceso de diseo y posterior comunicacin asociada.

Dificultades accidentales
Lenguaje de alto nivel: Aumento progresivo del nivel del lenguaje de programacin ayud a
aumentar la productividad, confiabilidad y simplicidad ya que libera al programa de mucha complejidad accidental (no la inherente). El nivel de lenguaje amuebla la forma en que el programador imagina, el nivel de pensamiento sobre estructuras de datos, tipos de datos y operaciones crece constantemente a tasa desacelerando.

Tiempo compartido: Aument la productividad de los programadores (en menor cantidad


que la mejora por aumento en el nivel de lenguaje), preservando la inmediatez y manteniendo la visin de complejidad. Ayuda cuando las personas se distraen y luego deben volver a su trabajo, tiempo compartido ayuda a refrescar la memoria. Disminuye el tiempo de respuesta del sistema, pero cuando sobrepasa lo que el humano puede notar, pierde el beneficio esperado.

Ambientes de desarrollo de programas integrados: Unix e Interlisp. Atacan


dificultades accidentales que parten por usar programas individuales en conjunto, proveyendo libreras integradas, formatos de archivos, tuberas y filtros. Cualquier nueva herramienta puede ser usada en cualquier programa mientras siga el formato estndar.

Balas de plata en camino


Ada: Aumento del nivel de lenguaje de los 80s, su filosofa de modularizacin, de tipos de datos
abstractos y estructura jerarquizada podran ser ms importantes que el cambio de lenguaje. No es una bala de plata, pero es la primera etapa de transicin desde complejidades accidentales de la mquina en las soluciones ms abstractas que deben verse una-a-una. El mayor aporte de Ada es el cambio de mentalidad en tcnicas de diseo de software.

Programacin orientada a objetos: Abstract data types (ocultacin) & hierarchical


types (jerarqua). Tipos de datos abstractos implica que un objeto debe ser nombrado, asociado a valores propios y operaciones, ms all de una estructura de almacenamiento (la cual debiera estar oculta). Tipos de jerarqua (como Simula-7s) permiten definir interfaces que pueden ser redefinidas proveyendo tipos de subordinacin: uno puede tener jerarqua sin ocultacin o bien

ocultacin sin jerarqua. Ambos remueven dificultades, permitiendo al diseador expresar la esencia del diseo sin grandes cantidades de material sinttico aadido al contenido de informacin, menos dificultades accidentales.

Inteligencia artificial: Depende de la definicin de inteligencia que se use:


a. El uso de computadores para resolver problemas que previamente solo se resolvan aplicando la inteligencia humana. b. El uso de un set especifico de tcnicas de programacin, conocidas como heursticas o programacin basada en reglas. El programa es diseado para resolver problemas del modo en que los humanos lo haran, por lo que se aproxima a la definicin a. Algo puede encajar en la definicin a, pero al analizarlo, ya no encaja. Es poco probable que el reconocimiento de voz pueda ayudar cuando el problema de la programacin es qu decir, no decirlo.

Sistemas expertos: Softwares que solucionan problemas basados en reglas, tienen


supuestos y dan recomendaciones sobre qu decidir. Pero la clave de esos no es el pensamiento del software es la informacin contenida en el mismo, el experto que aport la informacin para su creacin.

Programacin automtica: Eufemismo para la programacin con un alto nivel de lenguaje


disponible para el programador.

Vous aimerez peut-être aussi