Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software,...

9
Introducción a la Ingeniería del software 1. INTRODUCCIÓN El software como tal es un conjunto de instrucciones lógicas que le permite al usuario interactuar con el computador a través de una interfaz, es lo que comúnmente se conoce como los programas del computador y van desde un editor de texto hasta aplicaciones que gestionan a otras. La industria del software avanza a pasos agigantados, un claro ejemplo de eso es la computación en la nube, que si bien antes teníamos que instalar un programa en nuestra computadora para poder acceder a todas las funcionabilidades que tenía ahora se lo puede hacer mediante un navegador donde el programa se encuentra alojado en un servidor a varios kilómetros de distancia, dejando así disponible el hardware que se utilizaría para correr esta aplicación (memoria, disto, procesador). A continuación se analiza más detalladamente que es el software, sus características y las diferentes metodologías que utilizan los desarrolladores para crear este producto, ya que la elaboración del software a medida (es decir con una función en específico), requiere de mucho esfuerzo por parte del programador como del cliente para que el producto pueda tener éxito. 2. OBJETIVO DE LA CLASE Conocer las diferentes características que tiene el software y las metodologías que utilizan los programadores para crearlo. 3. MARCO TEORICO 3.1. ¿Qué es el software? Según Pressman, R. 2010 “El software de computadora es el producto que construyen los programadores profesionales y al que después le dan mantenimiento durante un largo tiempo. Incluye programas que se ejecutan en una computadora de cualquier tamaño y arquitectura, contenido que se presenta a medida de que se ejecutan los programas de cómputo e información descriptiva tanto en una copia dura como en formatos virtuales que engloban virtualmente a cualesquiera medios electrónicos. La ingeniería de software está formada por un proceso, un conjunto de métodos (prácticas) y un arreglo de herramientas que permite a los profesionales elaborar software de cómputo de alta calidad.”

Transcript of Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software,...

Page 1: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

Introducción a la Ingeniería del software

1. INTRODUCCIÓN El software como tal es un conjunto de instrucciones lógicas que le permite al usuario interactuar con el computador a través de una interfaz, es lo que comúnmente se conoce como los programas del computador y van desde un editor de texto hasta aplicaciones que gestionan a otras. La industria del software avanza a pasos agigantados, un claro ejemplo de eso es la computación en la nube, que si bien antes teníamos que instalar un programa en nuestra computadora para poder acceder a todas las funcionabilidades que tenía ahora se lo puede hacer mediante un navegador donde el programa se encuentra alojado en un servidor a varios kilómetros de distancia, dejando así disponible el hardware que se utilizaría para correr esta aplicación (memoria, disto, procesador). A continuación se analiza más detalladamente que es el software, sus características y las diferentes metodologías que utilizan los desarrolladores para crear este producto, ya que la elaboración del software a medida (es decir con una función en específico), requiere de mucho esfuerzo por parte del programador como del cliente para que el producto pueda tener éxito.

2. OBJETIVO DE LA CLASE Conocer las diferentes características que tiene el software y las metodologías que utilizan los programadores para crearlo.

3. MARCO TEORICO

3.1. ¿Qué es el software? Según Pressman, R. 2010 “El software de computadora es el producto que construyen los programadores profesionales y al que después le dan mantenimiento durante un largo tiempo. Incluye programas que se ejecutan en una computadora de cualquier tamaño y arquitectura, contenido que se presenta a medida de que se ejecutan los programas de cómputo e información descriptiva tanto en una copia dura como en formatos virtuales que engloban virtualmente a cualesquiera medios electrónicos. La ingeniería de software está formada por un proceso, un conjunto de métodos (prácticas) y un arreglo de herramientas que permite a los profesionales elaborar software de cómputo de alta calidad.”

Page 2: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

3.2. Ciclo de vida del software El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El ciclo de vida básico de un software consta de los siguientes procedimientos:

Figura 1: Ciclo de vida del software

3.3. La naturaleza del software En la actualidad, el software tiene un papel dual. Es un producto y al mismo tiempo es el vehículo para entregar un producto. El software produce, administra, adquiere, modifica, despliega o transmite información que puede ser tan simple como un solo bit o tan compleja como una presentación con multimedios generada a partir de datos obtenidos de decenas de fuentes independientes.

Page 3: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

Características del software En la actualidad, la enorme industria del software se ha convertido en un factor dominante en las economías del mundo industrializado. Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a una aplicación compleja, han reemplazado al programador solitario de los primeros tiempos. A pesar de ello, las preguntas que se hacía aquel programador son las mismas que surgen cuando se construyen sistemas modernos basados en computadora. Éstas y muchas otras preguntas, denotan la preocupación sobre el software y la manera en que se desarrolla, preocupación que ha llevado a la adopción de la práctica de la ingeniería del software (Mejía. P. 2013) (Pressman, R. 2010)

Page 4: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

Figura 3: Preguntas sobre la manera de desarrollar software de calidad

3.4. Iingenieria de Software Aunque cientos de autores han desarrollado definiciones personales de la ingeniería de software, a continuación se muestra la expuesta por Fritz Bauer. “La ingeniería de software es el establecimiento y uso de principios fundamentales de la ingeniería con objeto de desarrollar en forma económica software que sea confiable y que trabaje con eficiencia en máquinas reales.” La ingeniería de software es una tecnología de varias capas las mismas que deben asegurar la calidad del producto, El fundamento para la ingeniería de software es la capa proceso. El proceso define una estructura que debe establecerse para la obtención eficaz de tecnología de ingeniería de software. El proceso de software forma la base para el control de la administración de proyectos de software, y establece el contexto en el que se aplican métodos técnicos, se generan productos del trabajo (modelos, documentos, datos, reportes, formatos, etc.), se establecen puntos de

Page 5: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

referencia, se asegura la calidad y se administra el cambio de manera apropiada (Pressman, R. 2010).

Figura 4: Capas de la ingenieria de software

3.5. El proceso del software Un proceso es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a crearse algún producto del trabajo, a continuación se definen cada uno de estos términos. Una actividad busca lograr un objetivo amplio (por ejemplo,

comunicación con los participantes) y se desarrolla sin importar el dominio de la aplicación, tamaño del proyecto, complejidad del esfuerzo o grado de rigor con el que se usará la ingeniería de software.

Una acción (diseño de la arquitectura) es un conjunto de tareas que producen un producto importante del trabajo (por ejemplo, un modelo del diseño de la arquitectura).

Una tarea se centra en un objetivo pequeño pero bien definido (por ejemplo, realizar una prueba unitaria) que produce un resultado tangible.

Una estructura de proceso general para la ingeniería de software consta de cinco actividades:

Page 6: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

Figura 5: Actividades Estructurales para el desarrollo del software

Las actividades estructurales del proceso de ingeniería de software son complementadas por cierto número de actividades sombrilla. En general, las actividades sombrilla se aplican a lo largo de un proyecto de software y ayudan al equipo que lo lleva a cabo a administrar y controlar el avance, la calidad, el cambio y el riesgo.

4. APORTE

4.1. Dominios de aplicación del software Actualmente, hay siete grandes categorías de software de computadora que plantean retos continuos a los ingenieros de software, a continuación se muestran las expuestas por Mejía y Peña: Software de sistemas: conjunto de programas escritos para dar servicio a otros programas. Determinado software de sistemas (por ejemplo, compiladores, editores y herramientas para administrar archivos) Software de aplicación: programas aislados que resuelven una necesidad específica de negocios se usa para controlar funciones de negocios en

Page 7: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

tiempo real (por ejemplo, procesamiento de transacciones en punto de venta, control de procesos de manufactura en tiempo real). Software de ingeniería y ciencias: se ha caracterizado por algoritmos “devoradores de números”. Las aplicaciones van de la astronomía a la vulcanología, del análisis de tensiones en automóviles a la dinámica orbital del transbordador espacial, y de la biología molecular a la manufactura automatizada. Software incrustado: reside dentro de un producto o sistema y se usa para implementar y controlar características y funciones para el usuario final y para el sistema en sí. El software incrustado ejecuta funciones limitadas y particulares (por ejemplo, control del tablero de un horno de microondas) o provee una capacidad significativa de funcionamiento y control (funciones digitales en un automóvil, como el control del combustible, del tablero de control y de los sistemas de frenado). Software de línea de productos: es diseñado para proporcionar una capacidad específica para uso de muchos consumidores diferentes. El software de línea de productos se centra en algún mercado limitado y particular (por ejemplo, control del inventario de productos) o se dirige a mercados masivos de consumidores (procesamiento de textos, hojas de cálculo, gráficas por computadora, multimedios, entretenimiento, administración de base de datos y aplicaciones para finanzas personales o de negocios). Aplicaciones web: llamadas “webapps”, esta categoría de software centrado en redes agrupa una amplia gama de aplicaciones. En su forma más sencilla, las webapps son poco más que un conjunto de archivos de hipertexto vinculados que presentan información con uso de texto y gráficas limitadas. Sin embargo, desde que surgió Web 2.0, las webapps están evolucionando hacia ambientes de cómputo sofisticados que no sólo proveen características aisladas, funciones de cómputo y contenido para el usuario final, sino que también están integradas con bases de datos corporativas y aplicaciones de negocios. Software de inteligencia artificial: hace uso de algoritmos no numéricos para resolver problemas complejos que no son fáciles de tratar computacionalmente o con el análisis directo. Las aplicaciones en esta área incluyen robótica, sistemas expertos, reconocimiento de patrones (imagen y voz), redes neurales artificiales, demostración de teoremas y juegos. Estas categorías deberán adaptarse a las nuevas tendencias de desarrollo que se den con el tiempo a continuación se detallan algunas:

Page 8: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

Figura 6: Tendencias de desarrollo

5. CONCLUSIONES El software lo desarrollan los ingenieros para que personas lo utilicen en el entorno para el que este fue diseñado, para así poder sacar provecho de todas las funcionabilidades que le fueron incluidas al producto. El software en la actualidad está presente en todos los ámbitos de nuestras vidas, ya que ha invadido el mercado, la cultura y las actividades que realizamos porque nos permite ejecutarlas de forma más rápida y dinámica. El ciclo de vida del software inicia en el análisis para el posterior desarrollo del mismo, ya que tener claro lo que se va a desarrollar es la parte más importante, debido a que la mayoría de proyectos de software que han fracasado se debe a que no se tomó el tiempo necesario para analizar el problema. Este ciclo termina cuando el software ya no es utilizado por ninguna persona, es decir se vuelve obsoleto o existe otra aplicación que es mejor, es por esto que los programadores al momento de desarrollar buscan las más recientes herramientas.

Page 9: Introducción a la Ingeniería del software · 2017-02-06 · Equipos de especialistas de software, cada uno centrado en una parte de la tecnología que se requiere para llegar a

Las nuevas tecnologías permiten desarrollar software a la medida, es por esto que los equipos de trabajo buscan mejorar sus productos de forma que se adapten a las nuevas tendencias de desarrollo, un ejemplo en la actualidad seria la computación en la nube donde el software como tal se encuentra alojado en un servidor a varios kilómetros de la maquina en la que se está ejecutando dejando así los recursos tales como memoria procesador que se utilizarían en la instalación disponibles para otras actividades. El desarrollo de software exige mucho tiempo y análisis independientemente del tipo de software que se esté realizando ya sea este un sistema de notas o un sistema transaccional en la web. Los ingenieros de software trabajan diariamente en diferentes proyectos y estos pueden ser nuevos o actualizaciones a aplicaciones ya existentes para que se adapten a las nuevas tecnologías.