Ingenieria del software

Page 1

OSCAR CASTELLANOS RODRIGUEZ


Contenido. Una mirada al pasado (3-5) Hablemos un nuevo lenguaje (6-7) 2 Modelos ideales para el desarrollo de SW( 8-12) Reutilicemos, no desechemos (15-17) Donde Desarrollarme (18-19)

2|IngenierĂ­a del Software


1940

UNA MIRADA Aparecen los AL PASADO 1952. lenguajes de bajo nivel •

Se acuña el termino Ingeniería del software

Regresemos un poco a la historia y • 1958. Aparecen los veamos porque el software tiene lenguajes de alto nivel as impacto cada dia.

1950 •

Inicios.

1960

En los años 40 se daba inicio a la ingeniería del software

1965. 1era Generación del Software 1968. Crisis del Software 1969. Nace la 3|Ingeniería del programación Estructurada

Software


1990

1980 •

Nace la Programacion Orientada a Objetos 3era Generacion del software

Nace el modelo de desarrollo en Cascada

1972. Se crea el lenguaje de programación C

1991. Inicia Linux

1993. Inicia Debian

1975. 2da Generación del Software

1970

1985. Nace el modelo de desarrollo en espiral. Se crea el OS X Windows

4|Ingeniería del Software


Actualidad

2010 2000

2012. Conceptualizacion de la Reutilizacion del Software 2007-2015.Evolucion de la versiones del OS windows

5|Ingeniería del Software


Primera herramientas CASE Implementacion de los lengujes Orientados a Objetos 2004. 1er versión de Ubuntu

Actualmente, la ingeniería del software sigue evolucionando, con constantes actualizaciones que demanda el mercado del software y cada dia la competencia es mayor

6|Ingeniería del Software


Hablemos un nuevo lenguaje La Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software. Integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería.

En 2004, la U. S. Bureau of Labor Statistics (Oficina de Estadísticas del Trabajo de Estados Unidos) contó 760 840 ingenieros de software de computadora.El término "ingeniero de software", sin embargo, se utiliza de manera genérica en el ambiente empresarial, y no todos los que se desempeñan en el puesto de ingeniero de software poseen realmente títulos de ingeniería de universidades reconocidas. Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software. Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería del software"; aunque menos común también se suele

referenciar como "ingeniería en software". En Hispanoamérica los términos más comúnmente usados son los dos primeros. Se citan las definiciones más

reconocidas, formuladas por prestigiosos autores, las cuales enlistaremos a continuación: • Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y

7|Ingeniería del Software


mantenimiento de sistemas software (Zelkovitz, 1978).

Ingeniería de software es la aplicación práctica del 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 (Bohem, 1976). •

La ingeniería de software trata del 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 (Bauer, 1972). •

8|Ingeniería del Software


naturaleza iterativa de la construcción de prototipos con los aspectos controlados y sistemáticos del modelo en cascada, es decir, cuando se aplica este modelo, el software se desarrolla en una serie de entregas evolutivas (ciclos o iteraciones), cada una de estas entregando prototipos más completas que el anterior, todo esto en función del análisis de riesgo y las necesidades del cliente. Aunque el modelo espiral En la ingeniería de software, con el fin de ordenar el caos que era anteriormente el desarrollo de software, dispone de varios modelos, paradigmas y filosofías de desarrollo, estos los conocemos principalmente como modelos o ciclos de vida del desarrollo de software, esto incluye el proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema y representa todas las actividades y artefactos (productos intermedios) necesarios para desarrollar una aplicación, entré ellos se puede citar:

[Modelo en espiral]

B

oehm, autor de diversos artículos

de ingeniería del software; modelos de estimación de esfuerzo y tiempo que se consume en hacer productos software; y Modelos de Ciclo de Vida; ideó y promulgó un modelo desde un enfoque distinto al tradicional en Cascada: El Modelo Evolutivo Espiral. Su Modelo de Ciclo de Vida en Espiral tiene en cuenta fuertemente el riesgo que aparece a la hora de desarrollar software. Para ello, se comienza mirando las posibles alternativas de desarrollo, se opta por la de riesgo más asumible y se hace un ciclo de la espiral. El modelo en espiral, que Barry Boehm propuso originalmente en 1986, es un modelo de proceso de software evolutivo que conjuga la

representa ventajas por sobre el desarrollo lineal, el cálculo de los riesgos puede ser muy complicado y por lo cual su uso en el ámbito real es muy escaso.

[Iteraciones] En cada vuelta o iteración hay que tener en cuenta: • •

Los Objetivos Alternativas: 1. Características Formas de gestión del sistema. 3. Riesgo asumido con cada alternativa. Desarrollo y Verificación 2.

Al ser un modelo de Ciclo de Vida orientado a la gestión de riesgo se dice que uno de los aspectos fundamentales 9|Ingeniería del Software


de su éxito radica en que el equipo que lo aplique tenga la necesaria experiencia y habilidad para detectar y catalogar correctamente los riesgos.

Genera mucho tiempo en el desarrollo del sistema

Modelo costoso

Requiere experiencia en identificación de riesgos

[Tareas] Para cada actividades: 1. 2. 3. 4.

ciclo

habrá

la

cuatro

Determinar Objetivos. Análisis del riesgo. Desarrollar y probar. 'Planificación.'

[Modelo por prototipos]

E En resumen, es para tener en cuenta los

l Modelo de prototipos, en

Ingeniería de software, pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos.

riesgos de cada uno de los ámbitos.

[Vent

Ilustración Modelo en espiral

ajas del uso de este modelo.]

Reduce riesgos del proyecto

Incorpora objetivos de calidad

Integra el desarrollo con el mantenimiento, etc. •

[Desventajas del uso de este modelo]

El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final. Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará. La interacción ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo 10 | I n g e n i e r í a d e l S o f t w a r e


tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo.

[Etapas] Plan rápido. • Modelado, diseño rápido • Construcción del Prototipo • Desarrollo, entrega retroalimentación • Comunicación • Entrega del desarrollo final •

y

[Ventajas] Este modelo es útil cuando el cliente conoce los objetivos generales para el software, pero no identifica los requisitos detallados de entrada, procesamiento o salida. •

También ofrece un mejor enfoque cuando el responsable del desarrollo del software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debería tomar la interacción humano-máquina

[Desventajas o Inconvenientes] El usuario tiende a crearse unas expectativas cuando ve el prototipo de cara al sistema final. A causa de la intención de crear un prototipo de forma rápida, se suelen desatender aspectos importantes, tales como la calidad y el mantenimiento a largo plazo, lo que obliga en la mayor parte de los casos a reconstruirlo una vez que el prototipo ha cumplido su función. Es frecuente que el usuario se muestre reacción a ello y pida que sobre ese prototipo se construya el sistema final, lo que lo convertiría en un prototipo evolutivo, pero partiendo de un estado poco recomendado. •

Se puede reutilizar el código

En aras de desarrollar rápidamente el prototipo, el desarrollador suele tomar algunas decisiones de implementación poco •

Ilustración Modelo por Protoipos

convenientes

(por

ejemplo,

11 | I n g e n i e r í a d e l S o f t w a r e


elegir un lenguaje de programación incorrecto porque proporcione un desarrollo más rápido). Con el paso del tiempo, el desarrollador puede olvidarse de la razón que le llevó a tomar tales decisiones, con lo que se corre el riesgo de que dichas elecciones pasen a formar parte del sistema final...

12 | I n g e n i e r í a d e l S o f t w a r e


[Reutilizacion] La reutilización es uno de los conceptos más simples y antiguos en la programación, y es algo que a menudo no es muy utilizado. Cuando se implementa cumpliendo los propósitos y correctamente, la reutilización puede ahorrar tiempo y dinero, a la vez que hace un inventario de activos de software reutilizables y valiosos. Surge formalmente en 1968. La idea principal era producir componentes de software como si de componentes electrónicos se tratara.

La Reutilización de Software aparece como una alternativa para desarrollar aplicaciones y sistemas SW de una manera más eficiente, productiva y rápida. La idea es reutilizar elementos y componentes de Software en lugar de

Reutilicemos y no desechemos La ingeniería del software basada en reutilización es una estrategia de ingeniería del software comparable en la que el proceso de desarrollo es adaptado a la reutilización del software existente 13 | I n g e n i e r í a d e l S o f t w a r e


tener que principio.

desarrollarlos

desde

el

Inicialmente, se basaba en la simple combinación de componentes de código almacenados en una biblioteca pero con el tiempo se fueron utilizando código de programas enteros.

[Porque no reutilizar SW] •

Necesidad de invertir antes de obtener resultados.

Carencia de métodos adecuados.

Necesidad de formar al personal.

Convencer a los “manager”.

Dificultad para institucionalizar los procesos.

[Porque si reutilizar SW] •

Reducir el tiempo de desarrollo.

Reducir los costos.

Incrementar la productividad.

No tener que reinventar las soluciones.

Facilitar la compartición de productos del ciclo de vida.

Mayor fiabilidad

Mayor eficiencia (Aunque al principio pueda parecer que no)

Consistencia y la familiaridad, los patrones dentro del software serán más consistentes, tendiendo a facilitar el mantenimiento del producto.

14 | I n g e n i e r í a d e l S o f t w a r e


[Niveles de Reutilización] Porque no solo es reutilizar por reutilizar, si no saber que vamos a reutilizar, es por eso que en esta lista te decimos en base a que nivel tu reutilizares algún software o aplicación. •

De código

Librerías de funciones

Editores

Inclusión de ficheros

Mecanismos de herencia en POO

Componentes

De diseños

No volver a inventar arquitecturas, como patrones de diseño, arquitectura, etc.

De especificaciones

Frameworks

15 | I n g e n i e r í a d e l S o f t w a r e


Donde desarrollarme? Los grandes gigantes de la industria Las distintas especialidades que existen en el ámbito del Desarrollo de software y las tecnologías de información están entre los trabajos mejor pagados en el mundo, sin embargo, existen claras diferencias en la remuneración en las distintas regiones y países en el mundo. Como desarrollador de software, aplicaciones web o móviles, ¿te has preguntado cuánto gana un desarrollador de software en distintos países del mundo? O tal vez ¿Cuáles son los mejores países del mundo para trabajar como desarrollador de software en cuanto a la remuneración?

tienen sus bases principales en el país. El desarrollo de software está entre los trabajos mejor pagados en Estados unidos y la industria es de mayor crecimiento en número de puestos de trabajo.

A continuación te presentamos los 5 países con mejores sueldos en desarrollo de software. [Suiza - $91.373] La industria de desarrollo de software en Suiza está integrada por muchas de las grandes empresas multinacionales, pero también en gran parte por compañías pequeñas y medianas. Empresas como Google e IBM tienen centros de investigación y desarrollo establecidos en Suiza.

[Estados Unidos $79.357 ]

de

América

[ Israel - $63.608] 16 | I n g e n i e r í a d e l S o f t w a r e


La tradición de firmas de alta tecnología de Israel data de los años 60. El país posee el reconocido “Silicon Wadi” un área del país que concentra muchas firmas de alta tecnología (similar a Silicon Valley en Estados Unidos). Muchas compañías multinacionales tienen centros de investigación y desarrollo en el país, incluyendi Intel, Google, Facebook, Hewlett-Packard, Philips, Cisco Systems, Oracle Corporation, SAP, BMC Software, Microsoft, Motorola. [Dinamarca - $63.154] Dinamarca es un país con amplia difusión del uso de internet, dispositivos móviles e infraestructura de comercio electrónico. Existe un amplio mercado en el cual empresas de desarrollo de software pueden prosperar. Compañías como IBM, SAP, Microsoft y Oracle tienen oficinas en Dinamarca.

[Reino unido – $47.265] Es uno de los mercados más grandes del mundo para tecnologías de la nube y data centers. Alrededor de 100 mil compañías de software operan en el Reino unido, incluyendo Apple, Google, Microsoft, IBM y HP.

17 | I n g e n i e r í a d e l S o f t w a r e


18 | I n g e n i e r í a d e l S o f t w a r e


Turn static files into dynamic content formats.

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