31
Unidad V: Milton J. Narváez Universidad Don Bosco 01 de Noviembre de 2014 Temas Avanzados de Ingeniería de Software

Unidad V: Temas Avanzados de Ingeniería de Software fileimportantes para sus respectivos negocios, ... participan en el modelado de funciones de ... Transformación arquitectónica

  • Upload
    lydang

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Unidad V:

Milton J. NarváezUniversidad Don Bosco

01 de Noviembre de 2014

Temas Avanzados de Ingeniería de Software

5.1. Desarrollo rápido de aplicaciones (RAD)5.2. Ingeniería de software auxiliada por computadora (CASE)5.3. Reutilización del software5.4. Diseño orientado a objetos y UML5.5. Sistemas heredados5.6. Cambios en el software

AGENDAAGENDA

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.6. Cambios en el software5.7. Reingeniería de software5.8. Ingeniería de software basada en componentes5.9. Ingeniería de software basada en agentes5.10. Ingeniería de la web

Las compañías gastan mucho dinero en sistemas informáticosy, para obtener un beneficio de esa inversión el software o elhardware debe utilizarse por varios años. El tiempo de vida delos sistemas informáticos es muy variable, pero muchossistemas grandes se pueden llegar a utilizarse hasta por másde 20 años. Muchos de estos sistemas antiguos aún son

INTRODUCCIONINTRODUCCION

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

de 20 años. Muchos de estos sistemas antiguos aún sonimportantes para sus respectivos negocios, es decir, lasempresas cuentan con los servicios suministrados por estossistemas y cualquier fallo en estos servicios tendría un efectoserio en el funcionamiento de la organización.

5.1. Desarrollo rápido de aplicaciones (RAD)5.1. Desarrollo rápido de aplicaciones (RAD)

El Desarrollo Rápido de Aplicaciones (Rapid ApplicationDevelopment, RAD) es un modelo de proceso del desarrollo delsoftware lineal secuencial que enfatiza un ciclo de desarrolloextremadamente corto.

RAD es una adaptación a “alta velocidad" en el que se logra el

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

RAD es una adaptación a “alta velocidad" en el que se logra eldesarrollo rápido utilizando un enfoque de construcciónbasado en componentes . Si se comprenden bien los requisitosy se limita el ámbito del proyecto, el proceso RAD permite alequipo de desarrollo crear un "sistema completamente funcional"dentro de periodos cortos de tiempo.

5.1. Desarrollo rápido de aplicaciones (RAD)5.1. Desarrollo rápido de aplicaciones (RAD)

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Las herramientas CASE (Ingeniería de Software Asistida porComputadora, Computer Aided Software Engineering)participan en el modelado de funciones de proyectos, flujos deinformación, entidades de datos y otra información de acuerdo a losrequerimientos propuestos del sistema.

5.2. Ingeniería de software auxiliada por computado ra5.2. Ingeniería de software auxiliada por computado ra(CASE)(CASE)

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

requerimientos propuestos del sistema.

Las herramientas CASE ayudan a facilitar el proceso de planeación.

Las herramientas CASE son consideradas como una mejor manerade diseñar diagramas y también como una forma de almacenar eltrabajo de desarrollo de un sistema en un repositorio.

5.2. Ingeniería de software auxiliada por computado ra5.2. Ingeniería de software auxiliada por computado ra(CASE)(CASE)

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.3. Reutilización del software5.3. Reutilización del software

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.4. Diseño orientado a objetos y UML5.4. Diseño orientado a objetos y UML

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Un sistema heredado (o sistema legacy) es un sistemainformático (equipos informáticos o aplicaciones) que ha quedadoanticuado pero continúa siendo utilizado por el usuario (típicamenteuna organización o empresa) y no se quiere o no se puedereemplazar o actualizar de forma sencilla.

5.5. Sistemas heredados5.5. Sistemas heredados

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Reemplazar un sistema heredado es una estrategia de negociosarriesgada por varias razones:Rara vez existe una especificación completa de los sistemasheredados (no existe ninguna forma directa de especificar un nuevosistema que sea funcionalmente idéntico al sistema que se utiliza).Los procesos de negocios y las formas en que los sistemasheredados operan a menudo están intrincadamente entrelazados.Estos procesos se diseñaron para aprovechar los servicios delsoftware y evitar sus debilidades.

Las reglas de negocio importantes están contenidas en el softwarey no suelen estar anotadas en ningún documento de la empresa(por ejemplo, las reglas para valorar el riesgo de la aplicación deuna política de una compañía de seguros pueden estarcontemplados en su software. Si a estas reglas no se les damantenimiento, la compañía puede aceptar políticas de riesgo altas

5.5. Sistemas heredados5.5. Sistemas heredados

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

mantenimiento, la compañía puede aceptar políticas de riesgo altasque conduzcan a costosas reclamaciones).El desarrollo de nuevo software es por sí mismo arriesgado, ya quepueden existir problemas inesperados. Puede ser, por ejemplo, queno se entregue a tiempo con el precio previsto.

5.6. Cambios en el software5.6. Cambios en el software

Cambio de software

Mantenimiento de software Transformación arquitectónica Reingeniería de software

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

El mantenimiento de software es una de las actividades más comunes en laIngeniería de Software y es el proceso de mejora y optimización del softwaredesplegado (es decir; revisión del programa), así como también corrección de losdefectos.

TiposTipos dede mantenimientomantenimiento•Perfectivo•Evolutivo•Adaptativo•Correctivo

5.6. Cambios en el software5.6. Cambios en el software

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Cambio de software

Mantenimiento de software Transformación arquitectónica Reingeniería de software

La transformación arquitectónica es un enfoque más radical para cambiar elsoftware y continuar dándole mantenimiento conforme se implementan cambiosmás importantes en la arquitectura del sistema de software. Comúnmente, lossistemas evolucionan de una arquitectura de datos centralizada a una cliente –servidor.

Existen varios conductores diferentes que contribuyen a este cambio:•Los costos de hardware.•Las expectativas de la interfaz de usuario.•El acceso distribuido a los sistemas.

5.6. Cambios en el software5.6. Cambios en el software

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Cambio de software

Mantenimiento de software Transformación arquitectónica Reingeniería de software

La reingeniería de software es un proceso que consiste en reorganizar y modificarsistemas de software existentes para el perfeccionamiento del software; axial como parahacerlos mas mantenibles, propiciando su evolución. Durante el proceso de reingeniería sereestructura y rescriben partes o la totalidad de un sistema pero sin cambiar sufuncionalidad.

La reingeniería seria entonces cualquier actividad que mejora la comprensión del softwarey prepara o mejora el propio software, normalmente para incrementar su facilidad demantenimiento, reutilización o evolución.

“La reingeniería produce el nuevo código fuente del software sin cambiar la función delsistema global”.

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.1. Procesos involucrados en la reingeniería5.7.1. Procesos involucrados en la reingeniería

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

La reingeniería debe ser entendida como un proceso mediante el cual se mejora un software existente haciendo uso de técnicas de ingeniería inversa y reestructuración de código. En este proceso juega un papel importante el uso de repositorios para almacenar los resultados de la ingeniería inversa y las herramientas case

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.1. Procesos involucrados en la reingeniería5.7.1. Procesos involucrados en la reingeniería

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

• Consiste en el estudio de la antigüedad, importancia de la aplicación en el negocio y la mantenibilidad actual, entre otros criterios, para estudiar la posible conveniencia de la reingeniería.

Análisis de inventario

• Evitar la documentación de los módulo estáticos que no van a sufrir cambios.

• Documentar sólo lo que se va a modificar.• Documentar toda la información del sistema, si es que este es

fundamental para el negocio.

Reestructuración de documentos

• En este proceso se extraen modelos de alto nivel de abstracción que ayuden a la comprensión de la aplicación para poder modificarla y que sirvan como punto de partida para el siguiente proceso. Estos datos se deben almacenar en un repositorio que permita que las personas o herramientas case que lleven a cabo los siguientes pasos lo encuentren disponible.

Ingeniería inversa

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.2. Cuándo aplicar la reingeniería5.7.2. Cuándo aplicar la reingeniería

Cuando una aplicación de cierto sistema ha funcionado durante variosaños, y al paso del tiempo se ha vuelto inestable debido a lascorrecciones, adaptaciones y mejoras que se le realizaron.

Es aplicable cuando alguna de las partes de un gran sistema requiere un

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Es aplicable cuando alguna de las partes de un gran sistema requiere unmantenimiento frecuente.

Cuando los cambios en el sistema se hacen mayormente sobre una partede un sistema, entonces dicha parte puede ser objeto de reingeniería.

Cuando el soporte hardware o software se queda obsoleto.

Cuando se dispone de herramientas automáticas para reestructurar elsistema.

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.2. Cuándo aplicar la reingeniería5.7.2. Cuándo aplicar la reingeniería

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.3. Proceso de ingeniería inversa5.7.3. Proceso de ingeniería inversa

La ingeniera inversa es el proceso de recuperación del diseño(arquitectónico y de procesos) y especificación de un software,analizándolo para crear una representación del software de mayor nivel deabstracción que el código fuente. La funcionalidad del software no cambia.

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

Puede usarse como parte del proceso de reingeniería o también puedeutilizarse para re-especificar el sistema para su re-implementación.

“La ingeniería inversa no es lo mismo que reingeniería. El objetivo de laprimera es derivar el diseño o la especificación de un sistema a partir delcódigo fuente. El objetivo de la reingeniería es producir un sistema nuevomas mantenible”.

CuandoCuando utilizarutilizar lala ingenieríaingeniería inversainversa

a) Cuando el sistema falla continuamente y sus fallas son difíciles desituar.

b) Cuando los sistemas tienen una eficiencia menor a la esperada pero

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.3. Proceso de ingeniería inversa5.7.3. Proceso de ingeniería inversa

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

b) Cuando los sistemas tienen una eficiencia menor a la esperada perotienen los resultados deseados.

c) Cuando los sistemas dificultan la interacción con otros sistemas.d) Cuando sea poco factible realizar modificaciones.e) Cuando hay pocas personas que son capases de mantener o

modificar el sistema.f) Cuando el mantenimiento consume muchos recursos.

5.7. Reingeniería en el software5.7. Reingeniería en el software5.7.3. Proceso de ingeniería inversa5.7.3. Proceso de ingeniería inversa

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.8. Ingeniería de software basada en componentes5.8. Ingeniería de software basada en componentes

La ingeniería de software basada en componentes (CBSE)(también conocida como desarrollo basado en componentes (CBD))es una rama de la ingeniería de software que enfatiza la separaciónde asuntos (separation of concerns (SoC)) por lo que se refiere a lafuncionalidad de ámplio rango disponible a través de un sistema desoftware dado. Es un acercamiento basado en la reutilización para

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

software dado. Es un acercamiento basado en la reutilización paradefinir, implementar, y componer, componentes débilmenteacoplados en sistemas. Esta práctica apunta traer igualmente unámplio grado de beneficios tanto en el corto como el largo plazo,para el software en sí mismo, y para las organizaciones quepatrocinan tal software.

5.8. Ingeniería de software basada en componentes5.8. Ingeniería de software basada en componentes

Un componente de software individual es un paquete de software, un servicioweb, o un módulo que encapsula un conjunto de funciones relacionadas (o dedatos).

Todos los procesos del sistema son colocados en componentes separados de talmanera que todos los datos y funciones dentro de cada componente estánsemánticamente relacionados (justo como con el contenimiento de clases). Debidoa este principio, con frecuencia se dice que los componentes son modulares y

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

a este principio, con frecuencia se dice que los componentes son modulares ycohesivos.

Con respecto a la coordinación a lo largo del sistema, los componentes secomunican uno con el otro por medio de interfaces. Cuando un componente ofreceservicios al resto del sistema, éste adopta una interface proporcionada queespecifica los servicios que otros componentes pueden utilizar, y cómo puedenhacerlo. Esta interface puede ser vista como una firma del componente - el clienteno necesita saber sobre los funcionamientos internos del componente (suimplementación) para hacer uso de ella. Este principio resulta en componentesreferidos como encapsulados.

5.8. Ingeniería de software basada en componentes5.8. Ingeniería de software basada en componentes

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.9. Ingeniería de software basada en agentes5.9. Ingeniería de software basada en agentes

Los sistemas basados en agentes (SBA) son una disciplinarelativamente nueva. Ha tenido un crecimiento importante a nivel decontribuciones científicas.

Un agente es un software (o hardware) que está situado en unambiente y es capaz de actuar autónomamente para cumplir losobjetivos para lo que fue diseñado.

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

objetivos para lo que fue diseñado.

5.9. Ingeniería de software basada en agentes5.9. Ingeniería de software basada en agentes

Un Sistema Multiagente o Sistema Basado en Agentes (SBA) secaracteriza por ser un sistema en el que hay un número de agentesautónomos que habitan (o comparten) un medio ambiente común yque se ven en la necesidad de interactuar por una variedad derazones.

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.9. Ingeniería de software basada en agentes5.9. Ingeniería de software basada en agentes

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.10. Ingeniería de la web5.10. Ingeniería de la web

La ingeniería web es la aplicación de metodologías sistemáticas,disciplinadas y cuantificables al desarrollo eficiente, operación yevolución de aplicaciones de alta calidad en la World Wide Web.

La ingeniería web se debe al crecimiento desenfrenado que estáteniendo la Web está ocasionando un impacto en la sociedad y el

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

teniendo la Web está ocasionando un impacto en la sociedad y elnuevo manejo que se le está dando a la información en lasdiferentes áreas en que se presenta ha hecho que las personastiendan a realizar todas sus actividades por esta vía.

5.10. Ingeniería de la web5.10. Ingeniería de la web

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

5.10. Ingeniería de la web5.10. Ingeniería de la web

UNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWAREUNIDAD V: TEMAS AVANZADOS DE INGENIERÍA DE SOFTWARE

“La felicidad humana generalmente no se logra con “La felicidad humana generalmente no se logra con “La felicidad humana generalmente no se logra con “La felicidad humana generalmente no se logra con grandes golpes de suerte, que pueden ocurrir pocas grandes golpes de suerte, que pueden ocurrir pocas

veces, sino con pequeñas cosas que ocurren todos lo s veces, sino con pequeñas cosas que ocurren todos lo s días”días”

Benjamin Franklin (1706Benjamin Franklin (1706--1790) Estadista y científi co estadounidense.1790) Estadista y científico estadounidense.

Milton J. NarváezUniversidad Don Bosco

01 de Noviembre de 2014