pág.1 UNIVERSIDAD NACIONAL PEDRO RUIZ GALLO LA INVESTIGACIÓN EN INGENIERÍA DEL SOFTWARE (METODOLOGÍA DEL ESTUDIO Y DE LA COMUNICACIÓN) PROFESOR: AGUSTÍN RODAS MALCA ALUMNOS: HUARIPATA TELLO ISRAEL HERNÁNDEZ HERNÁNDEZ CARLOS ESCUELA PROFESIONAL EN INGENERIA DE COMPUTACIÓN E INFORMÁTICA. FACULTAD DE CIENCIAS FÍSICAS, MATEMÁTICAS Y COMPUTACIÓN. LAMBAYEQUE 29 DE SEPTIEMBRE DEL 2014 pág. 2 INDICE INTRODUCCION……………………………………………………………………...3 DEDICATORIA………………………………………………………………………...4 1) Introducción a la ingeniera del software……………………………………………5 1.1) Los orígenes y significada ingeniería del software…………………………….6 1.2) Conceptos básicos……………………………………………………………...7 1.3) Ingeniería del Software: ¿Ciencia o Tecnología? ……………………………...8 2) La Investigación en Ingeniería del Software…………………………………..........9 2.1) características del software…………………………………………….............10 2.2) Metodología en la aplicación de la ingeniera…………………………………11 3) Tipos de modelos de procesos de software……………………………………….....12 3.1) Tipos de modelos de procesos de software………………………………...…..13 3.2) Modelos Lineales o secuenciales………………………………………...……..14 3.3) Modelos basados en Prototipos…………………………………………………14 Bibliografía general………………………………………………………………...15 Referencias…………………………………………………………………………..16 pág. 3 INTRODUCCIÓN La importancia de la Investigación no, solo en Ingeniería del Software sino en todas las disciplinas radica en que, es una de las herramientas más efectivas para alcanzar la competitividad y la excelencia académica. A los Ingenieros, la investigación les permite desarrollar las habilidades, destrezas y actitudes que se requieren para construir datos, información y conocimiento, ya que constituye una actividad creadora y productora de nuevas ideas para la mejorar la calidad de los productos de software. La ciencia y la tecnología se han abanderado como pilares para el desarrollo social, y el manejo ya no de la información sino del conocimiento, hace necesario estar capacitados para generarlo constantemente y retenerlo en beneficio de la comunidad. El desarrollo tecnológico de las telecomunicaciones cambia el paradigma de fronteras de conocimiento, colocándonos en un espacio dónde fluyen metodologías, modelos y teorías que debemos saber organizar y utilizar. La ingeniería debe asumir su papel protagónico, innovando y desarrollando técnicas y tecnologías adecuadas al desarrollo de conocimiento y la maduración del mismo en los individuos que hacen parte de su sociedad, a su vez dándole las herramientas adecuadas para creer en su país y desarrollar para su país. El liderazgo en Ciencia y tecnología determinan el nuevo orden económico mundial, para que la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software. Las competencias industriales en cualquier país del mundo están determinadas por el avance tecnológico, es decir que la capacidad que tengan de adquirir, asimilar, adecuar e innovar la ciencia y la tecnología aplicadas a sus propios procesos de producción y servicios determinan la riqueza y fortaleza de los países. La mejor manera de afrontar el proceso natural evolutivo es la creación de conocimiento y este se logra mediante una constante investigación. La Ingeniería del Software se ha popularizado como una disciplina que pone especial énfasis en la aplicación de las nuevas técnicas y herramientas necesarias para resolver problemas, de acuerdo a las restricciones de desarrollo y recursos disponibles, permitiendo mejorar la calidad de los productos del software como también aumentando la productividad y trabajo de los ingenieros, facilitando el control del proceso de desarrollo. pág. 4 DEDICATORIA: Esta informacion esta dedicada para todas aquellas personas que disfrutan de la lectura abierta y de enseñanza para nuevas generaciones pág. 5 CAPIULO I: 1.1) Los orígenes y significados del software en la ingeniera El mundo moderno depende cada día más de los sistemas de software. Los sistemas computacionales están en todas partes, desde los sistemas de freno de los autos, hasta el control de los hornos de microondas. Hoy las grandes corporaciones conocen la import sin embargo, era diseñado a medida para cada aplicación y tenía una distribución relativamente limitada. El software como producto, es decir, programas desarrollados para ser vendidos a uno o más clientes estaba en sus inicios. La mayoría del software era desarrollado y finalmente usado por la misma persona u organización. El diseño era un proceso implícito llevado a cabo en la cabeza de alguien y la documentación era en general inexistente. Un programa era considerado exitoso si: a) Ejecutaba. b) Ejecutaba rápidamente. c) Daba una respuesta aceptable, y la calidad dependía altamente de la habilidad del programador. La gente responsable del desarrollo de software tenía limitados datos históricos para usar como guías y menos control sobre el curso de un proyecto. En 1969, un conjunto de técnicas, llamadas Ingeniería de Software, surgió como respuesta a esa crisis. Estas técnicas ven al software como un producto de ingeniería que requiere planeamiento, análisis, diseño, implementación, testeo y mantenimiento. Dano, Brian, G., Barbier, F., "un enfoque basado en la Concepto de caso de uso para Fabricación dinámico orientado a objetos Especificación ", Actas de la Tercera Internacional IEEE Simposio sobre Ingeniería de Requisitos, IEEE Computer Society Prensa, Los Alamitos, California, 1997. pág. 6 Según Naur and Randell I S “ b principios de ingeniería para obtener en forma económica, software confiable y que trabaje áq ” Luego, durante casi veinte años, hubo grandes debates sobre si la creación de software era un F “I S” nivel de aceptación dentro de la comunidad de software. Sin embargo, lo que significa exactamente, sigue siendo algo confuso. H C “Programación: Magia o ciencia?” IEEE Software, Vol. 1, Nº 2, Abril. 1.2) Conceptos básicos ¿Qué es Software? Muchas personas asocian el termino software con los programas de computadoras. Sin embargo, es preferible definirla como un proceso donde el software no son solo programas, sino todos los documentos asociados y la configuracion de datos que se necesita para hacer que estos programas operen de manera correcta. Por lo general, un sistema de software consiste en diversos programas independientes, archivos de configuracion que se utilizan para ejecutarse. El software consiste en las instrucciones detalladas que controlan el funcionamiento de un sistema computacional. Las funciones del software son: Administrar los recursos computacionales de hardware Proporcionar las herramientas para aprovechar dichos recursos Actuar como intermediario entre las organiaciones y la informacion almacenada. Tipos de software Hoy nos encontramos con una amplia oferta disponible de programas desarrollados para un fin específico, el número de programas se incrementan exponencialmente año tras año, podemos identificarlos y clasificarlos por diferentes conceptos como: pág. 7 Ubicación donde se encuentra instalado: Software en la red- Son aquellos programas y aplicaciones que se encuentran alojados en Internet o en un servidor propio y proveen el servicio al cliente mediante una conexión a la red, siendo su principal característica la no necesidad de instalarlo, configurarlo ni mantenerlo en el propio terminal donde se utiliza, programas como Office 365, Dropbox o Google Docs. Son ejemplos entre otros. Software local - También denominados como software de escritorio son aquellos que necesitan ser instalados y almacenados en el ordenador donde se ejecuta a diferencia de los anteriores, la suite ofimática Office, el programa de diseño gráfico Photoshop o el sistema operativo Windows son ejemplos de este tipo de software Grado de libertad de uso: Software libre - Representan al conjunto de programas en el que los usuarios disponen de plena libertad para copiarlo, compartirlo y modificarlo, para ello generalmente se tiene acceso al código fuente del propio programa. El sistema operativo Linux, el editor de imágenes Gimp o la suite ofimática Open Office son ejemplos de este tipo de programas. Software propietario o privado - Representan al conjunto de programas en los que los usuarios tienen limitaciones para modificarlos, compartirlos o copiarlos salvo permiso expreso del titular del software como por ejemplo el sistema operativo Windows, el editor de imágenes Photoshop o la suite ofimática Microsoft Office. Roberto Cortez morales año (2006). Introducción Al Análisis de Sistemas Y la Ingeniería de Software EUNED (Editorial universidad nacional Estatal a distancia) Costa Rica centro américa 1.3) Ingeniería del Software: definición de tecnología o ciencia. Quizá, una de las clasificaciones de Ciencia más comúnmente aceptada es aquella que divide las ciencias en formales (lógicas y matemáticas) y empíricas. pág. 8 Bunge divide a las ciencias en puras y aplicadas, englobando dentro de éstas últimas a las tecnologías. Así, por ejemplo, Bunge considera la ingeniería eléctrica como una tecnología física, o la medicina como una Ingieneria biológica. No tenemos muy claro donde podría encuadrarse la IS(Ing. del Software), así como otras ingenierías, dentro de esta clasificación, no sólo porque no es aplicación directa de una única ciencia pura, sino porque consideramos que la IS, así como el resto de las ingenierías, no son mera aplicación de otras ciencias. Esta idea es defendida por “Aracil” quien hace una dura crítica a las corrientes que no consideran las ingenierías dentro del campo del saber de las ciencias, sino como meras ciencias aplicadas. Sin embargo, Aracil sí establece distinción entre ciencia e ingeniería. Según este autor, la diferencia fundamental entre ambas es que mientras la primera se ocupa del estudio del cómo son las cosas, la segunda se ocupa del cómo deberían ser a fin de llegar a construir nuevos bj q “ q l dominio específico de ” En los últimos años, dentro de la filosofía de la ciencia se ha insistido mucho, y con razón, en que la ciencia es también acción, no sólo conocimiento; de modo correlativo deberíamos insistir en que la ingeniería también es conocimiento, y no sólo aplicación. La diferencia entre ciencia y tecnología está en los modos de acción y conocimiento que desarrollan, no en que una conozca y otro aplique Además de los filósofos de la ciencia, también hay autores relevantes en IS que reclaman “ ” A j Blum, BI Más allá de programación: Para una nueva era de diseño. Universidad de Oxford Press, 1996. Distingue entre ciencia y tecnología; detalla la relación existente entre ciencia y tecnología, comparando la labor del ingeniero con la del científico, así como el conocimiento en cada una de éstas áreas. Blum (1996) afirma: “rechazo la estrecha definición de ingeniería del software procedente de las ciencias de la computación; en efecto, yo propongo diseñar una nueva ciencia de la computación para la ingeniería del software...” y continúa definiendo la ciencia de la tecnología de la computación como “el estudio de la transformación de ideas en operaciones”. (Blum, Aracil & Bunge, 1986). (...) sin embargo no se plantean otros caminos posibles pág. 9 CAPÍTULO II: LA INVESTIGACIÓN EN INGENIERÍA DEL SOFTWARE 2.1) Características del Software El software es un elemento del sistema que es lógico, en lugar de físico. Por lo tanto el software tiene unas características considerablemente distintas a las del hardware: El software se desarrolla, no se fabrica en un sentido clásico. Aunque existen similitudes entre el desarrollo del software y la construcción del hardware, ambas actividades son fundamentalmente diferentes. En ambas actividades la buena calidad se adquiere mediante un buen diseño, pero la fase de construcción del hardware puede introducir problemas de calidad que no existen (o son fácilmente corregibles) en el software. Ambas actividades dependen de las personas, pero la relación entre las personas dedicadas y el trabajo realizado es completamente diferente para el software. Ambas actividades requieren de la construcción de un producto, pero los métodos son diferentes. Los costos del software se encuentran en la ingeniería. Esto significa que los proyectos de software no se pueden gestionar como si fueran proyectos de fabricación. El software no se estropea. El software no es dispuesto a los males del entorno que hacen que el hardware se estropee. Otro aspecto de ese deterioro ilustra la diferencia entre el hardware y el software. Cuando un componente se estropea, se sustituye por una pieza de repuesto. No hay pieza de repuesto para el software. Cada fallo en el software indica un error en el diseño o en el proceso mediante el que se tradujo el diseño a código maquina ejecutable. Por tanto, el mantenimiento del software tiene una complejidad considerablemente mayor que la del mantenimiento del hardware. La mayoría del software se construye a medida, en vez de ensamblar componentes existentes. No existen catálogos de componentes de software. Se puede comprar software ya desarrollado, pero solo como una unidad completa, no como componentes que pueden re ensamblarse en nuevos programas. pág. 10 Evolución de la Ingeniería del Software Inicialmente la programación de las computadoras era un arte que no disponía de métodos sistemáticos en los que poder basarse para la realización de productos software. Se realizaban sin ninguna planificación. Evolución y Perspectivas de la Ingeniería del Software Posteriormente, desde mediados de los 60 hasta finales de los 70 se caracterizó por el establecimiento del software como un producto que se desarrollaba para una distribución general. En esta época nació lo que se conoce como el mantenimiento del software que se da cuando cambian los requisitos de los usuarios y se hace necesaria la modificación del software. El esfuerzo requerido para este mantenimiento era en la mayoría de los casos tan elevado que se hacía imposible su mantenimiento. A continuación, surge una etapa que se caracteriza por la aparición de una serie de técnicas como la Programación Estructurada y las Metodologías de Diseño que solucionan los problemas anteriores. A finales de esta etapa aparecen las herramientas CASE (conjuntos de aplicaciones listas para amenorar el trabajo), aunque como podemos imaginar eran muy rudimentarias. ¿Qué es la ingenieria del software? La ingenieria del software es una disciplina de la ingenieria que comprende todos los aspectos de la produccion de software desde las etapas iniciales de la especificacion del sistema, hasta el mantenimiento de este despues de que se utiliza. En esta definicion existen dos frases claves: Disciplina de la ingenieria. Los ingenieros hacen que las cosas funcionen. Aplican toerias, metodos y herramientas donde sean convenientes, pero las utilizan de forma selectiva y siempre tratando de descubrir soluciones a los problemas, aun cuando no existan teorias y metodos aplicables para resolverlos. Los ingenieros tambien saben que deben trabajar con restricciones financieras y organizaciones, por lo que buscan soluciones tomando en cuenta estas restriciciones. Todos los aspectos de la produccion del software. La ingenieria del software no solo comprende los procesos tecnicos del desarrollo de softare, sino tambien con pág. 11 actividades tales como la gestion de proyectos de software y el desarrollo de herramientas, metodos y teorias de apoyo a la produccion de software. En general, los ingenieros de software adoptan un enfoque sistematico y organizado en su trabajo, ya que es la forma mas efectiva de producir software de alta calidad. Sin embargo, aunque la ingenieria consiste en seleccionar el metodo mas apropiado para un conjunto de circunstancias, un enfoque mas informal y creativo de desarrollo podria ser efectivo en al 2.2) Metodología en la aplicación de la ingeniera El artículo se propone el uso de métricas de complejidad para control de todo el proceso de desarrollo de software. En él se presentan modos de utilización de dichas métricas en las distintas etapas de proceso de desarrollo: análisis, diseño, implementación, verificación y mantenimiento. Los objetivos que se persiguen con el uso de estas técnicas. Fundación Dial net. (Aplicación de las metodologías en la investigación de ingeniería de software. http://dialnet.unirioja.es/servlet/articulo?codigo=4119728 (2001). Son la mejora de la calidad del software y la reducción en los costes de producción y mantenimiento del mismo. Las métricas empleadas son de orígenes diversos, siendo conocidas dentro del área, aunque sin una perspectiva integradora. (2001). Aplicación de las metodologías en la investigación de ingeniería de software. pág. 12 Capítulo III TIPOS DE MODELOS DE PROCESOS DE SOFTWARE 3.1Modelos Lineales o Secuenciales: Este modelo también es llamado modelo en cascada o ciclo de vida del software, que consiste en la ejecución de una serie de fases sucesivas. Estos modelos facilitan a los realizadores controlar el progreso de sus respectivos proyectos, también proponen un enfoque sistemático y secuencial para el desarrollo del software. La Filosofía de estos modelos no es realista, por el contrario es subjetivista, ya que no se ajusta, requerida mente, al desarrollo software. Según Sanz Bravo, R., & Velasco Perez, J. R. (2014). Fundacion Dialnet. Obtenido de http://dialnet.unirioja.es/servlet/articulo?codigo=4119728 este modelo tiene cuatro etapas, que son las siguientes: Planificación: Es la recolección de requisitos para llegar a planificar el proyecto a realizar en un futuro. Análisis: Se analiza lo planificado, solo así se comprobara el riesgo que se tiene al realizar el proyecto. Aquí se toma la decisión de seguir o no con el proyecto. Ingeniería: Es la fase donde se aplica el ingenio que se tiene para realizar el proyecto basado en algún problema. Evaluación del cliente: Se estudia la cantidad de personas que requerirán dicho producto. pág. 13 3.2. Modelos basados en Prototipos. Un prototipo es un modelo experimental de un sistema o de un componente que cuenta con los elementos que facilitan o que permiten su uso. Su uso se centra en ayudar a comprender los requisitos que plantea el usuario. Las etapas de ciclo de vida clásico se modifican de la siguiente manera: Análisis de requisito del sistema Análisis de requisitos del software Diseño, desarrollo e implementación del prototipo Prueba del prototipo. Refinamiento interactivo del prototipo. Refinamiento de las especificaciones del prototipo. Diseño e implementación del sistema final. Selección del modelo de Prototipo: Este modelo es usado generalmente en software especializado en lo que se refiere a la didáctica. Todos los requerimientos no se incluyen en un software, el usuario debe añadirle las cosas que desee que vayan de acuerdo a sus requerimientos. Ventajas: Es favorable usar este método por los siguientes aspectos: Reduce la incertidumbre y el riesgo a no ser requerido por el usuario. La aceptación del nuevo sistema se incrementa. La administración de proyectos adquiere una mejora, al igual que la comunicación entre desarrolladores y clientes. Desventajas. Al crear un prototipo de forma rápida, se desatienden aspectos importantes, como los siguientes: La calidad. pág. 14 Mantenimiento a largo plazo. Esto obliga a reconstruirlo después que el prototipo haya cumplido con su función 3.3) Modelo basado en Métodos Formales Permiten especificar, desarrollar y verificar un sistema aplicando una notación matemática. Algunas organizaciones de desarrollo de software aplican una variación de este enfoque, llamado ingeniería del software de sala limpia (Mills et al, 1987; Dyer, 1992) VENTAJAS - La ambigüedad, lo incompleto y la inconsistencia se descubren fácilmente y se corrigen fácilmente. - Los métodos for5males de diseño sirven como base para la generación automática de código. DESVENTAJA - Este modelo no tiene mucha aceptación. - Carencia de disponibilidad de transformaciones automáticas más que en pequeños dominios y entornos: blogspot.com. (7 de Febrero de 2012). Obtenido de http://ingenexescom.blogspot.com/2012/02/modelo-lineal-secuencial.html pág. 15 BIBLIOGRAFIA GENERAL Aracil, J. Máquinas, sistemas y modelos. Un ensayo sobre sistemática. TECNOS, S.A. Madrid, 1986. Bacon, F. Novum Organum Scienciarum. Traducción de Francisco Larroyo. Porrúa, México 1975. Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos básicos 5 de septiembre del 2012 Http: //www.tamps.cinvestav.mx/~ertello/swe/sesion01.pdf Blum, B. I. Beyond Programming: To a New Era of Design. Oxford University Press, 1996. Bunge, M. La Investigación Científica. Ed. Ariel, S.A. Barcelona, 1976. Bunge, M. Epistemología. Ariel S.A. Barcelona, 1985. Chalmers, A. ¿Qué es esa cosa llamada ciencia? Siglo XXI de España Editores, S.A. Madrid, 2ª ed. 1984. Roberto Cortez morales año (2006). Introducción Al Análisis de Sistemas Y la Ingeniería de Software EUNED (Editorial universidad Estatal a distancia) Costa Rica centro américa Jairo Amaya Amaya Sistemas de información gerencial: Hardware, software, redes, Internet, diseño, (2009). Ecoe diciones, Colombia. pág. 16 Referencia: Falgueras, B.D. (2003). Ingeniería del software. Barcelona, España: UOC. Morales, R.C. (2009). Introducción al Análisis de Sistemas y la Ingeniería del Software. Recuperado el 2014 de Septiembre de 09, de http://books.google.com.pe/books?id=Y2CCT0fIxYwC&pg=PA7&dq=ingenieria+del+software&hl =es&sa=X&ei=FuYvVNLsH8GyyATb- YKoBQ&ved=0CDUQ6AEwAQ#v=onepage&q=ingenieria%20del%20software&f=false Rivera, L. (2011). Introducción del Software. Recuperado el 2014 de Septiembre de 11, de http://es.slideshare.net/SelenitaZul/normas-apa-sexta-edicin-32396516 Pressman, R.S. (2010). Ingeniería del Software. Recuperado el 2014 de Setiembre de 20, de http://books.google.com.pe/books?id=8UV5jxkuBZIC&printsec=frontcover&dq=ingenieria+del+ software&hl=es&sa=X&ei=FKQwVMaEDcqQgwS_yIH4Cg&ved=0CD0Q6AEwBA#v=onepage&q=i ngenieria%20del%20software&f=false Amaya, A.J. (2009). Sistemas de Información Gerenciales. Recuperado el 2014 de Setiembre de 22, d http://books.google.com.pe/books?id=nZzFAQAAQBAJ&pg=PA31&dq=que+es+software&hl=es &sa=X&ei=C44vVJLZAdemyASPh4HwBw&ved=0CDAQ6AEwAg#v=onepage&q=que%20es%20sof tware&f=false
Report "INGENIERA DE LA INVESTIGACIÓN DEL SOFTWARE (1).docx"