Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 1 Fundamentos de Ingenieria de Software
Unidad 1 Fundamentos de Ingenieria de Software
INTRODUCCIÓN DE LA UNIDAD.....................................................................................................................3
Concepto de Software...............................................................................................................................5
Fallos de Software.....................................................................................................................................6
Ingeniero de Software.......................................................................................................................10
Bibliografía....................................................................................................................................................14
INTRODUCCIÓN DE LA UNIDAD
La Ingenieria del Software es una disciplina o area de la informatica que ofrece métodos
y técnicas para desarrollar y mantener software de calidad que resuelven problemas de
todo tipo. Hoy dia es cada vez más frecuente la consideración de la Ingenieria del
Software como una nueva área de la ingeniería.
Esta ingeniería trata con áreas muy diversas de la informática y de las ciencias de la
computación, tales como construcción de compiladores, sistemas operativos, o
desarrollos Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo
de cualquier tipo de sistemas de información y aplicables a infinidad de áreas: negocios,
investigación científica, medicina, producción, logística, banca, control de tráfico,
meteorología, derecho, Internet, Intranet, etc.
La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño del
proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto
funcionamiento y la implementación del sistema.
Concepto de Software
data, etc.
Características del software:
Abstracto
No se desgasta
Personalizable
Fallos de Software
Algunos de los fallos más relevantes que se han registrados en la historia del software
son los siguientes:
La Agencia Espacial Europea (ESA) gastó 10 años y US$ 7B en producir el cohete
Ariane 5. Explotó apenas 40 segundos después de su despegue en su primer
lanzamiento el 4 de junio del 1996. El cohete destruido y su flete fue valorado en
US$ 500M. Se determinó que la causa del fallo fue un error de software
(asignación de un valor de una dimensión mayor al tipo de lavariable)
software. Este fallo provocaba una caida cascada entre los diferentes
interruptores. Esta información fue obtenida del siguiente enlace:
http://www.genbetadev.com/seguridad-informatica/bugs-en-el-software-i-
accidentes-epicos-por-fallos-en-el-software.
Chips Pentium (1994): Un error en el juego de instrucciones en los chip Pentium
repercutió en la empresa $475 millones de dólares de costes en recogida y reenvío
de procesadores. El error se reproducía al realizar una división con coma flotante
en el que a partir del cuarto dígito decimal no daba valores correctos. Este fallo
empezó a llamarse “bug de FDIV“. Esta información fue obtenida del siguiente
enlace: http://www.genbetadev.com/seguridad-informatica/bugs-en-el-
software-i-accidentes-epicos-por-fallos-en-el-software.
Con la Ingenería de Software se pretende evitar que los fallos de software se presenten,
tomando en cuenta los siguientes aspectos:
El concepto de ingeniería del software surgió en 1968, tras una conferencia en Garmisch
(Alemania) que tuvo como objetivo resolver los problemas de la crisis del software. El
término crisis del software se usó desde finales de 1960 hasta mediados de 1980 para
describir los frecuentes problemas que aparecían durante el proceso de desarrollo de
nuevo software.
tiempo, lo cual también provocaba que el presupuesto final del software excediera de
aquel que se había pactado. Algunos de estos proyectos eran tan críticos (sistemas de
control de aeropuertos, equipos para medicina, etc) que sus implicaciones iban más allá
de las pérdidas millonarias que causaban. Además, en muchos casos el software no daba
respuesta a las verdaderas necesidades del cliente o había que ser un usuario experto
para poder utilizarlo, todo ello sumado a que el mantenimiento de los productos era
complejo y muy costoso.
Jacobson, (1998). El proceso de desarrollo de software “es aquel en que las necesidades
del usuario son traducidas en requerimientos de software, estos requerimientos
transformados en diseño y el diseño implementado en código, el código es probado,
documentado y certificado para su uso operativo”. Concretamente “define quién está
haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo”.
Requerimientos de Software
Diseño de Software
Construcción de Software
Prueba de Software
Mantenimiento de Software
Administración de Configuración de Software
Aseguramiento de Calidad de Software
Gerencia de Ingeniería de Software
Métodos y Herramientas de Ingeniería de Software
Proceso de Ingeniería de Software
Definición de Software
Mejorar la calidad
Aumentar la productividad
Suministrar las bases para su construcción
Definir una disciplina para garantizar producción y mantenimiento
Ingeniero de Software
Los ingenieros de software son los que aplican principios y técnicas de la ciencia
computacional, ingeniería y matemáticas para la creación y mantenimiento de
soluciones costo-efectivas de software a problemas y necesidades específicos.
describe un enfoque diferente para diferentes actividades que tienen lugar durante el
proceso. Algunos autores consideran un modelo de ciclo de vida un término más general
que un determinado proceso para el desarrollo de software.
Hay varios modelos para perfilar el proceso de desarrollo, cada uno de las cuales cuenta
con pros y contras. El proyecto debería escoger el más apropiado para sus necesidades.
En ocasiones puede que una combinación de varios modelos sea apropiado.
Modelo de cascada
El modelo de cascada define las siguientes etapas que deben cumplirse de forma
sucesiva:
Especificación de requisitos
Diseño del software
Construcción o Implementación del software
Integración
Pruebas (o validación)
Despliegue (o instalación)
Mantenimiento
Siguiendo el modelo de cascada de forma estricta, sólo cuando se finaliza una fase,
comienza la otra. En ocasiones se realiza una revisión antes de iniciar la siguiente fase,
lo que permite la posibilidad de cambios (lo que puede incluir un proceso de control
formal de cambio). Las revisiones también se utilizan para asegurar que la fase anterior
ha sido totalmente finalizada; los criterios para completar una fase se conocen
frecuentemente con el término inglés "gate" (puerta). Este modelo desaconseja revisitar
Modelo de espiral
Modelo de espiral con énfasis en los riesgos, haciendo hincapié en las condiciones de las
opciones y limitaciones para facilitar la reutilización de software, la calidad del software
puede ayudar como una meta propia en la integración en el desarrollo del producto. Sin
embargo, el modelo en espiral tiene algunas limitaciones, entre las que destacan:
Si la implementación del riesgo de análisis afectará de forma esencial los beneficios del
proyecto, no debería utilizarse este modelo.
Los desarrolladores de software han de buscar de forma explícita riesgos y analizarlos de
forma exhaustiva para que este modelo funcione.
La primera fase es la búsqueda de un plan para conseguir los objetivos con las
limitaciones del proyecto para así buscar y eliminar todos los riesgos potenciales por
medio de un cuidadoso análisis, y si fuera necesario incluyendo la fabricación de un
prototipo. Si es imposible descartar algunos riesgos, el cliente ha de decidir si es
conveniente terminar el proyecto o seguir adelante ignorando los riesgos. Por último, se
evalúan los resultados y se inicia el diseño de la siguiente fase.
Desarrollo ágil
El desarrollo ágil de software utiliza un desarrollo iterativo como base para abogar por
un punto de vista más ligero y más centrado en las personas que en el caso de las
soluciones tradicionales. Los procesos ágiles utilizan retroalimentación en lugar de
planificación, como principal mecanismo de control. La retroalimentación se canaliza
por medio de pruebas periódicas y frecuentes versiones del software.
En el caso de la programación extrema (XP), las fases se realizan en pasos muy cortos (o
"continuos") con respecto al anterior. El primer paso (intencionalmente incompleto) por
los pasos puede ocurrir en un día o en una semana, en lugar de los meses o años de cada
paso completo en el modelo en cascada. En primer lugar, se crean pruebas
automatizadas para proveer metas concretas al desarrollo. Después se programa el
código, que será completo cuando todas las pruebas se superan sin errores, y los
desarrolladores ya no sabrían como mejorar el conjunto de pruebas necesario. El diseño
y la arquitectura emergen a partir de la refactorización del código, y se da después de
programar. El diseño lo realizan los propios desarrolladores del código. El sistema,
incompleto, pero funcional se despliega para su demostración a los usuarios (al menos
uno de los cuales pertenece al equipo de desarrollo). Llegado este punto, los
profesionales comienzan a escribir las pruebas para la siguiente parte del sistema de
más importancia.
Bibliografía
1. Roger Pressman. Ingenieria del Software: Un Enfoque Practico. McGraw-Hill. 2006
2. Ian Sommerville. Ingenieria de Software. Pearson. 2005
3. Alfredo Weitzenfeld. Ingenieria de Software Orientada a Objetos: Teoría y Práctica
con UML y Java. Thomson Paraninfo. 2005
4. Mario G. Piattini y Otros. Analisis y Diseño de Aplicaciones Informáticas de Gestión:
Una perspectiva de Ingenieria del Software. Editorial Ra-Ma. 2003
5. Eric J. Braude. Ingeniería de Software: Una perspectiva orientada a objetos. Editorial
Ra-Ma. 2003
6. Stephen R. Schach. Ingeniería de Software Clasica y Orientada a Objetos. McGraw-
Hill. 2006
7. http://img.redusers.com/imagenes/libros/lpcu097/capitulogratis.pdf