INSTITUTO TECNOLÓGICO DE TOLUCA
“INGENIERÍA DE SOFTWARE”
INGENIERÍA EN SISTEMAS COMPUTACIONALES
FUNDAMENTOS DE DESARROLLO DE SISTEMAS
ALUMNOS MANILLA DERBEZ JORGE ANTONIO TORRES VILLAFAÑA HÉCTOR
CATEDRÁTICO ROSA ELVIRA MORENO RAMÍREZ
OCTUBRE DE 2009
INTRODUCCIÓN A LA INGENIERÍA DE SOFTWARE
DEFINICIÓN DE INGENIERÍA DE SOFTWARE
La ingeniería del Software es el establecimiento de los principios y métodos robustos de la ingeniería fin de obtener económicamente software que sea viable y que funcione eficientemente sobre máquinas reales. , definición propuesta por Fritz Bauer.
La Institución de Ingenieros Eléctricos y Electrónicos (IEEE) plantea que la ingeniería de software es: la aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software: es decir, la aplicación de la ingeniería al software.
En la ingeniería de software es importante llevar acabo: •
Disciplina de la Ingeniería: Los ingenieros hacen que las cosas funcionen al aplicar un conjunto de herramientas y métodos convenientes.
•
Aspectos de producción del software: Comprende la gestión de proyectos de software y desarrollo de herramientas, métodos y teorías de apoyo en la producción del software.
HISTORIA DE LA INGENIERÍA DE SOFTWARE
Los grandes sistemas de software constituyen un elemento común en nuestra sociedad, convirtiéndose imprescindibles para la industria, el comercio y las personas. El reconocimiento de la necesidad de un enfoque de ingeniería en al desarrollo del software se remonta a dos conferencias de la OTAN en 1968 y1969, donde se acuñó el nombre de Ingeniería de Software y se sentaron las bases que hacen posible el avance de esta disciplina.
La historia de la ingeniería de software se ha caracterizado por los aumentos en los niveles de abstracción, lo cual ha permitido abordar problemas de mayor tamaño y de complejidad.
La iniciativa MDA (Arquitectura dirigida por Modelos) sienta las bases para este cambio de paradigmas, separando la lógica de las aplicaciones de las plataformas de
software en la que estas se ejecutan. La metodología OO-Method se basa en la definición abstracta de un sistema de información de sus implementaciones completas para implementar herramientas de edición de modelos de alto nivel de abstracción que darán como resultado una plataforma software concreta.
CARACTERÍSTICAS DEL SOFTWARE
1.- El software se desarrolla o construye, no se fabrica en un sentido clásico. Existen similitudes entre desarrollo y creación de software, pero ambas actividades son diferentes, ya que en la fase de construcción de hardware puede introducir problemas de calidad que no existen en el software. Ambas actividades requieren la construcción de un “producto” pero los enfoque son diferentes.
2.- El software no se “estropea”. El hardware exhibe relativamente muchos fallos al principio de su vida (defectos de diseño o de fabricación); una vez corregidos los defectos, la tasa cae hasta un nivel estacionario, y conforme pasa el tiempo, ésta se incrementa.
El software no es susceptible a los males del entorno que hacen que el hardware se estropee. Los defectos no detectados harán que falle el programa en las primeras etapas de su vida. Sin embargo una vez que se corrigen (suponiendo que no se introducen nuevos errores) la curva se aplana. Por lo tanto se dice que el software no se estropea, no se desgasta, pero si se deteriora.
Durante su vida, el software sufre cambios (mantenimiento). Conforme se hacen los cambios, es probable que se introduzcan nuevos errores, haciendo que la curva tenga picos (como se muestra en la siguiente figura). Por cada cambio que se solicite se creará o se originará otro pico, lo cual quiere decir que el software se va deteriorando debido a los cambios.
3.- Aunque la industria tiende a la construcción por componentes, la mayoría del software se construye a la medida.
A medida que la disciplina de software evoluciona se crea un grupo de componentes estándar, de forma en que pueden utilizarse en muchos programas diferentes. Los componentes reutilizables se han creado para que el ingeniero verdaderamente pueda concentrarse en elementos innovadores de un diseño.
Los componentes reutilizables en la actualidad encapsulan tanto datos como procesos que se aplican a los datos, permitiendo al ingeniero del software crear nuevas aplicaciones a partir de partes reutilizables.
MITOS DEL SOFTWARE Muchas de las causas de la crisis del software se pueden encontrar en una mitología que surge durante los primero años del desarrollo del software. Los mitos del software propagaron información errónea y confusión; estos son insidiosos.
Mitos de gestión: Los gestores están normalmente bajo presión de hacer que no se retrase el proyecto y mejorar la calidad. •
Mito: Tenemos ya un libro que está lleno de estándares y procedimientos para construir software. ¿No les proporciona ya a los gestores todo lo que necesita saber?
•
Realidad: La respuesta a la pregunta es no.
•
Mito: Tener las herramientas más avanzadas ya que se cuenta con las computadoras más modernas.
•
Realidad: Se necesita más que el último de computadora para el desarrollo de software de gran calidad. Las herramientas CASE son más importantes que el hardware.
•
Mito: Añadir programadores repondrá tiempo perdido por desperfectos.
•
Realidad: El desarrollo del software no es un proceso mecánico como el de la fabricación. Añadir gente a un proceso de software retrasa aún más el proyecto.
Mitos del cliente: El cliente cree en los mitos, debido que los gestores y desarrolladores hacen poco para corregir la mala información. •
Mito: Una declaración de los objetivos es suficiente para empezar a desarrollar el sistema, y los detalles se pueden ver después.
•
Realidad: Una mala definición inicial es la principal causa de software con fallas. Debe de existir una buena comunicación entre el cliente y el analista.
•
Mito: Los requisitos del proyecto cambian continuamente, pero lo cambios se acomodan fácilmente debido a que el software es flexible.
•
Realidad: El impacto del cambio varía de acuerdo con el momento en que éste se introduce. Conforme pasa el tiempo, el impacto en el costo crece con rapidez.
Mitos de los desarrolladores: La programación desde sus inicios se veía como un arte. Las viejas formas tardan en morir. •
Mito: Una vez que se describió el programa y hacemos que funcione, la labor ha terminado.
•
Realidad: “en cuanto más pronto se empiece a escribir el código, más se tardará en terminarlo”. Se ha comprobado que el trabajo completado se ha realizado aún después de que se le entrega por primera vez al cliente.
•
Mito: Hasta que no se esté ejecutando el programa, no hay manera de probar su calidad.
•
Realidad: Aplicando una revisión técnica formal (filtro de calidad del sistema) se pueden encontrar los aciertos o deficiencias del sistema.
•
Mito: Lo que se entrega al terminar el proyecto es el programa funcionando.
•
Realidad: A la par del programa, también se entrega la documentación del sistema, ya que proporciona el fundamento para un buen desarrollo y proporciona una guía para el mantenimiento del software.
•
Mito: La ingeniería de software obliga a hacer una documentación abundante, lo que atrasará el proceso y lo hará más lento.
•
Realidad: La ingeniería de software está relacionada con la creación de calidad, lo que hace la reducción de trabajos redundantes, lo que hace que la entrega sea a tiempo.
CAPAS DEL SOFTWARE
Herramientas Métodos Procesos Enfoque de Calidad
•
Herramientas: Son aplicaciones que apoyan la administración del proceso, proporcionan un enfoque automático o semiautomático para el proceso y para los métodos.
•
Métodos: Los métodos de la ingeniería de software indican como construir técnicamente el software.
•
Procesos: El proceso de la ingeniería de software es la unión que mantiene juntas las capas de tecnología y que permiten un desarrollo racional y oportuno de la ingeniería de software. El proceso define un marco de trabajo para un conjunto de áreas clave de proceso que se deben establecer para la entrega de la tecnología de la ingeniería de software.
•
Enfoque de Calidad: Grado en que un sistema, proceso o componente cumple con los requerimientos especificados y las necesidades del cliente o usuario.
PROCESO DE SOFTWARE
Un proceso de software es un conjunto de actividades que conducen a la creación de un producto software. Estas actividades pueden consistir en el desarrollo software desde cero en un lenguaje de programación estándar como Java o C. Sin embargo cada vez más se desarrolla nuevo software ampliando y modificando los sistemas existentes y configurando e integrando software comercial o componentes del sistema.
Los procesos de software son complejos y, como todos los procesos intelectuales y creativos, dependen de las personas que toman decisiones y juicios. Debido a la necesidad de juzgar y crear, los intentos por automatizar estos procesos han tenido un éxito limitado. Las herramientas de ingeniería del software asistida por computadora (CASE) pueden ayudar a algunas actividades del proceso.
No existe un proceso ideal, y muchas organizaciones han desarrollado su propio enfoque para el desarrollo de software. Los procesos han evolucionado para explotar las capacidades de las personas de una organización, así como las características específicas de los sistemas que se han desarrollado.
Modelo de Madurez de Capacidades (CMM, Capability Maturity Model)
Factores de Calidad del Software Mc. Call
Referencias Bibliográficas
•
Ian Somerville: Ingeniería de Software. Editorial Pearson Addison Wesley. Séptima Edición. Madrid, 2005.
•
S. Pressman, Roger: INGENIERÍA DEL SOFTWARE, UN ENFOQUE PRÁCTICO. Editorial Mc-Graw Hill. Quinta Edición. 2002.
•
Weitzenfeld, Alfredo: Ingeniería de Software, Orientada a Objetos con UML, Java e Internet. Editorial Thomson.