Documente Academic
Documente Profesional
Documente Cultură
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.
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.