Semana_1_Tema_1_2

Page 1

Fundamentos de Ingeniería de Software

Educación a distancia

Ingeniería en Sistemas Computacionales Fundamentos de Ingeniería de Software

Semana 1. Unidad 1. Fundamentos Ingeniería de software. 1.1.

Conceptos básicos

1.2.

El papel evolutivo del software

Antología realizada por: M.C. Gricelda Rodriguez Robledo

Semana 1


Educación a distancia

Fundamentos de Ingeniería de Software

C ONTENIDO Tema 1.1 Conceptos básicos ................................................................................................................................. 1 1.1.1. El software ..................................................................................................................................................... 1 1.1.2. Características del software .......................................................................................................................... 1 1.1.3. Categorías del Software: ................................................................................................................................ 2 1.1.4 Factores de calidad del software ................................................................................................................... 2 1.1.5 Las causas de los problemas en el desarrollo del software .......................................................................... 3 1.1.6 La Ingenieria del Software ........................................................................................................................... 4 1.1.7 .Objetivos de la IS: .......................................................................................................................................... 6 1.1.8. Elementos de la ingeniería del software ....................................................................................................... 7 1.1.10 Las posibilidades y el mercado del software ............................................................................................... 8

Tema 1.2 El papel evolutivo del Software. ......................................................................................................... 8 1.2 Introduccion....................................................................................................................................................... 8 1.2.1. Evolución del desarrollo del software ........................................................................................................... 9 1.2.1.1. Primera era (principio de los 50 a mediados de los 60) ............................................................................... 9 1.2.1.2. Segunda era (mediados de los 60 a finales de los 70) .................................................................................. 9 1.2.1.3. Tercera era (finales de los 70 a principios de los 90) .................................................................................. 10 1.2.1.4. Cuarta era (de los 90's) ............................................................................................................................... 10 1.2.1.5. Quinta era (del 2000 en adelante) .............................................................................................................. 10 1.2.2. Perspectiva Histórica del Desarrollo de Software: ........................................................................................ 10 1.2.3. Las 8 Leyes de Evolución del Software .......................................................................................................... 11 Referencias ............................................................................................................................................................... 12

i

Semana 1


Educación a distancia

Competencia específica a desarrollar Identificar la historia y evolución del software.

Fundamentos de Ingeniería de Software

Actividades de Aprendizaje Investigar los conceptos básicos de la Ingeniería del software generando un glosario. Elaborar una línea del tiempo sobre la historia del software.

ii

Semana 1


Fundamentos de Ingeniería de Software

Educación a distancia

T EMA 1.1 C ONCEPTOS BÁSICOS 1.1.1.

EL

SOFTWARE

El software no es sólo código, sino también las especificaciones del diseño, los datos tratados y la documentación que permite el desarrollo, instalación y mantenimiento. Estrictamente, se puede definir como: Instrucciones que, cuando se ejecutan, proporcionan la funcionalidad deseada. Estructuras de datos que facilitan a las instrucciones manipular adecuadamente la información. Documentos que describen el desarrollo, uso, instalación y mantenimiento de los programas. Se puede destacar, entre otras, la definición de software dada por el IEEE: Aquellos programas de computadora, procedimientos, reglas y documentación posible asociada con la computación, así como los datos pertenecientes a las operaciones de un sistemas de computación.

1.1.2. C ARACTERÍSTICAS

DEL S OFTWARE

El software presenta varias características. Es un elemento lógico, no físico, en contraposición con el hardware. Se desarrolla, no se fabrica. La fabricación consiste fundamentalmente en ensamblar componentes, punto al que no se ha llegado ni siquiera con la programación orientada a objetos. No se estropea, se deteriora. Con el tiempo, el hardware se va estropeando por lapresencia de componentes físicos. El software, al carecer de ellos, se deteriora, no estropea, aumentando el mantenimiento que necesita.

Semana 1

1


Fundamentos de Ingeniería de Software

Educación a distancia

1.1.3. C ATEGORÍAS

D EL

S OFTWARE :

El software que se construye puede caer en dos categorías: 1. Productos Genéricos: Desarrollados para un mercado. 2. Productos a la Medida: Encargados por un cliente.

1.1.4 F ACTORES

DE CALIDAD DEL SOFT WARE

Para que el software logre la calidad esperada por los usuarios, se debe de considerar para su desarrollo los siguientes factores a fin de cumplir con las expectativas de calidad:

Además debe de brindar

Confiabilidad: grado de confianza que espera el usuario del sistema. Si la confiabilidad es alta, el sistema es caro. En caso contrario no se utiliza. Disponibilidad: probabilidad de que el software esté activo y en funcionamiento para proporcionar servicios.

Fiabilidad: probabilidad de que el software suministre los servicios correctamente en un periodo, tal y como los espera el usuario. Seguridad: valoración de cuan probable es que el sistema provoque un fallo.

Protección: valoración de cómo el sistema resiste una entrada no permitida. Eficiencia: el sistema no debe malgastar recursos del sistema. Usabilidad: el sistema debe ser fácil de utilizar. Mantenibilidad: la capacidad del sistema para evolucionar con facilidad.

Semana 1

2


Educación a distancia 1.1.5 L AS

Fundamentos de Ingeniería de Software

CAUSAS DE LOS PRO BLEMAS EN EL DESAR ROLLO DEL SOFTWARE

La primera de ellas es que los problemas están ligados a las propias características del software, como que sea lógico en lugar de físico. A esto se añade una corta experiencia (de unos 40 ó 50 años) y una industria que cambia muy rápidamente y que provoca que los desarrolladores no tengan tiempo para adquirir verdadera experiencia en una técnica, método o herramienta.

Podemos analizarlo desde diferentes ángulos:

Desde el punto de vista de las organizaciones: Las estimaciones del tiempo, coste y esfuerzo para el desarrollo no son precisas. La productividad no corresponde a la demanda. La calidad del software es cuestionable. La satisfacción del usuario es baja. El software es difícil de mantener. La comunicación entre desarrolladores y usuarios es deficiente. El avance del hardware necesita de aplicaciones más complejas. Cambio en la relación entre el coste hardware/software (mucho mayor el segundo).

Semana 1

3


Fundamentos de Ingeniería de Software

Educación a distancia Desde el punto de vista de los desarrolladores: La planificación no es adecuada. Las responsabilidades quedan diluidas. La participación del usuario no es eficaz. La comunicación es deficiente. Las propias características del software. Experiencia corta de la informática (40 años). Tecnología que cambia rápidamente. Los desarrolladores han tenido poco entrenamiento en las nuevas técnicas, métodos y herramientas. Resistencia al cambio. Existencia de una serie de mitos.

1.1.6 L A I NGENIERIA

DEL

S OFTWARE

La ingeniería del software es una disciplina de la ingeniería que tiene como principal objetivo el desarrollo costeable de sistemas software de calidad, lo cual es esencial para el funcionamiento de la economía nacional e internacional. Actualmente, casi todos los países dependen de sistemas complejos basados en computadora, y por ello se debe comprender qué es la ingeniería de software, por qué es importante, y conocer las técnicas y metodologías necesarias para controlar la complejidad inherente en estos sistemas software. 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. El término ingeniería del software fue propuesto inicialmente en 1968 en Alemania en una conferencia para discutir lo que en esa época se llamó la "crisis del software", resultado de la introducción de los nuevos computadores, hardware basado en circuitos integrados. Su poder hizo que las aplicaciones hasta ese entonces irrealizables fueran una propuesta factible. El software resultante fue de órdenes de mayor magnitud y más complejo que los sistemas de software previos.

Semana 1

4


Educación a distancia

Fundamentos de Ingeniería de Software

La Ingeniería del Software es una disciplina o área de la informática o ciencias de la computación, que ofrece método y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy dia es cada vez mas frecuente la consideración de la Ingeniería del Software como un nueva área de la ingeniería, y el Ingeniero del Software comienza a ser una profesión implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, y reconocida consideración social en el mundo empresarial y, por suerte, para esas personas con brillante futuro. La Ingeniería del Software también aparece dentro de la Ciencia de la Computación, pero en los últimos años está siendo considerada como una entidad curricular independiente, aunque con profundas raíces en la Ciencia de la Computación y las Matemáticas. De hecho, se ha definido un cuerpo de conocimiento para la Ingeniería del Software (Software Engineering Body of Knowledge - SWEBOK), y ya existen borradores públicos del Computing Curriculum - Software Engineeringpor parte de la acción conjunta entre IEEE-CS y ACM.

El término Ingeniería del Software ha sido definido de varias maneras, por diferentes autores. Fue definida por Bauer a finales de los 60's como el establecimiento y uso de principios de ingeniería para obtener software que fuera confiable y que funcionara eficientemente con las máquinas reales. A pesar de ser vieja, esta definición da el sentimiento correcto detrás de la disciplina. El IEEE considera que la "Ingeniería de Software es: (1) 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. (2) El estudio de enfoques como en (1)". Según la ACM, la ingeniería de software es la disciplina del desarrollo y mantenimiento de sistemas computacionales que se comportan de manera confiable y eficiente y que su costo de desarrollo y mantenimiento puede ser pagado.

Veamos algunas otras definiciones formales:

Semana 1

5


Fundamentos de Ingeniería de Software

Educación a distancia

“La ingeniería del software es una disciplina que integra métodos, técnicas y herramientas para el desarrollo software.” (Pressman, 1998)

1.1.7 .O BJETIVO S

“La ingeniería del software es el establecimiento y uso de los principios sólidos de la ingeniería, orientados a obtener software económico que seafiable y trabaje de manera eficiente en máquinas reales”. (Fritz Bauer, 1972)

DE LA

“La ingeniería del software es el estudio de los principios y metodologías para desarrollo y mantenimiento de sistemas software”. (Zelkovitz, 1978)

“La ingeniería del software es una disciplina que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de su uso”. (Sommerville, 2002)

IS:

1. Construir software económico, que se ajuste a los presupuestos con el mínimo coste. 2. Construir software confiable. 3. Construir software eficiente. 4. Construir software y mantenerlo de forma sistemática 5. Construir software que se entrega en plazo 6. Construir software que satisface sus requisitos 7. Construir software de alta calidad 8. Construir software y mantener una solución a un problema de procesamiento real automatizado parcial o totalmente por el software 9. Crear soluciones prácticas y rentable

Semana 1

6


Educación a distancia

1.1.8. E LEMENTOS

Fundamentos de Ingeniería de Software

D E LA INGEN IERÍA DEL SOFTWARE

La ingeniería de software es aquella que ofrece métodos técnicas y herramientas para desarrollar y mantener software de calidad. Métodos: suministran el ‘cómo’ construir software. Técnicas: tratan de ayudar a los desarrolladores en aquellas áreas de esfuerzo que el desarrollo del software conlleva. Herramientas: proporcionan un soporte automático o semiautomático a los métodos.

1.1.9. LA RESPONSABILIDAD DE LA INGENIERIA DE SOFTWARE La responsabilidad en la ingeniería del software es un concepto complejo, sobre todo porque al estar los sistemas informáticos fuertemente caracterizados por su complejidad, es difícil apreciar sus consecuencias. En la ingeniería del software la responsabilidad será compartida por un grupo grande de personas, que comprende desde el ingeniero de requisitos, hasta el arquitecto software, y contando con el diseñador, o el encargado de realizar las pruebas. Por encima de todos ellos destaca el director del proyecto. El software demanda una clara distribución de la responsabilidad entre los diferentes roles que se dan en el proceso de producción. El ingeniero del software tiene una responsabilidad moral y legal limitada a las consecuencias directas.

Semana 1

7


Fundamentos de Ingeniería de Software

Educación a distancia

1.1.10 L AS

POSIBILIDADES Y E L MERCADO DEL SOFTWA RE

Las características de los ambientes de producción y de uso del software han sufrido cambios radicales. Solamente con observar la evolución sufrida –y sufrientede los Sistemas Operativos y de las formas de hacer computación que aquello conlleva, entrega una pauta clara de lo que la misma palabra “evolución” o “cambio” significa en el contexto de quien desarrolla y opera software. Los profesionales de la informática no pueden estar ausentes de esta realidad, tanto porque ellos son llamados a imprimir este ritmo vertiginoso como que son las víctimas más directas de las desactualizaciones que se pueda sufrir en su propio ámbito de trabajo. Es difícil pensar en un profesional de la informático que pueda sentirse completo sobre el conocimiento adquirido en tal o cual método o sobre tal o cuál lenguaje de programación o sobre tal o cuál herramienta de apoyo al desarrollo de software. En general, cualquier usuario del Software está sometido a presiones semejantes. Por ejemplo, cualquiera que haya pensado en comprar una computadora se pregunta por la durabilidad de aquel, ya no contra el hecho concreto de la resistencia al paso del tiempo o del esfuerzo de soportar una carga de trabajo, como nuestros abuelos se preguntaban sobre el martillo recién adquirido. La pregunta clave es por la obsolescencia. Las compañías de hardware y de muchos productos, que han disminuido el ciclo a extremos en que la nueva versión de producto que actualmente se vende, aparecerá sólo un par de meses más tarde.

T EMA 1.2 E L PAPEL EVOLUTIVO DE L S OFTWARE . 1.2 I NTRODUCCION El software es el producto derivado del proceso de desarrollo, según la ingeniería de software. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años. Las mejorías sustanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras. Semana 1

8


Fundamentos de Ingeniería de Software

Educación a distancia

Actualmente la industria del software se ha convertido en un factor dominante en la economía del mundo industrializado y este producto es intrínsecamente evolutivo durante su ciclo de vida. El software evoluciona, en general, generando versiones cada vez más completas, complejas, mejoradas, optimizadas en algún aspecto, adecuadas a nuevas plataformas (sean de hardware o sistemas operativos), etc. Cuando un sistema deja de evolucionar, eventualmente cumplirá con su ciclo de vida, entrará en obsolescencia e inevitablemente, tarde o temprano, será reemplazado por un producto nuevo. El software evoluciona sencillamente por que se debe adaptar a los cambios del entorno, sean funcionales (exigencias de usuarios), operativos, de plataforma o arquitectura hardware.

1.2.1. E VOLUCIÓN 1.2.1.1. P R I M E R A

D EL DESARRO LLO DEL SOFTWARE

E R A ( P R I N CI P I O D E LO S

50

A MEDIADOS DE LOS

60)

El hardware es muy caro y el software, en comparación, muy barato, por lo que se le concede más importancia al primero y el segundo se considera un añadido. Además, no existe la Ingeniería del Software, se aprende a través de cursos de programación, con lo que el resultado termina siendo casi un método artesanal. El desarrollo se realiza a pedida y en lenguajes de muy bajo nivel (ensamblador), con los que se produce software propietario.

El programador de la aplicación también la ejecuta y es el único que la conoce. El tratamiento se realiza por lotes (procesos batch). En un proceso se ejecutan todos los movimientos sin interactuar con el usuario. A esta era la caracteriza la falta de documentación

1.2.1.2. S E G U N D A

E R A ( M E D I A D O S D E L OS

60

A FI N A LE S D E L OS

70)

Aparecen nuevos conceptos como la multiprogramación y el multiusuario, permitiendo la interacción con éstos. Además, nacen las primeras empresas que desarrollan aplicaciones para muchos usuarios en lugar de a medida, de forma que el software se convierte en producto.

Semana 1

9


Fundamentos de Ingeniería de Software

Educación a distancia

Nacen también los Sistemas de Gestión de Bases de Datos (SGBD), en contraposición con el tratamiento de cheros que existía anteriormente, y que provocaba grandes inconsistencias debido a la existencia de información redundante. Debido a la evolución del hardware, el rendimiento de éste ya podía intuir en el de las aplicaciones, lo que permitió que surgieran las de tiempo real. A esta era la caracteriza un incremento en el mantenimiento del software, en el que se concentraban los recursos, en lugar de en el desarrollo. Este hecho se denomina crisis del software

1.2.1.3. T E R CE R A

E R A ( FI N A LE S D E L OS

70

A P R I NCI P I OS D E L O S

90)

Aparecen los primeros ordenadores personales y se abarata el coste del hardware. Aparecen las redes de área local, los sistemas distribuidos, los primeros métodos estructurados y la Ingeniería del Software, aunque el mantenimiento sigue siendo un problema. A esta era la caracteriza que, con la popularización de los sistemas distribuidos y las redes, antes citados, se complica el trabajo. Las aplicaciones poseen una complejidad de la que carecían en eras anteriores (debido a las propias características de éstas).

1.2.1.4. C U A R T A

E R A ( D E L OS

90' S )

Hasta la tercer era, la mayoría de procesos eran centralizados, pero en la cuarta, las arquitecturas informáticas están cambiando de estos entornos de grandes computadoras entornos descentralizados cliente-servidor. La tecnología orientada a objetos, surgida tiempo atrás con lenguajes como Smalltalk ahora popularizada por otros como C++ y Java, está desplazando rápidamente a enfoques más tradicionales. Nace Internet, que rápidamente se populariza. La industria del software es una parte importante de la economía mundial. A esta era la caracteriza la dependencia del software, por lo que se necesitan aplicaciones funcionales

1.2.1.5. Q U I N T A

ERA (DEL

2000

E N A D E LA NT E )

Las redes inalámbricas, dispositivos móviles y celulares irrumpen con fuerza en los campos del entretenimiento, la música y los videos en Internet. Internet es usado normalmente para buscar información a través de buscadores de Internet (Google, Yahoo! y otros) y publicar información personal en Blogs. Las aplicaciones se distribuyen a través de la nube.

1.2.2. P E R S P E CT I V A H I ST Ó R I CA

Semana 1

DEL

D E S A R R O LL O

DE

S O FT WA R E :

10


Fundamentos de Ingeniería de Software

Educación a distancia

1.2.3. L A S 8 L E Y E S

DE

E V O LU C I Ó N

DEL

S O FT WA R E

La dinámica de evolución del software es el estudio de los cambios del sistema. La mayor contribución en esta área fue realizada por Meir M. Lehman y Belady, comenzando en los años 70 y 80. Su trabajo continuó en la década de 1990, con Lehman y otros investigadores de relevancia en la realimentación en los procesos de evolución (Lehman, 1996; Lehman et al., 1998; lehman et al., 2001). A partir de esos estudios propusieron un conjunto de leyes (conocidas como leyes de Lehman)respecto de los cambios producidos en los sistemas. Estas leyes (en realidad son hipótesis) son invariantes y ampliamente aplicables. Lehman y Belady analizaron el crecimiento y la evolución de varios sistemas software de gran porte; derivando finalmente, según sus medidas, las siguientes ocho leyes: 1. Cambio continuo: Un programa que se usa en un entorno real necesariamente debe cambiar o se volverá progresivamente menos útil en ese entorno. 2. Complejidad creciente: A medida que un programa en evolución cambia, su estructura tiende a ser cada vez más compleja. Se deben dedicar recursos extras para preservar y simplificar la estructura. 3. Evolución prolongada del programa: La evolución de los programas es un proceso auto regulativo. Los atributos de los sistemas, tales como tamaño, tiempo entre entregas y la cantidad de errores documentados son aproximadamente invariantes para cada entrega del sistema.

Semana 1

11


Educación a distancia

Fundamentos de Ingeniería de Software

4. Estabilidad organizacional: Durante el tiempo de vida de un programa, su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema. 5. Conservación de la familiaridad: Durante el tiempo de vida de un sistema, el cambio incremental en cada entrega es aproximadamente constante. 6. Crecimiento continuado: La funcionalidad ofrecida por los sistemas tiene que crecer continuamente para mantener la satisfacción de los usuarios. 7. Decremento de la calidad: La calidad de los sistemas software comenzará a disminuir a menos que dichos sistemas se adapten a los cambios de su entorno de funcionamiento. 8. Realimentación del sistema: Los procesos de evolución incorporan sistemas de realimentación multiagente y multibucle y estos deben ser tratados como sistemas de realimentación para lograr una mejora significativa del producto.

R EFERENCIAS Pressman, Roger S. (2006). Ingeniería del Software. Un enfoque práctico. McGraw-Hill, sexta edicion. Sommerville, Ian (2005). Ingeniería del Software. Pearson. Séptima edición. Consultado Enero del 2012, en: http://www.software-engin.com IS (s.f.) La Ingeniería de Software. Consultado en Enero del 2012, en: http://www.angelfire.com/scifi/jzavalar/apuntes/IngSoftware.html#IngSoft FIS (sf). Fundamentos de Ingeniería del Software. Consultado en Enero del 2012, en http://petra.euitio.uniovi.es/ WKi(s.f).WikipediaSoftware. Consultado en Enero del 2012, en http://es.wikipedia.org/wiki/Software#Car.C3.A1cter_evolutivo_del_software.5B17.5D Lehman, M.M. - «Laws of Software Evolution Revisited», pos. pap., EWSPT96, Oct. 1996, LNCS 1149, Springer Verlag, 1997, pp. 108-124

Semana 1

12


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.