Ingeniería de Software: Desafíos en la Era Digital
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,69 KB
El Software en la Era Digital
El software tradicional, aquel que se compra, se posee y se administra, está llegando a su fin. Estamos presenciando el surgimiento de una nueva generación de software que se distribuye a través de Internet. Aunque el servidor sea remoto, la experiencia para el usuario será como si el software estuviera instalado en su propio equipo. La web 2.0, con su capacidad de actualización instantánea, presenta el desafío de desarrollar software "rápido y bien".
Este documento está dirigido a desarrolladores de software e incluye métodos y herramientas para la creación de software. El software tiene una naturaleza dual: es tanto un producto como un vehículo.
Software como Producto y Vehículo
Producto: Brinda el potencial de cómputo incluido en el hardware o en una red, a la que se accede mediante hardware local.
Vehículo: Distribuye el producto más importante: la información.
Definición de Software
Conjunto de instrucciones que, al ejecutarse, proporcionan la función y el desempeño deseados. El software se compone de:
- Estructuras de datos que permiten a los programas manipular información.
- Información descriptiva sobre la operación y el uso de los programas.
Características del Software
Para comprender el software, debemos entender las características que lo diferencian de otros elementos, como el hardware. El software es un elemento del sistema no físico, lo que lo distingue del hardware por las siguientes razones:
A) Desarrollo y Modificación Intelectual
El software se desarrolla y modifica con el intelecto, no se manufactura. Existen similitudes en el desarrollo de software y hardware, ambos requieren un buen diseño para lograr calidad. Sin embargo, los problemas de calidad en el hardware se resuelven más fácilmente que en el software, lo que implica enfoques diferentes.
B) El Software no se Desgasta
El hardware sigue una "curva de bañera": muchas fallas al principio debido a defectos de diseño o manufactura, luego se estabiliza la tasa de fallas y finalmente aumentan las fallas debido al desgaste de los componentes por factores externos (humedad, temperatura). El software no se ve afectado por estos factores y no se desgasta, pero sí se deteriora. Sufre cambios que aumentan la probabilidad de fallas, y estos cambios pueden introducir nuevos errores. El software se deteriora por los cambios, mientras que el hardware se puede reparar o reemplazar.
C) Construcción para Uso Individual
El software se construye generalmente para un uso individual o un grupo específico de usuarios.
Dominios de Aplicación del Software
Existen siete categorías principales de software que presentan desafíos únicos:
1. Software de Sistema
Programas escritos para servir a otros programas. Tienen una gran interacción con el hardware.
2. Software de Aplicación
Programas aislados que resuelven necesidades específicas de negocios. Procesan datos comerciales para facilitar operaciones en tiempo real.
3. Software de Ingeniería y Ciencia
Utilizan algoritmos complejos para resolver problemas científicos y de ingeniería. La ingeniería moderna ha abandonado los algoritmos "devoradores de tiempo" en favor de sistemas asistidos por computadora que permiten cálculos en tiempo real o con características de software de sistemas.
4. Software Incrustado
Reside dentro de un producto o sistema. Implementa y controla características para el sistema y el usuario final.
5. Software de Línea de Producto
Diseñado para el uso de diferentes usuarios. Un ejemplo es el software de control de inventario.
6. Aplicaciones Web
También conocidas como Webapps, están centradas en redes y abarcan una amplia gama de aplicaciones. Las Webapps comenzaron como conjuntos de archivos de texto vinculados, pero con la Web 2.0 evolucionaron a sistemas más sofisticados, como aplicaciones de negocio.
7. Software de Inteligencia Artificial
Utiliza algoritmos no numéricos para resolver problemas complejos que requieren inteligencia artificial.
Desafíos en el Desarrollo de Software
Un programa se mantiene "joven" gracias a las modificaciones que recibe. Un programa antiguo puede seguir siendo relevante gracias a la herencia de código, pero esto presenta desafíos:
A) Computación en un Mundo Abierto
El crecimiento de las redes inalámbricas ha dado paso a la computación ubicua y distribuida. El reto para la ingeniería de software es desarrollar aplicaciones que permitan la comunicación entre todo tipo de dispositivos.
B) Construcción de Redes
La World Wide Web, como motor de búsqueda y proveedor de contenidos, presenta el desafío de crear arquitecturas sencillas que beneficien a los usuarios.
C) Código Abierto
La distribución de código fuente para aplicaciones de sistemas plantea el desafío de elaborar códigos descriptivos y técnicas que permitan rastrear los cambios realizados.
Todos los cambios en el software obedecen a la ley de causa y efecto: tendrán consecuencias que no siempre se pueden prever. La mejor manera de prepararse es mediante el desarrollo de procesos ágiles.
Naturaleza Única de las Webapps
En la década de 1990, la web consistía en conjuntos de hipertexto vinculados con gráficos limitados. La llegada de HTML y otras herramientas permitió una mayor capacidad de cómputo y contenido de información, dando lugar a sistemas y aplicaciones basados en la web, conocidos como Webapps. En la actualidad, las Webapps son altamente sofisticadas.