INGENIERÍA DEL SOFTWARE INGENIERÍA DEL SOFTWARE Sesión No. 5 Nombre: Estrategias Contextualización ¿Cómo elegir el lenguaje de programación? La importancia de elegir el lenguaje de programación adecuado no sólo es por los recursos con los que contamos o en su caso, las licencias del producto, sino además, debemos tener en cuenta siempre la estructura definida del programa, puede que el software requiera cierto número de módulos pero que trabaje sólo con dos equipos conectados en red punto a punto. Un ejemplo puede ser una base de datos de un sistema bancario, el cual recibe transacciones a cada momento y el software que lo maneja debe de ser capaz de soportar la carga de información, brindar seguridad y ser transparente. Pero como en este tipo de sistemas se usan lenguajes de bajo nivel, hacer una adaptación es complicado, por esta razón es importante definir cuál será la estrategia de desarrollo y de qué manera ´puede ser compatible. 1 INGENIERÍA DEL SOFTWARE Introducción al Tema Cuando los diseños de aplicaciones utilizan estrategias que no son compatibles con la finalidad de lo que se desea desarrollar, pueden crear discrepancias dentro de los elementos funcionales del software, se deben contemplar elementos importantes, como los sistemas de arranque que utilizan los sistemas operativos y de los cuales se pueden apoyar los nuevos programas para optimizar su ejecución y tener un funcionamiento correcto. Los componentes que se utilizan dentro del desarrollo de aplicaciones o para su uso, son verificados en el diseño y estructurados de tal forma, que ninguno interfiera entre sí para completar su ciclo de vida o ejecución para el que fue programado. 2 INGENIERÍA DEL SOFTWARE Explicación Estrategias Las estrategias dentro de la ingeniería de software se dividen en dos categorías, estrategias de diseño y estrategias de prueba del software. ¿Cuáles son las estrategias de diseño de software? Las estrategias de diseño de software cuentan con las características siguientes: • Generación de un conjunto de alternativas en la estrategia de diseño • Selección de una alternativa viable para el SI deseado, tomando en cuenta las restricciones organizacionales y económicas que puedan limitar el desarrollo. Las estrategias pueden realizarse de forma general, éstas determinan el diseño de procesos y son divididos permitiendo lograr una alta extracción de datos e información. Sin importar el uso de las estrategias, es sabido que aun el software más robusto podría tener fallas, no es por la mala implementación de una estrategia de diseño o de prueba, sino por factores que no se pueden determinar en su desarrollo por ser una gran número de variables que cambian, como el sistema en que se utilizan, la capacidad del equipo, la antigüedad de los componentes que tiene, etc. ¿Cuáles son las estrategias de prueba de software? Las estrategias de prueba del software integran una serie de pasos para una buena construcción de software, en esta estrategia se describen los pasos que hay que ejecutar para ejecutar pruebas de rendimiento, esta prueba una planificación, diseño, ejecución y evaluación de resultados finales. Antes de ejecutar alguna prueba se crea una especificación de la misma, donde se defienden los casos de uso y las tareas que tiene que realizar; cuando la 3 INGENIERÍA DEL SOFTWARE prueba se termina se procede a crear un proceso de comparación entre la especificación y los resultados finales. Figura 1.Pressman, R. (2002).Ingeniería de software un enfoque práctico [Estrategia de prueba.] (p.308). Madrid: McGraw-Hill Estructurada En la ingeniería de software, la “programación estructurada” es un paradigma de programación cuya función es mejorar la claridad y calidad del material que se desarrolla dentro de un tiempo razonable utilizando subrutinas y tres estructuras lógicas básicas. Tiene como objetivo desarrollar software fáciles comprender para futuras correcciones o modificaciones. Este tipo de programación no se limita a sólo un lenguaje, ni al tamaño de una aplicación a realizar, por lo que puede cumplir con cualquier ciclo que se le introduzca en las líneas de código, ya sea una pequeña calculadora, o una aplicación para un negocio, en el cual se mantenga un registro, no importa pues las estructuras de programación se utilizan en todo caso. 4 INGENIERÍA DEL SOFTWARE Figura 2. 5Hertz. (2014) ¿Qué es la programación estructurada? [Estructuras de control]. Recuperado de: http://5hertz.com/tutoriales/?p=756 Orientada a objetos En la ingeniería de software, la “programación orientada a objetos”, también conocida como POO, este es un paradigma de programación que utiliza objetos en sus iteraciones, es útil para diseñar aplicaciones informáticas. Estos no se limitan a un sólo lenguaje de programación o plataforma de uso, por lo que es útil tanto para dispositivos móviles como para fijos. Algunas de sus técnicas principales son: Herencia Cohesión Abstracción Polimorfismo Acoplamiento Encapsulado 5 INGENIERÍA DEL SOFTWARE Figura 3. Álvarez, M. (2014) Polimorfismo en Programación Orientada a Objetos [Herencia y las clasificaciones en Programación Orientada a Objetos]. Recuperado de: http://www.desarrolloweb.com/articulos/polimorfismo-programacion-orientada-objetosconcepto.html Centrada en los datos En este aspecto, se trata de un medio más específico el que se tiene que cumplir, es decir, dependiendo de la información con la que se cuente se desarrollará la aplicación o el manejo del contenido que ésta tendrá, por ejemplo, algunos de los modelos son; Modelos de datos primitivos (orientado al fichero) Modelo de datos clásico Modelos de datos semánticos Modelos de datos de propósito específico (orientado a objetos) Dependiendo de los tipos de datos, puede que la aplicación cumpla con los procedimientos o solamente sea de una básica ejecución, por lo que los modelos básicos se utilizan en medios de recursos limitados para así completar el ciclo con el que fueron programados. 6 INGENIERÍA DEL SOFTWARE Basada en componentes Este se refiere a la funcionalidad disponible a través de un sistema de software dado, se puede reutilizar un sistema transmitido. Los componentes con los que se cuentan son los principales y la razón por la cual se define la arquitectura de software. ¿Qué es un componente de software? Un paquete de información es un grupo de datos de un software. Los procesos con los que cuentan los componentes funcionan de manera semántica, por lo que este principio determina que los componentes son modulares y cohesivos. Algunas de las ventajas de basarse en componentes son las siguientes: Reutilización de software Simplificado de pruebas Simplifica el mantenimiento del sistema Mayor claridad Estas ventajas son utilizadas y comprendidas debido a que los programas que actualmente se desarrollan son más complejos, por lo que deben de cumplir con varios de los requerimientos que se estipulan en los reglamentos ISO e IEEE, para ofrecer calidad, funcionalidad, potencia, etc. 7 INGENIERÍA DEL SOFTWARE Figura 4.Pressman, R. (2002).Ingeniería de software un enfoque práctico [Desarrollo basado en componentes.] (p.28). Madrid: McGraw-Hill 8 INGENIERÍA DEL SOFTWARE Conclusión Importancia de las estrategias de desarrollo de software. Las estrategias son medios de conocimiento y aplicación que se utilizan para determinar la información que se ha conseguido y lograr estructurarla, de tal forma que se pueda realizar la codificación de un software que cumpla con los requisitos que solicita el comprador y con los que se ha diseñado la aplicación. Basarse en los componentes es algo básico, pues cuando estos no están al alcance de la mayoría de los usuarios para los cuales está dirigida la aplicación, pasaría lo mismo que omitir un análisis de los productos, ocasionando grandes pérdidas de dinero y tiempo al trata de solucionar los conflictos que se tengan, como la incompatibilidad con el hardware o la falta de memoria para la ejecución de comandos especiales, determinar la versión del sistema operativo en el que se ejecutará o la capacidad de memoria de la que dependerá la aplicación para tener éxito en correr el código y lanzar la aplicación. 9 INGENIERÍA DEL SOFTWARE Para aprender más Desarrollo basado en componentes. • Gayoso, M. (2002). Desarrollo basado en componentes para sistemas de gestión empresarial. (Tesis de maestría inédita) Instituto de Computación. Facultad de Ingeniería. Universidad de la Republica. Sitio Web: https://www.colibri.udelar.edu.uy/bitstream/123456789/3126/1/tesisgayoso.pdf Análisis orientado a objetos en dominio aeronáutico. • Monserrat, D. (2005). Modelos de análisis orientado a objetos aplicados en el dominio aeronáutico. Modelos y patrones de diseño. (Tesis de maestría inédita). Facultad de Informática. Universidad Nacional de la Plata. Sitio Web: http://sedici.unlp.edu.ar/bitstream/handle/10915/4080/Documento_complet o__.pdf?sequence=1 Aplicaciones sensibles al contexto • Bazzoco, J. (2005). Arquitectura Orientada a Objetos para Aplicaciones Sensibles al Contexto. (Tesis de maestría inédita). Facultad de Informática. Universidad Nacional de la Plata. Sitio Web: http://sedici.unlp.edu.ar/bitstream/handle/10915/4085/Documento_complet o.pdf?sequence=1 10 INGENIERÍA DEL SOFTWARE Actividad de Aprendizaje Instrucciones: Para que reafirmes los conocimientos que has adquirido en esta sesión, tendrás que realizar una actividad la cual consiste en realizar un mapa mental grafico donde detalles las estrategias en la ingeniería de software y los tipos de programación vistos en esta sesión. Deberás guardarlo en formato JPG, para subirlo a la plataforma de la asignatura. Es muy importante que tengas claros los conceptos de esta sesión, ya que más adelante harás uso de ellos de manera práctica. Para esta actividad se tomará en cuenta lo siguiente: Título Datos personales Ortografía y redacción Mapa mental gráfico Bibliografía 11 INGENIERÍA DEL SOFTWARE Bibliografía • Budd T., (2010) Programación orientada a objetos. Sitio web: http://www.fdi.ucm.es/profesor/jpavon/poo/01ejemplos.pdf • Casal J. (2013), Desarrollo de software basado en componentes. De Microsoft Developer Network. Sitio web: https://msdn.microsoft.com/eses/library/bb972268.aspx • González, V. & Ortiz, M. Estrategias para el diseño y desarrollo de software educativo. de Departamento de Tecnología Educativa de la Secretaria de Educación Pública y Cultura del Estado de Sinaloa. Sitio web: http://bibliotecadigital.conevyt.org.mx/colecciones/documentos/some ce/11.pdf • Pressman, R. (2002). Ingeniería de software .Un enfoque práctico. Madrid: McGraw-Hill. 12