Está en la página 1de 15

UNIDAD No.

Fundamentos de Ingeniería de Software

Mtra. Romery Alberto Monegro


Santo Domingo, D.N.
10 de Noviembre 2013
Unidad 1: Fundamentos de Ingeniería de Software

INDICE DEL CONTENIDO

INTRODUCCIÓN DE LA UNIDAD.....................................................................................................................3

Desarrollo del Contenido..............................................................................................................................5

Concepto de Software...............................................................................................................................5

Fallos de Software.....................................................................................................................................6

Conceptos Básicos de Ingeniería de Software.......................................................................................7

Origen de la Ingenería de Software..................................................................................................8

Ingeniero de Software.......................................................................................................................10

Ciclo de Vida de Desarrollo de Software..............................................................................................10

Bibliografía....................................................................................................................................................14

2 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

INTRODUCCIÓN DE LA UNIDAD

Imagen obtenida del siguinete Blog

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.

3 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

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.

Para desarrollar el contenido de la presente unidad se plantean los siguientes objetivos


específicos:
 Comprender qué es la Ingeniería del Software y su necesidad.
 Conocer las principales áreas de conocimientos de Ingeniería de Software.
 Describir los componentes para el desarrollo de un sistema basados en OO.

4 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

Desarrollo del Contenido

Concepto de Software

A continuación vamos a citar varias definiciones de Software:


 Std. 729, IEEE. Software es el conjunto de los programas de cómputo,
procedimientos, reglas, documentación y datos asociados que forman parte de las
operaciones de un sistema de computación.
 Sommerville. (2004). El software no son solo programas, sino todos los
documentos asociados y la configuracion de datos que se necesitan para hacer
que estos programas operen de manera correcta. Un sistema de software consiste
en diversos programas independientes, archivos de configuracion que se utilizan
para ejecutar estos programas, un sistema de documentacion que describe la
estructura del sistema, la documentacion para el usuario que explica como
utilizar el sistema y sitios web que permitan a los usuarios descargar la
informacion de productos recientes.

 Pressman. (2005).El software de computadora es el producto que los ingenieros


de software construyen y despues mantienen en el largo plazo. El software se
forma con (1) las instrucciones (programas de computadora) que al ejecutar se
proporcionan las caracteristicas, funciones y el grado de desempeño deseados; (2)
las estructuras de datos que permiten que los programas manipulen informacion
de manera adecuada; y (3) los documentos que describen la operacion y uso de
los programas.

El software es un conjunto de elementos que forman una “configuración” que incluye:


 programas
 documentos

5 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería 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)

 Problemas en sistema de manejo de equipaje de aeropuerto de Denvern


o Atrasó apertura más de un año
o Costó a rededor de US $1.1 millones por día de atraso

 Trenes de Seattle controlados por computadora


o Más de 12 choques
o Daños por encima de los US $7 millones
o Se recomendó gastar más de US $3 millones para volver a control manual
 AT&T (1990): La empresa AT&T perdió unos $60 millones de dólares al dejar
aproximadamente a 60.000 clientes sin comunicación en llamadas de larga
distancia. El motivo de esta caída fue debido a los interruptores que se
reseteaban cada pocos segundos debido a un fallo en una actualización del

6 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

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:

- tratando de buscar soluciones alcanzables dentro de restricciones de


presupuesto, personal y tiempo.
- manejando la complejidad a través de modelos
- modelando problemas y buscando soluciones, y así adquirir conocimientos
que nos ayuden a no cometer errores en el software.
- Y a traves del razonamiento poder justificar las decisiones a tomar.

Conceptos Básicos de Ingeniería de Software

A continuación vamos a citar varias definiciones de Ingeniería de Software:

 Zelkovitz. (1978). Ingeniería de Software es el estudio de los principios y


metodologías para el desarrollo y mantenimiento de sistemas software.

7 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

 Bohem. (1976). Ingeniería de software es la aplicación práctica del conocimiento


científico al diseño y construcción de programas de computadora y a la
documentación asociada requerida para desarrollar, operar y mantenerlos. Se
conoce también como Desarrollo de Software o Producción de Software.

 Bauer. (1972). Ingeniería de Software trata es el establecimiento de los principios


y métodos de la ingeniería a fin de obtener software de modo rentable, que sea
fiable y trabaje en máquinas reales.

 Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al


desarrollo, operación y mantenimiento del software; es decir, la aplicación de la
ingeniería al software (IEEE, 1993).

 IEEE, (1993). La Ingeniería de Software es la aplicación de un enfoque


sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento
del software.

Origen de la Ingenería de Software

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.

Tras la aparición de nuevo hardware basado en circuitos integrados, comenzaron a


desarrollarse sistemas y aplicaciones mucho más complejos que hasta entonces no era
posible construir puesto que el hardware disponible no lo permitía. Estos nuevos
proyectos de desarrollo de software, en la mayoría de ocasiones, no se terminaban a

8 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de 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.

Estratos de la Ingeniería de Software

La ingeniería de software comprende:


 Un enfoque de calidad
 Proceso de desarrollo de software (especificación, implementación, diseño, etc.)
 Metodologías para el desarrollo de software (RUP, patrones, framework, etc.)
 Herramientas de desarrollo de software

El tema de enfoque a la calidad lo estaremos tratando en Ingeniería de Software II.

Proceso de desarrollo de software

9 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

El proceso de ingeniería de software es el conjunto de etapas parcialmente ordenadas


con la intención de lograr un objetivo, en este caso, la obtención de un producto de
software de calidad.

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”.

Metodologías para el desarrollo de software

La metodologías para el desarrollo de software es un enfoque estructurado para


desarrollar software cuyo objetivo es facilitar la producción de productos software de
alta calidad a un costo razonable. Indican cómo construir técnicamente el software. Los
métodos abarcan un amplio espectro de tareas que incluyen: planificación y estimación
de proyectos, análisis de los requerimientos del sistema y del software, diseño de
procedimientos algorítmicos, codificación, prueba y mantenimiento.

Herramientas de desarrollo de software

Las herramientas de desarrollo de software suministran un soporte automático o


semiautomático para los métodos. Cuando se integran las herramientas de forma que la
información creada por una herramienta pueda ser usada por otra, se establece un
sistema para el soporte del desarrollo del software llamado ingeniería de software
asistido por computadora (Computer Aided Software Engineering o CASE).

Áreas de Conocimientos de Ingeniería de Software:

 Requerimientos de Software
 Diseño de Software
 Construcción de Software

10 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería 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

Los objetivos de la Ingeniería de Software son:

 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.

Ciclo de Vida de Desarrollo de Software

Según wikipedia, el ciclo de vida de desarrollo de software es una estructura aplicada al


desarrollo de un producto de software. Hay varios modelos a seguir para el
establecimiento de un proceso para el desarrollo de software, cada uno de los cuales

11 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

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.

Modelos de 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

12 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

y revisar fases que ya se han completado. Esta falta de flexibilidad en un modelo de


cascada puro ha sido fuente de crítica de los defensores de modelos más flexibles.

Modelo de espiral

La principal características del modelo en espiral es la gestión de riesgos de forma


periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm,
combinando algunos aspectos clave de las metodologías del modelo de cascada y del
desarrollo rápido de aplicaciones, pero dando énfasis en un área que para muchos no
jugó el papel que requiere en otros modelos: un análisis iterativo y concienzudo de los
riesgos, especialmente en el caso de sistema complejos de gran escala.
La espiral se visualiza como un proceso que pasa a través de algunas iteraciones con el
diagrama de los cuatro cuadrantes representativos de las siguientes actividades:
 crear planes con el propósito de identificar los objetivos del
software,seleccionados para implementar el programa y clarificar las restricciones
en el desarrollo del software;
 Análisis de riesgos: una evaluación analítica de programas seleccionados, para
evaluar como identificar y eliminar el riesgo;
 la implementación del proyecto: implementación del desarrollo del software y su
pertinente verificación;

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:

El énfasis se sitúa en el análisis de riesgo, y por lo tanto requiere de clientes que


acepten este análisis y actúen en consecuencia. Para ello es necesaria confianza en los
desarrolladores así como la predisposición a gastar más para solventar los temas, por lo

13 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

cual este modelo se utiliza frecuentemente en desarrollo interno de software a gran


escala.

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 iterativo e incremental

El desarrollo iterativo recomienda la construcción de secciones reducidas de software


que irán ganando en tamaño para facilitar así la detección de problemas de importancia
antes de que sea demasiado tarde. Los procesos iterativos pueden ayudar a desvelar
metas del diseño en el caso de clientes que no saben cómo definir lo que quieren. 1

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.

14 Mtra. Romery Alberto Monegro


Unidad 1: Fundamentos de Ingeniería de Software

Hay muchas variantes de los procesos ágiles:

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

15 Mtra. Romery Alberto Monegro

También podría gustarte